/*
Theme Name: Wisplash
Theme URI: https://www.wisplash.fr/
Author: Ardennes Terre d'Aventures
Description: Thème à blocs de l'aquapark gonflable Wisplash, au lac des Vieilles-Forges. Reprend la charte du groupe Ardennes Terre d'Aventures (polices Jost, Caveat, Pacifico, en-tête de groupe, bouton de réservation, bandeau d'ouverture) avec les bleus et verts de l'aquapark. Polices hébergées localement (RGPD).
Requires at least: 6.5
Tested up to: 6.8
Requires PHP: 7.4
Version: 1.0.0
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: wisplash
Tags: block-patterns, full-site-editing, custom-colors, editor-style, one-column, two-columns
*/

/* =========================================================
   Base
   ========================================================= */
:root {
	--ws-bleu: #0569a7;
	--ws-bleu-fonce: #1c60a1;
	--ws-bleu-pale: #e6f4fb;
	--ws-ombre-carte: -5px 3px 6px rgba(0, 0, 0, .16);
	--ws-ombre-bouton: 0 3px 5px -2px rgba(37, 38, 39, .04), 0 7px 14px -5px rgba(37, 38, 39, .06);
}
body { -webkit-font-smoothing: antialiased; }
.ws-main { overflow-x: clip; }
.wp-site-blocks > * + * { margin-block-start: 0; }
.ws-entete { margin: 0; }
.screen-reader-text:focus { background: #fff; color: #000; }

/* =========================================================
   En-tête (couverture + navigations bleues)
   ========================================================= */
.ws-hero.wp-block-cover {
	position: relative;
	align-items: stretch;
	background: linear-gradient(90deg, #0569a7 0%, #dff0fa 100%);
	overflow: hidden;
}
.ws-hero.wp-block-cover::before { /* lignes blanches */
	content: "";
	position: absolute;
	left: 0; right: 0; bottom: 70px;
	height: 300px;
	background: var(--ws-img-header-wave) no-repeat center bottom / 110% auto;
	opacity: .9;
	z-index: 1;
	pointer-events: none;
}
.ws-hero .wp-block-cover__inner-container {
	width: 100% !important;
	max-width: none !important;
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	min-height: inherit;
	position: relative;
	z-index: 2;
}
.ws-hero__haut { margin-top: 48px; gap: 0 !important; align-items: flex-start !important; }
.ws-hero__logo { padding: 0 96px; margin: 24px 0 !important; }
.ws-hero__logo .ws-logo__img { width: 232px; height: auto; display: block; filter: drop-shadow(0 2px 12px rgba(0,0,0,.18)); }
.ws-hero__logo .ws-logo__texte { font-weight: 800; font-size: 2.2rem; color: #fff; text-transform: uppercase; line-height: 1; }

/* carré rouge « Accueil » */
.ws-logo-lien--picto {
	display: grid; place-items: center;
	width: 64px; height: 64px;
	background: var(--ws-bleu);
	color: #fff; font-weight: 800; text-decoration: none !important;
}
.ws-logo-lien--picto .ws-logo__img { width: 36px; height: auto; display: block; filter: brightness(0) invert(1); }

/* barres de navigation rouges */
.ws-nav.wp-block-navigation {
	background: var(--ws-bleu);
	color: #fff;
	gap: 0;
	font-weight: 600;
	margin: 0 !important;
}
.ws-nav .wp-block-navigation__container { gap: 0 !important; }
.ws-nav .wp-block-navigation-item { position: relative; }
.ws-nav .wp-block-navigation-item + .wp-block-navigation-item::before {
	content: ""; position: absolute; left: 0; top: 14px; bottom: 14px;
	border-left: 1px solid rgba(255,255,255,.35);
}
.ws-nav .wp-block-navigation-item__content {
	display: block;
	padding: 24px !important;
	color: #fff !important;
	line-height: 1.15;
	text-decoration: none !important;
}
.ws-nav .wp-block-navigation-item__content::after { /* petit trait blanc de l'élément actif */
	content: ""; position: absolute; left: 50%; bottom: 14px;
	width: 14px; height: 4px; border-radius: 4px; background: #fff;
	transform: translateX(-50%) scaleX(0); transition: transform .2s ease;
}
.ws-nav .is-actif > .wp-block-navigation-item__content::after,
.ws-nav .wp-block-navigation-item__content:hover::after,
.ws-nav--parcs .is-site-courant > .wp-block-navigation-item__content::after { transform: translateX(-50%) scaleX(1); }
.ws-nav--parcs { font-size: .95rem !important; }
.ws-nav--site { align-self: flex-start; position: relative; }
/* menu mobile (hamburger) */
.ws-nav .wp-block-navigation__responsive-container-open { color: #fff; padding: 20px; }
.ws-nav .wp-block-navigation__responsive-container.is-menu-open { background: var(--ws-bleu) !important; color: #fff !important; }
.ws-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content { padding: 14px 0 !important; font-size: 1.25rem; }

/* vague vert clair en bas de l'en-tête (pages intérieures) */
.ws-entete + .ws-main .ws-intro::before,
.ws-entete + .ws-main .ws-article::before {
	content: ""; position: absolute; left: 0; right: 0; top: -100px; height: 104px;
	background: var(--ws-img-waves-vertes) no-repeat center bottom / 100% 100%;
	pointer-events: none;
}

/* =========================================================
   Intro des pages : titre rouge incliné + chapô, fond forêt
   ========================================================= */
.ws-intro, .is-style-foret {
	position: relative;
	background-color: var(--ws-bleu-pale);
	padding-top: 72px;
	padding-bottom: 200px;
	isolation: isolate;
}
.is-style-foret::after { /* silhouettes de sapins */
	content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 260px;
	background: var(--ws-img-header-content) no-repeat center bottom / 100% 100%;
	z-index: -1; opacity: .85;
	-webkit-mask-image: linear-gradient(to bottom, transparent 0, #000 40%);
	        mask-image: linear-gradient(to bottom, transparent 0, #000 40%);
}
.ws-intro__colonnes { gap: 80px !important; }
.ws-intro__titre, .ws-intro h1 {
	font-size: var(--wp--preset--font-size--huge) !important;
	font-weight: 900; font-style: italic; text-transform: uppercase;
	color: var(--ws-bleu) !important; line-height: 1.15; margin: 0;
	overflow-wrap: anywhere; hyphens: auto;
}
.ws-intro__chapo { font-weight: 300; line-height: 1.6; margin: 0; }
.ws-intro__chapo p { margin: 0; }

/* contenu des pages sur fond blanc avec bord en vague */
.ws-contenu { position: relative; background: #fff; padding-top: 32px; padding-bottom: 72px; }
.ws-contenu::before {
	content: ""; position: absolute; left: 0; right: 0; top: -99px; height: 100px;
	background: var(--ws-img-wave-white) no-repeat center bottom / 100% 100%;
}
.ws-contenu > * { position: relative; }
.ws-contenu p, .ws-contenu li { line-height: 1.5; }
.ws-contenu h2 { margin-top: 2.2em; margin-bottom: .4em; }
.ws-contenu h3 { margin-top: 2em; }

/* sections alternées (À propos) */
.ws-section { padding-top: 56px; padding-bottom: 56px; position: relative; }
.ws-section__colonnes { gap: 72px !important; }
.ws-section p { line-height: 1.5; }
.ws-section h2 { margin-top: 0; }
.is-style-vagues-vertes {
	position: relative; color: #fff;
	background: #49b9c3 var(--ws-img-waves-bleues) no-repeat center top / 100% auto;
	padding-top: clamp(140px, 18vw, 240px) !important;
	padding-bottom: 96px !important;
}
.is-style-vagues-vertes h2, .is-style-vagues-vertes h3, .is-style-vagues-vertes p { color: #fff !important; }
.is-style-vagues-vertes .ws-section__colonnes { flex-direction: row-reverse; }

/* =========================================================
   Galerie « curseur » (défilement horizontal sans JavaScript lourd)
   ========================================================= */
.wp-block-gallery.is-style-curseur {
	display: flex !important; flex-wrap: nowrap !important;
	overflow-x: auto; scroll-snap-type: x mandatory;
	gap: 16px !important; padding-bottom: 12px;
	scrollbar-width: thin; scrollbar-color: var(--ws-bleu) transparent;
	position: relative;
}
.wp-block-gallery.is-style-curseur > .wp-block-image {
	flex: 0 0 100% !important; width: 100% !important; max-width: 100%;
	scroll-snap-align: center; margin: 0 !important;
	display: flex; flex-direction: column; align-items: center;
}
.wp-block-gallery.is-style-curseur > .wp-block-image img {
	width: auto !important; max-width: 100%; height: 440px !important;
	object-fit: cover; border-radius: 18px; margin: 0 auto;
	flex: none !important;
}
.wp-block-gallery.is-style-curseur.has-nested-images figure.wp-block-image figcaption {
	position: static; background: none; color: inherit; text-align: left;
	font-style: italic; font-size: .875rem; padding: 12px 8px 0; max-height: none; overflow: visible;
	width: 100%; text-shadow: none;
}
.wp-block-gallery.is-style-curseur.has-nested-images figure.wp-block-image::before { display: none; }
.ws-curseur-nav { display: flex; justify-content: center; align-items: center; gap: 14px; margin-top: 10px; }
.ws-curseur-nav button {
	width: 26px; height: 26px; border-radius: 50%; border: 0; cursor: pointer;
	background: #bdbdbd var(--ws-img-arrow-white) no-repeat center / 12px;
}
.ws-curseur-nav button.prec { transform: rotate(180deg); }
.ws-curseur-nav button:hover { background-color: var(--ws-bleu); }
.ws-curseur-nav .points { display: flex; gap: 6px; }
.ws-curseur-nav .points span { width: 8px; height: 8px; border-radius: 50%; border: 1px solid #999; }
.ws-curseur-nav .points span.on { background: #303030; border-color: #303030; width: 10px; height: 10px; }
.is-style-vagues-vertes .ws-curseur-nav .points span { border-color: #fff; }
.is-style-vagues-vertes .ws-curseur-nav .points span.on { background: #fff; }

/* =========================================================
   Titres et boutons
   ========================================================= */
.is-style-titre-section, .ws-titre-section {
	font-size: var(--wp--preset--font-size--giant) !important;
	font-weight: 900 !important; text-transform: uppercase;
	color: var(--ws-bleu) !important; text-align: center;
	display: grid; justify-items: center; gap: 12px; margin-bottom: 64px !important;
}
.is-style-titre-section::before, .ws-titre-section::before {
	content: ""; width: 120px; height: 50px;
	background: var(--ws-img-parcs-flag) no-repeat center / contain;
}
.is-style-titre-incline {
	font-size: clamp(2.5rem, 6vw, 4rem) !important; font-weight: 900 !important;
	text-transform: uppercase; color: #fff !important; line-height: 1 !important;
	transform: rotate(-6deg); margin: 0 auto 24px !important; max-width: 12ch;
}

.wp-block-button .wp-block-button__link { box-shadow: var(--ws-ombre-bouton); transition: transform .15s ease, filter .15s ease; }
.wp-block-button .wp-block-button__link:hover { transform: translateY(-1px); text-decoration: none; }
.wp-block-button[class*="is-style-"] .wp-block-button__link::after,
.wp-block-button.is-style-fleche .wp-block-button__link::after {
	content: ""; display: inline-block; width: 15px; height: 14px; margin-left: 12px; vertical-align: -1px;
	background: var(--ws-img-arrow-white) no-repeat center / contain;
}
.wp-block-button.is-style-noir .wp-block-button__link { background: #000; color: #fff; }
.wp-block-button.is-style-orange .wp-block-button__link { background: #de9439; color: #fff; }
.wp-block-button.is-style-bleu .wp-block-button__link { background: #0569a7; color: #fff; }
.wp-block-button.is-style-blanc .wp-block-button__link { background: #fff; color: #000; }
.wp-block-button.is-style-blanc .wp-block-button__link::after { background-image: var(--ws-img-arrow-black); }
.wp-block-button.is-style-outline .wp-block-button__link::after { display: none; }

/* =========================================================
   Accueil : cartes des parcs
   ========================================================= */
.ws-parcs {
	position: relative; isolation: isolate;
	background: var(--ws-bleu-pale);
	padding-top: 48px !important; padding-bottom: 82px !important;
	margin-top: 0 !important; margin-bottom: 0 !important;
}
.ws-parcs::before {
	content: ""; position: absolute; left: 0; right: 0; top: 128px; height: 480px;
	background: var(--ws-img-header-content) no-repeat center bottom / 100% 100%;
	z-index: -1; opacity: .8;
	-webkit-mask-image: linear-gradient(to bottom, transparent 0, #000 35%, #000 70%, transparent 100%);
	        mask-image: linear-gradient(to bottom, transparent 0, #000 35%, #000 70%, transparent 100%);
}
.ws-parcs__liste { gap: 36px !important; justify-content: center; flex-wrap: wrap !important; }
.ws-parc-carte.wp-block-cover {
	flex: 0 1 336px; min-height: 556px !important;
	border-radius: 24px; overflow: hidden;
	padding: 140px 32px 20px !important;
	align-items: flex-end; text-align: center;
	box-shadow: var(--ws-ombre-carte);
	margin: 0 !important;
}
.ws-parc-carte .wp-block-cover__inner-container { display: grid; justify-items: center; gap: 0; }
.ws-parc-carte .wp-block-image { margin: 0 0 8px !important; }
.ws-parc-carte .wp-block-image img { width: 272px; max-height: 252px; object-fit: contain; border-radius: 0 !important; }
.ws-parc-carte .wp-block-buttons { margin: 16px 0 0 !important; }
.ws-parc-carte p { color: #fff; margin: 16px 0 !important; text-shadow: 0 1px 6px rgba(0,0,0,.5); }
.ws-parc-carte .wp-block-cover__image-background { transition: transform .5s ease; }
.ws-parc-carte:hover .wp-block-cover__image-background { transform: scale(1.04); }

/* =========================================================
   Cartes d'actualités (accueil, liste, archives)
   ========================================================= */
.ws-actus { position: relative; padding-top: 32px !important; padding-bottom: 64px !important; margin-top: 0 !important; margin-bottom: 0 !important; }
.ws-actus--accueil { margin-top: 110px !important; }
.ws-actus--accueil::before {
	content: ""; position: absolute; left: 0; right: 0; top: -102px; height: 104px;
	background: var(--ws-img-waves-vertes) no-repeat center bottom / 100% 100%;
}
.ws-cartes-actus { list-style: none; padding: 0 !important; margin: 0 0 40px !important; }
.ws-cartes-actus > li { margin: 0 !important; }
.ws-carte-actu {
	position: relative; margin: 96px 0 0 !important;
	background: #fff; border-radius: 24px; box-shadow: var(--ws-ombre-carte);
	padding: 6px 64px 18px 28px !important;
}
.ws-cartes-actus > li:nth-child(even) .ws-carte-actu { margin-left: 40px !important; margin-right: -40px !important; }
.ws-carte-actu__image.wp-block-post-featured-image {
	position: absolute !important; top: -80px; left: -40px; margin: 0 !important;
	width: 144px !important; height: 144px !important;
	border-radius: 50% !important; overflow: hidden; box-shadow: var(--ws-ombre-carte);
	z-index: 2;
}
.ws-carte-actu__image img { width: 144px !important; height: 144px !important; object-fit: cover; border-radius: 50% !important; }
.ws-carte-actu__date {
	display: block; text-align: right; font-size: .875rem !important; font-weight: 600;
	text-transform: uppercase; color: #303030; margin: 6px -36px 44px 96px !important;
}
.ws-carte-actu__titre { font-size: 1.25rem !important; font-weight: 700 !important; text-transform: none !important; line-height: 1.1 !important; margin: 0 !important; color: #313131; }
.ws-carte-actu__titre a { color: inherit; text-decoration: none; }
.ws-carte-actu__titre a::after { content: ""; position: absolute; inset: 0; z-index: 1; } /* toute la carte est cliquable */
.ws-carte-actu__resume { margin: 12px 0 0 !important; line-height: 1.15; }
.ws-carte-actu__resume p { margin: 0; }
.ws-carte-actu__fleche.wp-block-read-more {
	position: absolute !important; right: -16px; top: 50%; transform: translateY(-50%);
	width: 34px; height: 34px; border-radius: 50%;
	background: var(--ws-bleu) var(--ws-img-arrow-white) no-repeat center / 14px;
	font-size: 0 !important; color: transparent !important; overflow: hidden; z-index: 2;
	box-shadow: 0 0 0 4px var(--ws-bleu-pale);
}
.ws-actus .wp-block-query-pagination { margin-top: 40px; font-weight: 600; }

/* =========================================================
   Accueil : météo
   ========================================================= */
.ws-meteo { background: var(--ws-bleu); color: #fff; margin-top: 0 !important; margin-bottom: 0 !important; gap: 0 !important; }
.ws-meteo > .wp-block-column:first-child {
	padding: 28px 32px 52px; display: grid; align-content: center; justify-items: center; text-align: center; gap: 16px;
}
.ws-meteo h2 { color: #fff !important; font-size: 1.1rem !important; text-transform: uppercase; font-weight: 600; margin: 0; }
.ws-meteo p { margin: 0; }
.ws-meteo .wp-block-image, .ws-meteo .wp-block-image img { margin: 0 !important; height: 320px; width: 100%; object-fit: cover; border-radius: 0 !important; }

/* =========================================================
   Article
   ========================================================= */
.ws-article { position: relative; padding-top: 48px !important; padding-bottom: 72px !important; margin: 0 !important; }
.ws-article__colonnes { gap: 62px !important; }
.ws-article__titre { font-size: clamp(1.9rem, 3.5vw, 2.625rem) !important; font-weight: 600 !important; font-style: normal !important; text-transform: none !important; color: #303030 !important; line-height: 1.2 !important; max-width: 496px; margin: 0 auto 32px !important; }
.ws-article__image img { border-radius: 18px; width: 100%; height: auto; }
.ws-article__date { color: var(--ws-bleu); font-weight: 600; text-transform: uppercase; margin: 32px 0 28px !important; font-size: 1rem !important; }
.ws-article__texte > * { margin-block: 0 1em; }
.ws-article__texte p, .ws-article__texte li { line-height: 1.5; }
.ws-article__texte h2 { font-size: 1.5rem; color: #303030; margin-top: 1.4em; }
.ws-article__texte h3 { margin-top: 1.4em; }

.ws-etiquettes { margin-top: 24px; font-size: .8rem; }
.ws-etiquettes a { display: inline-block; background: #fff; color: #303030; border-radius: 20px; padding: 3px 12px; margin: 0 4px 4px 0; text-decoration: none; }
.ws-etiquettes .wp-block-post-terms__separator { display: none; }

/* =========================================================
   Bandeau « déconnecter »
   ========================================================= */
.ws-deconnecter { padding-top: 96px !important; padding-bottom: 96px !important; margin: 0 !important; }
.ws-deconnecter .wp-block-buttons { gap: 12px; margin-top: 32px !important; }

/* =========================================================
   Pied de page
   ========================================================= */
.ws-footer {
	position: relative; margin: 0 !important;
	padding-top: 72px !important; padding-bottom: 28px !important;
	background-image: var(--ws-img-waves-vertes) !important;
	background-repeat: no-repeat !important; background-position: right bottom !important; background-size: auto 100% !important;
	font-size: .875rem;
}
.ws-footer a { color: #fff; font-weight: 700; }
.ws-footer__grille { gap: 32px 48px !important; }
.ws-footer .ws-logo--blanc .ws-logo__img { width: 280px; height: auto; display: block; }
.ws-footer .ws-logo__texte { font-weight: 800; font-size: 1.5rem; text-transform: uppercase; }
.ws-partenaires { list-style: none; margin: 0; padding: 0; display: flex; align-items: center; gap: 24px; }
.ws-partenaires img { height: 52px; width: auto; display: block; }
.ws-partenaires__region img { height: 48px; }
.ws-footer__nav { font-size: .875rem; font-weight: 700; }
.ws-footer__nav .wp-block-navigation__container { gap: 8px 36px !important; }
.ws-footer__adresse { margin: 0; line-height: 1.5; }

/* =========================================================
   Formulaire (Contact Form 7)
   ========================================================= */
.wpcf7 form { display: grid; gap: 14px; background: #fff; padding: 28px; border-radius: 24px; box-shadow: var(--ws-ombre-carte); }
.wpcf7 label { display: grid; gap: 6px; font-weight: 600; }
.wpcf7 input:not([type=submit]):not([type=checkbox]), .wpcf7 select, .wpcf7 textarea {
	width: 100%; font: inherit; padding: .75em 1em; border: 1px solid #dfeef8; border-radius: 1.25rem; background: #fff;
}
.wpcf7 textarea { min-height: 140px; }
.wpcf7 input[type=submit] {
	justify-self: start; background: var(--ws-bleu); color: #fff; border: 0; cursor: pointer;
	font-weight: 600; letter-spacing: .2em; text-transform: uppercase; font-size: .875rem;
	padding: .6rem 1.75rem; border-radius: 20px;
}

/* =========================================================
   Responsive
   ========================================================= */
@media (max-width: 1024px) {
	.ws-hero__logo { padding: 0 40px; }
	.ws-nav--parcs .wp-block-navigation-item__content { padding: 18px 14px !important; }
}
@media (max-width: 781px) {
	.ws-hero.wp-block-cover { min-height: 520px !important; }
	.ws-hero__haut { margin-top: 0; }
	.ws-nav--parcs { display: none !important; }
	/* le menu (hamburger) se place en haut à droite, au niveau du picto */
	.ws-nav--site { position: absolute; top: 0; right: 0; align-self: auto; z-index: 3; }
	.ws-nav--site .wp-block-navigation__responsive-container-open { padding: 20px; }
	.ws-intro, .is-style-foret { padding-top: 48px; padding-bottom: 150px; }
	.ws-intro__colonnes, .ws-section__colonnes, .ws-article__colonnes { gap: 24px !important; }
	.is-style-vagues-vertes .ws-section__colonnes { flex-direction: column-reverse; }
	.wp-block-gallery.is-style-curseur > .wp-block-image img { height: 340px !important; }
	.ws-carte-actu { margin-left: 24px !important; padding-right: 44px !important; }
	.ws-cartes-actus > li:nth-child(even) .ws-carte-actu { margin-left: 24px !important; margin-right: 0 !important; }
	.ws-carte-actu__image.wp-block-post-featured-image { width: 110px !important; height: 110px !important; left: -24px; top: -64px; }
	.ws-carte-actu__image img { width: 110px !important; height: 110px !important; }
	.ws-carte-actu__date { margin: 6px -20px 36px 80px !important; }
	.ws-carte-actu__fleche.wp-block-read-more { right: -12px; }
	.ws-meteo .wp-block-image img { height: 220px; }
	.ws-footer { background-size: auto 60% !important; }
	.ws-footer__grille { justify-content: center !important; text-align: center; }
	.ws-partenaires { justify-content: center; flex-wrap: wrap; }
}

/* Bouton de réservation Guidap */
.ws-reserver { margin: 1.4em 0 0; }
.ws-reserver guidap-activity-details-button { display: inline-block; }

/* Grille des 10 parcours (Corsaire Volant) */
.wp-block-gallery.ws-parcours { gap: 20px !important; }
.wp-block-gallery.ws-parcours .wp-block-image img { border-radius: 14px; aspect-ratio: 2/3; object-fit: cover; }
.wp-block-gallery.ws-parcours.has-nested-images figure.wp-block-image figcaption { position: static; background: none; color: inherit; text-shadow: none; font-style: normal; font-size: .85rem; line-height: 1.35; padding: 8px 2px 0; text-align: center; max-height: none; overflow: visible; }
.wp-block-gallery.ws-parcours.has-nested-images figure.wp-block-image::before { display: none; }
.wp-block-gallery.ws-parcours.has-nested-images figure.wp-block-image { flex-direction: column; }
@media (max-width: 781px) { .wp-block-gallery.ws-parcours.columns-5 figure.wp-block-image:not(#individual-image) { width: calc(50% - 10px) !important; } }
/* FAQ dépliable */
.ws-faq { background: #fff; border-radius: 14px; box-shadow: var(--ws-ombre-carte); padding: 14px 20px; margin: 0 0 12px !important; }
.ws-faq summary { font-weight: 600; cursor: pointer; list-style: none; padding-right: 28px; position: relative; }
.ws-faq summary::-webkit-details-marker { display: none; }
.ws-faq summary::after { content: "+"; position: absolute; right: 0; top: -2px; font-size: 1.4rem; color: var(--ws-bleu); }
.ws-faq[open] summary::after { content: "–"; }
.ws-faq p { margin: 10px 0 0; line-height: 1.5; }
.is-style-vagues-vertes .ws-faq { color: #303030; }
.is-style-vagues-vertes .ws-faq p { color: #303030 !important; }

/* Bouton Guidap aux couleurs du site (police Jost, pilule, flèche) */
.ws-reserver guidap-activity-details-button .g-button,
.ws-reserver guidap-activity-details-button button {
	font-family: var(--wp--preset--font-family--jost) !important;
	font-size: .875rem !important; font-weight: 600 !important;
	text-transform: uppercase !important; letter-spacing: .2em !important; line-height: 1.5 !important;
	padding: .6rem 1.75rem !important; height: auto !important; min-height: 0 !important;
	border: 0 !important; border-radius: 20px !important;
	background: var(--ws-bleu) !important; color: #fff !important;
	box-shadow: var(--ws-ombre-bouton) !important; transition: transform .15s ease !important;
}
.ws-reserver guidap-activity-details-button button span { font: inherit !important; color: inherit !important; }
.ws-reserver guidap-activity-details-button button::after {
	content: ""; display: inline-block; width: 15px; height: 14px; margin-left: 12px; vertical-align: -1px;
	background: var(--ws-img-arrow-white) no-repeat center / contain;
}
.ws-reserver guidap-activity-details-button button:hover { transform: translateY(-1px); filter: brightness(.95); }
/* Elfy Park : orange — Corsaire Volant : noir */
.ws-reserver guidap-activity-details-button[activity-uuid="THgfBUMnQ3lhAjuwdF2et5PO4o9CNabc0z7V"] button { background: #de9439 !important; }
.ws-reserver guidap-activity-details-button[activity-uuid="a6LAfSI2GRgWmnVQ8UeElCyN9b4DoPidrBtY"] button,
.ws-reserver guidap-activity-details-button[activity-uuid="7tX6LGaUeuShKoOj8bckxqEV0HPy1RMv2s5Q"] button { background: #000 !important; }


/* =========================================================
   Wisplash — bandeau d'ouverture du jour
   ========================================================= */
.ws-bandeau-ouverture { padding: 0; }
.ws-ouverture {
	display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: .55rem .9rem;
	margin: 0; padding: .95rem 1.25rem;
	font-family: "Jost", sans-serif;
	font-size: clamp(1.05rem, 2.2vw, 1.35rem); font-weight: 700; letter-spacing: .02em; text-transform: uppercase;
	color: #fff; background: var(--ws-bleu-fonce, #1c60a1);
	text-align: center;
}
.ws-ouverture--ferme { background: #2b2b2b; }
.ws-ouverture__point {
	width: .85rem; height: .85rem; border-radius: 50%; flex: none;
	background: #a0ef89; box-shadow: 0 0 0 .3rem rgba(160,239,137,.3);
	animation: ws-pulse 2.2s ease-in-out infinite;
}
.ws-ouverture--ferme .ws-ouverture__point { background: #5ac9e6; box-shadow: 0 0 0 .3rem rgba(90,201,230,.25); animation: none; }
@keyframes ws-pulse { 0%,100% { box-shadow: 0 0 0 .3rem rgba(160,239,137,.3); } 50% { box-shadow: 0 0 0 .62rem rgba(160,239,137,.1); } }
@media (prefers-reduced-motion: reduce) { .ws-ouverture__point { animation: none; } }
.ws-ouverture__etat { font-size: 1.1em; }
.ws-ouverture__detail { font-weight: 500; text-transform: none; letter-spacing: 0; opacity: .95; }

/* =========================================================
   Bouton de réservation (Guidap chargé au clic)
   ========================================================= */
.ws-reserver { display: inline-block; margin: 0 .6rem .6rem 0; }
.ws-reserver-btn {
	display: inline-block; cursor: pointer; border: 0;
	font-family: "Jost", sans-serif; font-size: .875rem; font-weight: 600;
	letter-spacing: .2em; text-transform: uppercase; line-height: 1.5;
	padding: .6rem 1.75rem; border-radius: 20px;
	background: var(--ws-bleu, #0569a7); color: #fff;
	box-shadow: var(--ws-ombre-bouton);
	transition: background-color .15s ease, transform .15s ease;
}
.ws-reserver-btn:hover, .ws-reserver-btn:focus-visible { background: #04517f; transform: translateY(-1px); }
.ws-reserver-btn[disabled] { opacity: .7; cursor: progress; }
.ws-ouverture .ws-reserver-btn {
	background: #fff; color: var(--ws-bleu, #0569a7); letter-spacing: .08em; padding: .45rem 1.15rem; border-radius: 1.25rem;
}
.ws-ouverture .ws-reserver-btn:hover { background: var(--ws-vert, #a0ef89); color: #123; }

/* Barre fixe en bas sur mobile */
.ws-barre-reserver { display: none; }
@media (max-width: 781px) {
	.ws-barre-reserver {
		display: block; position: fixed; left: 0; right: 0; bottom: 0; z-index: 90;
		padding: .6rem .9rem calc(.6rem + env(safe-area-inset-bottom));
		background: rgba(255,255,255,.96); box-shadow: 0 -4px 14px rgba(0,0,0,.12);
		text-align: center;
	}
	.ws-barre-reserver .ws-reserver-btn { width: 100%; padding: .85rem 1rem; font-size: 1rem; }
	body { padding-bottom: 4.5rem; }
}

/* =========================================================
   Formes de l'ancien site : vagues et gouttes
   ========================================================= */
.ws-vagues-bleues, .ws-vagues-vertes { position: relative; overflow: hidden; }
.ws-vagues-bleues::before, .ws-vagues-vertes::before {
	content: ""; position: absolute; inset: auto 0 0 0; height: 62%;
	background-repeat: no-repeat; background-position: center bottom; background-size: 110% auto;
	z-index: 0; pointer-events: none;
}
.ws-vagues-bleues::before { background-image: var(--ws-img-waves-bleues); }
.ws-vagues-vertes::before { background-image: var(--ws-img-waves-vertes); }
.ws-vagues-bleues > *, .ws-vagues-vertes > * { position: relative; z-index: 1; }

.ws-goutte { position: relative; }
.ws-goutte::after {
	content: ""; position: absolute; right: 6%; top: -18px; width: 81px; height: 57px;
	background: var(--ws-img-goutte-blanche) no-repeat center / contain; pointer-events: none;
}


/* =========================================================
   Taille des photos dans le contenu
   Les photos carrées ou en portrait ne doivent pas occuper
   tout l'écran : on plafonne la hauteur et on centre.
   ========================================================= */
.ws-contenu figure.wp-block-image img,
.entry-content figure.wp-block-image img {
	max-height: 420px;
	width: auto;
	max-width: 100%;
	margin-inline: auto;
}
.ws-contenu figure.wp-block-image,
.entry-content figure.wp-block-image { text-align: center; }
.ws-contenu figure.wp-block-image figcaption,
.entry-content figure.wp-block-image figcaption { text-align: center; }

/* Dans une galerie, la dernière vignette d'une rangée ne s'étire pas */
.wp-block-gallery.has-nested-images figure.wp-block-image { flex-grow: 0; }
.wp-block-gallery.has-nested-images figure.wp-block-image img { max-height: none; }

@media (max-width: 781px) {
	.ws-contenu figure.wp-block-image img,
	.entry-content figure.wp-block-image img { max-height: 340px; }
}


/* =========================================================
   Calendrier de la saison (au survol du bandeau)
   ========================================================= */
.ws-bandeau-ouverture { position: relative; z-index: 90; }
.ws-ouverture-bloc { position: relative; z-index: 90; }
.ws-ouverture__calendrier {
	display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: .55rem .9rem;
	background: none; border: 0; padding: 0; margin: 0; color: inherit; cursor: pointer;
	font: inherit; letter-spacing: inherit; text-transform: inherit;
}
.ws-ouverture__chevron {
	width: .55rem; height: .55rem; flex: none;
	border-right: 2px solid currentColor; border-bottom: 2px solid currentColor;
	transform: rotate(45deg) translateY(-2px); transition: transform .2s ease;
}
.ws-ouverture__calendrier[aria-expanded="true"] .ws-ouverture__chevron { transform: rotate(-135deg) translateY(-2px); }

.ws-calendrier {
	position: absolute; left: 50%; top: 100%; z-index: 80;
	transform: translateX(-50%); padding-top: .5rem;
	width: min(420px, calc(100vw - 2rem));
}
.ws-calendrier[hidden] { display: none; }
.ws-calendrier__carte {
	background: #fff; color: #303030; border-radius: 18px;
	box-shadow: 0 18px 44px rgba(0,0,0,.22); padding: 1.1rem 1.2rem 1.3rem;
	font-family: "Jost", sans-serif; text-align: center;
}
.ws-calendrier__tete { display: flex; align-items: center; justify-content: space-between; gap: .5rem; margin-bottom: .85rem; }
.ws-calendrier__mois { font-size: 1.05rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; }
.ws-calendrier__nav {
	width: 2rem; height: 2rem; flex: none; border: 0; border-radius: 50%; cursor: pointer;
	background: var(--ws-bleu, #0569a7); color: #fff; font-size: 1.1rem; line-height: 1;
}
.ws-calendrier__nav[disabled] { opacity: .25; cursor: default; }
.ws-calendrier__grille { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; }
.ws-calendrier__jour {
	display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1px;
	min-height: 46px; border-radius: 9px; font-size: .95rem; font-weight: 600;
}
.ws-calendrier__jour--nom { min-height: 0; font-size: .7rem; font-weight: 700; text-transform: uppercase; opacity: .5; padding-bottom: 2px; }
.ws-calendrier__heures { font-size: .58rem; font-weight: 600; line-height: 1.1; letter-spacing: 0; }
.ws-calendrier__jour.est-ouvert { background: #e4f6dd; color: #2f6b1c; }
.ws-calendrier__jour.est-ferme { background: #f2f2f2; color: #9a9a9a; }
.ws-calendrier__jour.est-aujourdhui { outline: 2px solid var(--ws-bleu, #0569a7); outline-offset: -2px; }
.ws-calendrier__legende { display: flex; align-items: center; justify-content: center; gap: .45rem; margin: .9rem 0 .8rem; font-size: .78rem; color: #666; }
.ws-calendrier__pastille { width: .7rem; height: .7rem; border-radius: 3px; background: #e4f6dd; border: 1px solid #b7dfa6; flex: none; }
.ws-calendrier__bouton { display: inline-block; }
@media (max-width: 600px) {
	.ws-calendrier__carte { padding: .9rem .7rem 1.1rem; }
	.ws-calendrier__jour { min-height: 40px; font-size: .85rem; }
	.ws-calendrier__heures { font-size: .5rem; }
}


/* =========================================================
   Mouvements au défilement
   -----------------------------------------------------
   CSS natif : animations liées au défilement (animation-timeline)
   et transitions de vue entre les pages. Aucun JavaScript.
   Garde-fous : prefers-reduced-motion, @supports, et seules
   opacity / transform sont animées.
   ========================================================= */

@media (prefers-reduced-motion: no-preference) {

	@supports (animation-timeline: view()) {

		@keyframes ws-monte {
			from { opacity: 0; transform: translateY(18px); }
			to   { opacity: 1; transform: none; }
		}

		.ws-contenu > h2, .ws-contenu > h3, .ws-contenu > p,
		.ws-contenu > ul, .ws-contenu > ol,
		.ws-contenu > .wp-block-buttons, .ws-contenu > .wp-block-table,
		.ws-contenu > details,
		.ws-main .wp-block-group > h2, .ws-main .wp-block-group > h3,
		.ws-main .wp-block-group > p, .ws-main .wp-block-group > ul,
		.ws-main .wp-block-group > .wp-block-buttons,
		.ws-main .wp-block-group > .wp-block-table,
		.ws-main .wp-block-group > details,
		.ws-main .wp-block-group > .ws-reserver {
			animation: ws-monte linear both;
			animation-timeline: view();
			animation-range: entry 0% entry 55%;
		}

		@keyframes ws-apparait {
			from { opacity: 0; transform: translateY(26px); }
			to   { opacity: 1; transform: none; }
		}
		@keyframes ws-zoom {
			from { scale: 1.06; }
			to   { scale: 1; }
		}

		.ws-main figure.wp-block-image,
		.ws-main .wp-block-columns,
		.ws-main .wp-block-gallery {
			animation: ws-apparait linear both;
			animation-timeline: view();
			animation-range: entry 0% entry 60%;
		}

		.ws-main figure.wp-block-image img {
			animation: ws-zoom linear both;
			animation-timeline: view();
			animation-range: entry 0% exit 100%;
		}
		.ws-main .wp-block-gallery figure.wp-block-image img { animation: none; scale: 1; }
	}

	@supports (animation-timeline: scroll()) {
		@keyframes ws-teinte {
			from { background-color: #ffffff; }
			to   { background-color: #f1f8fc; }
		}
		body {
			animation: ws-teinte linear both;
			animation-timeline: scroll(root block);
		}
	}

	@keyframes ws-vt-entre {
		from { opacity: 0; transform: translateY(10px); }
		to   { opacity: 1; transform: none; }
	}
	@keyframes ws-vt-sort {
		from { opacity: 1; }
		to   { opacity: 0; }
	}
	::view-transition-old(root) { animation: ws-vt-sort .18s ease both; }
	::view-transition-new(root) { animation: ws-vt-entre .28s ease both; }

	.ws-entete { view-transition-name: ws-entete; }
	.ws-ouverture { view-transition-name: ws-bandeau; }
	.ws-barre-reserver { view-transition-name: ws-barre; }
}

@view-transition { navigation: auto; }
@media (prefers-reduced-motion: reduce) {
	@view-transition { navigation: none; }
}

@media print {
	* { animation: none !important; opacity: 1 !important; transform: none !important; }
}


/* =========================================================
   Priorité mobile
   Cibles tactiles de 44 px, rien sous 14 px, en-tête plus
   court pour que le contenu utile arrive plus tôt.
   ========================================================= */
@media (max-width: 781px) {
	.ws-hero.wp-block-cover { min-height: 430px !important; }

	.wp-block-button__link {
		min-height: 44px; display: inline-flex; align-items: center; justify-content: center;
	}
	.ws-ouverture a,
	.ws-reserver-btn {
		min-height: 44px; display: inline-flex; align-items: center; justify-content: center;
	}
	.ws-carte-actu__fleche { min-width: 44px !important; min-height: 44px !important; }
	.ws-faq summary { min-height: 44px; display: flex; align-items: center; padding-block: .5rem; }

	.ws-ouverture__detail,
	figcaption,
	.wp-block-table td,
	.wp-block-table th { font-size: .875rem !important; }
}


/* Liens vers les parcs voisins : uniquement dans le menu mobile,
   la barre des parcs les porte déjà sur ordinateur. */
.ws-nav--site .ws-lien-parc { display: none; }
@media (max-width: 781px) {
	.ws-nav--site .ws-lien-parc { display: block; }
	.ws-nav--site .ws-lien-parc--premier {
		margin-top: 1.25rem; padding-top: 1.25rem;
		border-top: 1px solid rgba(255,255,255,.35);
	}
	.ws-nav--site .ws-lien-parc .wp-block-navigation-item__content { opacity: .9; }
	.ws-nav--site .ws-lien-parc + .ws-lien-parc::before,
	.ws-nav--site .ws-lien-parc--premier::before { content: none; }
}


/* Mention météo sous le bandeau d'ouverture */
.ws-ouverture__meteo {
	margin: .35rem 0 0 !important;
	text-align: center;
	font-size: .8125rem;
	opacity: .75;
}
@media (max-width: 781px) {
	.ws-ouverture__meteo { font-size: .875rem; }
}
