/*
 * Kalenbook — public styles.
 *
 * Everything is scoped under .jdw and driven by the custom properties printed
 * by JDW_Theme. No global reset: the host theme keeps its typography.
 *
 * Layout principle: the photo illustrates, it does not dominate. A service
 * card reads name first, price second, picture third — because that is the
 * order a patient decides in.
 */

/* Le socle (2.2) : ce qu'un thème ou le kit d'Elementor met sur tous les
   boutons et les champs du site — marges, majuscules, ombres, fond,
   bordure — remis à zéro dans le module. Il pèse plus que ces règles-là
   (`html body …`, 0,3,3 ; le kit écrit au plus 0,3,1) et moins que
   chacune des nôtres (bouclier, 0,4,0 au moins) : ce qu'une règle du module
   dit l'emporte, ce qu'elle ne dit pas n'est plus celui du kit. Chez
   Patricia, une flèche du carrousel prenait les 28 px de marge du kit.
   Jamais `[type="button"]` ici : un attribut pèse une classe, et le socle
   passait devant les boutons du module (recette-2-2 l'a vu). */
html body .jdw button:not(.jdw-z.jdw-z) {
	margin: 0;
	padding: 0;
	border: 0;
	border-radius: 0;
	background: none;
	box-shadow: none;
	text-shadow: none;
	text-transform: none;
	letter-spacing: normal;
	font: inherit;
	color: inherit;
	/* 2.4.3 : Hello met nowrap sur tout bouton ; la carte d'une prestation
	   est un bouton, et son texte ne passait plus à la ligne. */
	white-space: normal;
}
html body .jdw input:not(.jdw-z.jdw-z),
html body .jdw select:not(.jdw-z.jdw-z),
html body .jdw textarea:not(.jdw-z.jdw-z) {
	margin: 0;
	box-shadow: none;
	text-transform: none;
	letter-spacing: normal;
	font: inherit;
}
/* 2.4.3 : un champ fait 48 px, quoi que le site impose (68 px chez
   Patricia) ; les cases et les boutons radio gardent leur taille. */
html body .jdw input:where(:not([type="checkbox"], [type="radio"], [type="hidden"], [type="file"], [type="range"], [type="color"])):not(.jdw-z.jdw-z),
html body .jdw select:not(.jdw-z.jdw-z) {
	height: 48px;
	min-height: 48px;
	max-height: none;
	line-height: 1.25;
	padding-top: 0;
	padding-bottom: 0;
}
/* Une icône de Kalenbook est un trait : Jeg Kit remplit toute icône d'un
   élément Elementor (fill: currentColor), et l'horloge devenait un disque. */
html body .jdw svg[fill="none"]:not(.jdw-z.jdw-z) { fill: none; }
html body .jdw svg[style*="--kb-ic"]:not(.jdw-z.jdw-z) { width: var(--kb-ic); height: var(--kb-ic); flex: none; }

.jdw:not(.jdw-z.jdw-z.jdw-z) {
	--jdw-gap: 16px;
	/* 2.4.3 : la place que laisse un bouton flottant du site (chat), posée
	   par jdw-page.js. Le contour d'un champ, --jdw-line-field, vient du
	   serveur (JDW_Theme::css_variables(), 3:1 sur la carte). */
	--kb-float: var(--kb-float-clear, 0px);
	font-family: var(--jdw-body);
	color: var(--jdw-ink);
	line-height: 1.6;
	box-sizing: border-box;
}
.jdw *:not(.jdw-z.jdw-z.jdw-z),
.jdw *:not(.jdw-z.jdw-z.jdw-z)::before,
.jdw *:not(.jdw-z.jdw-z.jdw-z)::after { box-sizing: inherit; }

.jdw :focus-visible:not(.jdw-z.jdw-z.jdw-z) {
	outline: 2px solid var(--jdw-accent-ink, var(--jdw-accent));
	outline-offset: 2px;
}

.jdw-sr:not(.jdw-z.jdw-z.jdw-z) {
	position: absolute;
	width: 1px; height: 1px;
	padding: 0; margin: -1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
}

/*
 * L'étape prend le focus quand elle s'ouvre, pour que la tabulation reparte
 * de là et qu'un lecteur d'écran annonce où l'on vient d'arriver. Elle n'est
 * pas une commande : l'encadrer d'un liseré n'apprendrait rien à personne et
 * dessinerait une grande boîte autour de la moitié du module. Le changement
 * d'étape, lui, se voit.
 */
.jdw-body:focus:not(.jdw-z.jdw-z.jdw-z),
.jdw-body:focus-visible:not(.jdw-z.jdw-z.jdw-z) {
	outline: none;
}

/* ================================================================
   Buttons
   ================================================================ */

.jdw-btn:not(.jdw-z.jdw-z.jdw-z) {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	padding: 12px 22px;
	border: 1px solid transparent;
	/* La charte : des pilules. */
	border-radius: var(--kb-radius-pill);
	background: var(--jdw-accent);
	color: var(--jdw-on-accent);
	font: inherit;
	font-size: 14.5px;
	font-weight: 600;
	line-height: 1.2;
	min-height: 44px;
	text-decoration: none;
	cursor: pointer;
	transition: opacity .15s ease, transform .1s ease;
}
.jdw-btn:hover:not(.jdw-z.jdw-z.jdw-z) { opacity: .9; color: var(--jdw-on-accent); }
.jdw-btn:active:not(.jdw-z.jdw-z.jdw-z) { transform: translateY(1px); }
.jdw-btn[disabled]:not(.jdw-z.jdw-z.jdw-z) { opacity: .4; cursor: not-allowed; transform: none; }

.jdw-btn--ghost:not(.jdw-z.jdw-z.jdw-z) {
	background: transparent;
	color: var(--jdw-ink);
	border-color: var(--jdw-line-field, var(--jdw-muted));
}
.jdw-btn--ghost:hover:not(.jdw-z.jdw-z.jdw-z) { color: var(--jdw-ink); background: var(--jdw-tint); }
.jdw-btn--second:not(.jdw-z.jdw-z.jdw-z) { background: var(--jdw-second); color: var(--jdw-on-second); }
.jdw-btn--second:hover:not(.jdw-z.jdw-z.jdw-z) { color: var(--jdw-on-second); }
.jdw-btn--quiet:not(.jdw-z.jdw-z.jdw-z) {
	background: transparent;
	color: var(--jdw-muted);
	border-color: transparent;
	padding: 10px 12px;
}
.jdw-btn--quiet:hover:not(.jdw-z.jdw-z.jdw-z) { color: var(--jdw-ink); }

/* ================================================================
   Shell
   ================================================================ */

.jdw-card:not(.jdw-z.jdw-z.jdw-z) {
	background: var(--jdw-card);
	border: 1px solid var(--jdw-rule);
	border-radius: var(--kb-radius);
	overflow: hidden;
	/* clip coupe les coins comme hidden, sans neutraliser le pied collant. */
	overflow: clip;
}

.jdw-head:not(.jdw-z.jdw-z.jdw-z) {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--jdw-gap);
	flex-wrap: wrap;
	padding: 22px 28px;
	border-bottom: 1px solid var(--jdw-rule);
}
.jdw-head__title:not(.jdw-z.jdw-z.jdw-z) {
	margin: 0;
	font-family: var(--jdw-display);
	font-size: 20px;
	font-weight: 700;
	letter-spacing: -0.02em;
	line-height: 1.2;
}

.jdw-body:not(.jdw-z.jdw-z.jdw-z) { padding: 28px; }

.jdw-foot:not(.jdw-z.jdw-z.jdw-z) {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--jdw-gap);
	flex-wrap: wrap;
	padding: 18px 28px;
	border-top: 1px solid var(--jdw-rule);
	background: var(--jdw-paper);
}
.jdw-foot__summary:not(.jdw-z.jdw-z.jdw-z) { font-size: 13.5px; color: var(--jdw-muted); flex: 1 1 200px; }
.jdw-foot__summary strong:not(.jdw-z.jdw-z.jdw-z) { color: var(--jdw-ink); font-weight: 500; }
.jdw-foot__actions:not(.jdw-z.jdw-z.jdw-z) { display: flex; gap: 10px; }

.jdw-label:not(.jdw-z.jdw-z.jdw-z) {
	margin: 0 0 16px;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 1.2px;
	text-transform: uppercase;
	color: var(--jdw-muted);
}
.jdw-label--tight:not(.jdw-z.jdw-z.jdw-z) { margin-bottom: 10px; }

/* ================================================================
   Who the patient sees
   ----------------------------------------------------------------
   Une rangee, pas une grille : le choix « avec qui » est secondaire
   par rapport a la prestation, et une seconde grille de cartes
   ferait deux fois la meme annonce sur un ecran.
   ================================================================ */

.jdw-team:not(.jdw-z.jdw-z.jdw-z) {
	margin-top: 28px;
	padding-top: 24px;
	border-top: 1px solid var(--jdw-rule);
}

.jdw-team__list:not(.jdw-z.jdw-z.jdw-z) {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
}

.jdw-team__pick:not(.jdw-z.jdw-z.jdw-z) {
	position: relative;
	display: flex;
	align-items: center;
	gap: 12px;
	flex: 1 1 220px;
	min-width: 0;
	padding: 10px 14px 10px 10px;
	border: 1px solid var(--jdw-rule);
	border-radius: var(--kb-radius);
	background: var(--jdw-card);
	font: inherit;
	color: inherit;
	text-align: left;
	cursor: pointer;
	transition: border-color .15s ease, box-shadow .15s ease;
}
.jdw-team__pick:hover:not(.jdw-z.jdw-z.jdw-z) { border-color: var(--jdw-muted); }
.jdw-team__pick.is-selected:not(.jdw-z.jdw-z.jdw-z) {
	border-color: var(--jdw-accent);
	box-shadow: inset 0 0 0 1px var(--jdw-accent);
	background: var(--jdw-tint);
}

.jdw-team__media:not(.jdw-z.jdw-z.jdw-z) {
	flex: 0 0 44px;
	width: 44px;
	height: 44px;
	border-radius: var(--kb-radius-badge);
	background: var(--jdw-tint);
	overflow: hidden;
}
.jdw-team__media img:not(.jdw-z.jdw-z.jdw-z) {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}
.jdw-team__media--none:not(.jdw-z.jdw-z.jdw-z) { border: 1px dashed var(--jdw-rule); background: none; }
.jdw-team__media--initials:not(.jdw-z.jdw-z.jdw-z) {
	display: flex;
	align-items: center;
	justify-content: center;
	background: var(--jdw-tint);
	color: var(--jdw-ink);
	font-size: 15px;
	font-weight: 600;
	letter-spacing: .02em;
}

.jdw-team__text:not(.jdw-z.jdw-z.jdw-z) {
	flex: 1;
	min-width: 0;
	display: flex;
	flex-direction: column;
	gap: 2px;
}

.jdw-team__name:not(.jdw-z.jdw-z.jdw-z) {
	font-weight: 600;
	line-height: 1.3;
}

/* 2.10 (C2) : le métier, sous le nom. */
.jdw-team__job:not(.jdw-z.jdw-z.jdw-z) {
	font-size: 13px;
	line-height: 1.3;
	color: var(--jdw-muted);
}
.jdw-team__pick.is-selected .jdw-team__job:not(.jdw-z.jdw-z.jdw-z) { color: var(--jdw-muted-tint, var(--jdw-muted)); }

/* Deux lignes au plus : une presentation entiere appartient a la page
   de l'equipe, pas a un bouton de formulaire. */
.jdw-team__bio:not(.jdw-z.jdw-z.jdw-z) {
	font-size: 13px;
	line-height: 1.4;
	color: var(--jdw-muted);
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.jdw-team__check:not(.jdw-z.jdw-z.jdw-z) {
	flex: 0 0 auto;
	width: 20px;
	height: 20px;
	border-radius: var(--kb-radius-badge);
	background: var(--jdw-accent);
	color: var(--jdw-on-accent);
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 12px;
	line-height: 1;
}

@media (max-width: 560px) {
	.jdw-team__pick:not(.jdw-z.jdw-z.jdw-z) { flex: 1 1 100%; }
}

/* ================================================================
   Service catalogue (1.20)

   Trois dispositions, validées sur maquette (r1 à r8) : la grille
   compacte, la liste compacte, le carrousel (Kalenbook Pro). Une carte
   n'a d'image que si on lui en a donné une — photo ou icône choisie —,
   jamais un cadre vide ni une initiale. « En savoir plus » est écrit,
   partout, et reste quand la description est cachée.
   ================================================================ */

.jdw-catalogue:not(.jdw-z.jdw-z.jdw-z) { position: relative; }

.jdw-service:not(.jdw-z.jdw-z.jdw-z) {
	position: relative;
	display: flex;
	flex-direction: column;
	min-width: 0;
	/* 2.1 : avec ou sans bordure, et sa couleur — le style de l'emplacement. */
	border: var(--kbp-border, 1.5px solid var(--jdw-rule));
	border-radius: var(--kb-radius);
	background: var(--jdw-card);
	overflow: hidden;
	transition: border-color .15s ease, box-shadow .15s ease, background-color .15s ease;
}
.jdw-service:hover:not(.jdw-z.jdw-z.jdw-z) { border-color: var(--jdw-muted); }
.jdw-service.is-selected:not(.jdw-z.jdw-z.jdw-z) {
	border-color: var(--jdw-accent);
	box-shadow: 0 0 0 3px var(--jdw-tint);
}

.jdw-service__pick:not(.jdw-z.jdw-z.jdw-z) {
	display: flex;
	flex-direction: column;
	align-items: stretch;
	flex: 1 1 auto;
	width: 100%;
	padding: 0;
	border: 0;
	background: none;
	font: inherit;
	color: inherit;
	text-align: left;
	cursor: pointer;
}

.jdw-svc__media:not(.jdw-z.jdw-z.jdw-z) {
	position: relative;
	display: grid;
	place-items: center;
	width: 100%;
	overflow: hidden;
	background: var(--jdw-tint);
	color: var(--jdw-accent-ink, var(--jdw-accent));
}
.jdw-svc__media--card:not(.jdw-z.jdw-z.jdw-z) { aspect-ratio: var(--kbp-img-ratio, 4 / 3); max-height: var(--kbp-img-h, none); }
.jdw-svc__media--wide:not(.jdw-z.jdw-z.jdw-z) { aspect-ratio: 16 / 10; }
.jdw-svc__media img:not(.jdw-z.jdw-z.jdw-z) {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: var(--kbp-img-pos, var(--kb-focus, center));
}
.jdw-svc__media--icon svg:not(.jdw-z.jdw-z.jdw-z) { width: 40px; height: 40px; }

.jdw-svc__body:not(.jdw-z.jdw-z.jdw-z) {
	display: flex;
	flex-direction: column;
	gap: 4px;
	flex: 1 1 auto;
	min-width: 0;
	padding: 12px 14px 4px;
}

.jdw-service__name:not(.jdw-z.jdw-z.jdw-z) {
	font-family: var(--jdw-display);
	font-size: var(--kbp-title-size, 16px);
	font-weight: 700;
	letter-spacing: -0.01em;
	line-height: 1.25;
	color: var(--kbp-title, var(--jdw-ink));
	overflow-wrap: break-word;
	hyphens: auto;
}
/* Trois lignes au plus dans une case de grille : le nom entier est dans la feuille. */
.jdw-svc--tile .jdw-service__name:not(.jdw-z.jdw-z.jdw-z) {
	display: -webkit-box;
	-webkit-line-clamp: 3;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.jdw-svc__facts:not(.jdw-z.jdw-z.jdw-z) {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 2px 12px;
	font-size: 14px;
	color: var(--jdw-muted);
}
/* Dans la grille, la durée et le prix ont chacun leur ligne (retouche 1). */
.jdw-svc__facts--stacked:not(.jdw-z.jdw-z.jdw-z) { flex-direction: column; align-items: flex-start; gap: 0; }
.jdw-service__meta:not(.jdw-z.jdw-z.jdw-z) {
	display: inline-flex;
	align-items: center;
	gap: 5px;
	white-space: nowrap;
	font-variant-numeric: tabular-nums;
}
.jdw-service__price:not(.jdw-z.jdw-z.jdw-z) {
	font-size: 15px;
	font-weight: 800;
	color: var(--jdw-ink);
	white-space: nowrap;
	font-variant-numeric: tabular-nums;
}
.jdw-service__price--free:not(.jdw-z.jdw-z.jdw-z) {
	font-size: 14px;
	font-weight: 600;
	color: var(--jdw-accent-ink, var(--jdw-accent));
}

.jdw-service__short:not(.jdw-z.jdw-z.jdw-z) {
	margin-top: 4px;
	font-size: var(--kbp-text-size, 14px);
	line-height: 1.5;
	color: var(--kbp-text, var(--jdw-muted));
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}
.jdw-service.is-selected .jdw-service__short:not(.jdw-z.jdw-z.jdw-z) { color: var(--jdw-muted-tint); }

.jdw-svc__foot:not(.jdw-z.jdw-z.jdw-z) {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 8px;
	padding: 8px 10px 8px 14px;
}

/* « En savoir plus » : écrit, souligné, une cible de 44 px qui ne mord pas
   sur la zone qui choisit la carte (elle est sous elle, pas dessus). */
.jdw-service__more:not(.jdw-z.jdw-z.jdw-z) {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	min-width: 44px;
	padding: 0;
	border: 0;
	background: none;
	font: inherit;
	font-size: 14px;
	font-weight: 600;
	color: var(--jdw-accent-ink, var(--jdw-accent));
	cursor: pointer;
	text-decoration: underline;
	text-underline-offset: 3px;
	white-space: nowrap;
}
.jdw-service__more:not(.jdw-z.jdw-z.jdw-z) { flex: 0 0 auto; }
.jdw-service__more:hover:not(.jdw-z.jdw-z.jdw-z) { color: var(--jdw-ink); }

.jdw-svc__book:not(.jdw-z.jdw-z.jdw-z) {
	min-height: 44px;
	padding: 10px 18px;
	font-size: 14.5px;
}
.jdw-svc--tile .jdw-svc__book:not(.jdw-z.jdw-z.jdw-z) { padding: 8px 14px; }
/* Une carte étroite : « Réserver » prend toute la ligne, sous le lien. */
.jdw-svc--tile .jdw-svc__foot:not(.jdw-z.jdw-z.jdw-z) { container-type: inline-size; }
.jdw-btn--sm:not(.jdw-z.jdw-z.jdw-z) { padding: 8px 14px; font-size: 14px; }

.jdw-service__check:not(.jdw-z.jdw-z.jdw-z) {
	position: absolute;
	top: 10px;
	left: 10px;
	width: 28px;
	height: 28px;
	border-radius: var(--kb-radius-badge);
	background: var(--jdw-accent);
	color: var(--jdw-on-accent);
	display: grid;
	place-items: center;
	box-shadow: 0 0 0 3px var(--jdw-card);
	pointer-events: none;
}

/* ---- la grille ---- */

.jdw-cat-grid:not(.jdw-z.jdw-z.jdw-z) {
	display: grid;
	grid-template-columns: repeat(var(--jdw-cols, 2), minmax(0, 1fr));
	gap: 12px;
	margin: 0;
	padding: 0;
	list-style: none;
}
/* Sans aucune image : la carte choisie se teinte, la coche s'efface. */
.jdw-cat-grid--plain .jdw-service.is-selected:not(.jdw-z.jdw-z.jdw-z) { background: var(--jdw-tint); }
.jdw-cat-grid--plain .jdw-service__check:not(.jdw-z.jdw-z.jdw-z) { display: none; }
.jdw-cat-grid--plain .jdw-svc__body:not(.jdw-z.jdw-z.jdw-z) { padding-top: 14px; }

/* ---- le carrousel (Kalenbook Pro) ---- */

.jdw-car:not(.jdw-z.jdw-z.jdw-z) { position: relative; }
.jdw-car__track:not(.jdw-z.jdw-z.jdw-z) {
	display: grid;
	grid-auto-flow: column;
	grid-auto-columns: 85%;
	gap: 12px;
	margin: 0;
	padding: 4px 2px 6px;
	list-style: none;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scrollbar-width: none;
	overscroll-behavior-x: contain;
}
.jdw-car__track:not(.jdw-z.jdw-z.jdw-z)::-webkit-scrollbar { display: none; }
.jdw-svc--slide:not(.jdw-z.jdw-z.jdw-z) { scroll-snap-align: start; border-radius: var(--kb-radius-lg); }
.jdw-svc--slide .jdw-svc__body:not(.jdw-z.jdw-z.jdw-z) { padding: 14px 16px 4px; }
.jdw-svc--slide .jdw-service__name:not(.jdw-z.jdw-z.jdw-z) { font-size: 19px; }
.jdw-svc--slide .jdw-svc__foot:not(.jdw-z.jdw-z.jdw-z) { margin-top: auto; padding: 4px 12px 12px 16px; flex-wrap: nowrap; }
.jdw-car__foot:not(.jdw-z.jdw-z.jdw-z) { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 12px; margin-top: 6px; }
.jdw-car__dots:not(.jdw-z.jdw-z.jdw-z) { display: flex; flex-wrap: wrap; align-items: center; gap: 0 8px; min-width: 0; }
.jdw-car__dot:not(.jdw-z.jdw-z.jdw-z) { display: grid; place-items: center; width: 24px; height: 44px; padding: 0; border: 0; background: none; cursor: pointer; }
.jdw-car__dot:not(.jdw-z.jdw-z.jdw-z)::before { content: ""; width: 8px; height: 8px; border-radius: var(--kb-radius-pill); background: var(--jdw-rule); transition: width .2s ease; }
.jdw-car__dot[aria-current="true"]:not(.jdw-z.jdw-z.jdw-z)::before { width: 20px; background: var(--jdw-ink); }
.jdw-car__count:not(.jdw-z.jdw-z.jdw-z) { flex: none; font-size: 14px; font-weight: 600; color: var(--jdw-muted); font-variant-numeric: tabular-nums; white-space: nowrap; }
.jdw-car__arrows:not(.jdw-z.jdw-z.jdw-z) { display: none; gap: 8px; margin-left: auto; flex: none; }
.jdw-car__arrow:not(.jdw-z.jdw-z.jdw-z) { display: grid; place-items: center; width: 44px; height: 44px; border: 1px solid var(--jdw-rule); border-radius: 50%; background: var(--jdw-card); color: var(--jdw-ink); cursor: pointer; }
@media (pointer: fine) { .jdw-car__arrows:not(.jdw-z.jdw-z.jdw-z) { display: flex; } }
.jdw-car__all:not(.jdw-z.jdw-z.jdw-z) {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	min-height: 44px;
	/* 2.4.3 : 8 px sous les points et les flèches. */
	margin-top: 8px;
	padding: 0;
	border: 0;
	background: none;
	font: inherit;
	font-size: 15px;
	font-weight: 600;
	color: var(--jdw-accent-ink, var(--jdw-accent));
	cursor: pointer;
}

/* ---- la liste ---- */

.jdw-cat-list:not(.jdw-z.jdw-z.jdw-z) {
	margin: 0;
	padding: 0;
	list-style: none;
	border: 1px solid var(--jdw-rule);
	border-radius: var(--kb-radius);
	background: var(--jdw-card);
	overflow: hidden;
}
.jdw-svc--row:not(.jdw-z.jdw-z.jdw-z) {
	flex-direction: row;
	align-items: center;
	gap: 8px;
	border: 0;
	border-top: 1px solid var(--jdw-rule);
	border-radius: 0;
	padding-right: 4px;
}
.jdw-svc--row:first-child:not(.jdw-z.jdw-z.jdw-z) { border-top: 0; }
.jdw-svc--row:not(.jdw-z.jdw-z.jdw-z) { padding-block: 4px; }
.jdw-svc--row:hover:not(.jdw-z.jdw-z.jdw-z) { border-color: var(--jdw-rule); background: var(--jdw-paper); }
.jdw-svc--row.is-selected:not(.jdw-z.jdw-z.jdw-z) {
	box-shadow: inset 4px 0 0 var(--jdw-accent);
	background: var(--jdw-tint);
}
.jdw-svc--row .jdw-service__pick:not(.jdw-z.jdw-z.jdw-z) {
	flex-direction: row;
	align-items: center;
	gap: 12px;
	padding: 10px 0 10px 12px;
	min-height: 64px;
}
.jdw-svc--row .jdw-svc__media:not(.jdw-z.jdw-z.jdw-z) {
	flex: 0 0 52px;
	width: 52px;
	height: 52px;
	aspect-ratio: auto;
	border-radius: var(--kb-radius-sm);
}
.jdw-svc--row .jdw-svc__media--icon svg:not(.jdw-z.jdw-z.jdw-z) { width: 26px; height: 26px; }
.jdw-svc--row .jdw-svc__body:not(.jdw-z.jdw-z.jdw-z) { padding: 0; }
.jdw-svc--row .jdw-service__check:not(.jdw-z.jdw-z.jdw-z) { display: none; }
.jdw-svc__chev:not(.jdw-z.jdw-z.jdw-z) {
	flex: 0 0 44px;
	justify-content: center;
	color: var(--jdw-muted);
	text-decoration: none;
}
/* 2.4.6 : « Réserver » sur chaque ligne. Au téléphone, la ligne garde son
   titre et sa flèche ; le bouton passe dessous, à gauche du texte. */
@media (max-width: 480px) {
	.jdw-svc--row:not(.jdw-z.jdw-z.jdw-z) { flex-wrap: wrap; row-gap: 8px; }
	.jdw-svc--row .jdw-service__pick:not(.jdw-z.jdw-z.jdw-z) { flex: 1 1 calc(100% - 60px); min-width: 0; }
	.jdw-svc--row .jdw-svc__book:not(.jdw-z.jdw-z.jdw-z) { order: 9; margin: 0 0 10px 76px; }
	.jdw-svc--row:not(:has(.jdw-svc__media)) .jdw-svc__book:not(.jdw-z.jdw-z.jdw-z) { margin-left: 12px; }
}

/* ---- les catégories ---- */

.jdw-cats-wrap:not(.jdw-z.jdw-z.jdw-z) { position: relative; margin: 0 0 14px; }
.jdw-cats:not(.jdw-z.jdw-z.jdw-z) {
	display: flex;
	gap: 8px;
	overflow-x: auto;
	padding: 2px 2px 4px;
	scrollbar-width: none;
}
.jdw-cats:not(.jdw-z.jdw-z.jdw-z)::-webkit-scrollbar { display: none; }
.jdw-cat:not(.jdw-z.jdw-z.jdw-z) {
	flex: none;
	min-height: 44px;
	padding: 0 16px;
	border: 1px solid var(--jdw-rule);
	border-radius: var(--kb-radius-pill);
	background: var(--jdw-card);
	font: inherit;
	font-size: 14.5px;
	font-weight: 600;
	color: var(--jdw-ink);
	white-space: nowrap;
	cursor: pointer;
}
.jdw-cat[aria-pressed="true"]:not(.jdw-z.jdw-z.jdw-z) {
	background: var(--jdw-ink);
	border-color: var(--jdw-ink);
	color: var(--jdw-card);
}

/* ---- la barre « Continuer » : téléphone et tablette seulement ---- */

/* 2.1 : le style d'un emplacement — le cadre, la marge, le lien, la barre. */
.jdw-booking[style*="--kbp-frame"]:not(.jdw-z.jdw-z.jdw-z) {
	padding: var(--kbp-pad, 16px);
	border-radius: var(--kb-radius-lg);
	background: var(--kbp-frame);
}
.jdw-booking .jdw-svc__body:not(.jdw-z.jdw-z.jdw-z) { padding: var(--kbp-pad, 12px) calc(var(--kbp-pad, 12px) + 2px) 4px; }
.jdw-booking .jdw-svc__facts:not(.jdw-z.jdw-z.jdw-z) { font-size: var(--kbp-text-size, 14px); color: var(--kbp-text, var(--jdw-muted)); }
.jdw-booking .jdw-service__more:not(.jdw-z.jdw-z.jdw-z) { color: var(--kbp-link, var(--jdw-accent-ink, var(--jdw-accent))); }
.jdw-booking .jdw-go__btn:not(.jdw-z.jdw-z.jdw-z) { background: var(--kbp-bar, var(--jdw-accent)); }

/* 2.2 (mission B.4) : chaque élément du module lit son réglage, posé en
   variable sur l'emplacement. Sans réglage, la valeur de secours est le
   rendu d'avant. Par appareil : la classe jdw--phone, --tablet ou
   --desktop, posée par le script d'après la largeur de l'écran ; une
   valeur de téléphone retombe sur celle de la tablette, puis de
   l'ordinateur, comme dans Elementor. */
.jdw-booking:not(.jdw-z.jdw-z.jdw-z) {
	--kbp-img-h: var(--kbp-img-h-d, 240px);
	--kbp-gap: var(--kbp-gap-d, 12px);
	max-width: var(--kbp-m-max, none);
	margin: var(--kbp-m-margin, 0);
}
.jdw-booking.jdw--tablet:not(.jdw-z.jdw-z.jdw-z) {
	--kbp-img-h: var(--kbp-img-h-t, var(--kbp-img-h-d, 200px));
	--kbp-gap: var(--kbp-gap-t, var(--kbp-gap-d, 12px));
}
.jdw-booking.jdw--phone:not(.jdw-z.jdw-z.jdw-z) {
	--kbp-img-h: var(--kbp-img-h-m, var(--kbp-img-h-t, var(--kbp-img-h-d, 168px)));
	--kbp-gap: var(--kbp-gap-m, var(--kbp-gap-t, var(--kbp-gap-d, 12px)));
}
.jdw-booking[style*="--kbp-m-"]:not(.jdw-z.jdw-z.jdw-z) {
	padding: var(--kbp-m-pad, 0);
	border: var(--kbp-m-border, 0 solid transparent);
	border-radius: var(--kbp-m-radius, 0);
	background: var(--kbp-frame, transparent);
}
.jdw-booking[style*="--kbp-frame"][style*="--kbp-m-pad"]:not(.jdw-z.jdw-z.jdw-z) { padding: var(--kbp-m-pad); }

/* Les étapes. */
.jdw-booking.jdw--nosteps .jdw-steps:not(.jdw-z.jdw-z.jdw-z) { display: none; }
/* Sans étapes, sans titre visible ni langues : plus d'en-tête vide. */
.jdw-booking.jdw--nosteps .jdw-head:not(:has(.jdw-head__title, .jdw-langs)):not(.jdw-z.jdw-z.jdw-z) { display: none; }
.jdw-booking .jdw-steps:not(.jdw-z.jdw-z.jdw-z),
.jdw-booking .jdw-step:not(.jdw-z.jdw-z.jdw-z) { color: var(--kbp-steps, var(--jdw-muted)); }
.jdw-booking .jdw-step__n:not(.jdw-z.jdw-z.jdw-z) { color: var(--kbp-steps-on, var(--jdw-ink)); }
.jdw-booking .jdw-steps__dots .is-on:not(.jdw-z.jdw-z.jdw-z) { background: var(--kbp-steps-on, var(--jdw-accent)); }

/* La carte : une ombre, l'espace entre les cartes, des hauteurs égales. */
.jdw-booking .jdw-service:not(.jdw-z.jdw-z.jdw-z) { box-shadow: var(--kbp-shadow, none); }
.jdw-booking .jdw-service.is-selected:not(.jdw-z.jdw-z.jdw-z) { box-shadow: 0 0 0 3px var(--jdw-tint), var(--kbp-shadow, 0 0 0 transparent); }
.jdw-booking .jdw-cat-grid:not(.jdw-z.jdw-z.jdw-z),
.jdw-booking .jdw-car__track:not(.jdw-z.jdw-z.jdw-z) { gap: var(--kbp-gap); align-items: var(--kbp-equal, stretch); }

/* L'image : jamais plus haute que la hauteur de l'appareil. L'image est
   posée dans son cadre, pas étirée par lui : un cadre borné par
   max-height ne donne pas sa hauteur à un enfant en pourcentage. */
.jdw-booking .jdw-svc__media--card:not(.jdw-z.jdw-z.jdw-z),
.jdw-booking .jdw-svc__media--wide:not(.jdw-z.jdw-z.jdw-z) {
	max-height: var(--kbp-img-h);
	width: auto;
	margin: var(--kbp-img-inset, 0px) var(--kbp-img-inset, 0px) 0;
	border-radius: var(--kbp-img-radius, 0);
}
.jdw-booking .jdw-svc__media--card:not(.jdw-z.jdw-z.jdw-z) { aspect-ratio: var(--kbp-img-ratio, 4 / 3); }
.jdw-booking .jdw-svc__media--wide:not(.jdw-z.jdw-z.jdw-z) { aspect-ratio: var(--kbp-img-ratio, 16 / 10); }
.jdw-booking .jdw-cat-grid--one .jdw-svc__media--card:not(.jdw-z.jdw-z.jdw-z) { aspect-ratio: var(--kbp-img-ratio, 16 / 9); }
.jdw-booking .jdw-svc__media img:not(.jdw-z.jdw-z.jdw-z) {
	position: absolute;
	inset: 0;
	object-fit: var(--kbp-img-fit, cover);
}
.jdw-booking.jdw--img-original .jdw-svc__media--card:not(.jdw-z.jdw-z.jdw-z),
.jdw-booking.jdw--img-original .jdw-svc__media--wide:not(.jdw-z.jdw-z.jdw-z) { aspect-ratio: auto; }
.jdw-booking.jdw--img-original .jdw-svc__media img:not(.jdw-z.jdw-z.jdw-z) { position: static; height: auto; max-height: var(--kbp-img-h); object-fit: contain; }

/* Le titre, la durée, le prix, la description. La description se coupe
   en fin de ligne, avec « … » : jamais au milieu d'un mot. */
.jdw-booking .jdw-svc--slide .jdw-service__name:not(.jdw-z.jdw-z.jdw-z) { font-size: var(--kbp-title-size, 19px); }
.jdw-booking .jdw-svc__facts:not(.jdw-z.jdw-z.jdw-z) { font-size: var(--kbp-dur-size, 14px); color: var(--kbp-dur, var(--kbp-text, var(--jdw-muted))); }
.jdw-booking .jdw-service__price:not(.jdw-z.jdw-z.jdw-z) { font-size: var(--kbp-price-size, 15px); color: var(--kbp-price, var(--kbp-title, var(--jdw-ink))); }
.jdw-booking .jdw-service__price--free:not(.jdw-z.jdw-z.jdw-z) { font-size: var(--kbp-price-size, 14px); color: var(--kbp-price, var(--jdw-accent-ink, var(--jdw-accent))); }
.jdw-booking .jdw-service__short:not(.jdw-z.jdw-z.jdw-z) { -webkit-line-clamp: var(--kbp-lines, 2); line-clamp: var(--kbp-lines, 2); }
.jdw-booking .jdw-service__name:not(.jdw-z.jdw-z.jdw-z),
.jdw-booking .jdw-service__short:not(.jdw-z.jdw-z.jdw-z) { overflow-wrap: normal; word-break: normal; }

/* « En savoir plus » : un lien souligné, ou un bouton. */
.jdw-booking .jdw-service__more:not(.jdw-z.jdw-z.jdw-z) { text-decoration-line: var(--kbp-more-deco, underline); }
.jdw-booking .jdw-service__more:hover:not(.jdw-z.jdw-z.jdw-z) { color: var(--kbp-link-hover, var(--jdw-ink)); }
.jdw-booking.jdw--more-btn .jdw-service__more:not(.jdw-svc__chev):not(.jdw-z.jdw-z.jdw-z) {
	padding: 0 16px;
	border: 2px solid currentColor;
	border-radius: var(--kbp-btn-radius, var(--kb-radius-pill));
	text-decoration-line: none;
}

/* Le bouton « Réserver » : plein, contour ou texte ; 44 px de haut, toujours. */
.jdw-booking .jdw-svc__book:not(.jdw-z.jdw-z.jdw-z) {
	border-radius: var(--kbp-btn-radius, var(--kb-radius-pill));
	padding-left: var(--kbp-btn-pad, 18px);
	padding-right: var(--kbp-btn-pad, 18px);
}
.jdw-booking .jdw-svc__book:hover:not([disabled]):not(.jdw-z.jdw-z.jdw-z) {
	opacity: 1;
	background: var(--kbp-btn-hover, var(--jdw-accent));
	color: var(--kbp-btn-text-hover, var(--jdw-on-accent));
}
.jdw-booking.jdw--btn-outline .jdw-svc__book:not(.jdw-z.jdw-z.jdw-z) {
	background: transparent;
	border: 2px solid var(--jdw-accent);
	color: var(--kbp-btn-ink, var(--jdw-accent-ink, var(--jdw-accent)));
}
.jdw-booking.jdw--btn-text .jdw-svc__book:not(.jdw-z.jdw-z.jdw-z) {
	background: transparent;
	border-color: transparent;
	color: var(--kbp-btn-ink, var(--jdw-accent-ink, var(--jdw-accent)));
	text-decoration: underline;
	text-underline-offset: 3px;
}

/* Le carrousel : les cartes visibles par appareil (le script les compte,
   jamais une carte sous 160 px), une carte seule bornée et centrée. */
.jdw-booking .jdw-car:not(.jdw-z.jdw-z.jdw-z) { max-width: var(--kbp-car-width, none); margin-inline: auto; }
.jdw-booking .jdw-car__track:not(.jdw-z.jdw-z.jdw-z) { grid-auto-columns: calc((100% - var(--kb-vis-n, 1) * var(--kbp-gap)) / var(--kb-vis, 1.2)); }
.jdw-booking .jdw-svc--slide .jdw-svc__foot:not(.jdw-z.jdw-z.jdw-z) { flex-wrap: wrap; }
.jdw-booking .jdw-svc--slide .jdw-svc__book:not(.jdw-z.jdw-z.jdw-z) { margin-left: auto; }
.jdw-booking .jdw-car__arrow:not(.jdw-z.jdw-z.jdw-z) {
	box-sizing: border-box;
	width: var(--kbp-arr-size, 44px);
	height: var(--kbp-arr-size, 44px);
	border-radius: var(--kbp-arr-radius, 50%);
	background: var(--kbp-arr, var(--jdw-card));
	color: var(--kbp-arr-icon, var(--jdw-ink));
}
.jdw-booking .jdw-car__dot:not(.jdw-z.jdw-z.jdw-z) { width: 44px; }
.jdw-booking .jdw-car__dot:not(.jdw-z.jdw-z.jdw-z)::before { background: var(--kbp-dot, var(--jdw-rule)); }
.jdw-booking .jdw-car__dot[aria-current="true"]:not(.jdw-z.jdw-z.jdw-z)::before { background: var(--kbp-dot-on, var(--jdw-ink)); }
.jdw-booking .jdw-car--sides:not(.jdw-z.jdw-z.jdw-z) { position: relative; }
.jdw-booking .jdw-car--sides .jdw-car__arrows:not(.jdw-z.jdw-z.jdw-z) { position: absolute; top: calc(var(--kbp-img-h) / 2); left: 0; right: 0; justify-content: space-between; pointer-events: none; transform: translateY(-50%); }
.jdw-booking .jdw-car--sides .jdw-car__arrow:not(.jdw-z.jdw-z.jdw-z) { pointer-events: auto; box-shadow: 0 2px 8px rgba(21, 32, 43, .18); }

/* Les écrans suivants : jours, heures, champs, libellés. */
.jdw-booking .jdw-day:not(.jdw-z.jdw-z.jdw-z),
.jdw-booking .jdw-slot:not(.jdw-z.jdw-z.jdw-z) { background: var(--kbp-slot, transparent); color: var(--kbp-slot-text, inherit); }
.jdw-booking .jdw-slot:not(.jdw-z.jdw-z.jdw-z) { background: var(--kbp-slot, var(--jdw-card)); }
.jdw-booking .jdw-slot.is-selected:not(.jdw-z.jdw-z.jdw-z) { background: var(--kbp-slot-on, var(--jdw-accent)); border-color: var(--kbp-slot-on, var(--jdw-accent)); color: var(--kbp-slot-on-text, var(--jdw-on-accent)); }
.jdw-booking .jdw-day.is-selected:not(.jdw-z.jdw-z.jdw-z) { background: var(--kbp-slot-on, var(--jdw-tint)); border-color: var(--kbp-slot-on, var(--jdw-tint)); color: var(--kbp-slot-on-text, var(--jdw-ink)); }
.jdw-booking .jdw-day.is-selected .jdw-day__n:not(.jdw-z.jdw-z.jdw-z) { color: var(--kbp-slot-on-text, var(--jdw-accent-ink, var(--jdw-accent))); }
.jdw-booking .jdw-field input:not(.jdw-z.jdw-z.jdw-z),
.jdw-booking .jdw-field select:not(.jdw-z.jdw-z.jdw-z),
.jdw-booking .jdw-field textarea:not(.jdw-z.jdw-z.jdw-z) { background: var(--kbp-field, var(--jdw-card)); border-color: var(--kbp-field-border, var(--jdw-line-field, var(--jdw-muted))); }
.jdw-booking .jdw-label:not(.jdw-z.jdw-z.jdw-z) { color: var(--kbp-label, var(--jdw-muted)); }

/* Les ateliers (B.4, 10) : la carte, l'image, les textes, le bouton. */
.jdw-events .jdw-event:not(.jdw-z.jdw-z.jdw-z) { background: var(--jdw-card); border: var(--kbp-border, 1px solid var(--jdw-rule)); box-shadow: var(--kbp-shadow, none); }
.jdw-events .jdw-event__body:not(.jdw-z.jdw-z.jdw-z) { padding: var(--kbp-pad, 22px); }
.jdw-events .jdw-event--card .jdw-event__media:not(.jdw-z.jdw-z.jdw-z) { aspect-ratio: var(--kbp-img-ratio, 16 / 9); max-height: var(--kbp-img-h-d, none); margin: var(--kbp-img-inset, 0px) var(--kbp-img-inset, 0px) 0; border-radius: var(--kbp-img-radius, 0); overflow: hidden; }
.jdw-events .jdw-event__media img:not(.jdw-z.jdw-z.jdw-z) { object-fit: var(--kbp-img-fit, cover); object-position: var(--kbp-img-pos, center); }
.jdw-events .jdw-event__title:not(.jdw-z.jdw-z.jdw-z) { color: var(--kbp-title, inherit); font-size: var(--kbp-title-size, 21px); }
.jdw-events .jdw-event--featured .jdw-event__title:not(.jdw-z.jdw-z.jdw-z) { font-size: calc(var(--kbp-title-size, 21px) + 7px); }
.jdw-events .jdw-event--featured .jdw-event__body:not(.jdw-z.jdw-z.jdw-z) { padding: calc(var(--kbp-pad, 22px) + 8px); }
.jdw-events .jdw-event__lead:not(.jdw-z.jdw-z.jdw-z) { color: var(--kbp-text, var(--jdw-muted)); font-size: var(--kbp-text-size, 14px); }
.jdw-events .jdw-event__meta:not(.jdw-z.jdw-z.jdw-z) { color: var(--kbp-dur, var(--jdw-muted)); }
.jdw-events .jdw-event__price:not(.jdw-z.jdw-z.jdw-z) { color: var(--kbp-price, var(--jdw-ink)); font-size: var(--kbp-price-size, 18px); }
.jdw-events .jdw-btn:not(.jdw-z.jdw-z.jdw-z) { border-radius: var(--kbp-btn-radius, var(--kb-radius-pill)); }
.jdw-events[style*="--jdw-accent"] .jdw-btn--second:not(.jdw-z.jdw-z.jdw-z) { background: var(--jdw-accent); color: var(--jdw-on-accent); }
.jdw-events[style*="--jdw-accent"] .jdw-btn--ghost:not(.jdw-z.jdw-z.jdw-z) { border-color: var(--jdw-accent); color: var(--jdw-accent-ink, var(--jdw-accent)); }
/* Un arrondi choisi s'applique tel quel à la carte d'atelier. */
.jdw-events[style*="--kb-radius:"] .jdw-event:not(.jdw-z.jdw-z.jdw-z) { border-radius: var(--kb-radius); }

/* « Réserver », le bouton seul : son arrondi, sa marge, son survol. */
.jdw-launch-wrap .jdw-launch:not(.jdw-z.jdw-z.jdw-z) { border-radius: var(--kbp-btn-radius, var(--kb-radius-pill)); padding-left: var(--kbp-btn-pad, 26px); padding-right: var(--kbp-btn-pad, 26px); }
.jdw-launch-wrap[style*="--kbp-btn-hover"] .jdw-launch:hover:not(.jdw-z.jdw-z.jdw-z) { opacity: 1; background: var(--kbp-btn-hover); color: var(--kbp-btn-text-hover, var(--jdw-on-accent)); }
/* Dans un éditeur seulement : ce qui se lit mal, dit au-dessus du module. */
.jdw-editwarn:not(.jdw-z.jdw-z.jdw-z) {
	margin: 0 0 8px;
	padding: 10px 12px;
	border-radius: var(--kb-radius-sm);
	background: var(--jdw-second-t);
	color: var(--jdw-ink);
	font: 14px/1.45 -apple-system, "Segoe UI", Roboto, sans-serif;
}
.jdw-editwarn__fix:not(.jdw-z.jdw-z.jdw-z) { min-height: 44px; margin: 4px 0 0; padding: 0 14px; border: 1.5px solid currentColor; border-radius: var(--kb-radius-pill); background: #FFFFFF; color: #6B3A08; font: 600 14px/1 -apple-system, "Segoe UI", Roboto, sans-serif; cursor: pointer; }
/* C3 : au téléphone, sur une colonne, une image plus basse — deux
   prestations par écran. */
.jdw-cat-grid--one .jdw-svc__media--card:not(.jdw-z.jdw-z.jdw-z) { aspect-ratio: 16 / 9; max-height: var(--kbp-img-h, 168px); }

.jdw-go:not(.jdw-z.jdw-z.jdw-z) {
	position: fixed;
	left: 0;
	right: 0;
	bottom: 0;
	z-index: 50;
	padding: 8px 12px calc(8px + env(safe-area-inset-bottom, 0px) + var(--kb-float-clear, 0px));
	background: var(--jdw-card);
	border-top: 1px solid var(--jdw-rule);
	box-shadow: 0 -12px 28px -20px rgba(21, 32, 43, .45);
}
.jdw-catalogue:has(.jdw-go):not(.jdw-z.jdw-z.jdw-z) { padding-bottom: calc(84px + var(--kb-float-clear, 0px)); }
.jdw-go__btn:not(.jdw-z.jdw-z.jdw-z) {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	width: 100%;
	max-width: 640px;
	height: 60px;
	margin: 0 auto;
	padding: 0 8px 0 22px;
	border: 0;
	border-radius: var(--kb-radius-pill);
	background: var(--jdw-accent);
	color: var(--jdw-on-accent);
	font: inherit;
	text-align: left;
	cursor: pointer;
}
.jdw-go__btn[disabled]:not(.jdw-z.jdw-z.jdw-z) { opacity: .55; cursor: not-allowed; }
.jdw-go__text:not(.jdw-z.jdw-z.jdw-z) { min-width: 0; }
.jdw-go__text small:not(.jdw-z.jdw-z.jdw-z) {
	display: block;
	font-size: 13px;
	line-height: 1.2;
	opacity: .9;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
.jdw-go__text b:not(.jdw-z.jdw-z.jdw-z) {
	display: block;
	font-size: 18px;
	font-weight: 800;
	line-height: 1.25;
	white-space: nowrap;
	font-variant-numeric: tabular-nums;
}
.jdw-go__arrow:not(.jdw-z.jdw-z.jdw-z) {
	flex: none;
	display: grid;
	place-items: center;
	width: 44px;
	height: 44px;
	border-radius: 50%;
	background: rgba(255, 255, 255, .2);
}

/* ---- la feuille « En savoir plus » ---- */

.jdw-sheet-wrap:not(.jdw-z.jdw-z.jdw-z) {
	position: fixed;
	inset: 0;
	z-index: 60;
	display: flex;
	align-items: flex-end;
	justify-content: center;
}
.jdw-sheet__scrim:not(.jdw-z.jdw-z.jdw-z) { position: absolute; inset: 0; background: rgba(21, 32, 43, .45); }
.jdw-sheet:not(.jdw-z.jdw-z.jdw-z) {
	position: relative;
	width: 100%;
	max-width: 600px;
	max-height: 88vh;
	max-height: 88dvh;
	overflow-y: auto;
	padding: 6px 20px calc(16px + env(safe-area-inset-bottom, 0px));
	background: var(--jdw-card);
	color: var(--jdw-ink);
	border-radius: var(--kb-radius-lg);
	border-bottom-left-radius: 0;
	border-bottom-right-radius: 0;
	box-shadow: 0 -18px 40px -24px rgba(21, 32, 43, .5);
}
.jdw-sheet__grip:not(.jdw-z.jdw-z.jdw-z) { width: 40px; height: 4px; margin: 6px auto 8px; border-radius: var(--kb-radius-pill); background: var(--jdw-rule); }
.jdw-sheet__head:not(.jdw-z.jdw-z.jdw-z) { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.jdw-sheet__title:not(.jdw-z.jdw-z.jdw-z) {
	margin: 6px 0 0;
	font-family: var(--jdw-display);
	font-size: 22px;
	font-weight: 700;
	line-height: 1.2;
	letter-spacing: -0.015em;
	overflow-wrap: break-word;
}
.jdw-sheet__close:not(.jdw-z.jdw-z.jdw-z) {
	flex: none;
	display: grid;
	place-items: center;
	width: 44px;
	height: 44px;
	margin-right: -10px;
	border: 0;
	border-radius: 50%;
	background: none;
	color: var(--jdw-ink);
	cursor: pointer;
}
.jdw-sheet__close:hover:not(.jdw-z.jdw-z.jdw-z) { background: var(--jdw-tint); }
.jdw-sheet__facts:not(.jdw-z.jdw-z.jdw-z) {
	display: flex;
	flex-wrap: wrap;
	gap: 4px 16px;
	margin: 6px 0 14px;
	font-size: 14.5px;
	color: var(--jdw-muted);
}
.jdw-sheet__facts > span:not(.jdw-z.jdw-z.jdw-z) { display: inline-flex; align-items: center; gap: 5px; }
.jdw-sheet__price:not(.jdw-z.jdw-z.jdw-z) { color: var(--jdw-ink); font-weight: 800; }
.jdw-sheet .jdw-svc__media:not(.jdw-z.jdw-z.jdw-z) { border-radius: var(--kb-radius); margin-bottom: 14px; }
.jdw-sheet__body:not(.jdw-z.jdw-z.jdw-z) { font-size: 15.5px; line-height: 1.65; color: var(--jdw-ink); }
.jdw-sheet__body > :first-child:not(.jdw-z.jdw-z.jdw-z) { margin-top: 0; }
.jdw-sheet__body h3:not(.jdw-z.jdw-z.jdw-z),
.jdw-sheet__body h4:not(.jdw-z.jdw-z.jdw-z) { margin: 18px 0 6px; font-family: var(--jdw-display); line-height: 1.3; }
.jdw-sheet__body h3:not(.jdw-z.jdw-z.jdw-z) { font-size: 17px; }
.jdw-sheet__body h4:not(.jdw-z.jdw-z.jdw-z) { font-size: 15.5px; }
.jdw-sheet__body ul:not(.jdw-z.jdw-z.jdw-z),
.jdw-sheet__body ol:not(.jdw-z.jdw-z.jdw-z) { padding-left: 1.3em; }
.jdw-sheet__body hr:not(.jdw-z.jdw-z.jdw-z) { border: 0; border-top: 1px solid var(--jdw-rule); margin: 16px 0; }
.jdw-sheet__body a:not(.jdw-z.jdw-z.jdw-z) { color: var(--jdw-accent-ink, var(--jdw-accent)); }
.jdw-sheet__foot:not(.jdw-z.jdw-z.jdw-z) {
	position: sticky;
	bottom: calc(-16px - env(safe-area-inset-bottom, 0px));
	margin: 16px -20px 0;
	padding: 12px 20px;
	background: var(--jdw-card);
	border-top: 1px solid var(--jdw-rule);
}
.jdw-sheet__book:not(.jdw-z.jdw-z.jdw-z) { width: 100%; min-height: 52px; font-size: 16px; }
@media (min-width: 640px) {
	.jdw-sheet-wrap:not(.jdw-z.jdw-z.jdw-z) { align-items: center; padding: 24px; }
	.jdw-sheet:not(.jdw-z.jdw-z.jdw-z) { border-radius: var(--kb-radius-lg); max-height: 86vh; }
	.jdw-sheet__grip:not(.jdw-z.jdw-z.jdw-z) { display: none; }
}

/* ---- compacte : moins d'air, les mêmes cibles de 44 px ---- */

.jdw--compact .jdw-body:not(.jdw-z.jdw-z.jdw-z) { padding: 18px; }
.jdw--compact .jdw-head:not(.jdw-z.jdw-z.jdw-z) { padding-top: 14px; padding-bottom: 14px; }
.jdw--compact .jdw-cat-grid:not(.jdw-z.jdw-z.jdw-z),
.jdw--compact .jdw-car__track:not(.jdw-z.jdw-z.jdw-z) { gap: 8px; }
.jdw--compact .jdw-svc__body:not(.jdw-z.jdw-z.jdw-z) { padding: 10px 12px 2px; }
.jdw--compact .jdw-grid:not(.jdw-z.jdw-z.jdw-z) { gap: 10px; }

/* ---- l'étape : « 1 sur 3 · La prestation » et trois traits ---- */

.jdw-steps:not(.jdw-z.jdw-z.jdw-z) { display: flex; align-items: center; gap: 10px; margin: 0; font-size: 14px; color: var(--jdw-muted); }
.jdw-steps__dots:not(.jdw-z.jdw-z.jdw-z) { display: flex; gap: 4px; }
.jdw-steps__dots span:not(.jdw-z.jdw-z.jdw-z) { width: 18px; height: 4px; border-radius: var(--kb-radius-pill); background: var(--jdw-rule); }
.jdw-steps__dots .is-on:not(.jdw-z.jdw-z.jdw-z) { background: var(--jdw-accent); }
.jdw-step:not(.jdw-z.jdw-z.jdw-z) { display: inline; padding: 0; border: 0; background: none; font-size: 14px; color: var(--jdw-muted); white-space: nowrap; }
.jdw-step__n:not(.jdw-z.jdw-z.jdw-z) { font-weight: 700; color: var(--jdw-ink); }

/* ---- le bouton « Réserver » et sa fenêtre ---- */

.jdw-launch-wrap:not(.jdw-z.jdw-z.jdw-z) { display: inline-block; }
.jdw-launch:not(.jdw-z.jdw-z.jdw-z) {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 48px;
	padding: 12px 26px;
	border: 0;
	border-radius: var(--kb-radius-pill);
	background: var(--jdw-accent);
	color: var(--jdw-on-accent);
	font-family: var(--jdw-body);
	font-size: 16px;
	font-weight: 700;
	line-height: 1.2;
	cursor: pointer;
}
.jdw-launch:hover:not(.jdw-z.jdw-z.jdw-z) { opacity: .92; }
.jdw-window:not(.jdw-z.jdw-z.jdw-z) {
	position: fixed;
	inset: 0;
	z-index: 100000;
	display: flex;
	align-items: flex-end;
	justify-content: center;
}
.jdw-window__scrim:not(.jdw-z.jdw-z.jdw-z) { position: absolute; inset: 0; background: rgba(21, 32, 43, .5); }
.jdw-window__box:not(.jdw-z.jdw-z.jdw-z) {
	position: relative;
	width: 100%;
	max-width: 960px;
	max-height: 94vh;
	max-height: 94dvh;
	overflow-y: auto;
	background: var(--jdw-paper);
	border-radius: var(--kb-radius-lg);
	border-bottom-left-radius: 0;
	border-bottom-right-radius: 0;
}
.jdw-window__close:not(.jdw-z.jdw-z.jdw-z) {
	position: sticky;
	top: 0;
	z-index: 3;
	display: flex;
	justify-content: flex-end;
	padding: 6px 6px 0;
	background: var(--jdw-paper);
}
.jdw-window__close button:not(.jdw-z.jdw-z.jdw-z) {
	display: grid;
	place-items: center;
	width: 44px;
	height: 44px;
	border: 0;
	border-radius: 50%;
	background: none;
	color: var(--jdw-ink);
	cursor: pointer;
}
.jdw-window__close button:hover:not(.jdw-z.jdw-z.jdw-z) { background: var(--jdw-tint); }
.jdw-window .jdw-booking:not(.jdw-z.jdw-z.jdw-z) { padding: 0 16px 16px; }
@media (min-width: 760px) {
	.jdw-window:not(.jdw-z.jdw-z.jdw-z) { align-items: center; padding: 24px; }
	.jdw-window__box:not(.jdw-z.jdw-z.jdw-z) { border-radius: var(--kb-radius-lg); }
	.jdw-window .jdw-booking:not(.jdw-z.jdw-z.jdw-z) { padding: 0 24px 24px; }
}
html.jdw-window-open:not(.jdw-z.jdw-z.jdw-z) { overflow: hidden; }

/* ================================================================
   Day picker
   ================================================================ */

.jdw-daybar:not(.jdw-z.jdw-z.jdw-z) {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	flex-wrap: wrap;
	margin-bottom: 16px;
}

.jdw-seg:not(.jdw-z.jdw-z.jdw-z) {
	display: inline-flex;
	gap: 3px;
	padding: 3px;
	background: var(--jdw-tint);
	border-radius: var(--kb-radius-pill);
}
.jdw-seg button:not(.jdw-z.jdw-z.jdw-z) {
	min-height: 44px;
	padding: 7px 16px;
	border: 0;
	border-radius: var(--kb-radius-pill);
	background: transparent;
	font: inherit;
	font-size: 12.5px;
	color: var(--jdw-muted);
	cursor: pointer;
}
.jdw-seg button.is-active:not(.jdw-z.jdw-z.jdw-z) {
	background: var(--jdw-card);
	color: var(--jdw-ink);
	font-weight: 600;
}

/* Days wrap onto as many rows as needed: no horizontal scrolling. */
/* Seven columns, Monday first: a week, wherever the theme puts it. */
.jdw-days:not(.jdw-z.jdw-z.jdw-z) {
	display: grid;
	grid-template-columns: repeat(7, minmax(0, 1fr));
	gap: 8px;
	margin-bottom: 8px;
}
.jdw-days__wd:not(.jdw-z.jdw-z.jdw-z) {
	padding-bottom: 2px;
	font-size: 12px;
	font-weight: 600;
	text-align: center;
	color: var(--jdw-muted);
}
.jdw-days__blank:not(.jdw-z.jdw-z.jdw-z) { visibility: hidden; }
/* La ligne des jours fermés n'existe que dans la liste du téléphone. */
.jdw-days__closed:not(.jdw-z.jdw-z.jdw-z) { display: none; }
.jdw-day:not(.jdw-z.jdw-z.jdw-z) {
	padding: 10px 6px 9px;
	border: 1px solid var(--jdw-rule);
	border-radius: var(--kb-radius-sm);
	background: transparent;
	font: inherit;
	text-align: center;
	cursor: pointer;
	transition: border-color .12s ease, background .12s ease;
}
.jdw-day:hover:not([disabled]):not(.jdw-z.jdw-z.jdw-z) { border-color: var(--jdw-accent); }
/* Comme la démonstration de kalenbook.com : le jour choisi en cobalt doux. */
.jdw-day.is-selected:not(.jdw-z.jdw-z.jdw-z) {
	border-color: var(--jdw-tint);
	background: var(--jdw-tint);
}
.jdw-day.is-selected .jdw-day__n:not(.jdw-z.jdw-z.jdw-z) { color: var(--jdw-accent-ink, var(--jdw-accent)); font-weight: 700; }
.jdw-day[disabled]:not(.jdw-z.jdw-z.jdw-z) { opacity: .35; cursor: default; }
.jdw-day__wd:not(.jdw-z.jdw-z.jdw-z) {
	display: block;
	font-size: 12px;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--jdw-muted);
}
.jdw-day__n:not(.jdw-z.jdw-z.jdw-z) {
	display: block;
	font-family: var(--jdw-display);
	font-size: 22px;
	line-height: 1.3;
	color: var(--jdw-ink);
}
.jdw-day__free:not(.jdw-z.jdw-z.jdw-z) {
	display: block;
	font-size: 12px;
	color: var(--jdw-accent-ink, var(--jdw-accent));
}
.jdw-day[disabled] .jdw-day__free:not(.jdw-z.jdw-z.jdw-z) { color: var(--jdw-muted); }

.jdw-more:not(.jdw-z.jdw-z.jdw-z) {
	display: block;
	width: 100%;
	min-height: 44px;
	margin-bottom: 20px;
	padding: 9px;
	border: 1px dashed var(--jdw-rule);
	border-radius: var(--kb-radius-sm);
	background: transparent;
	font: inherit;
	font-size: 12.5px;
	color: var(--jdw-muted);
	cursor: pointer;
}
.jdw-more:hover:not(.jdw-z.jdw-z.jdw-z) { border-color: var(--jdw-accent); color: var(--jdw-accent-ink, var(--jdw-accent)); }

/* Month: deliberately small. It is a way to jump, not the main interface. */
.jdw-month:not(.jdw-z.jdw-z.jdw-z) {
	max-width: 340px;
	margin-bottom: 22px;
	padding: 14px;
	border: 1px solid var(--jdw-rule);
	border-radius: var(--kb-radius);
}
.jdw-month__head:not(.jdw-z.jdw-z.jdw-z) {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin-bottom: 10px;
}
.jdw-month__title:not(.jdw-z.jdw-z.jdw-z) {
	font-family: var(--jdw-display);
	font-size: 15px;
	text-transform: capitalize;
}
.jdw-month__nav:not(.jdw-z.jdw-z.jdw-z) {
	width: 28px; height: 28px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	border: 1px solid var(--jdw-rule);
	border-radius: var(--kb-radius-sm);
	background: transparent;
	color: var(--jdw-muted);
	font: inherit;
	cursor: pointer;
}
.jdw-month__nav:hover:not(.jdw-z.jdw-z.jdw-z) { color: var(--jdw-accent-ink, var(--jdw-accent)); border-color: var(--jdw-accent); }
.jdw-month__grid:not(.jdw-z.jdw-z.jdw-z) {
	display: grid;
	grid-template-columns: repeat(7, 1fr);
	gap: 2px;
}
.jdw-month__wd:not(.jdw-z.jdw-z.jdw-z) {
	text-align: center;
	font-size: 12px;
	color: var(--jdw-muted);
	padding-bottom: 4px;
}
.jdw-cell:not(.jdw-z.jdw-z.jdw-z) {
	aspect-ratio: 1;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 2px;
	border: 1px solid transparent;
	border-radius: var(--kb-radius-sm);
	background: transparent;
	font: inherit;
	font-size: 12.5px;
	color: var(--jdw-ink);
	cursor: pointer;
}
.jdw-cell:hover:not([disabled]):not(.jdw-z.jdw-z.jdw-z) { background: var(--jdw-tint); }
.jdw-cell.is-selected:not(.jdw-z.jdw-z.jdw-z) { border-color: var(--jdw-accent); background: var(--jdw-tint); }
.jdw-cell[disabled]:not(.jdw-z.jdw-z.jdw-z) { opacity: .28; cursor: default; }
.jdw-cell__dot:not(.jdw-z.jdw-z.jdw-z) {
	width: 3px; height: 3px;
	border-radius: 50%;
	background: var(--jdw-accent);
}
.jdw-cell[disabled] .jdw-cell__dot:not(.jdw-z.jdw-z.jdw-z) { background: transparent; }

/* ================================================================
   Slots
   ================================================================ */

.jdw-slotgroup:not(.jdw-z.jdw-z.jdw-z) { margin-bottom: 20px; }
.jdw-slotgroup__title:not(.jdw-z.jdw-z.jdw-z) {
	margin: 0 0 10px;
	font-size: 12.5px;
	color: var(--jdw-muted);
}
.jdw-slots:not(.jdw-z.jdw-z.jdw-z) {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(92px, 1fr));
	gap: 8px;
}
.jdw-slot:not(.jdw-z.jdw-z.jdw-z) {
	padding: 13px 8px;
	border: 1px solid var(--jdw-rule);
	border-radius: var(--kb-radius-sm);
	background: var(--jdw-card);
	font: inherit;
	font-size: 15px;
	font-variant-numeric: tabular-nums;
	color: var(--jdw-ink);
	cursor: pointer;
	transition: border-color .12s ease;
}
.jdw-slot:hover:not(.jdw-z.jdw-z.jdw-z) { border-color: var(--jdw-accent); }
.jdw-slot.is-selected:not(.jdw-z.jdw-z.jdw-z) {
	background: var(--jdw-accent);
	border-color: var(--jdw-accent);
	color: var(--jdw-on-accent);
	font-weight: 700;
}

.jdw-empty:not(.jdw-z.jdw-z.jdw-z) {
	padding: 26px 20px;
	border: 1px dashed var(--jdw-rule);
	border-radius: var(--kb-radius);
	text-align: center;
	font-size: 13.5px;
	color: var(--jdw-muted);
}

/* ================================================================
   Form
   ================================================================ */

.jdw-grid:not(.jdw-z.jdw-z.jdw-z) {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 16px;
	margin-bottom: 18px;
}
.jdw-field:not(.jdw-z.jdw-z.jdw-z) { display: flex; flex-direction: column; gap: 7px; }
.jdw-field--wide:not(.jdw-z.jdw-z.jdw-z) { grid-column: 1 / -1; }
.jdw-field > span:not(.jdw-z.jdw-z.jdw-z) { font-size: 15px; font-weight: 500; line-height: 1.35; color: var(--kbp-label, var(--jdw-ink)); }
.jdw-field input:not(.jdw-z.jdw-z.jdw-z),
.jdw-field select:not(.jdw-z.jdw-z.jdw-z),
.jdw-field textarea:not(.jdw-z.jdw-z.jdw-z) {
	width: 100%;
	padding: 12px 14px;
	border: 1px solid var(--jdw-line-field, var(--jdw-muted));
	border-radius: var(--kb-radius-sm);
	background: var(--jdw-card);
	color: var(--jdw-ink);
	font: inherit;
	/* 16 px au moins : en dessous, iOS zoome la page à chaque champ touché. */
	font-size: 16px;
	transition: border-color .12s ease, box-shadow .12s ease;
}
.jdw-field textarea:not(.jdw-z.jdw-z.jdw-z) { line-height: 1.6; resize: vertical; }
.jdw-field input:focus:not(.jdw-z.jdw-z.jdw-z),
.jdw-field select:focus:not(.jdw-z.jdw-z.jdw-z),
.jdw-field textarea:focus:not(.jdw-z.jdw-z.jdw-z) {
	border-color: var(--jdw-accent);
	box-shadow: 0 0 0 1px var(--jdw-accent);
	outline: none;
}
.jdw-field__hint:not(.jdw-z.jdw-z.jdw-z) { font-size: 12px; color: var(--jdw-muted); }
.jdw-hp:not(.jdw-z.jdw-z.jdw-z) { position: absolute; left: -9999px; }

.jdw-consent:not(.jdw-z.jdw-z.jdw-z) {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	padding: 12px 0;
	font-size: 13px;
	color: var(--jdw-muted);
	line-height: 1.55;
	cursor: pointer;
}
.jdw-consent + .jdw-consent:not(.jdw-z.jdw-z.jdw-z) { border-top: 1px solid var(--jdw-rule); }
.jdw-consent input:not(.jdw-z.jdw-z.jdw-z) {
	margin-top: 3px;
	width: 17px; height: 17px;
	flex-shrink: 0;
	accent-color: var(--jdw-accent);
}
.jdw-consent__note:not(.jdw-z.jdw-z.jdw-z) { display: block; margin-top: 3px; font-size: 12px; opacity: .85; }

/* ---------- payment ---------- */

.jdw-pay:not(.jdw-z.jdw-z.jdw-z) {
	margin-bottom: 18px;
	padding: 20px;
	border: 1px solid var(--jdw-second);
	border-radius: var(--kb-radius);
	background: var(--jdw-second-t);
}
.jdw-pay__head:not(.jdw-z.jdw-z.jdw-z) {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 12px;
	margin-bottom: 10px;
}
.jdw-pay__amount:not(.jdw-z.jdw-z.jdw-z) {
	font-family: var(--jdw-display);
	font-size: 24px;
	color: var(--jdw-ink);
}
.jdw-pay__note:not(.jdw-z.jdw-z.jdw-z) { margin: 0 0 14px; font-size: 13px; color: var(--jdw-muted); line-height: 1.55; }

.jdw-pay__choices:not(.jdw-z.jdw-z.jdw-z) { display: grid; gap: 8px; }
.jdw-paychoice:not(.jdw-z.jdw-z.jdw-z) {
	display: flex;
	align-items: flex-start;
	gap: 11px;
	padding: 13px 15px;
	border: 1px solid var(--jdw-rule);
	border-radius: var(--kb-radius-sm);
	background: var(--jdw-card);
	cursor: pointer;
	text-align: left;
	font: inherit;
	width: 100%;
}
.jdw-paychoice.is-selected:not(.jdw-z.jdw-z.jdw-z) { border-color: var(--jdw-second); box-shadow: inset 0 0 0 1px var(--jdw-second); }
.jdw-paychoice__dot:not(.jdw-z.jdw-z.jdw-z) {
	width: 16px; height: 16px;
	margin-top: 2px;
	flex-shrink: 0;
	border: 1.5px solid var(--jdw-rule);
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
}
.jdw-paychoice.is-selected .jdw-paychoice__dot:not(.jdw-z.jdw-z.jdw-z) { border-color: var(--jdw-second); }
.jdw-paychoice.is-selected .jdw-paychoice__dot:not(.jdw-z.jdw-z.jdw-z)::after {
	content: '';
	width: 8px; height: 8px;
	border-radius: 50%;
	background: var(--jdw-second);
}
.jdw-paychoice__label:not(.jdw-z.jdw-z.jdw-z) { display: block; font-size: 14px; color: var(--jdw-ink); }
.jdw-paychoice__detail:not(.jdw-z.jdw-z.jdw-z) {
	display: block;
	margin-top: 3px;
	font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
	font-size: 13.5px;
	color: var(--jdw-ink);
	word-break: break-all;
}
.jdw-paychoice__note:not(.jdw-z.jdw-z.jdw-z) { display: block; margin-top: 2px; font-size: 12px; color: var(--jdw-muted); }

.jdw-pay__methods:not(.jdw-z.jdw-z.jdw-z) { display: flex; gap: 8px; flex-wrap: wrap; }
.jdw-pay__method:not(.jdw-z.jdw-z.jdw-z) {
	padding: 5px 12px;
	border: 1px solid var(--jdw-rule);
	border-radius: var(--kb-radius-pill);
	background: var(--jdw-card);
	font-size: 12px;
	color: var(--jdw-muted);
}
.jdw-pay__secure:not(.jdw-z.jdw-z.jdw-z) {
	display: flex;
	gap: 8px;
	margin-top: 14px;
	font-size: 12px;
	color: var(--jdw-muted);
	line-height: 1.5;
}

/* ================================================================
   Confirmation
   ================================================================ */

.jdw-done:not(.jdw-z.jdw-z.jdw-z) { text-align: center; padding: 20px 0 8px; }
/* La confirmation, en menthe : c'est fait. */
.jdw-done__mark:not(.jdw-z.jdw-z.jdw-z) {
	width: 52px; height: 52px;
	margin-bottom: 18px;
	border-radius: var(--kb-radius-badge);
	background: var(--jdwt-mint, #CDF2DF);
	color: var(--jdwt-mint-ink, #166A43);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	font-size: 24px;
}
.jdw-done__title:not(.jdw-z.jdw-z.jdw-z) {
	margin: 0 0 10px;
	font-family: var(--jdw-display);
	font-size: 26px;
	font-weight: 700;
	letter-spacing: -0.02em;
}
.jdw-done__text:not(.jdw-z.jdw-z.jdw-z) {
	max-width: 44ch;
	margin: 0 auto 24px;
	font-size: 14.5px;
	color: var(--jdw-muted);
	line-height: 1.6;
}

.jdw-summary:not(.jdw-z.jdw-z.jdw-z) {
	max-width: 440px;
	margin: 0 auto;
	padding: 20px;
	border-radius: var(--kb-radius);
	background: var(--jdw-tint);
	text-align: left;
}
.jdw-summary__row:not(.jdw-z.jdw-z.jdw-z) {
	display: flex;
	justify-content: space-between;
	gap: 16px;
	padding: 6px 0;
	font-size: 13.5px;
}
.jdw-summary__row span:first-child:not(.jdw-z.jdw-z.jdw-z) { color: var(--jdw-muted-tint, var(--jdw-muted)); flex-shrink: 0; }
.jdw-service.is-selected .jdw-service__short:not(.jdw-z.jdw-z.jdw-z),
.jdw-service.is-selected .jdw-service__meta:not(.jdw-z.jdw-z.jdw-z),
.jdw-service.is-selected .jdw-service__long:not(.jdw-z.jdw-z.jdw-z),
.jdw-team__pick.is-selected .jdw-team__bio:not(.jdw-z.jdw-z.jdw-z) { color: var(--jdw-muted-tint, var(--jdw-muted)); }
.jdw-paybox__note:not(.jdw-z.jdw-z.jdw-z),
.jdw-pay__note:not(.jdw-z.jdw-z.jdw-z),
.jdw-paychoice__note:not(.jdw-z.jdw-z.jdw-z) { color: var(--jdw-muted-second, var(--jdw-muted)); }
.jdw-summary__row span:last-child:not(.jdw-z.jdw-z.jdw-z) { text-align: right; }
.jdw-fine:not(.jdw-z.jdw-z.jdw-z) { margin-top: 20px; font-size: 12.5px; color: var(--jdw-muted); }

.jdw-paybox:not(.jdw-z.jdw-z.jdw-z) {
	max-width: 440px;
	margin: 0 auto 18px;
	padding: 20px;
	text-align: left;
	border: 1px solid var(--jdw-second);
	background: var(--jdw-second-t);
	border-radius: var(--kb-radius);
}
.jdw-paybox__ref:not(.jdw-z.jdw-z.jdw-z) {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	gap: 12px;
	padding-bottom: 12px;
	margin-bottom: 12px;
	border-bottom: 1px solid var(--jdw-rule);
	font-size: 12.5px;
	color: var(--jdw-muted);
}
.jdw-paybox__ref strong:not(.jdw-z.jdw-z.jdw-z) {
	font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
	font-size: 15px;
	color: var(--jdw-ink);
}
.jdw-paybox__method:not(.jdw-z.jdw-z.jdw-z) { padding: 9px 0; }
.jdw-paybox__method + .jdw-paybox__method:not(.jdw-z.jdw-z.jdw-z) { border-top: 1px solid var(--jdw-rule); }
.jdw-paybox__label:not(.jdw-z.jdw-z.jdw-z) { display: block; font-size: 12px; color: var(--jdw-second-ink, var(--jdw-second)); }
.jdw-paybox__detail:not(.jdw-z.jdw-z.jdw-z) {
	display: block;
	font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
	font-size: 15px;
	color: var(--jdw-ink);
	word-break: break-all;
}
.jdw-paybox__note:not(.jdw-z.jdw-z.jdw-z) { display: block; margin-top: 3px; font-size: 12px; color: var(--jdw-muted); }
/* 2.1 : le prix indicatif dans d'autres devises, discret. */
.jdw-service__fx:not(.jdw-z.jdw-z.jdw-z) { display: block; font-size: 12px; color: var(--jdw-muted); font-variant-numeric: tabular-nums; }
.jdw-fx-note:not(.jdw-z.jdw-z.jdw-z) { margin: 12px 0 0; font-size: 12px; color: var(--jdw-muted); }

/* 2.1 : « Ajouter à votre réservation » — une carte par produit. */
.jdw-products:not(.jdw-z.jdw-z.jdw-z) { margin: 0 0 18px; padding: 0; border: 0; display: grid; gap: 8px; }
.jdw-product:not(.jdw-z.jdw-z.jdw-z) {
	display: grid;
	grid-template-columns: auto 1fr auto;
	gap: 12px;
	align-items: center;
	min-height: 56px;
	padding: 12px 14px;
	border: 1px solid var(--jdw-line);
	border-radius: var(--kb-radius);
	background: var(--jdw-card);
	cursor: pointer;
}
.jdw-product.is-on:not(.jdw-z.jdw-z.jdw-z) { border-color: var(--jdw-accent); box-shadow: inset 0 0 0 1px var(--jdw-accent); }
.jdw-product__box:not(.jdw-z.jdw-z.jdw-z) { width: 20px; height: 20px; margin: 0; accent-color: var(--jdw-accent); }
.jdw-product__text strong:not(.jdw-z.jdw-z.jdw-z),
.jdw-product__text span:not(.jdw-z.jdw-z.jdw-z) { display: block; }
.jdw-product__text strong:not(.jdw-z.jdw-z.jdw-z) { font-size: 16px; line-height: 1.3; font-weight: 700; color: var(--jdw-ink); }
.jdw-product__text span:not(.jdw-z.jdw-z.jdw-z) { font-size: 13px; line-height: 1.4; color: var(--jdw-muted); }
.jdw-product__text .jdw-product__left:not(.jdw-z.jdw-z.jdw-z) { color: var(--jdw-ink); font-weight: 600; }
.jdw-product__price:not(.jdw-z.jdw-z.jdw-z) { font-weight: 700; white-space: nowrap; font-variant-numeric: tabular-nums; }
/* 2.1 : un virement, ligne à ligne — titulaire, IBAN, BIC, banque, adresse. */
.jdw-paybox__bank:not(.jdw-z.jdw-z.jdw-z) {
	display: grid;
	grid-template-columns: auto 1fr;
	gap: 2px 12px;
	margin: 4px 0 0;
	font-size: 14px;
}
.jdw-paybox__bank dt:not(.jdw-z.jdw-z.jdw-z) { color: var(--jdw-muted); }
.jdw-paybox__bank dd:not(.jdw-z.jdw-z.jdw-z) { margin: 0; color: var(--jdw-ink); word-break: break-word; }

.jdw-alert:not(.jdw-z.jdw-z.jdw-z) {
	padding: 14px 16px;
	margin-bottom: 20px;
	border: 1px solid var(--jdw-second);
	border-radius: var(--kb-radius-sm);
	background: var(--jdw-second-t);
	font-size: 13.5px;
	line-height: 1.55;
}
.jdw-alert--ok:not(.jdw-z.jdw-z.jdw-z) { border-color: var(--jdw-accent); background: var(--jdw-tint); }

.jdw-loading:not(.jdw-z.jdw-z.jdw-z) { padding: 40px 0; text-align: center; font-size: 13.5px; color: var(--jdw-muted); }

/* ================================================================
   Events
   ================================================================ */

.jdw-events:not(.jdw-z.jdw-z.jdw-z) { display: flex; flex-direction: column; gap: 16px; }
.jdw-event-grid:not(.jdw-z.jdw-z.jdw-z) {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(290px, 1fr));
	gap: 16px;
}

.jdw-event:not(.jdw-z.jdw-z.jdw-z) {
	display: flex;
	flex-direction: column;
	background: var(--jdw-card);
	border: 1px solid var(--jdw-rule);
	border-radius: var(--kb-radius-lg);
	overflow: hidden;
}
.jdw-event--featured:not(.jdw-z.jdw-z.jdw-z) { flex-direction: row; flex-wrap: wrap; }
.jdw-event--featured .jdw-event__media:not(.jdw-z.jdw-z.jdw-z) { flex: 1 1 300px; min-height: 240px; }
.jdw-event--featured .jdw-event__body:not(.jdw-z.jdw-z.jdw-z) { flex: 1 1 340px; padding: 30px; }
.jdw-event.is-full .jdw-event__media:not(.jdw-z.jdw-z.jdw-z) { filter: saturate(.35); }

.jdw-event__media:not(.jdw-z.jdw-z.jdw-z) { position: relative; background: var(--jdw-tint); }
.jdw-event--card .jdw-event__media:not(.jdw-z.jdw-z.jdw-z) { aspect-ratio: 16 / 9; }
.jdw-event__media img:not(.jdw-z.jdw-z.jdw-z) { width: 100%; height: 100%; object-fit: cover; display: block; }
.jdw-event__badge:not(.jdw-z.jdw-z.jdw-z) {
	position: absolute;
	top: 16px; left: 16px;
	padding: 5px 11px;
	border-radius: var(--kb-radius-sm);
	background: var(--jdw-card);
	color: var(--jdw-ink);
	font-size: 12px;
	font-weight: 600;
	letter-spacing: .08em;
	text-transform: uppercase;
}
.jdw-event__badge--full:not(.jdw-z.jdw-z.jdw-z) { left: auto; right: 16px; background: var(--jdw-ink); color: var(--jdw-card); }

.jdw-event__body:not(.jdw-z.jdw-z.jdw-z) {
	display: flex;
	flex-direction: column;
	gap: 11px;
	flex: 1;
	padding: 22px;
}
.jdw-event__kind:not(.jdw-z.jdw-z.jdw-z) {
	font-size: 12px;
	letter-spacing: .06em;
	text-transform: uppercase;
	color: var(--jdw-second-ink, var(--jdw-second));
}
.jdw-event__title:not(.jdw-z.jdw-z.jdw-z) {
	margin: 0;
	font-family: var(--jdw-display);
	font-size: 21px;
	font-weight: 500;
	line-height: 1.25;
}
.jdw-event--featured .jdw-event__title:not(.jdw-z.jdw-z.jdw-z) { font-size: 28px; }
.jdw-event__lead:not(.jdw-z.jdw-z.jdw-z) { margin: 0; flex: 1; font-size: 14px; color: var(--jdw-muted); line-height: 1.6; }
.jdw-event__meta:not(.jdw-z.jdw-z.jdw-z) { list-style: none; margin: 0; padding: 0; font-size: 13px; color: var(--jdw-muted); }
.jdw-event__meta li:not(.jdw-z.jdw-z.jdw-z) { padding: 3px 0; }
.jdw-event__foot:not(.jdw-z.jdw-z.jdw-z) {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 14px;
	flex-wrap: wrap;
	margin-top: 4px;
}
.jdw-event__price:not(.jdw-z.jdw-z.jdw-z) {
	font-family: var(--jdw-display);
	font-size: 18px;
	color: var(--jdw-ink);
}

/* ---------- highlight embeds ---------- */

.jdw-highlight:not(.jdw-z.jdw-z.jdw-z) { border-radius: var(--kb-radius); }
.jdw-highlight--banniere:not(.jdw-z.jdw-z.jdw-z) {
	display: flex;
	align-items: center;
	gap: 18px;
	flex-wrap: wrap;
	padding: 18px;
	background: var(--jdw-second-t);
	border: 1px solid var(--jdw-rule);
}
.jdw-highlight--banniere .jdw-hl-media:not(.jdw-z.jdw-z.jdw-z) { width: 68px; height: 68px; flex-shrink: 0; }
.jdw-highlight--banniere .jdw-hl-media img:not(.jdw-z.jdw-z.jdw-z) {
	width: 100%; height: 100%; object-fit: cover;
	border-radius: var(--kb-radius-sm); display: block;
}
.jdw-highlight--banniere .jdw-hl-body:not(.jdw-z.jdw-z.jdw-z) { flex: 1; min-width: 160px; }

.jdw-highlight--carte:not(.jdw-z.jdw-z.jdw-z) {
	max-width: 300px;
	border: 1px solid var(--jdw-rule);
	background: var(--jdw-card);
	overflow: hidden;
}
.jdw-highlight--carte .jdw-hl-media:not(.jdw-z.jdw-z.jdw-z) { aspect-ratio: 16 / 9; }
.jdw-highlight--carte .jdw-hl-media img:not(.jdw-z.jdw-z.jdw-z) { width: 100%; height: 100%; object-fit: cover; display: block; }
.jdw-highlight--carte .jdw-hl-body:not(.jdw-z.jdw-z.jdw-z) { padding: 16px 16px 0; }
.jdw-highlight--carte .jdw-btn:not(.jdw-z.jdw-z.jdw-z) { margin: 14px 16px 16px; width: calc(100% - 32px); }

.jdw-highlight--compteur:not(.jdw-z.jdw-z.jdw-z) {
	text-align: center;
	padding: 22px;
	border: 1px solid var(--jdw-second);
	background: var(--jdw-card);
}
.jdw-hl-kicker:not(.jdw-z.jdw-z.jdw-z) { font-size: 12px; color: var(--jdw-second-ink, var(--jdw-second)); margin-bottom: 5px; }
.jdw-hl-title:not(.jdw-z.jdw-z.jdw-z) { font-family: var(--jdw-display); font-size: 19px; }
.jdw-hl-sub:not(.jdw-z.jdw-z.jdw-z) { font-size: 12.5px; color: var(--jdw-muted); margin-top: 4px; }
.jdw-hl-count:not(.jdw-z.jdw-z.jdw-z) {
	font-family: var(--jdw-display);
	font-size: 38px;
	color: var(--jdw-second-ink, var(--jdw-second));
	line-height: 1.1;
	margin-top: 8px;
}
.jdw-highlight--compteur .jdw-btn:not(.jdw-z.jdw-z.jdw-z) { margin-top: 14px; }

/* ================================================================
   Display variants
   ================================================================ */

.jdw-booking--epure .jdw-card:not(.jdw-z.jdw-z.jdw-z) {
	border: 0;
	border-radius: 0;
	background: transparent;
}
.jdw-booking--epure .jdw-head:not(.jdw-z.jdw-z.jdw-z),
.jdw-booking--epure .jdw-foot:not(.jdw-z.jdw-z.jdw-z) {
	padding-left: 0;
	padding-right: 0;
	background: transparent;
}
.jdw-booking--epure .jdw-body:not(.jdw-z.jdw-z.jdw-z) { padding: 26px 0; }

.jdw-booking--compact .jdw-head:not(.jdw-z.jdw-z.jdw-z) { padding: 16px 20px; }
.jdw-booking--compact .jdw-body:not(.jdw-z.jdw-z.jdw-z) { padding: 20px; }
.jdw-booking--compact .jdw-foot:not(.jdw-z.jdw-z.jdw-z) { padding: 14px 20px; }
.jdw-booking--compact .jdw-days:not(.jdw-z.jdw-z.jdw-z) { gap: 6px; }
.jdw-booking--compact .jdw-day__n:not(.jdw-z.jdw-z.jdw-z) { font-size: 19px; }
.jdw-booking--compact .jdw-slots:not(.jdw-z.jdw-z.jdw-z) { grid-template-columns: repeat(auto-fill, minmax(78px, 1fr)); }
.jdw-booking--compact .jdw-slot:not(.jdw-z.jdw-z.jdw-z) { padding: 11px 6px; font-size: 14px; }
.jdw-booking--compact .jdw-grid:not(.jdw-z.jdw-z.jdw-z) { grid-template-columns: 1fr; }

.jdw-events--liste .jdw-event-grid:not(.jdw-z.jdw-z.jdw-z) { grid-template-columns: 1fr; gap: 12px; }
.jdw-events--liste .jdw-event--card:not(.jdw-z.jdw-z.jdw-z) { flex-direction: row; align-items: stretch; }
.jdw-events--liste .jdw-event--card .jdw-event__media:not(.jdw-z.jdw-z.jdw-z) {
	width: 190px;
	flex-shrink: 0;
	aspect-ratio: auto;
}
.jdw-events--liste .jdw-event__lead:not(.jdw-z.jdw-z.jdw-z) { display: none; }
.jdw-events--liste .jdw-event__title:not(.jdw-z.jdw-z.jdw-z) { font-size: 19px; }

.jdw-events--sobre .jdw-event-grid:not(.jdw-z.jdw-z.jdw-z) { grid-template-columns: 1fr; gap: 0; }
.jdw-events--sobre .jdw-event:not(.jdw-z.jdw-z.jdw-z) {
	border: 0;
	border-bottom: 1px solid var(--jdw-rule);
	border-radius: 0;
	background: transparent;
	flex-direction: row;
	align-items: center;
	gap: 18px;
	padding: 18px 0;
}
.jdw-events--sobre .jdw-event__media:not(.jdw-z.jdw-z.jdw-z) { display: none; }
.jdw-events--sobre .jdw-event__body:not(.jdw-z.jdw-z.jdw-z) {
	padding: 0;
	flex-direction: row;
	align-items: center;
	gap: 18px;
	flex-wrap: wrap;
}
.jdw-events--sobre .jdw-event__lead:not(.jdw-z.jdw-z.jdw-z) { display: none; }
.jdw-events--sobre .jdw-event__meta:not(.jdw-z.jdw-z.jdw-z) { flex: 1 1 200px; }
.jdw-events--sobre .jdw-event__title:not(.jdw-z.jdw-z.jdw-z) { flex: 1 1 220px; font-size: 19px; }
.jdw-events--sobre .jdw-event__foot:not(.jdw-z.jdw-z.jdw-z) { margin-top: 0; }

/* ================================================================
   Responsive
   ================================================================ */

/* Tablet */
@media (max-width: 900px) {
	.jdw-event--featured:not(.jdw-z.jdw-z.jdw-z) { flex-direction: column; }
	.jdw-event--featured .jdw-event__media:not(.jdw-z.jdw-z.jdw-z) { min-height: 200px; }
	.jdw-event--featured .jdw-event__body:not(.jdw-z.jdw-z.jdw-z) { padding: 24px; }
	.jdw-event--featured .jdw-event__title:not(.jdw-z.jdw-z.jdw-z) { font-size: 24px; }
}

/* Phone */
@media (max-width: 640px) {
	.jdw-head:not(.jdw-z.jdw-z.jdw-z), .jdw-body:not(.jdw-z.jdw-z.jdw-z), .jdw-foot:not(.jdw-z.jdw-z.jdw-z) { padding-left: 18px; padding-right: 18px; }
	.jdw-head:not(.jdw-z.jdw-z.jdw-z) { padding-top: 18px; padding-bottom: 18px; }
	.jdw-body:not(.jdw-z.jdw-z.jdw-z) { padding-top: 22px; padding-bottom: 22px; }

	.jdw-head__title:not(.jdw-z.jdw-z.jdw-z) { font-size: 18px; }


	/*
	 * On a phone, seven columns are 38 px wide: under the 44 a thumb needs.
	 * The days become a list instead, one per line, the weekday written out
	 * — « lun 5 » — so the week is still read by name rather than by column.
	 */
	.jdw-days:not(.jdw-z.jdw-z.jdw-z) { grid-template-columns: 1fr; gap: 6px; }
	.jdw-days__wd:not(.jdw-z.jdw-z.jdw-z),
	.jdw-days__blank:not(.jdw-z.jdw-z.jdw-z),
	.jdw-day.is-closed:not(.jdw-z.jdw-z.jdw-z) { display: none; }
	.jdw-days__closed:not(.jdw-z.jdw-z.jdw-z) {
		display: block;
		margin: 0;
		padding: 2px 14px;
		font-size: 13px;
		color: var(--jdw-muted);
	}
	.jdw-day:not(.jdw-z.jdw-z.jdw-z) {
		display: flex;
		align-items: baseline;
		gap: 10px;
		min-height: 48px;
		padding: 10px 14px;
		text-align: left;
	}
	.jdw-day .jdw-day__wd.jdw-sr:not(.jdw-z.jdw-z.jdw-z) {
		position: static;
		width: 3.2em;
		height: auto;
		margin: 0;
		overflow: visible;
		clip: auto;
		font-size: 14px;
		letter-spacing: 0;
		text-transform: none;
	}
	.jdw-day__n:not(.jdw-z.jdw-z.jdw-z) { font-size: 19px; }
	.jdw-day__free:not(.jdw-z.jdw-z.jdw-z) { margin-left: auto; font-size: 13px; }
	.jdw-month:not(.jdw-z.jdw-z.jdw-z) { max-width: 100%; }

	.jdw-slots:not(.jdw-z.jdw-z.jdw-z) { grid-template-columns: repeat(auto-fill, minmax(80px, 1fr)); gap: 6px; }
	.jdw-slot:not(.jdw-z.jdw-z.jdw-z) { padding: 12px 4px; font-size: 14.5px; }

	.jdw-grid:not(.jdw-z.jdw-z.jdw-z) { grid-template-columns: 1fr; }
	.jdw-field--wide:not(.jdw-z.jdw-z.jdw-z) { grid-column: 1; }

	/*
	 * Le pied reste au bas de l'écran, au pouce : après avoir touché un
	 * créneau, « Continuer » était loin sous la liste. Et le résumé ne
	 * garde plus sa base de 200 px, qui devenait en colonne une hauteur
	 * vide entre lui et le bouton.
	 */
	.jdw-foot:not(.jdw-z.jdw-z.jdw-z) {
		position: sticky;
		/* 2.4.3 : collée au-dessus d'un bouton flottant du site (chat). */
		bottom: var(--kb-float);
		z-index: 2;
		flex-direction: column;
		align-items: stretch;
		gap: 10px;
		padding-top: 12px;
		padding-bottom: calc(12px + env(safe-area-inset-bottom, 0px));
		box-shadow: 0 -10px 24px -18px rgba(0, 0, 0, .35);
	}
	.jdw-foot__summary:not(.jdw-z.jdw-z.jdw-z) { flex: 0 0 auto; }
	.jdw-foot__actions:not(.jdw-z.jdw-z.jdw-z) { width: 100%; }
	.jdw-foot__actions .jdw-btn:not(.jdw-z.jdw-z.jdw-z) { flex: 1 1 auto; min-width: 0; white-space: normal; text-align: center; }
	.jdw-foot__actions .jdw-btn:last-child:not(.jdw-z.jdw-z.jdw-z) { flex-grow: 2; }
	.jdw-foot__actions .jdw-btn--ghost:not(.jdw-z.jdw-z.jdw-z) { padding-inline: 16px; }
	/* L'envoi d'un formulaire : toute la largeur. */
	.jdw-signup__form .jdw-btn:not(.jdw-z.jdw-z.jdw-z),
	.jdw-mine .jdw-btn[type="submit"]:not(.jdw-z.jdw-z.jdw-z),
	[data-jdw-mine] form .jdw-btn:not(.jdw-z.jdw-z.jdw-z) { width: 100%; }
	.jdw-event__foot .jdw-btn:not(.jdw-z.jdw-z.jdw-z) { width: 100%; }

	.jdw-done__title:not(.jdw-z.jdw-z.jdw-z) { font-size: 22px; }
	.jdw-summary:not(.jdw-z.jdw-z.jdw-z), .jdw-paybox:not(.jdw-z.jdw-z.jdw-z) { padding: 16px; }

	.jdw-events--liste .jdw-event--card:not(.jdw-z.jdw-z.jdw-z) { flex-direction: column; }
	.jdw-events--liste .jdw-event--card .jdw-event__media:not(.jdw-z.jdw-z.jdw-z) { width: 100%; aspect-ratio: 16 / 9; }
	.jdw-events--sobre .jdw-event:not(.jdw-z.jdw-z.jdw-z) { flex-direction: column; align-items: flex-start; }
	.jdw-highlight--carte:not(.jdw-z.jdw-z.jdw-z) { max-width: 100%; }
}

/* Small phone */
@media (max-width: 380px) {
	.jdw-days:not(.jdw-z.jdw-z.jdw-z) { grid-template-columns: repeat(3, 1fr); }
	.jdw-slots:not(.jdw-z.jdw-z.jdw-z) { grid-template-columns: repeat(2, 1fr); }
}

@media (prefers-reduced-motion: reduce) {
	.jdw *:not(.jdw-z.jdw-z.jdw-z), .jdw *:not(.jdw-z.jdw-z.jdw-z)::before, .jdw *:not(.jdw-z.jdw-z.jdw-z)::after {
		transition-duration: .01ms !important;
		animation-duration: .01ms !important;
		scroll-behavior: auto !important;
	}
}

/* ---------------------------------------------------------------------
   Choix de langue.

   Dans l'en-tête du module, discret : c'est un recours pour la personne
   qui ne lit pas la langue du site, pas une décoration. Des liens, parce
   que la page est rechargée par le serveur, seul détenteur des
   traductions.
   --------------------------------------------------------------------- */

.jdw-langs:not(.jdw-z.jdw-z.jdw-z) {
	display: flex;
	gap: 2px;
	align-items: center;
	margin-left: auto;
}

.jdw-lang:not(.jdw-z.jdw-z.jdw-z) {
	font-size: 12px;
	line-height: 1;
	padding: 5px 9px;
	border-radius: var(--kb-radius-sm);
	color: var(--jdw-muted);
	text-decoration: none;
	white-space: nowrap;
}

.jdw-lang:hover:not(.jdw-z.jdw-z.jdw-z),
.jdw-lang:focus-visible:not(.jdw-z.jdw-z.jdw-z) {
	color: var(--jdw-ink);
	background: var(--jdw-tint);
}

.jdw-lang.is-current:not(.jdw-z.jdw-z.jdw-z) {
	color: var(--jdw-ink);
	font-weight: 600;
	background: var(--jdw-tint);
}

/* ---------------------------------------------------------------------
   Inscription à un événement.

   Rendue par le serveur, donc stylée avec les mêmes jetons que le module
   de réservation mais sans dépendre de son script. Un formulaire, pas un
   parcours : une date, un nombre de places, c'est tout.
   --------------------------------------------------------------------- */

.jdw-signup:not(.jdw-z.jdw-z.jdw-z) {
	background: var(--jdw-card);
	border: 1px solid var(--jdw-rule);
	border-radius: var(--kb-radius);
	padding: 24px;
	margin-top: 32px;
	font-family: var(--jdw-body);
	color: var(--jdw-ink);
}

.jdw-signup__title:not(.jdw-z.jdw-z.jdw-z) {
	font-family: var(--jdw-display);
	font-size: 20px;
	line-height: 1.25;
	font-weight: 600;
	margin: 0 0 8px;
}

.jdw-signup__text:not(.jdw-z.jdw-z.jdw-z) {
	margin: 0 0 20px;
	color: var(--jdw-muted);
	max-width: 62ch;
}

.jdw-signup__closed:not(.jdw-z.jdw-z.jdw-z) {
	margin: 0;
	padding: 14px 16px;
	border-radius: var(--kb-radius-sm);
	background: var(--jdw-tint);
	color: var(--jdw-ink);
	font-weight: 500;
}

.jdw-signup__form .jdw-grid:not(.jdw-z.jdw-z.jdw-z) {
	margin-bottom: 16px;
}

.jdw-signup__form .jdw-consent:not(.jdw-z.jdw-z.jdw-z) {
	margin-bottom: 20px;
}

.jdw-signup--done .jdw-summary:not(.jdw-z.jdw-z.jdw-z) {
	margin: 0;
}

/* Le récapitulatif de confirmation est une liste de définitions : c'est ce
   que c'est, et un lecteur d'écran l'annonce alors correctement. */
.jdw-signup--done .jdw-summary__row:not(.jdw-z.jdw-z.jdw-z) {
	display: flex;
	justify-content: space-between;
	gap: 16px;
	padding: 8px 0;
	border-bottom: 1px solid var(--jdw-rule);
}

.jdw-signup--done .jdw-summary__row:last-child:not(.jdw-z.jdw-z.jdw-z) {
	border-bottom: none;
}

.jdw-signup--done .jdw-summary__row dt:not(.jdw-z.jdw-z.jdw-z) {
	color: var(--jdw-muted);
	margin: 0;
}

.jdw-signup--done .jdw-summary__row dd:not(.jdw-z.jdw-z.jdw-z) {
	margin: 0;
	text-align: right;
	font-weight: 500;
}

@media (max-width: 560px) {
	.jdw-signup:not(.jdw-z.jdw-z.jdw-z) {
		padding: 18px;
	}
}

/* What is being moved, above the slots. */
.jdw-summary--move:not(.jdw-z.jdw-z.jdw-z) {
	margin-bottom: 16px;
}

/* ================================================================
   1.21 : la durée, les questions, les deux heures
   ================================================================ */

.jdw-lengths:not(.jdw-z.jdw-z.jdw-z) { margin-top: 18px; }
.jdw-lengths__list:not(.jdw-z.jdw-z.jdw-z) { display: flex; flex-wrap: wrap; gap: 8px; }
.jdw-length:not(.jdw-z.jdw-z.jdw-z) {
	display: inline-flex;
	flex-direction: column;
	align-items: flex-start;
	justify-content: center;
	min-height: 52px;
	min-width: 104px;
	padding: 6px 16px;
	border: 1.5px solid var(--jdw-rule);
	border-radius: var(--kb-radius);
	background: var(--jdw-card);
	font: inherit;
	color: var(--jdw-ink);
	text-align: left;
	cursor: pointer;
}
.jdw-length:hover:not(.jdw-z.jdw-z.jdw-z) { border-color: var(--jdw-muted); }
.jdw-length.is-selected:not(.jdw-z.jdw-z.jdw-z) { border-color: var(--jdw-accent); box-shadow: 0 0 0 3px var(--jdw-tint); background: var(--jdw-tint); }
.jdw-length__min:not(.jdw-z.jdw-z.jdw-z) { font-size: 15px; font-weight: 700; font-variant-numeric: tabular-nums; }
.jdw-length__price:not(.jdw-z.jdw-z.jdw-z) { font-size: 14px; color: var(--jdw-muted); font-variant-numeric: tabular-nums; }
.jdw-length.is-selected .jdw-length__price:not(.jdw-z.jdw-z.jdw-z) { color: var(--jdw-muted-tint); }

.jdw-questions:not(.jdw-z.jdw-z.jdw-z) { display: grid; gap: 14px; margin-top: 18px; }
.jdw-qset:not(.jdw-z.jdw-z.jdw-z) { margin: 0; padding: 0; border: 0; min-width: 0; }
.jdw-qset legend:not(.jdw-z.jdw-z.jdw-z) { padding: 0; margin-bottom: 7px; font-size: 14px; font-weight: 600; color: var(--jdw-ink); }
.jdw-questions .jdw-choices:not(.jdw-z.jdw-z.jdw-z) { display: flex; flex-wrap: wrap; gap: 8px; }
.jdw-questions .jdw-choice:not(.jdw-z.jdw-z.jdw-z) {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	min-height: 44px;
	padding: 0 14px;
	border: 1px solid var(--jdw-rule);
	border-radius: var(--kb-radius-pill);
	background: var(--jdw-card);
	font-size: 15px;
	cursor: pointer;
}
.jdw-questions .jdw-choice:has(input:checked):not(.jdw-z.jdw-z.jdw-z) { border-color: var(--jdw-accent); background: var(--jdw-tint); }
.jdw-questions .jdw-choice input:not(.jdw-z.jdw-z.jdw-z) { width: 18px; height: 18px; margin: 0; accent-color: var(--jdw-accent); }
.jdw-check:not(.jdw-z.jdw-z.jdw-z) { display: flex; align-items: flex-start; gap: 10px; min-height: 44px; font-size: 15px; cursor: pointer; }
.jdw-check input:not(.jdw-z.jdw-z.jdw-z) { width: 20px; height: 20px; margin: 2px 0 0; accent-color: var(--jdw-accent); flex: none; }

.jdw-field__error:not(.jdw-z.jdw-z.jdw-z) { font-size: 14px; font-weight: 600; color: var(--jdwt-conflict); }
.jdw [aria-invalid="true"]:not(.jdw-z.jdw-z.jdw-z) { border-color: var(--jdwt-conflict); }

.jdw-slot--two:not(.jdw-z.jdw-z.jdw-z) { display: flex; flex-direction: column; align-items: center; gap: 1px; padding: 8px 6px; }
.jdw-slot__there:not(.jdw-z.jdw-z.jdw-z) { font-size: 12.5px; color: var(--jdw-muted); font-weight: 500; }
.jdw-slot.is-selected .jdw-slot__there:not(.jdw-z.jdw-z.jdw-z) { color: var(--jdw-on-accent); }
.jdw-tznote:not(.jdw-z.jdw-z.jdw-z) { margin: 0 0 12px; font-size: 14px; color: var(--jdw-muted); }

/* 1.21 : « Mes rendez-vous » (Kalenbook Pro). */
.jdw-mine:not(.jdw-z.jdw-z.jdw-z) { margin: 0; padding: 0; list-style: none; display: grid; gap: 12px; }
.jdw-mine__item:not(.jdw-z.jdw-z.jdw-z) { padding: 14px 16px; border: 1px solid var(--jdw-rule); border-radius: var(--kb-radius); background: var(--jdw-card); }
.jdw-mine__item p:not(.jdw-z.jdw-z.jdw-z) { margin: 0; }
.jdw-mine__what:not(.jdw-z.jdw-z.jdw-z) { font-family: var(--jdw-display); font-size: 17px; font-weight: 700; overflow-wrap: break-word; }
.jdw-mine__when:not(.jdw-z.jdw-z.jdw-z) { font-size: 15px; font-variant-numeric: tabular-nums; }
.jdw-mine__meta:not(.jdw-z.jdw-z.jdw-z) { font-size: 14px; color: var(--jdw-muted); }
.jdw-mine__due:not(.jdw-z.jdw-z.jdw-z) { font-size: 14px; font-weight: 700; color: var(--jdw-second-ink, var(--jdw-second)); }
.jdw-mine__actions:not(.jdw-z.jdw-z.jdw-z) { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.jdw-wait:not(.jdw-z.jdw-z.jdw-z) { margin-top: 18px; padding-top: 16px; border-top: 1px solid var(--jdw-rule); }
.jdw-wait__why:not(.jdw-z.jdw-z.jdw-z) { margin: 0 0 10px; font-size: 14px; color: var(--jdw-muted); }

/* 1.21 : la galerie de la feuille (Kalenbook Pro). */
.jdw-gal:not(.jdw-z.jdw-z.jdw-z) { margin: 0 0 14px; }
.jdw-gal__track:not(.jdw-z.jdw-z.jdw-z) {
	display: grid;
	grid-auto-flow: column;
	grid-auto-columns: 100%;
	margin: 0;
	padding: 0;
	list-style: none;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scrollbar-width: none;
	border-radius: var(--kb-radius);
}
.jdw-gal__track:not(.jdw-z.jdw-z.jdw-z)::-webkit-scrollbar { display: none; }
.jdw-gal__item:not(.jdw-z.jdw-z.jdw-z) { scroll-snap-align: start; aspect-ratio: 16 / 10; background: var(--jdw-tint); overflow: hidden; }
.jdw-gal__item img:not(.jdw-z.jdw-z.jdw-z),
.jdw-gal__item video:not(.jdw-z.jdw-z.jdw-z) { display: block; width: 100%; height: 100%; object-fit: cover; }
.jdw-gal__foot:not(.jdw-z.jdw-z.jdw-z) { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 4px; }
.jdw-gal__pause:not(.jdw-z.jdw-z.jdw-z) {
	min-height: 44px;
	padding: 0 16px;
	border: 1px solid var(--jdw-rule);
	border-radius: var(--kb-radius-pill);
	background: var(--jdw-card);
	font: inherit;
	font-size: 14px;
	font-weight: 600;
	color: var(--jdw-ink);
	cursor: pointer;
}

/* 1.22 : le choix de la passerelle, dans l'inscription à un atelier. */
.jdw-signup__gateways:not(.jdw-z.jdw-z.jdw-z) { margin: 0 0 12px; padding: 0; border: 0; }
.jdw-signup__gateways legend:not(.jdw-z.jdw-z.jdw-z) { margin-bottom: 6px; font-weight: 600; }
.jdw-pay__rule:not(.jdw-z.jdw-z.jdw-z) { margin: 4px 0 10px; font-size: 14px; color: var(--jdw-muted); }
.jdw-mine__card:not(.jdw-z.jdw-z.jdw-z) { margin-bottom: 12px; border-style: dashed; }
.jdw-mine__item.is-selected:not(.jdw-z.jdw-z.jdw-z) { border-color: var(--jdw-accent); }
.jdw-credit:not(.jdw-z.jdw-z.jdw-z) { margin-top: 12px; }
.jdw-products:not(.jdw-z.jdw-z.jdw-z) { margin: 16px 0 0; padding: 0; border: 0; }
.jdw-products .jdw-check:not(.jdw-z.jdw-z.jdw-z) { min-height: 44px; }
.jdw-options:not(.jdw-z.jdw-z.jdw-z) { margin-top: 12px; }

/* ================================================================
   2.1 — une séance à distance : le jour, les photos, le message.
   ================================================================ */
.jdw-remote-day:not(.jdw-z.jdw-z.jdw-z) {
	margin: 0;
	padding: 14px 16px;
	border-radius: var(--kb-radius);
	background: var(--jdw-tint);
	color: var(--jdw-ink);
	font-size: 15px;
	line-height: 1.5;
}
.jdw-photos:not(.jdw-z.jdw-z.jdw-z) { display: grid; gap: 8px; margin-bottom: 20px; }
.jdw-photos .jdw-label:not(.jdw-z.jdw-z.jdw-z) { margin-bottom: 0; }
.jdw-photos__lead:not(.jdw-z.jdw-z.jdw-z) { margin: 0; color: var(--jdw-muted); font-size: 14.5px; }
.jdw-photos__grid:not(.jdw-z.jdw-z.jdw-z) { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.jdw-photo:not(.jdw-z.jdw-z.jdw-z) {
	position: relative;
	aspect-ratio: 1;
	overflow: hidden;
	border-radius: var(--kb-radius);
	background: var(--jdw-paper);
}
.jdw-photo img:not(.jdw-z.jdw-z.jdw-z) { display: block; width: 100%; height: 100%; object-fit: cover; }
.jdw-photo.is-sending img:not(.jdw-z.jdw-z.jdw-z) { opacity: 0.45; }
.jdw-photo__x:not(.jdw-z.jdw-z.jdw-z) {
	position: absolute;
	top: 2px;
	right: 2px;
	display: grid;
	place-items: center;
	width: 44px;
	height: 44px;
	padding: 0;
	border: 0;
	background: transparent;
	color: var(--jdw-card);
	cursor: pointer;
}
.jdw-photo__x svg:not(.jdw-z.jdw-z.jdw-z) {
	box-sizing: content-box;
	padding: 6px;
	border-radius: var(--kb-radius-pill);
	background: rgba(21, 32, 43, 0.72);
}
.jdw-photo--add:not(.jdw-z.jdw-z.jdw-z) {
	display: grid;
	place-items: center;
	align-content: center;
	gap: 4px;
	min-height: 44px;
	border: 2px dashed var(--jdw-rule);
	background: var(--jdw-card);
	color: var(--jdw-accent-ink, var(--jdw-accent));
	font-weight: 600;
	font-size: 14px;
	cursor: pointer;
}
.jdw-photo--add:hover:not(.jdw-z.jdw-z.jdw-z) { border-color: var(--jdw-accent); }
#jdw-photos-input:focus-visible + .jdw-photos__grid .jdw-photo--add:not(.jdw-z.jdw-z.jdw-z) { outline: 2px solid var(--jdw-accent); outline-offset: 2px; }
.jdw-photos__private:not(.jdw-z.jdw-z.jdw-z) { margin: 0; color: var(--jdw-muted); font-size: 13.5px; }
.jdw-done__message:not(.jdw-z.jdw-z.jdw-z) {
	max-width: 44ch;
	margin: -8px auto 24px;
	padding: 12px 16px;
	border-radius: var(--kb-radius);
	background: var(--jdw-tint);
	color: var(--jdw-ink);
	font-size: 15px;
	line-height: 1.55;
}

/* ================================================================
   2.4.3 — les ateliers : la carte et la page d'un atelier

   Ce qui décide d'abord : quand, où, combien, combien de places ; puis
   un seul bouton, « Réserver », le même partout. « À la une » est un
   badge. La page d'un atelier : image, titre, informations clés,
   « Réserver » qui descend au formulaire — collé en bas au téléphone —,
   la description, repliée quand elle est longue, le formulaire.
   ================================================================ */

.jdw-event__lead:not(.jdw-z.jdw-z.jdw-z) {
	flex: 0 0 auto;
	display: -webkit-box;
	-webkit-line-clamp: 3;
	line-clamp: 3;
	-webkit-box-orient: vertical;
	overflow: hidden;
}
.jdw-event__meta:not(.jdw-z.jdw-z.jdw-z) { display: grid; gap: 2px; margin-top: auto; font-size: 14px; }
.jdw-event__meta li:not(.jdw-z.jdw-z.jdw-z) { padding: 2px 0; }
.jdw-event__fact--price:not(.jdw-z.jdw-z.jdw-z) { color: var(--kbp-price, var(--jdw-ink)); font-weight: 600; }
.jdw-event__fact--seats.is-short:not(.jdw-z.jdw-z.jdw-z) { color: var(--jdw-accent-ink, var(--jdw-accent)); font-weight: 600; }
.jdw-event__foot:not(.jdw-z.jdw-z.jdw-z) { margin-top: 6px; }
.jdw-events[style*="--jdw-accent"] .jdw-event__kind:not(.jdw-z.jdw-z.jdw-z),
.jdw-evpage[style*="--jdw-accent"] .jdw-event__kind:not(.jdw-z.jdw-z.jdw-z) { color: var(--jdw-accent-ink, var(--jdw-accent)); }

.jdw-evpage:not(.jdw-z.jdw-z.jdw-z) {
	display: flex;
	flex-direction: column;
	gap: 20px;
	max-width: 760px;
	margin: 0 auto;
	padding-bottom: var(--kb-float);
}
.jdw-evpage__back:not(.jdw-z.jdw-z.jdw-z) {
	align-self: flex-start;
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	font-size: 15px;
	font-weight: 600;
	color: var(--jdw-accent-ink, var(--jdw-accent));
	text-decoration: underline;
	text-underline-offset: 3px;
}
.jdw-evpage__back:not(.jdw-z.jdw-z.jdw-z)::before { content: "\2190\00a0"; display: inline-block; text-decoration: none; }
.jdw-evpage__media:not(.jdw-z.jdw-z.jdw-z) {
	overflow: hidden;
	border-radius: var(--kb-radius);
	aspect-ratio: 16 / 9;
	background: var(--jdw-tint);
}
.jdw-evpage__media img:not(.jdw-z.jdw-z.jdw-z) { display: block; width: 100%; height: 100%; object-fit: cover; }
.jdw-evpage__head:not(.jdw-z.jdw-z.jdw-z) { display: flex; flex-direction: column; gap: 6px; }
.jdw-evpage__head .jdw-event__kind:not(.jdw-z.jdw-z.jdw-z) { margin: 0; }
.jdw-evpage__title:not(.jdw-z.jdw-z.jdw-z) {
	margin: 0;
	font-family: var(--jdw-display);
	font-size: clamp(26px, 6vw, 36px);
	font-weight: 700;
	line-height: 1.15;
	letter-spacing: -0.01em;
	color: var(--kbp-title, var(--jdw-ink));
	overflow-wrap: break-word;
}
.jdw-evpage__keys:not(.jdw-z.jdw-z.jdw-z) {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 200px), 1fr));
	gap: 12px 20px;
	margin: 0;
	padding: 18px 20px;
	border: 1px solid var(--jdw-rule);
	border-radius: var(--kb-radius);
	background: var(--jdw-card);
}
.jdw-evpage__key:not(.jdw-z.jdw-z.jdw-z) { min-width: 0; }
.jdw-evpage__key dt:not(.jdw-z.jdw-z.jdw-z) { margin: 0; font-size: 13px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: var(--jdw-muted); }
.jdw-evpage__key dd:not(.jdw-z.jdw-z.jdw-z) { margin: 2px 0 0; font-size: 16px; line-height: 1.45; color: var(--jdw-ink); overflow-wrap: break-word; }
.jdw-evpage__cta:not(.jdw-z.jdw-z.jdw-z) { margin: 0; }
.jdw-evpage__cta .jdw-btn:not(.jdw-z.jdw-z.jdw-z) { min-width: 200px; min-height: 48px; font-size: 16px; }
.jdw-evpage__desc:not(.jdw-z.jdw-z.jdw-z) { font-size: 16px; line-height: 1.65; color: var(--jdw-ink); overflow-wrap: break-word; }
.jdw-evpage__desc > :first-child:not(.jdw-z.jdw-z.jdw-z) { margin-top: 0; }
.jdw-evpage__desc.is-folded:not(.jdw-z.jdw-z.jdw-z) {
	max-height: 14em;
	overflow: hidden;
	-webkit-mask-image: linear-gradient(to bottom, #000 65%, transparent);
	mask-image: linear-gradient(to bottom, #000 65%, transparent);
}
.jdw-evpage__more:not(.jdw-z.jdw-z.jdw-z) {
	align-self: flex-start;
	min-height: 44px;
	margin-top: -12px;
	font-size: 15px;
	font-weight: 600;
	color: var(--jdw-accent-ink, var(--jdw-accent));
	text-decoration: underline;
	text-underline-offset: 3px;
	cursor: pointer;
}
.jdw-evpage__more[hidden]:not(.jdw-z.jdw-z.jdw-z) { display: none; }
/* 2.4.6 : à l'ordinateur, plus de bouton qui descend à un formulaire déjà
   juste en dessous (jdw-page.js, near()). */
.jdw-evpage__cta[hidden]:not(.jdw-z.jdw-z.jdw-z) { display: none; }
.jdw-evpage__form:not(.jdw-z.jdw-z.jdw-z) { scroll-margin-top: 24px; }
.jdw-evpage__form .jdw-signup:not(.jdw-z.jdw-z.jdw-z) { margin: 0; }
[data-jdw-mine] form .jdw-btn:not(.jdw-z.jdw-z.jdw-z) { margin-top: 16px; }

@media (max-width: 640px) {
	/* Au téléphone, « Réserver » reste au pouce jusqu'au formulaire, au-dessus
	   d'un bouton flottant du site. */
	.jdw-evpage__cta:not(.jdw-z.jdw-z.jdw-z) {
		position: sticky;
		bottom: var(--kb-float);
		z-index: 2;
		margin: 0;
		padding: 10px 0 calc(10px + env(safe-area-inset-bottom, 0px));
		background: var(--jdw-card);
		box-shadow: 0 -10px 24px -18px rgba(0, 0, 0, .35);
	}
	.jdw-evpage__cta.is-past:not(.jdw-z.jdw-z.jdw-z) { position: static; box-shadow: none; }
	.jdw-evpage__cta .jdw-btn:not(.jdw-z.jdw-z.jdw-z) { width: 100%; }
	.jdw-evpage__keys:not(.jdw-z.jdw-z.jdw-z) { padding: 14px 16px; }
}

@media (prefers-reduced-motion: no-preference) {
	html:has(.jdw-evpage):not(.jdw-z.jdw-z.jdw-z) { scroll-behavior: smooth; }
}

/* 2.4.3 : sous le dernier bouton d'un module, la place d'un bouton
   flottant du site — défilée jusqu'en bas, la page ne le laisse pas dessous. */
.jdw-events:not(.jdw-z.jdw-z.jdw-z),
.jdw-booking:not(.jdw-z.jdw-z.jdw-z) { margin-bottom: var(--kb-float-clear, 0px); }

/* 2.4.3 : sous 360 px, « Retour » devient une flèche de 48 px — son nom
   reste dans le bouton, pour un lecteur d'écran — et « Confirmer le
   rendez-vous » garde la ligne entière, sans se couper ni doubler la
   hauteur de la barre. */
@media (max-width: 359px) {
	.jdw-foot__actions .jdw-btn--ghost:not(.jdw-z.jdw-z.jdw-z) {
		flex: 0 0 48px;
		width: 48px;
		padding: 0;
		font-size: 0;
		overflow: hidden;
	}
	.jdw-foot__actions .jdw-btn--ghost:not(.jdw-z.jdw-z.jdw-z)::before { content: "\2039"; font-size: 24px; line-height: 1; }
	.jdw-foot__actions .jdw-btn:last-child:not(.jdw-z.jdw-z.jdw-z) { padding-inline: 14px; }
	.jdw-foot__actions:not(.jdw-z.jdw-z.jdw-z) { gap: 8px; }
}

/* ---------- 2.10 · F — le bon à l'étape du paiement, « Offrir » ----------
   Téléphone v4, écrans 4, 5 et 7 : aux couleurs de la page (accent, fond,
   forme), des fonds opaques, des cibles de 44 px, des champs de 16 px. */

.jdw-gf-voucher:not(.jdw-z.jdw-z.jdw-z) { margin: 14px 0; }
.jdw-gf-codein:not(.jdw-z.jdw-z.jdw-z) { display: flex; gap: 6px; align-items: stretch; }
.jdw-gf-codein .jdw-gf-code:not(.jdw-z.jdw-z.jdw-z) { flex: 1 1 auto; min-width: 0; min-height: 48px; padding: 10px 12px; border: 1.5px solid var(--jdw-accent); border-radius: var(--kb-radius-sm); background: var(--jdw-card); color: var(--jdw-ink); font: inherit; font-size: 16px; font-family: ui-monospace, Menlo, Consolas, monospace; letter-spacing: .04em; text-transform: uppercase; }
.jdw-gf-codein .jdw-gf-check:not(.jdw-z.jdw-z.jdw-z) { flex: none; display: grid; place-items: center; width: 48px; min-height: 48px; padding: 0; border: 0; border-radius: var(--kb-radius-sm); background: var(--jdw-accent); color: var(--jdw-on-accent); cursor: pointer; }
.jdw-gf-codein .jdw-gf-check:disabled:not(.jdw-z.jdw-z.jdw-z) { opacity: .6; cursor: progress; }
.jdw-gf-ok:not(.jdw-z.jdw-z.jdw-z) { margin: 8px 0; padding: 9px 11px; border-radius: var(--kb-radius-sm); background: var(--jdw-tint); color: var(--jdw-accent-ink); font-size: 14px; font-weight: 600; }
.jdw-gf-sum:not(.jdw-z.jdw-z.jdw-z) { padding: 2px 12px; border: 1px solid var(--jdw-rule); border-radius: var(--kb-radius); background: var(--jdw-card); }
.jdw-gf-sum > div:not(.jdw-z.jdw-z.jdw-z) { display: flex; justify-content: space-between; gap: 12px; padding: 8px 0; border-bottom: 1px solid var(--jdw-rule); font-size: 14px; }
.jdw-gf-sum > div:last-child:not(.jdw-z.jdw-z.jdw-z) { border-bottom: 0; font-weight: 800; font-size: 15px; }
.jdw-gf-minus:not(.jdw-z.jdw-z.jdw-z) { color: var(--jdw-accent-ink); white-space: nowrap; }
.jdw-gf-restof:not(.jdw-z.jdw-z.jdw-z) { margin-top: 12px; }
.jdw-gf-remove:not(.jdw-z.jdw-z.jdw-z), .jdw-gf-back:not(.jdw-z.jdw-z.jdw-z) { display: inline-flex; align-items: center; gap: 4px; min-height: 44px; padding: 0; border: 0; background: none; color: var(--jdw-accent-ink); font: inherit; font-size: 15px; font-weight: 600; cursor: pointer; }

/* « Offrir » : un bon, pour qui, l'envoi. */
.jdw-gf-card:not(.jdw-z.jdw-z.jdw-z) { background: var(--jdw-paper); }
.jdw-gf:not(.jdw-z.jdw-z.jdw-z) { padding-bottom: 0; }
.jdw-gf-step:not(.jdw-z.jdw-z.jdw-z) { margin: 4px 0 6px; font-size: 12px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--jdw-muted); }
.jdw-gf-title:not(.jdw-z.jdw-z.jdw-z) { margin: 0 0 12px; outline: 0; }
.jdw-gf-seg:not(.jdw-z.jdw-z.jdw-z) { display: flex; gap: 3px; margin: 0 0 12px; padding: 3px; border-radius: var(--kb-radius-sm); background: var(--jdw-muted-tint, var(--jdw-tint)); }
.jdw-gf-seg__b:not(.jdw-z.jdw-z.jdw-z) { flex: 1 1 0; min-height: 44px; padding: 6px 8px; border: 0; border-radius: var(--kb-radius-sm); background: transparent; color: var(--jdw-muted); font: inherit; font-size: 15px; font-weight: 600; cursor: pointer; white-space: normal; }
.jdw-gf-seg__b.is-on:not(.jdw-z.jdw-z.jdw-z) { background: var(--jdw-card); color: var(--jdw-ink); box-shadow: 0 1px 3px rgba(0, 0, 0, .08); }
.jdw-gf-amounts:not(.jdw-z.jdw-z.jdw-z) { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; margin: 0 0 12px; }
.jdw-gf-amount:not(.jdw-z.jdw-z.jdw-z) { min-height: 52px; padding: 8px 0; border: 1.5px solid var(--jdw-rule); border-radius: var(--kb-radius); background: var(--jdw-card); color: var(--jdw-ink); font: inherit; font-size: 17px; font-weight: 800; cursor: pointer; }
.jdw-gf-amount.is-on:not(.jdw-z.jdw-z.jdw-z) { border: 2px solid var(--jdw-accent); background: var(--jdw-tint); color: var(--jdw-accent-ink); }
.jdw-gf .jdw-field input:not(.jdw-z.jdw-z.jdw-z), .jdw-gf .jdw-field textarea:not(.jdw-z.jdw-z.jdw-z), .jdw-gf-free:not(.jdw-z.jdw-z.jdw-z) { font-size: 16px; background: var(--jdw-card); }
.jdw-gf-req:not(.jdw-z.jdw-z.jdw-z) { color: #C2410C; font-style: normal; }
.jdw-gf-opts:not(.jdw-z.jdw-z.jdw-z) { display: grid; gap: 6px; margin: 0 0 12px; }
.jdw-gf-opt:not(.jdw-z.jdw-z.jdw-z) { display: flex; align-items: flex-start; gap: 10px; width: 100%; min-height: 52px; padding: 10px 12px; border: 1.5px solid var(--jdw-rule); border-radius: var(--kb-radius); background: var(--jdw-card); color: var(--jdw-ink); font: inherit; text-align: left; cursor: pointer; white-space: normal; }
.jdw-gf-opt.is-on:not(.jdw-z.jdw-z.jdw-z) { border-color: var(--jdw-accent); background: var(--jdw-tint); }
.jdw-gf-opt__dot:not(.jdw-z.jdw-z.jdw-z) { flex: none; width: 18px; height: 18px; margin-top: 2px; border: 2px solid var(--jdw-rule); border-radius: 50%; background: var(--jdw-card); }
.jdw-gf-opt.is-on .jdw-gf-opt__dot:not(.jdw-z.jdw-z.jdw-z) { border: 5px solid var(--jdw-accent); }
.jdw-gf-opt__text:not(.jdw-z.jdw-z.jdw-z) { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.jdw-gf-opt__text b:not(.jdw-z.jdw-z.jdw-z) { font-size: 15px; }
.jdw-gf-opt__text small:not(.jdw-z.jdw-z.jdw-z) { color: var(--jdw-muted); font-size: 13px; }
.jdw-gf-send__more:not(.jdw-z.jdw-z.jdw-z) { margin: 8px 0 4px 28px; }
.jdw-gf-send__more input[type="date"]:not(.jdw-z.jdw-z.jdw-z) { margin-top: 8px; min-height: 48px; font-size: 16px; }
.jdw-gf-from:not(.jdw-z.jdw-z.jdw-z) { margin-top: 8px; }
.jdw-gf-bar:not(.jdw-z.jdw-z.jdw-z) { position: sticky; bottom: 0; z-index: 2; display: flex; align-items: center; justify-content: space-between; gap: 12px; margin: 16px -16px 0; padding: 10px 16px calc(12px + env(safe-area-inset-bottom, 0px)); border-top: 1px solid var(--jdw-rule); background: var(--jdw-paper); }
.jdw-gf-bar__what:not(.jdw-z.jdw-z.jdw-z) { display: flex; flex-direction: column; min-width: 0; }
.jdw-gf-bar__what small:not(.jdw-z.jdw-z.jdw-z) { color: var(--jdw-muted); font-size: 13px; overflow-wrap: anywhere; }
.jdw-gf-bar__what b:not(.jdw-z.jdw-z.jdw-z) { font-size: 16px; }
.jdw-gf-bar__go:not(.jdw-z.jdw-z.jdw-z) { flex: none; min-height: 48px; }

/* Les cartes : l'image, le prix barré, « Offrir cette carte ». */
.jdw-gf-cardimg:not(.jdw-z.jdw-z.jdw-z) { display: block; height: 110px; margin: -14px -16px 10px; border-radius: 0; border-top-left-radius: var(--kb-radius); border-top-right-radius: var(--kb-radius); background: var(--jdw-tint) center / cover no-repeat; }
.jdw-gf-was:not(.jdw-z.jdw-z.jdw-z) { color: var(--jdw-muted); font-size: 13px; font-weight: 400; }
.jdw-gf-give:not(.jdw-z.jdw-z.jdw-z) { display: inline-flex; align-items: center; gap: 6px; min-height: 44px; padding: 0 4px; border: 0; background: none; color: var(--jdw-accent-ink); font: inherit; font-size: 14px; font-weight: 700; cursor: pointer; }

/* ---------- 2.10 · A — le parcours de réservation (maquette réservation v3) ----------
   Le jour et l'heure sur un écran, « Pour quel jour ? », les documents,
   « C'est réservé ». Des fonds opaques, des cibles de 44 px, des champs de
   16 px, rien qui déborde de 360 à 430 px (A10). */

.jdw-chosen:not(.jdw-z.jdw-z.jdw-z) {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	margin: -28px -28px 18px;
	padding: 12px 28px;
	border-bottom: 1px solid var(--jdw-rule);
	background: var(--jdw-paper);
}
.jdw-chosen__text:not(.jdw-z.jdw-z.jdw-z) { display: grid; gap: 2px; min-width: 0; }
.jdw-chosen__text strong:not(.jdw-z.jdw-z.jdw-z) { font-size: 15px; color: var(--jdw-ink); overflow-wrap: anywhere; }
.jdw-chosen__text small:not(.jdw-z.jdw-z.jdw-z) { font-size: 13px; color: var(--jdw-muted); }
.jdw-chosen__change:not(.jdw-z.jdw-z.jdw-z) {
	flex: none;
	min-height: 44px;
	padding: 0 6px;
	border: 0;
	background: transparent;
	color: var(--jdw-accent-ink);
	font: inherit;
	font-size: 14px;
	font-weight: 700;
	cursor: pointer;
}
.jdw-step-title:not(.jdw-z.jdw-z.jdw-z) { margin: 0 0 12px; font-family: var(--jdw-display); font-size: 20px; font-weight: 700; color: var(--jdw-ink); letter-spacing: -.01em; }
.jdw-info:not(.jdw-z.jdw-z.jdw-z) { margin: 0 0 14px; padding: 10px 12px; border-radius: var(--kb-radius-sm); background: var(--jdw-tint); color: var(--jdw-ink); font-size: 14px; line-height: 1.45; }
.jdw-monthnav:not(.jdw-z.jdw-z.jdw-z) {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 8px;
	margin: 0 0 10px;
	padding: 2px;
	border-radius: var(--kb-radius);
	background: var(--jdw-paper);
}
.jdw-monthnav__title:not(.jdw-z.jdw-z.jdw-z) { font-weight: 700; color: var(--jdw-ink); }
.jdw-monthnav__go:not(.jdw-z.jdw-z.jdw-z) {
	display: grid;
	place-items: center;
	width: 44px;
	height: 44px;
	padding: 0;
	border: 0;
	border-radius: var(--kb-radius-sm);
	background: transparent;
	color: var(--jdw-accent-ink);
	cursor: pointer;
}
.jdw-monthnav__go[disabled]:not(.jdw-z.jdw-z.jdw-z) { color: var(--jdw-muted); opacity: .4; cursor: default; }
.jdw-cal2__grid:not(.jdw-z.jdw-z.jdw-z) { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 4px; }
.jdw-cal2__wd:not(.jdw-z.jdw-z.jdw-z) { padding: 3px 0; text-align: center; font-size: 12px; font-weight: 700; color: var(--jdw-muted); text-transform: uppercase; }
.jdw-cal2__day:not(.jdw-z.jdw-z.jdw-z) {
	display: grid;
	place-items: center;
	min-width: 0;
	height: 44px;
	padding: 0;
	border: 0;
	border-radius: var(--kb-radius-sm);
	background: transparent;
	color: var(--jdw-muted);
	font: inherit;
	font-size: 15px;
	font-weight: 500;
	font-variant-numeric: tabular-nums;
}
.jdw-cal2__day.is-open:not(.jdw-z.jdw-z.jdw-z) { background: var(--jdw-tint); color: var(--jdw-accent-ink); font-weight: 700; cursor: pointer; }
.jdw-cal2__day.is-off:not(.jdw-z.jdw-z.jdw-z) { opacity: .55; }
.jdw-cal2__day.is-selected:not(.jdw-z.jdw-z.jdw-z) { background: var(--jdw-accent); color: var(--jdw-on-accent); }
.jdw-cal2__day.is-today:not(.jdw-z.jdw-z.jdw-z) { box-shadow: inset 0 0 0 1.5px var(--jdw-muted); }
.jdw-cal2__legend:not(.jdw-z.jdw-z.jdw-z) { display: flex; flex-wrap: wrap; gap: 6px 14px; margin: 8px 0 14px; font-size: 13px; color: var(--jdw-muted); }
.jdw-cal2__legend i:not(.jdw-z.jdw-z.jdw-z) { display: inline-block; width: 11px; height: 11px; margin-right: 5px; border-radius: var(--kb-radius-sm); vertical-align: -1px; }
.jdw-cal2__legend i.is-open:not(.jdw-z.jdw-z.jdw-z) { background: var(--jdw-tint); }
.jdw-cal2__legend i.is-selected:not(.jdw-z.jdw-z.jdw-z) { background: var(--jdw-accent); }
.jdw-cal2__legend i.is-off:not(.jdw-z.jdw-z.jdw-z) { border: 1px solid var(--jdw-rule); background: var(--jdw-card); }
.jdw-dayslots__title:not(.jdw-z.jdw-z.jdw-z) { margin: 4px 0 8px; letter-spacing: 0; text-transform: none; font-size: 14px; color: var(--jdw-muted); }
.jdw-slots--grid:not(.jdw-z.jdw-z.jdw-z) { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.jdw-dayrows:not(.jdw-z.jdw-z.jdw-z) { display: grid; gap: 8px; }
.jdw-dayrow:not(.jdw-z.jdw-z.jdw-z) {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 10px;
	min-height: 52px;
	padding: 10px 12px;
	border: 1px solid var(--jdw-rule);
	border-radius: var(--kb-radius);
	background: var(--jdw-card);
	color: var(--jdw-ink);
	font: inherit;
	text-align: left;
	cursor: pointer;
}
.jdw-dayrow strong:not(.jdw-z.jdw-z.jdw-z) { min-width: 0; font-size: 15px; overflow-wrap: anywhere; }
.jdw-dayrow.is-selected:not(.jdw-z.jdw-z.jdw-z) { border: 2px solid var(--jdw-accent); background: var(--jdw-tint); }
.jdw-dayrow.is-full:not(.jdw-z.jdw-z.jdw-z) { opacity: .55; cursor: default; }
.jdw-tag:not(.jdw-z.jdw-z.jdw-z) { flex: none; padding: 3px 8px; border-radius: var(--kb-radius-badge); font-size: 12px; font-weight: 700; }
.jdw-tag.is-free:not(.jdw-z.jdw-z.jdw-z) { background: #E2F6EA; color: #166A43; }
.jdw-tag.is-last:not(.jdw-z.jdw-z.jdw-z) { background: #FFF1E6; color: #9A3412; }
.jdw-tag.is-full:not(.jdw-z.jdw-z.jdw-z) { background: #F0F1F5; color: #4A5563; }
.jdw-star:not(.jdw-z.jdw-z.jdw-z) { color: #C2410C; font-style: normal; }
.jdw-docs:not(.jdw-z.jdw-z.jdw-z) {
	padding: 12px;
	border: 1.5px dashed var(--jdw-line-field, var(--jdw-rule));
	border-radius: var(--kb-radius);
	background: var(--jdw-card);
}
.jdw-docs__title:not(.jdw-z.jdw-z.jdw-z) { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0; color: var(--jdw-ink); }
.jdw-req:not(.jdw-z.jdw-z.jdw-z) { padding: 1px 7px; border-radius: var(--kb-radius-sm); background: #FFF1E6; color: #9A3412; font-size: 12px; font-weight: 700; }
.jdw-req.is-optional:not(.jdw-z.jdw-z.jdw-z) { background: #F0F1F5; color: #4A5563; }
.jdw-docs__note:not(.jdw-z.jdw-z.jdw-z) { margin: 4px 0 10px; color: var(--jdw-muted); font-size: 14px; line-height: 1.45; }
.jdw-docs__files:not(.jdw-z.jdw-z.jdw-z) { display: grid; gap: 6px; margin-bottom: 8px; }
.jdw-file:not(.jdw-z.jdw-z.jdw-z) { display: flex; align-items: center; gap: 8px; min-height: 44px; padding: 4px 4px 4px 10px; border: 1px solid var(--jdw-rule); border-radius: var(--kb-radius-sm); background: var(--jdw-card); font-size: 14px; color: var(--jdw-ink); }
.jdw-file__kind:not(.jdw-z.jdw-z.jdw-z) { flex: none; padding: 2px 6px; border-radius: var(--kb-radius-sm); background: #E8ECFD; color: #1F36AE; font-size: 11px; font-weight: 700; font-style: normal; }
.jdw-file__kind--pdf:not(.jdw-z.jdw-z.jdw-z) { background: #FDE8E8; color: #B42318; }
.jdw-file__name:not(.jdw-z.jdw-z.jdw-z) { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.jdw-file__x:not(.jdw-z.jdw-z.jdw-z) { display: grid; place-items: center; flex: none; width: 44px; height: 44px; padding: 0; border: 0; background: transparent; color: var(--jdw-muted); cursor: pointer; }
.jdw-file__wait:not(.jdw-z.jdw-z.jdw-z) { flex: none; padding: 0 10px; color: var(--jdw-muted); font-size: 13px; }
.jdw-docs__add:not(.jdw-z.jdw-z.jdw-z) {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 6px;
	min-height: 44px;
	border: 1.5px solid var(--jdw-accent);
	border-radius: var(--kb-radius-sm);
	background: var(--jdw-card);
	color: var(--jdw-accent-ink);
	font-weight: 700;
	cursor: pointer;
}
.jdw-docs__private:not(.jdw-z.jdw-z.jdw-z) { margin: 6px 0 0; font-size: 13px; color: var(--jdw-muted); }
.jdw-foot__two:not(.jdw-z.jdw-z.jdw-z) { display: grid; gap: 1px; min-width: 0; }
.jdw-foot__two small:not(.jdw-z.jdw-z.jdw-z) { font-size: 12.5px; color: var(--jdw-muted); }
.jdw-foot__two strong:not(.jdw-z.jdw-z.jdw-z) { font-size: 15px; color: var(--jdw-ink); font-weight: 700; }
.jdw-foot--done:not(.jdw-z.jdw-z.jdw-z) { justify-content: center; margin: 16px -28px -28px; }
@media (max-width: 640px) {
	.jdw-chosen:not(.jdw-z.jdw-z.jdw-z) { margin: -28px -18px 16px; padding: 10px 18px; }
	/* La barre du bas : ce qui est choisi à gauche, le bouton à droite (A10). */
	.jdw-foot:not(.jdw-z.jdw-z.jdw-z) { flex-direction: row; align-items: center; background: var(--jdw-card); }
	.jdw-foot__summary:not(.jdw-z.jdw-z.jdw-z) { flex: 1 1 auto; min-width: 0; }
	.jdw-foot__actions:not(.jdw-z.jdw-z.jdw-z) { width: auto; flex: none; }
	.jdw-foot__actions .jdw-btn:not(.jdw-z.jdw-z.jdw-z) { min-height: 48px; padding-inline: 20px; }
	.jdw-foot--done:not(.jdw-z.jdw-z.jdw-z) { margin: 16px -18px -28px; }
	.jdw-slots--grid:not(.jdw-z.jdw-z.jdw-z) { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 6px; }
	/* 2.10 : « 12:00 PM » ne tient pas dans une case du quart : trois colonnes en 12 h. */
	.jdw-slots--grid.jdw-slots--h12:not(.jdw-z.jdw-z.jdw-z) { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 380px) {
	.jdw-slots--grid:not(.jdw-z.jdw-z.jdw-z) { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
