/* ==========================================================================
   OZE Réservations — interface publique.
   Palette et typographie du site ; contrastes ramenés au niveau WCAG AA.
   Variables regroupées ci-dessous pour être modifiées facilement.
   ========================================================================== */

.oze-bk,
.oze-pricing {
	/* Couleurs de la charte, avec des variantes assombries là où le contraste
	   sur fond clair ou sur aplat coloré était insuffisant. */
	--oze-primary: #C46A5A;          /* terracotta de la charte (traits, bordures) */
	--oze-strong: #BE4829;           /* brique de la maquette — 5.0:1 en blanc dessus */
	--oze-strong-hover: #A03D22;
	--oze-dark: #3D3834;
	--oze-accent: #4F7F6F;           /* vert assombri : 4.6:1 sur blanc (textes, liens) */
	--oze-check: #6E9B87;            /* vert de la maquette pour la pastille de sélection */
	--oze-check-bg: #E9F1EB;
	--oze-check-border: #7FA48F;
	--oze-text: #544D48;
	--oze-heading: #241F1B;
	--oze-muted: #6E6660;            /* 5.2:1 sur fond clair */
	--oze-bg: #F2F0E4;
	--oze-surface: #FFFFFF;
	--oze-surface-alt: #F7F6F3;
	--oze-border: #DED6CC;
	--oze-error: #A93B2B;
	--oze-success: #3F6D5E;
	--oze-on-dark: #F2F0E4;
	--oze-on-dark-accent: #EDA692;   /* 5.8:1 sur #3D3834 */
	--oze-radius: 16px;
	--oze-radius-pill: 40px;
	/* Repli explicite sur les polices du site : les pages techniques du plugin
	   (espace client, confirmation) ne chargent pas Elementor, donc pas ses
	   variables globales. Sans repli, le texte tombait sur la police du navigateur. */
	--oze-font: var(--e-global-typography-text-font-family, "Work Sans", Helvetica, Arial, sans-serif);
	--oze-font-title: var(--e-global-typography-primary-font-family, "Playfair Display", Georgia, serif);
	--oze-gap: 24px;

	/* --- Section tarifaire (refonte 2026-08-25) -------------------------
	   Sortie du marron fonce, juge lourd. Trois niveaux de mise en avant,
	   tous sur des fonds clairs : ecru pour les offres d'appel, sauge doux
	   pour l'offre mise en avant, liseré terracotta pour la valorisation
	   secondaire. Contrastes verifies (AA minimum, AAA pour les titres). */
	--oze-pricing-surface: #FBF9F3;      /* ecru : cartes courantes */
	--oze-pricing-featured: #DCE9E2;     /* sauge doux : offre mise en avant */
	--oze-pricing-featured-line: #A8C4B6;
	--oze-pricing-second-line: #C8DBD1;  /* vert tres pale : distinction discrete */
	--oze-pricing-badge: #3F6D5E;        /* badge principal, texte blanc : 5.9:1 */
	--oze-pricing-badge-2: #F3DFD8;      /* badge secondaire, texte brun : 12.7:1 */
	--oze-tap: 46px;                 /* cible tactile minimale */
}

/* ==========================================================================
   1. Cartes tarifaires — trois colonnes sur ordinateur
   ========================================================================== */

.oze-pricing.oze-pricing {
	/* Elementor pilote l'affichage des conteneurs par variable : on la surcharge aussi. */
	--display: grid;
	--flex-wrap: nowrap;
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--oze-gap);
	width: 100%;
	max-width: 1160px;
	margin-inline: auto;
	align-items: stretch;
}

/*
 * Deux colonnes au-dela de 640 px, sans palier a quatre.
 * Quatre cartes de meme largeur compriment titres, puces et boutons : en
 * 2 x 2 chaque carte dispose d'environ 512 px utiles, ce qui laisse le
 * contenu respirer.
 *
 * L'ordre visuel (89 | 395 puis 29 | 45) vient du DOM et non d'un « order »
 * CSS : l'ordre de lecture au clavier reste conforme a l'affichage.
 */
@media (min-width: 640px) {
	.oze-pricing.oze-pricing {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 28px;
	}
}
@media (min-width: 1024px) {
	/* Plus d'air sur desktop, sans elargir la section outre mesure. */
	.oze-pricing.oze-pricing { gap: 32px; max-width: 1200px; }
	.oze-pricing .oze-pricing__card { padding: 38px 36px 32px; }
}

/*
 * Grand ecran : quatre colonnes reellement larges.
 *
 * Le verrou n'est pas la grille mais son wrapper. « .ozr-tarifs » est un
 * conteneur Elementor « boxed » : son enfant « .e-con-inner » recoit
 * max-width: var(--content-width), calculee a partir de --container-max-width
 * (1240 px imposes par le kit). Tant que ce wrapper est bride, elargir
 * .oze-pricing ne sert a rien. On agit donc sur les deux niveaux, et on
 * neutralise explicitement la max-width heritee du wrapper.
 *
 * Largeur obtenue (marge de section 24 px, gouttiere 20 px) :
 *   viewport 1440 -> inner 1392 | carte 333 px
 *   viewport 1600 -> inner 1552 | carte 373 px
 *   viewport 1920 -> inner 1760 (plafond) | carte 425 px
 * En dessous de 1440 px, on reste en 2 x 2.
 */
@media (min-width: 1440px) {
	/*
	 * Marge exterieure ramenee a 24 px. Elementor genere le padding de cette
	 * section avec « .elementor-8506 .elementor-element.elementor-element-XXX »
	 * (0,3,0) : il faut au moins autant de specificite pour la surcharger,
	 * d'ou le prefixe « .elementor » et la classe repetee.
	 */
	.elementor .ozr-tarifs.ozr-tarifs.e-con {
		--container-max-width: 1760px;
		--padding-left: 24px;
		--padding-right: 24px;
	}
	/* Le wrapper lui-meme : on lui rend toute la largeur disponible. */
	.ozr-tarifs.e-con > .e-con-inner {
		width: 100%;
		max-width: 1760px;
		margin-inline: auto;
	}
	/* La grille suit le wrapper, sans plafond intermediaire. */
	.oze-pricing.oze-pricing {
		grid-template-columns: repeat(4, minmax(0, 1fr));
		width: 100%;
		max-width: none;
		gap: 20px;
	}
	.oze-pricing .oze-pricing__card { padding: 32px 28px 28px; }
	.oze-pricing .oze-pricing__title .elementor-heading-title {
		font-size: clamp(20px, 1.3vw, 23px);
		line-height: 1.22;
	}
}

.oze-pricing .oze-pricing__card {
	display: flex;
	flex-direction: column;
	gap: 10px;
	min-width: 0;
	width: 100%;
	height: 100%;
	padding: 32px 28px 28px;
	position: relative;
	background: var(--oze-pricing-surface);
	border: 1px solid var(--oze-border);
	/* le rayon d'angle reste celui défini dans Elementor pour rester cohérent avec le site */
	color: var(--oze-text);
}

/* Offre principale (forfait) : sauge doux, liseré renforce, ombre douce. */
.oze-pricing .oze-pricing__card--dark,
.oze-pricing .oze-pricing__card--featured {
	background: var(--oze-pricing-featured);
	border-color: var(--oze-pricing-featured-line);
	border-width: 2px;
	color: var(--oze-text);
	box-shadow: 0 8px 24px rgba(61, 56, 52, .13);
}
/*
 * Offre secondaire (a la seance) : reste sur le fond ecru commun. Seul un
 * liseré vert tres pale la distingue des deux offres neutres — assez pour
 * exister, trop peu pour concurrencer le forfait.
 */
.oze-pricing .oze-pricing__card--second {
	border-color: var(--oze-pricing-second-line);
	box-shadow: 0 2px 8px rgba(61, 56, 52, .05);
}

/* Badges : un vrai texte dans le flux, jamais un pseudo-element. */
.oze-pricing .oze-pricing__badge .elementor-heading-title {
	display: inline-block;
	margin: 0 0 4px;
	padding: 5px 12px;
	border-radius: var(--oze-radius-pill);
	background: var(--oze-pricing-badge);
	color: #FFFFFF;
	font-family: var(--oze-font);
	font-size: 12px;
	font-weight: 600;
	letter-spacing: .04em;
	text-transform: uppercase;
	line-height: 1.4;
}
/* Badge secondaire : pas d'aplat, un simple contour. Volontairement en retrait. */
.oze-pricing .oze-pricing__badge--second .elementor-heading-title {
	background: transparent;
	border: 1px solid var(--oze-pricing-second-line);
	color: var(--oze-pricing-badge);
	font-weight: 500;
}

/*
 * Carte « Point OZE » : condition d'acces, pas mise en avant commerciale.
 * Fond ecru commun, liseré neutre — elle ne concurrence donc pas le forfait.
 */
.oze-pricing .oze-pricing__badge--client .elementor-heading-title {
	background: var(--oze-pricing-badge-2);
	border: 1px solid var(--oze-pricing-second-line);
	color: var(--oze-pricing-badge);
	font-weight: 600;
}

.oze-pricing .oze-pricing__title,
.oze-pricing .oze-pricing__title .elementor-heading-title {
	/*
	 * Le theme parent applique « html { word-break: break-word } », qui
	 * s'herite partout et autorise la coupure AU MILIEU d'un mot
	 * (« Accompagnemen / t »). On retablit un comportement typographique
	 * normal : un mot reste entier, le retour se fait entre les mots.
	 */
	word-break: normal;
	overflow-wrap: normal;
	hyphens: none;
	-webkit-hyphens: none;
	/* Repartit les lignes d'un titre court plutot que de laisser un orphelin. */
	text-wrap: balance;
	font-family: var(--oze-font-title);
	font-size: clamp(21px, 2.2vw, 25px);
	line-height: 1.25;
	color: var(--oze-heading);
	margin: 0;
}
/* Fond desormais clair : le titre garde la couleur courante. */

.oze-pricing .oze-pricing__price .elementor-heading-title {
	font-family: var(--oze-font-title);
	font-size: clamp(34px, 3.4vw, 42px);
	line-height: 1.1;
	color: var(--oze-strong);
	margin: 0;
}
.oze-pricing__card--dark .oze-pricing__price .elementor-heading-title,
.oze-pricing__card--featured .oze-pricing__price .elementor-heading-title { color: var(--oze-strong-hover); }

.oze-pricing .oze-pricing__body,
.oze-pricing .oze-pricing__body p,
.oze-pricing .oze-pricing__body li {
	font-size: 16px;
	line-height: 1.6;
	color: inherit;
}
.oze-pricing .oze-pricing__lead { margin: 0 0 10px; font-weight: 600; color: inherit; }
.oze-pricing .oze-pricing__body ul { margin: 0; padding-left: 1.15em; }
.oze-pricing .oze-pricing__body li { margin-bottom: 6px; }

.oze-pricing .oze-pricing__list .elementor-icon-list-item,
.oze-pricing .oze-pricing__list .elementor-icon-list-text {
	font-size: 16px;
	line-height: 1.55;
	color: inherit;
}
.oze-pricing .oze-pricing__list .elementor-icon-list-icon svg,
.oze-pricing .oze-pricing__list .elementor-icon-list-icon i { color: var(--oze-strong); fill: var(--oze-strong); }
/* Les coches de la carte mise en avant reprennent le vert profond du site. */
.oze-pricing__card--dark .oze-pricing__list .elementor-icon-list-icon svg,
.oze-pricing__card--dark .oze-pricing__list .elementor-icon-list-icon i,
.oze-pricing__card--featured .oze-pricing__list .elementor-icon-list-icon svg,
.oze-pricing__card--featured .oze-pricing__list .elementor-icon-list-icon i { color: var(--oze-success); fill: var(--oze-success); }

.oze-pricing .oze-pricing__note .elementor-heading-title {
	font-family: var(--oze-font);
	font-size: 15px;
	font-weight: 400;
	line-height: 1.55;
	color: var(--oze-muted);
	margin: 4px 0 0;
}
/* Note : meme gris que les autres cartes, 4.5:1 sur le sauge. */

/* Bouton toujours en bas de carte */
.oze-pricing .oze-pricing__cta {
	margin-top: auto;
	padding-top: 18px;
	width: 100%;
}
.oze-pricing .oze-pricing__btn .elementor-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	min-height: var(--oze-tap);
	padding: 13px 24px;
	border-radius: var(--oze-radius-pill);
	background-color: var(--oze-strong);
	color: #FFFFFF;
	font-size: 16px;
	font-weight: 600;
	border: 2px solid transparent;
}
.oze-pricing .oze-pricing__btn .elementor-button:hover,
.oze-pricing .oze-pricing__btn .elementor-button:focus-visible {
	background-color: var(--oze-strong-hover);
	color: #FFFFFF;
}
/* Tous les boutons sont desormais terracotta : une seule regle suffit. */
.oze-pricing :focus-visible { outline: 3px solid var(--oze-accent); outline-offset: 2px; }

/* ==========================================================================
   2. Formulaire de réservation
   ========================================================================== */

.oze-bk {
	font-family: var(--oze-font);
	font-size: 17px;
	line-height: 1.6;
	color: var(--oze-text);
	width: 100%;
	max-width: 1010px;
	margin-inline: auto;
	text-align: left;
	text-transform: none;

	/* même langage graphique que les cartes tarifaires : carte blanche,
	   bordure douce, angles 24 px, ombre légère, contenu aéré */
	background: var(--oze-surface);
	border: 1px solid var(--oze-border);
	border-radius: 22px;
	box-shadow: 0 8px 24px rgba(61, 56, 52, .09);
	padding: 30px 50px 30px;
}
@media (max-width: 900px) { .oze-bk { padding: 30px 26px 28px; } }
@media (max-width: 560px) { .oze-bk { padding: 24px 18px 22px; border-radius: 18px; } }
.oze-bk *, .oze-bk *::before, .oze-bk *::after { box-sizing: border-box; }
.oze-bk button,
.oze-bk input,
.oze-bk textarea,
.oze-bk label,
.oze-bk legend { text-transform: none; letter-spacing: 0; }

.oze-bk__heading, .oze-bk__title, .oze-bk__subtitle {
	font-family: var(--oze-font-title);
	color: var(--oze-heading);
	margin: 0 0 14px;
	line-height: 1.25;
}
.oze-bk__title {
	font-size: clamp(30px, 3.6vw, 39px);
	font-weight: 400;
	margin-bottom: 6px;
}
.oze-bk__subtext { margin: 0 0 26px; font-size: 17px; color: #7C756D; }
.oze-bk__subtitle { font-size: clamp(19px, 3vw, 23px); margin-top: 36px; }
.oze-bk__lead { margin: 0 0 24px; font-size: 18px; color: #3D3834; }
.oze-bk__hint { font-size: 15px; color: var(--oze-muted); margin: 12px 0 0; }
.oze-optional { color: var(--oze-muted); font-weight: 400; }

/* Progression : pastilles numérotées reliées par un trait */
.oze-bk__steps {
	display: flex;
	gap: 0;
	list-style: none;
	margin: 0 0 32px;
	padding: 0;
	counter-reset: oze;
}
.oze-bk__steps li {
	counter-increment: oze;
	position: relative;
	flex: 1 1 0;
	min-width: 0;
	text-align: center;
	font-size: 16px;
	line-height: 1.35;
	color: #3D3834;
	padding: 0 4px;
}
.oze-bk__steps li::before {
	content: counter(oze);
	display: block;
	width: 40px;
	height: 40px;
	margin: 0 auto 8px;
	border: 1.5px solid var(--oze-border);
	border-radius: 50%;
	background: #FAF7F1;
	color: #3D3834;
	font-family: var(--oze-font);
	font-size: 16px;
	font-weight: 600;
	line-height: 37px;
	position: relative;
	z-index: 1;
}
/* trait de liaison vers l'étape précédente */
.oze-bk__steps li + li::after {
	content: "";
	position: absolute;
	top: 19px;
	left: calc(-50% + 30px);
	right: calc(50% + 30px);
	height: 3px;
	border-radius: 2px;
	background: #E7DFD4;
}
.oze-bk__steps li.is-current { color: var(--oze-strong); font-weight: 600; }
.oze-bk__steps li.is-current::before {
	background: var(--oze-strong);
	border-color: var(--oze-strong);
	color: #FFFFFF;
}
.oze-bk__steps li.is-done { color: var(--oze-heading); }
.oze-bk__steps li.is-done::before {
	background: var(--oze-strong);
	border-color: var(--oze-strong);
	color: #FFFFFF;
}
.oze-bk__steps li.is-current + li::after,
.oze-bk__steps li.is-done + li::after { background: var(--oze-strong); }
@media (max-width: 560px) {
	.oze-bk__steps li { font-size: 13px; }
	.oze-bk__steps li::before { width: 36px; height: 36px; line-height: 33px; font-size: 15px; }
	.oze-bk__steps li + li::after { top: 17px; left: calc(-50% + 26px); right: calc(50% + 26px); }
}

/* L'attribut d'état doit toujours primer sur les règles display des composants. */
.oze-bk [hidden] { display: none !important; }

/* Résumé de l'offre choisie */
.oze-bk .oze-summary {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px 16px;
	background: var(--oze-surface);
	border: 1px solid var(--oze-border);
	border-left: 4px solid var(--oze-strong);
	border-radius: 14px;
	padding: 16px 20px;
	margin: 0 0 26px;
}
.oze-bk .oze-summary__text { margin: 0; flex: 1 1 auto; font-weight: 600; color: var(--oze-heading); }

/* Choix compact de l'offre */
.oze-choices { display: grid; grid-template-columns: 1fr; gap: 24px; margin-top: 8px; }
/* Trois offres publiques : le Point OZE ne s'achete que depuis l'espace client.
   Une seule colonne jusqu'a 860 px, puis trois de meme largeur — aucune carte
   ne se retrouve seule sur une deuxieme ligne. */
@media (min-width: 860px) { .oze-choices { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; } }

.oze-bk .oze-choice-card {
	position: relative;
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: 8px;
	min-height: 220px;
	min-width: 0;
	padding: 54px 20px 28px;
	text-align: center;
	font: inherit;
	color: var(--oze-text) !important;
	background-color: var(--oze-surface) !important;
	border: 1.5px solid #E5DED4 !important;
	border-radius: 13px;
	-webkit-appearance: none;
	appearance: none;
	cursor: pointer;
	transition: border-color 180ms ease, background-color 180ms ease, box-shadow 180ms ease;
}
/* témoin de sélection, en haut à droite */
.oze-bk .oze-choice-card::after {
	content: "";
	position: absolute;
	top: 18px;
	right: 18px;
	width: 32px;
	height: 32px;
	border: 1.5px solid #DCD3C6;
	border-radius: 50%;
	background: transparent;
	transition: background-color 180ms ease, border-color 180ms ease;
}
.oze-bk .oze-choice-card[aria-checked="true"]::after {
	content: "✓";
	border-color: var(--oze-check) !important;
	background-color: var(--oze-check) !important;
	color: #FFFFFF !important;
	font-size: 17px;
	font-weight: 700;
	line-height: 30px;
	text-align: center;
}
.oze-bk .oze-choice-card:hover { border-color: var(--oze-accent) !important; }
.oze-bk .oze-choice-card[aria-checked="true"] {
	border-color: var(--oze-check-border) !important;
	background-color: var(--oze-check-bg) !important;
	box-shadow: 0 0 0 1.5px var(--oze-check-border) inset;
}
.oze-bk .oze-choice-card__name {
	font-family: var(--oze-font-title);
	font-weight: 400;
	font-size: clamp(22px, 2vw, 27px);
	line-height: 1.15;
	color: var(--oze-heading);
	white-space: nowrap;
	overflow-wrap: normal;
	word-break: keep-all;
	hyphens: none;
}
.oze-bk .oze-choice-card__meta { display: flex; flex-direction: column; gap: 8px; align-items: center; }
.oze-bk .oze-choice-card__dur { font-size: 18px; font-weight: 500; color: #544D48; }
.oze-bk .oze-choice-card__price {
	font-family: var(--oze-font-title);
	font-size: clamp(29px, 3vw, 35px);
	font-weight: 400;
	line-height: 1.1;
	color: #A83F23;
}
.oze-bk .oze-choice-card__ttc { font-size: .7em; margin-left: .3em; letter-spacing: 0; }

/* Format de séance */
.oze-bk__modes { border: 0; padding: 0; margin: 22px 0 0; }
.oze-bk__legend, .oze-bk__modes > legend { font-weight: 600; color: var(--oze-heading); padding: 0; margin-bottom: 10px; font-size: 16px; }
.oze-choice {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	min-height: var(--oze-tap);
	background: var(--oze-surface);
	border: 2px solid var(--oze-border);
	border-radius: var(--oze-radius-pill);
	padding: 10px 20px;
	margin: 0 10px 10px 0;
	cursor: pointer;
	font-size: 16px;
}
.oze-choice:has(input:checked) { border-color: var(--oze-strong); color: var(--oze-heading); }
.oze-choice input { accent-color: var(--oze-strong); width: 20px; height: 20px; }

/* Navigation par semaine */
.oze-bk__weeknav { display: flex; align-items: center; gap: 12px; margin: 20px 0 22px; }
.oze-bk__weeklabel { flex: 1; text-align: center; font-weight: 600; color: var(--oze-heading); font-size: 16px; }
.oze-nav {
	width: var(--oze-tap); height: var(--oze-tap);
	border-radius: 50%;
	border: 2px solid var(--oze-border);
	background: var(--oze-surface);
	color: var(--oze-heading);
	font-size: 22px;
	line-height: 1;
	cursor: pointer;
}
.oze-nav:hover:not(:disabled) { border-color: var(--oze-accent); }
.oze-nav:disabled { background: var(--oze-surface-alt); color: var(--oze-muted); border-style: dashed; cursor: not-allowed; }

/* Créneaux */
.oze-bk__slots { min-height: 130px; padding: 4px 0; }
.oze-day { margin-bottom: 26px; }
.oze-day__label {
	font-weight: 600;
	color: var(--oze-heading);
	margin: 0 0 10px;
	text-transform: capitalize;
	font-size: 16px;
}
.oze-day__slots { display: flex; flex-wrap: wrap; gap: 10px; }
.oze-slot {
	min-width: 92px;
	min-height: var(--oze-tap);
	padding: 10px 18px;
	border-radius: var(--oze-radius-pill);
	border: 2px solid var(--oze-border);
	background: var(--oze-surface);
	color: var(--oze-heading);
	font: inherit;
	font-size: 16px;
	font-variant-numeric: tabular-nums;
	cursor: pointer;
}
.oze-slot:hover { border-color: var(--oze-accent); }
.oze-slot[aria-pressed="true"] { background: var(--oze-strong); border-color: var(--oze-strong); color: #FFFFFF; font-weight: 600; }
.oze-slot[disabled] { background: var(--oze-surface-alt); color: var(--oze-muted); border-style: dashed; cursor: not-allowed; }

/* Champs */
.oze-bk__grid { display: grid; gap: 18px; grid-template-columns: 1fr; margin-top: 22px; }
@media (min-width: 620px) { .oze-bk__grid { grid-template-columns: 1fr 1fr; } .oze-field--full { grid-column: 1 / -1; } }
.oze-field { margin: 0; }
.oze-field label { display: block; font-size: 15px; font-weight: 600; color: var(--oze-heading); margin-bottom: 6px; }
.oze-field input, .oze-field textarea {
	width: 100%;
	padding: 12px 14px;
	min-height: var(--oze-tap);
	font-size: 16px;
	border: 2px solid var(--oze-border);
	border-radius: 12px;
	background: var(--oze-surface);
	color: var(--oze-text);
	font-family: inherit;
}
.oze-field input:focus, .oze-field textarea:focus { border-color: var(--oze-accent); }
.oze-field.is-invalid input, .oze-field.is-invalid textarea { border-color: var(--oze-error); }
.oze-field__error, .oze-consent .oze-field__error { display: block; color: var(--oze-error); font-size: 15px; margin-top: 6px; font-weight: 600; }

.oze-consent { margin: 22px 0 0; font-size: 16px; }
.oze-consent label { display: flex; gap: 12px; align-items: flex-start; cursor: pointer; }
.oze-consent input { margin-top: 3px; width: 22px; height: 22px; flex: 0 0 auto; accent-color: var(--oze-strong); }
.oze-consent a { color: var(--oze-accent); text-underline-offset: 2px; }
.oze-consent.is-invalid > label { color: var(--oze-error); }

.oze-bk__recap {
	background: var(--oze-surface-alt);
	border: 1px solid var(--oze-border);
	border-radius: 12px;
	padding: 14px 18px;
	margin: 0 0 8px;
	font-size: 16px;
	font-weight: 600;
	color: var(--oze-heading);
}

/* Boutons */
.oze-bk__actions { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 28px; }
.oze-bk .oze-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	min-height: 58px;
	padding: 14px 36px;
	border: 2px solid var(--oze-strong) !important;
	border-radius: 10px;
	background-color: var(--oze-strong) !important;
	color: #FFFFFF !important;
	font: inherit;
	font-size: 18px;
	font-weight: 600;
	text-decoration: none;
	cursor: pointer;
}
.oze-bk .oze-btn:hover:not(:disabled), .oze-bk .oze-btn:focus-visible:not(:disabled) {
	background-color: var(--oze-strong-hover) !important;
	border-color: var(--oze-strong-hover) !important;
	color: #FFFFFF !important;
}
.oze-bk .oze-btn:disabled {
	background-color: #EEEAE4 !important;
	border-color: #BDB4A9 !important;
	border-style: solid;
	color: #655E58 !important;
	opacity: 1 !important;
	cursor: not-allowed;
}
.oze-bk .oze-btn--ghost { background: transparent; color: var(--oze-heading); border-color: var(--oze-muted); }
.oze-bk .oze-btn--ghost:hover:not(:disabled), .oze-bk .oze-btn--ghost:focus-visible:not(:disabled) {
	background: var(--oze-surface-alt);
	color: var(--oze-heading);
	border-color: var(--oze-heading);
}
.oze-bk .oze-btn--sm { min-height: var(--oze-tap); padding: 10px 22px; }
/* flèche discrète sur les actions qui font avancer le parcours */
.oze-bk .oze-btn[data-next]::after,
.oze-bk .oze-btn[data-submit]::after { content: "→"; font-size: 18px; line-height: 1; margin-left: 6px; }
.oze-link--strong::after { content: " →"; }
.oze-bk .oze-btn.is-busy { pointer-events: none; }
.oze-link {
	background: none; border: 0; padding: 4px 0;
	color: var(--oze-accent);
	font: inherit;
	font-size: 16px;
	text-decoration: underline;
	text-underline-offset: 3px;
	cursor: pointer;
	min-height: 32px;
}
.oze-link:hover { color: var(--oze-strong); }
.oze-link--strong { font-weight: 600; }
.oze-bk :focus-visible { outline: 3px solid var(--oze-accent); outline-offset: 2px; border-radius: 4px; }

/* Messages */
.oze-bk__alert {
	border-radius: 12px;
	padding: 14px 18px;
	margin: 0 0 22px;
	font-size: 16px;
	border: 2px solid var(--oze-error);
	background: #FBEFEC;
	color: #8E2C1E;
}
.oze-bk__alert.is-success { border-color: var(--oze-success); background: #EDF4F1; color: #2F5A4C; }
.oze-bk__loading { color: var(--oze-muted); font-size: 16px; }
.oze-empty { color: var(--oze-muted); font-size: 16px; }

/* Information propre a une offre, dans le recapitulatif avant paiement.
   Volontairement sobre : c'est une information, pas une alerte. */
.oze-bk .oze-bk__offer-note {
	margin: 0 0 18px;
	padding: 14px 16px;
	background: var(--oze-surface-alt);
	border: 1px solid var(--oze-border);
	border-left: 3px solid var(--oze-accent);
	border-radius: 12px;
}
.oze-bk .oze-bk__offer-note p {
	margin: 0;
	font-size: 15px;
	line-height: 1.55;
	color: var(--oze-text);
}
.oze-bk .oze-bk__offer-note p + p { margin-top: 8px; }
.oze-bk .oze-bk__offer-note a {
	color: var(--oze-accent);
	font-weight: 600;
	text-decoration: underline;
	text-underline-offset: 3px;
}
.oze-bk .oze-bk__offer-note a:hover,
.oze-bk .oze-bk__offer-note a:focus-visible { color: var(--oze-success); }
.oze-bk .oze-bk__offer-note[hidden] { display: none; }

@media (max-width: 560px) {
	.oze-bk .oze-bk__offer-note { padding: 12px 14px; }
	.oze-bk .oze-bk__offer-note p { font-size: 14.5px; }
}

/* Etat vide propre au Point OZE : la regle J/J+1 est expliquee, pas subie. */
.oze-bk .oze-empty--point {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 10px;
	max-width: 62ch;
	padding: 20px 22px;
	background: var(--oze-surface);
	border: 1px solid var(--oze-border);
	border-radius: 16px;
}
.oze-bk .oze-empty--point .oze-empty__title {
	margin: 0;
	font-weight: 600;
	font-size: 17px;
	color: var(--oze-heading);
}
.oze-bk .oze-empty--point .oze-empty__text { margin: 0; color: var(--oze-muted); font-size: 15px; line-height: 1.6; }
.oze-bk .oze-empty--point .oze-empty__cta { margin-top: 4px; }

/* Réassurance et action secondaire */
.oze-reassure {
	display: flex;
	flex-wrap: wrap;
	gap: 8px 14px;
	margin: 28px 0 0;
	padding: 0;
	font-size: 15px;
	color: var(--oze-muted);
}
.oze-reassure__item {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	background: var(--oze-surface-alt);
	border: 1px solid var(--oze-border);
	border-radius: var(--oze-radius-pill);
	padding: 6px 14px;
}
.oze-bk__secure { margin: 16px 0 0; font-size: 14.5px; color: var(--oze-muted); }

.oze-bk__foot {
	margin: 24px 0 0;
	padding-top: 22px;
	border-top: 1px solid #E5DED4;
	font-size: 17px;
	color: #3D3834;
}
.oze-bk__foot .oze-link--strong { color: var(--oze-strong); margin-left: 6px; }
.oze-bk__foot .oze-link--strong:hover { color: var(--oze-strong-hover); }

@media (max-width: 719px) {
	.oze-bk__title { font-size: 30px; }
	.oze-choice-card { min-height: 150px; padding: 44px 18px 22px; }
	.oze-bk__actions .oze-btn { width: 100%; }
}

@media (max-width: 560px) {
	.oze-bk__lead { font-size: 16px; margin-bottom: 22px; }
	.oze-bk__steps { margin-inline: -8px; margin-bottom: 30px; }
	.oze-bk__steps li { font-size: 12px; }
	.oze-bk__steps li:last-child { font-size: 11px; }
	.oze-bk__title { font-size: 27px; }
	.oze-bk__subtext { font-size: 16px; }
	.oze-bk__foot .oze-link--strong { display: block; width: fit-content; margin: 6px 0 0; }
}

/* Consentements */
.oze-consents { background: var(--oze-surface-alt); border: 1px solid var(--oze-border); border-radius: 16px; padding: 24px 26px; margin: 30px 0 0; }
@media (max-width: 560px) { .oze-consents { padding: 18px 16px; } }
.oze-consents .oze-bk__legend { padding: 0 6px; margin: 0; }
.oze-consent + .oze-consent { margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--oze-border); }
.oze-consent[hidden] { display: none; }
.oze-required, .oze-optional-tag {
	display: inline-block;
	font-size: 12px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .04em;
	border-radius: 40px;
	padding: 2px 10px;
	margin-left: 6px;
	vertical-align: middle;
	white-space: nowrap;
}
.oze-required { background: #FBEFEC; color: #8E2C1E; }
.oze-optional-tag { background: var(--oze-surface-alt); color: var(--oze-muted); text-transform: none; font-weight: 600; letter-spacing: 0; }
.oze-notice {
	display: block;
	margin-top: 8px;
	padding: 10px 12px;
	background: var(--oze-surface-alt);
	border-left: 3px solid var(--oze-accent);
	border-radius: 8px;
	font-size: 14px;
	font-weight: 400;
	color: var(--oze-text);
}

/* ==========================================================================
   3. Espace client
   ========================================================================== */

.oze-credits {
	background: var(--oze-surface);
	border: 1px solid var(--oze-border);
	border-radius: var(--oze-radius);
	padding: 20px 22px;
	margin: 22px 0;
}
.oze-credits__grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 12px;
	margin-bottom: 16px;
}
.oze-credits__cell { text-align: center; }
.oze-credits__n {
	display: block;
	font-family: var(--oze-font-title);
	font-size: 30px;
	font-weight: 700;
	line-height: 1.1;
	color: var(--oze-heading);
}
.oze-credits__cell--left .oze-credits__n { color: var(--oze-strong); }
.oze-credits__k { display: block; font-size: 14px; line-height: 1.35; color: var(--oze-muted); margin-top: 4px; }

.oze-list { list-style: none; margin: 14px 0 0; padding: 0; display: grid; gap: 14px; }
.oze-item {
	background: var(--oze-surface);
	border: 1px solid var(--oze-border);
	border-radius: var(--oze-radius);
	padding: 18px 20px;
}
.oze-item__when { font-weight: 700; color: var(--oze-heading); text-transform: capitalize; font-size: 17px; margin: 0; }
.oze-item__meta { font-size: 15px; color: var(--oze-muted); margin: 6px 0 0; }
.oze-item__actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 14px; }
.oze-tag {
	display: inline-block;
	font-size: 13px;
	font-weight: 700;
	padding: 3px 12px;
	border-radius: var(--oze-radius-pill);
	margin-left: 8px;
	vertical-align: middle;
	text-transform: none;
}
.oze-tag--confirmed { background: #EDF4F1; color: #2F5A4C; }
.oze-tag--cancelled { background: #FBEFEC; color: #8E2C1E; }
.oze-tag--past { background: var(--oze-surface-alt); color: var(--oze-muted); }
.oze-recap { margin: 18px 0; }
.oze-recap dt { font-size: 14px; color: var(--oze-muted); }
.oze-recap dd { margin: 0 0 14px; color: var(--oze-heading); font-weight: 600; font-size: 16px; }
.oze-extra { margin-top: 34px; }
.oze-field--inline { max-width: 380px; }

/* Espace client : page d'entrée (arrivée sans lien d'accès) */
.oze-space-entry > .oze-bk__title { text-align: center; margin-bottom: 14px; }
.oze-space-entry__intro {
	max-width: 620px;
	margin: 0 auto 36px;
	text-align: center;
	font-size: 18px;
	line-height: 1.6;
	color: var(--oze-text);
}
.oze-space-entry__paths {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 24px;
	align-items: stretch;
}
.oze-space-entry__card {
	display: flex;
	flex-direction: column;
	padding: 32px 28px;
	background: var(--oze-surface);
	border: 1px solid var(--oze-border);
	border-radius: var(--oze-radius);
	box-shadow: 0 10px 30px rgba(61, 56, 52, .06);
}
.oze-space-entry__card > p { margin: 0 0 20px; }
.oze-space-entry__h {
	margin: 0 0 12px;
	font-family: var(--oze-font-title);
	font-size: clamp(22px, 2.4vw, 25px);
	font-weight: 500;
	line-height: 1.3;
	color: var(--oze-heading);
}
/* Le bouton de chaque carte s'aligne en bas, même si les textes diffèrent. */
.oze-space-entry__card form,
.oze-space-entry__card > p:last-child { margin-top: auto; margin-bottom: 0; }
.oze-space-entry__card form .oze-field { margin-bottom: 16px; }
.oze-space-entry__card form p:last-child { margin: 0; }
/* Boutons au format des CTA du site : pastille, Work Sans 16 px semi-gras. */
.oze-space-entry .oze-btn {
	width: 100%;
	min-height: 54px;
	padding: 14px 22px;
	border-radius: var(--oze-radius-pill);
	font-size: 16px;
	line-height: 1.25;
	text-align: center;
}
@media (max-width: 820px) {
	.oze-space-entry__paths { grid-template-columns: 1fr; gap: 20px; }
}
@media (max-width: 480px) {
	.oze-space-entry__intro { font-size: 17px; margin-bottom: 28px; }
	.oze-space-entry__card { padding: 24px 20px; }
}

/* Pages techniques */
.oze-bk-page { padding: 56px 20px 72px; background: var(--oze-bg, #F2F0E4); }
.oze-bk-page__inner { max-width: 800px; margin-inline: auto; }
@media (max-width: 480px) {
	.oze-bk-page { padding: 36px 16px 56px; }
}

@media (max-width: 400px) {
	.oze-credits__grid { grid-template-columns: 1fr; }
	.oze-credits__cell { text-align: left; display: flex; align-items: baseline; gap: 10px; }
	.oze-credits__k { margin-top: 0; }
}

@media (prefers-reduced-motion: reduce) {
	.oze-bk *, .oze-pricing * { transition: none !important; scroll-behavior: auto !important; }
}

/* Neutralisation des décorations injectées par le thème CMSMasters */
.oze-bk button::before {
	content: none !important;
	display: none !important;
	width: 0 !important;
	height: 0 !important;
	background: none !important;
	opacity: 0 !important;
}

/* Le pseudo-élément after est réservé à l'indicateur des cartes */
.oze-bk .oze-choice-card::after {
	content: none !important;
	display: none !important;
	position: absolute !important;
	top: 18px !important;
	right: 18px !important;
	bottom: auto !important;
	left: auto !important;
	width: 32px !important;
	height: 32px !important;
	margin: 0 !important;
	transform: none !important;
	z-index: 2 !important;
}

.oze-bk .oze-choice-card[aria-checked="true"] {
	background: #E9F1EB !important;
	border-color: #7FA48F !important;
	box-shadow: 0 0 0 1px #7FA48F inset !important;
}

.oze-bk .oze-choice-card[aria-checked="true"]::after {
	content: "✓" !important;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	box-sizing: border-box !important;
	border: 1px solid #6E9B87 !important;
	border-radius: 50% !important;
	background: #6E9B87 !important;
	color: #FFFFFF !important;
	font-family: Arial, sans-serif !important;
	font-size: 18px !important;
	font-weight: 700 !important;
	line-height: 1 !important;
	opacity: 1 !important;
}

.oze-bk .oze-choice-card__name {
	white-space: normal !important;
	overflow-wrap: normal !important;
	word-break: normal !important;
	hyphens: none !important;
}

@media (min-width: 720px) and (max-width: 900px) {
	.oze-bk .oze-choice-card__name { font-size: 19px !important; }
}

.oze-bk .oze-link {
	min-height: 0 !important;
	background: none !important;
	border: 0 !important;
	border-radius: 0 !important;
	box-shadow: none !important;
	color: var(--oze-strong) !important;
	text-decoration: underline !important;
}

/* Respect absolu des éléments masqués par l'application */
.oze-bk [hidden] {
	display: none !important;
}


/* ==========================================================================
   Espace client — Point OZE et consentements
   ========================================================================== */

/*
 * Bloc Point OZE. Meme traitement visuel que « Poursuivre l'accompagnement » :
 * c'est une proposition offerte au client, pas une alerte.
 */
.oze-bk .oze-point {
	background: var(--oze-surface-alt, #F7F6F3);
	border: 1px solid var(--oze-border);
	border-left: 3px solid var(--oze-strong);
	border-radius: 14px;
	padding: 22px 24px;
	margin: 28px 0 0;
}
.oze-bk .oze-point .oze-bk__subtitle { margin-top: 0; }
.oze-bk .oze-point p { margin: 0 0 10px; font-size: 15px; line-height: 1.6; }
.oze-bk .oze-point__window { font-weight: 600; color: var(--oze-heading); }
.oze-bk .oze-point__scope,
.oze-bk .oze-point__terms { color: var(--oze-muted, #6B635C); }
.oze-bk .oze-point [data-book-point] { margin-top: 6px; }

/* Consentements du panneau de reservation : lisibles, jamais pre-coches. */
.oze-bk .oze-bk__consents {
	margin: 18px 0 4px;
	padding: 16px 18px;
	background: var(--oze-surface, #fff);
	border: 1px solid var(--oze-border);
	border-radius: 12px;
}
.oze-bk .oze-bk__consents .oze-consent { margin: 0 0 12px; }
.oze-bk .oze-bk__consents .oze-consent:last-child { margin-bottom: 0; }

@media (max-width: 560px) {
	.oze-bk .oze-point { padding: 18px 16px; }
	.oze-bk .oze-point p { font-size: 14.5px; }
	.oze-bk .oze-bk__consents { padding: 14px 14px; }
}

/* Explication pour qui n'est pas encore eligible : discrete, sans relance. */
.oze-bk .oze-point__note {
	margin: 24px 0 0;
	padding: 14px 18px;
	background: var(--oze-surface-alt, #F7F6F3);
	border-radius: 12px;
	font-size: 14.5px;
	line-height: 1.6;
	color: var(--oze-muted, #6B635C);
}

/* Mes documents : une ligne par piece, telechargement explicite. */
.oze-bk .oze-docs { margin-top: 30px; }
.oze-bk .oze-list--docs { list-style: none; margin: 0; padding: 0; }
.oze-bk .oze-list--docs .oze-item {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 6px 16px;
	padding: 16px 18px;
	margin-bottom: 12px;
	background: var(--oze-surface, #fff);
	border: 1px solid var(--oze-border);
	border-radius: 12px;
}
.oze-bk .oze-list--docs .oze-item__main {
	flex: 1 1 260px;
	margin: 0;
	font-weight: 600;
	color: var(--oze-heading);
}
.oze-bk .oze-list--docs .oze-item__sub {
	flex: 1 1 100%;
	margin: 0;
	font-size: 14px;
	color: var(--oze-muted, #6B635C);
	order: 3;
}
.oze-bk .oze-list--docs .oze-btn { flex: 0 0 auto; }

@media (max-width: 560px) {
	.oze-bk .oze-list--docs .oze-item { padding: 14px 14px; }
	.oze-bk .oze-list--docs .oze-btn { width: 100%; text-align: center; }
}

/* Echeance des seances restantes : information, pas avertissement. */
.oze-bk .oze-credits__expiry {
	margin: 0 0 14px;
	font-size: 14.5px;
	line-height: 1.55;
	color: var(--oze-muted, #6B635C);
}

/* Espace client : séance décomptée (annulation hors délai) */
.oze-bk .oze-credits__forfeit { font-size: 14px; color: var(--oze-muted); cursor: help; }
