/**
 * Tunnel de réservation — styles front.
 *
 * Robustesse : reset des contrôles pour bloquer les styles du thème/Elementor
 * (bordures vertes de focus, couleurs de liens, paddings…). Les titres et
 * libellés héritent de la couleur de la section (lisibles sur fond clair
 * comme foncé) ; les contrôles (cartes, champs, calendrier) ont une surface
 * claire explicite avec un texte foncé. Couleur unique : --partage-accent.
 */
.partage-tunnel {
	--partage-accent: #7b2cbf;
	--partage-accent-dark: #5a189a;
	--partage-accent-soft: rgba( 123, 44, 191, .1 );
	--partage-surface: #ffffff;
	--partage-ink: #23202a;
	--partage-muted: #6b6675;
	--partage-line: rgba( 20, 12, 30, .14 );
	--partage-radius: 12px;

	font-family: var( --e-global-typography-primary-font-family, inherit );
	max-width: 820px;
	margin: 0 auto;
	/* Panneau blanc autonome : le tunnel se pose sur n'importe quel fond. */
	background: #ffffff;
	color: var( --partage-ink );
	border: 1px solid rgba( 20, 12, 30, .08 );
	border-radius: 18px;
	padding: 28px;
	box-shadow: 0 10px 30px rgba( 20, 12, 30, .08 );
}
.partage-tunnel *, .partage-tunnel *::before, .partage-tunnel *::after { box-sizing: border-box; }

/* ---- RESET anti-thème --------------------------------------------- */
.partage-tunnel button {
	font: inherit;
	margin: 0;
	border: none;
	background: none;
	box-shadow: none;
	text-transform: none;
	letter-spacing: normal;
	line-height: 1.2;
	cursor: pointer;
	-webkit-appearance: none;
	appearance: none;
}
.partage-tunnel input,
.partage-tunnel textarea,
.partage-tunnel select {
	font: inherit;
	color: var( --partage-ink );
	background: var( --partage-surface );
	border: 1px solid var( --partage-line );
	border-radius: 8px;
}
.partage-tunnel :is( button, input, textarea, select ):focus,
.partage-tunnel :is( button, input, textarea, select ):focus-visible {
	outline: 2px solid var( --partage-accent );
	outline-offset: 2px;
	border-color: var( --partage-accent ) !important;
	box-shadow: none !important;
}

/* ---- Barre de progression ----------------------------------------- */
.partage-tunnel__progress {
	display: flex;
	list-style: none;
	margin: 0 0 26px;
	padding: 0;
}
.partage-tunnel__step {
	flex: 1;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 8px;
	position: relative;
	font-size: .8rem;
	text-align: center;
	color: var( --partage-ink );
	opacity: .5;
	margin: 0;
	padding: 0;
	list-style: none;
}
.partage-tunnel__step::marker { content: ""; }
/* Trait de liaison : centré sur le rond (34px -> centre 17px) et arrêté
   avant les ronds pour ne jamais chevaucher les numéros. */
.partage-tunnel__step::before {
	content: "";
	position: absolute;
	z-index: 0;
	top: 16px;
	height: 2px;
	left: -50%;
	right: 50%;
	margin-left: 22px;
	margin-right: 22px;
	background: #d7d3dd;
}
.partage-tunnel__step:first-child::before { display: none; }
.partage-tunnel__step.is-current::before,
.partage-tunnel__step.is-done::before { background: var( --partage-accent ); }
.partage-tunnel__step-num {
	position: relative;
	z-index: 1;
	width: 34px;
	height: 34px;
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	background: #d9d5df !important;
	color: #fff !important;
	font-weight: 700;
	line-height: 1;
}
.partage-tunnel__step.is-current { opacity: 1; }
.partage-tunnel__step.is-done { opacity: 1; }
.partage-tunnel__step.is-current .partage-tunnel__step-num { background: var( --partage-accent ) !important; color: #fff !important; }
.partage-tunnel__step.is-done .partage-tunnel__step-num { background: var( --partage-accent-dark ) !important; color: #fff !important; }
.partage-tunnel__step-label { line-height: 1.2; }

/* ---- Panneaux ----------------------------------------------------- */
.partage-tunnel__panel { display: none; }
.partage-tunnel__panel.is-active { display: block; animation: partage-fade .25s ease; }
@keyframes partage-fade { from { opacity: 0; transform: translateY( 6px ); } to { opacity: 1; transform: none; } }
.partage-tunnel__title { color: inherit; margin: 0 0 16px; }
.partage-tunnel__live { color: inherit; }
.partage-tunnel__live:not(:empty) {
	padding: 10px 14px;
	background: var( --partage-accent-soft );
	border-radius: 8px;
	margin-bottom: 14px;
	color: inherit;
}

/* ---- Champs ------------------------------------------------------- */
.partage-field { margin-bottom: 18px; }
.partage-label { display: block; font-weight: 600; margin-bottom: 6px; color: inherit; }
.partage-tunnel input[type="text"],
.partage-tunnel input[type="email"],
.partage-tunnel input[type="tel"],
.partage-tunnel input[type="number"],
.partage-tunnel textarea {
	width: 100%;
	padding: 10px 12px;
}
.partage-tunnel input.has-error, .partage-tunnel .has-error input { border-color: #dc2626 !important; }
.partage-field__error { color: #ef4444; font-size: .85rem; margin: 4px 0 0; font-weight: 600; }
.partage-field__error:empty { display: none; }
.partage-field__hint { color: inherit; opacity: .7; font-size: .85rem; margin: 4px 0 0; }
.partage-grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 0 16px; }

/* ---- Stepper participants ----------------------------------------- */
.partage-stepper { display: inline-flex; align-items: stretch; border: 1px solid var( --partage-line ); border-radius: 10px; overflow: hidden; background: var( --partage-surface ); }
.partage-stepper__btn {
	width: 48px;
	height: 46px;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 0;
	font-size: 22px;
	line-height: 1;
	background: rgba( 123, 44, 191, .06 ) !important;
	color: var( --partage-accent-dark ) !important;
	/* Carrés à coins arrondis vers l'extérieur (pas de rond hérité du thème). */
	border-radius: 0 !important;
}
.partage-stepper__btn[data-act="minus"] { border-radius: 10px 0 0 10px !important; }
.partage-stepper__btn[data-act="plus"] { border-radius: 0 10px 10px 0 !important; }
.partage-stepper__btn:hover { background: var( --partage-accent-soft ) !important; }
.partage-stepper .partage-participants {
	width: 76px;
	text-align: center;
	border: none;
	border-left: 1px solid var( --partage-line );
	border-right: 1px solid var( --partage-line );
	border-radius: 0;
	-moz-appearance: textfield;
}

/* ---- Cartes formules ---------------------------------------------- */
.partage-formules { display: grid; grid-template-columns: repeat( auto-fit, minmax( 200px, 1fr ) ); gap: 12px; }
.partage-formule-card {
	display: flex;
	flex-direction: column;
	gap: 6px;
	padding: 16px;
	border: 2px solid var( --partage-line ) !important;
	border-radius: var( --partage-radius );
	background: var( --partage-surface ) !important;
	text-align: left;
	color: var( --partage-ink ) !important;
	transition: border-color .15s, box-shadow .15s;
}
.partage-formule-card:hover { border-color: var( --partage-accent ) !important; }
.partage-formule-card.is-selected {
	border-color: var( --partage-accent ) !important;
	box-shadow: 0 0 0 3px var( --partage-accent-soft ) !important;
}
.partage-formule-card__libelle { font-weight: 700; color: var( --partage-ink ); }
.partage-formule-card__epreuves { color: var( --partage-muted ); font-size: .9rem; }
.partage-formule-card__prix { font-size: 1.3rem; font-weight: 800; color: var( --partage-accent ); }
.partage-formule-card__prix small { font-size: .6em; font-weight: 400; color: var( --partage-muted ); }

/* ---- Estimation --------------------------------------------------- */
.partage-estimation {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 6px 12px;
	padding: 14px 16px;
	background: var( --partage-accent-soft );
	border-radius: var( --partage-radius );
	margin: 8px 0 20px;
	color: inherit;
}
.partage-estimation__label { text-transform: uppercase; font-size: .78rem; letter-spacing: .05em; font-weight: 700; }
.partage-estimation__prix { font-size: 1.5rem; font-weight: 800; color: var( --partage-accent-dark ); }
.partage-estimation__detail { font-size: .85rem; color: var( --partage-muted ); width: 100%; }
.partage-estimation__note { opacity: .75; font-size: .82rem; width: 100%; }

/* ---- Épreuves (étape 2) ------------------------------------------- */
.partage-epreuves-compteur {
	font-weight: 600;
	margin-bottom: 12px;
	padding: 8px 14px;
	background: var( --partage-accent-soft );
	border-radius: 8px;
	display: inline-block;
	color: inherit;
}
.partage-choix-epreuves { display: grid; grid-template-columns: repeat( 2, minmax( 0, 1fr ) ); gap: 8px; align-items: start; }
.partage-choix-epreuve {
	border: 1px solid var( --partage-line );
	border-radius: 10px;
	padding: 10px 12px;
	background: var( --partage-surface );
	color: var( --partage-ink );
}
.partage-choix-epreuve.is-disabled { opacity: .5; }
.partage-choix-epreuve.is-locked { opacity: .55; }
.partage-choix-epreuve__entete { display: flex; align-items: center; gap: 10px; }
.partage-choix-epreuve__main { display: flex; align-items: center; gap: 10px; cursor: pointer; flex: 1; min-width: 0; }
.partage-choix-epreuve__main input { width: 18px; height: 18px; accent-color: var( --partage-accent ); flex: none; }
.partage-choix-epreuve__nom { font-weight: 600; color: var( --partage-ink ); }
.partage-choix-epreuve__toggle {
	flex: none;
	width: 30px;
	height: 30px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 0;
	border-radius: 50%;
	border: 1px solid var( --partage-line ) !important;
	background: #fff !important;
	color: var( --partage-accent-dark ) !important;
	transition: background .15s, color .15s;
}
.partage-choix-epreuve__toggle:hover,
.partage-choix-epreuve__toggle[aria-expanded="true"] {
	background: var( --partage-accent ) !important;
	color: #fff !important;
	border-color: var( --partage-accent ) !important;
}
.partage-choix-epreuve__toggle { overflow: hidden; font-size: 0; }
.partage-choix-epreuve__chevron { line-height: 1; font-size: 15px; transition: transform .15s; }
/* Marges maîtrisées à l'étape 2. */
.partage-tunnel__panel[data-panel="2"] > p { margin: 0 0 12px; }
.partage-choix-epreuve__toggle[aria-expanded="true"] .partage-choix-epreuve__chevron { transform: rotate( 180deg ); }
.partage-choix-epreuve__desc { margin-top: 8px; padding-top: 8px; border-top: 1px solid var( --partage-line ); line-height: 1.45; color: var( --partage-muted ); font-size: .9rem; }

.partage-libre-actif {
	padding: 12px 14px;
	border: 1px dashed var( --partage-accent );
	border-radius: 10px;
	background: var( --partage-accent-soft );
	margin-bottom: 12px;
	color: inherit;
}

/* Interrupteur « laisser le gérant choisir » */
.partage-switch {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	margin: 0 0 14px;
	padding: 0;
	background: none !important;
	border: none !important;
	cursor: pointer;
	color: var( --partage-ink );
}
.partage-switch__track {
	position: relative;
	flex: none;
	width: 46px;
	height: 26px;
	border-radius: 999px;
	background: #d5d1dc;
	transition: background .2s ease;
}
.partage-switch__thumb {
	position: absolute;
	top: 3px;
	left: 3px;
	width: 20px;
	height: 20px;
	border-radius: 50%;
	background: #fff;
	box-shadow: 0 1px 3px rgba( 0, 0, 0, .3 );
	transition: transform .2s ease;
}
.partage-switch.is-on .partage-switch__track { background: var( --partage-accent ); }
.partage-switch.is-on .partage-switch__thumb { transform: translateX( 20px ); }
.partage-switch__label { font-weight: 600; }
.partage-switch:focus-visible { outline: 2px solid var( --partage-accent ); outline-offset: 3px; border-radius: 6px; }

/* ---- Badges ------------------------------------------------------- */
.partage-badge {
	flex: none;
	font-size: .68rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .03em;
	padding: 3px 9px;
	border-radius: 20px;
	white-space: nowrap;
	background: rgba( 123, 44, 191, .1 );
	color: var( --partage-accent-dark );
	border: 1px solid rgba( 123, 44, 191, .22 );
}
.partage-badge--exterieur { background: rgba( 123, 44, 191, .04 ); }
.partage-badge--interieur_exterieur { background: rgba( 123, 44, 191, .14 ); }

/* ---- Calendrier --------------------------------------------------- */
.partage-cal { border: 1px solid var( --partage-line ); border-radius: var( --partage-radius ); padding: 14px; background: var( --partage-surface ); color: var( --partage-ink ); }
.partage-cal__head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }
.partage-cal__title { font-weight: 700; text-transform: capitalize; color: var( --partage-ink ); text-align: center; flex: 1 1 auto; min-width: 0; padding: 0 8px; }
.partage-cal__nav {
	width: 38px !important;
	height: 38px !important;
	min-width: 38px !important;
	flex: 0 0 auto;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 0 !important;
	margin: 0 !important;
	border: 1px solid var( --partage-line ) !important;
	background: var( --partage-surface ) !important;
	border-radius: 50%;
	font-size: 20px;
	line-height: 1;
	color: var( --partage-accent-dark ) !important;
}
.partage-cal__nav:hover { background: var( --partage-accent-soft ) !important; }
.partage-cal__grid {
	display: grid;
	/* minmax( 0, 1fr ) : sans ça, le padding que le thème pose sur les
	   boutons impose une largeur mini et fait déborder la grille sur mobile. */
	grid-template-columns: repeat( 7, minmax( 0, 1fr ) );
	gap: 5px;
	width: 100%;
}
.partage-cal__dow {
	text-align: center;
	font-size: .72rem;
	color: var( --partage-muted );
	padding: 4px 0;
	font-weight: 700;
	min-width: 0;
	overflow: hidden;
}
/* Cellule de jour : reset complet, le thème ne doit rien pouvoir imposer
   (padding, rayon, largeur mini ni couleur de texte). */
.partage-cal__cell {
	aspect-ratio: 1 / 1;
	min-height: 0;
	width: 100% !important;
	min-width: 0 !important;
	max-width: none !important;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 0 !important;
	margin: 0 !important;
	border: 1px solid #cfc9d8 !important;
	border-radius: 8px !important;
	background: #f0eef4 !important;
	color: #4a4553 !important;
	font-weight: 600;
	font-size: clamp( .72rem, 2.6vw, .95rem );
	line-height: 1 !important;
	letter-spacing: normal !important;
	text-transform: none !important;
	text-decoration: none !important;
	box-shadow: none !important;
	opacity: 1 !important;
	overflow: hidden;
}
.partage-cal__cell.is-empty { background: transparent !important; border-color: transparent !important; }
/* Jours réservables : remplissage violet plein, impossible à rater. */
.partage-cal__cell--available {
	background: #c9a7ef !important;
	border: 2px solid var( --partage-accent ) !important;
	color: #3a1466 !important;
	font-weight: 800;
	cursor: pointer;
}
.partage-cal__cell--partial {
	background: #e5d3f7 !important;
	border: 2px dashed var( --partage-accent ) !important;
	color: #3a1466 !important;
	font-weight: 800;
	cursor: pointer;
}
/* Jours non réservables : grisés mais le numéro reste toujours lisible. */
.partage-cal__cell--none, .partage-cal__cell--closed {
	background: #e6e3ea !important;
	border-color: #d0ccd8 !important;
	color: #6f6a79 !important;
	cursor: not-allowed;
	text-decoration: line-through !important;
}
.partage-cal__cell--out {
	background: #f5f4f7 !important;
	border-color: #e4e1e9 !important;
	color: #8b8695 !important;
	cursor: not-allowed;
}
.partage-cal__cell:not(:disabled):hover { background: var( --partage-accent ) !important; border-color: var( --partage-accent ) !important; color: #fff !important; }
.partage-cal__cell.is-selected { background: var( --partage-accent ) !important; border-color: var( --partage-accent-dark ) !important; color: #fff !important; box-shadow: 0 0 0 2px rgba( 123, 44, 191, .3 ) !important; }

/* Message quand aucune date n'est disponible sur le mois affiché. */
.partage-cal__msg { margin-top: 12px; padding: 10px 12px; background: var( --partage-accent-soft ); border-radius: 8px; color: var( --partage-ink ); font-size: .9rem; }
.partage-cal__loading { text-align: center; padding: 12px; color: var( --partage-muted ); }

/* Légende du calendrier */
.partage-cal__legend { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 12px; font-size: .8rem; color: var( --partage-muted ); }
.partage-cal__legend span { display: inline-flex; align-items: center; gap: 6px; }
.partage-cal__legend i { width: 14px; height: 14px; border-radius: 4px; display: inline-block; border: 1px solid rgba( 20, 12, 30, .1 ); }
.partage-cal__legend .lg-dispo { background: rgba( 123, 44, 191, .16 ); border-color: var( --partage-accent ); }
.partage-cal__legend .lg-indispo { background: #efedf1; }

/* ---- Créneaux ----------------------------------------------------- */
.partage-slots { margin-top: 18px; }
.partage-slots__title { font-size: 1rem; margin: 0 0 10px; color: inherit; }
.partage-slots__list { display: flex; flex-wrap: wrap; gap: 8px; }
.partage-slot {
	border: 1px solid var( --partage-line ) !important;
	background: var( --partage-surface ) !important;
	color: var( --partage-ink ) !important;
	padding: 8px 16px;
	border-radius: 22px;
}
.partage-slot:hover { border-color: var( --partage-accent ) !important; }
.partage-slot.is-selected { background: var( --partage-accent ) !important; color: #fff !important; border-color: var( --partage-accent ) !important; }
.partage-slots__empty, .partage-slots__loading { color: var( --partage-muted ); }

/* ---- Récapitulatif ------------------------------------------------ */
.partage-recap__list { margin: 0; border: 1px solid var( --partage-line ); border-radius: var( --partage-radius ); overflow: hidden; background: var( --partage-surface ); color: var( --partage-ink ); }
.partage-recap__row { display: grid; grid-template-columns: 160px 1fr; gap: 12px; padding: 12px 16px; }
.partage-recap__row:nth-child(odd) { background: #faf8fc; }
.partage-recap__row dt { font-weight: 700; margin: 0; }
.partage-recap__row dd { margin: 0; }
.partage-recap__acompte { margin-top: 16px; padding: 14px 16px; background: var( --partage-accent-soft ); border-radius: var( --partage-radius ); color: inherit; }

/* ---- Consentement / honeypot -------------------------------------- */
.partage-check { display: flex; align-items: flex-start; gap: 8px; cursor: pointer; color: inherit; }
.partage-check input { margin-top: 3px; width: 18px; height: 18px; accent-color: var( --partage-accent ); }
.partage-check a { color: var( --partage-accent ); }
.partage-hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

/* ---- Boutons / navigation ----------------------------------------- */
.partage-tunnel__nav { display: flex; justify-content: space-between; align-items: center; margin-top: 24px; gap: 12px; }
.partage-btn {
	border-radius: 8px;
	padding: 12px 22px;
	font-weight: 700;
	background: var( --partage-accent-dark ) !important;
	color: #fff !important;
}
.partage-btn--next, .partage-btn--submit { background: var( --partage-accent ) !important; }
.partage-btn--submit { padding: 14px 28px; }
.partage-btn--ghost {
	background: transparent !important;
	color: inherit !important;
	border: 1px solid currentColor !important;
	opacity: .85;
	font-weight: 600;
}
.partage-btn--ghost:hover { opacity: 1; }
.partage-btn:disabled { opacity: .6; cursor: default; }

/* ---- Confirmation ------------------------------------------------- */
.partage-confirm { text-align: center; padding: 24px 16px; }
.partage-confirm__icon {
	width: 64px; height: 64px; border-radius: 50%;
	background: var( --partage-accent ); color: #fff; font-size: 34px;
	display: flex; align-items: center; justify-content: center;
	margin: 0 auto 16px;
}
.partage-confirm__ref { font-weight: 700; }
.partage-confirm__acompte { color: inherit; background: var( --partage-accent-soft ); border-radius: var( --partage-radius ); padding: 14px 16px; display: inline-block; margin-top: 8px; }

/* ---- Responsive --------------------------------------------------- */
@media ( max-width: 620px ) {
	.partage-grid-2 { grid-template-columns: 1fr; }
	.partage-choix-epreuves { grid-template-columns: 1fr; }
	.partage-tunnel__step-label { display: none; }
	.partage-recap__row { grid-template-columns: 1fr; gap: 2px; }

	/* Calendrier : la grille doit tenir dans la largeur de l'ecran. */
	.partage-tunnel { padding: 16px; }
	.partage-cal { padding: 10px; }
	.partage-cal__grid { gap: 3px; }
	.partage-cal__dow { font-size: .62rem; padding: 2px 0; }
	.partage-cal__cell { border-radius: 6px !important; font-size: clamp( .68rem, 3.2vw, .9rem ); }
	.partage-cal__cell--available,
	.partage-cal__cell--partial { border-width: 1px !important; }
	.partage-cal__legend { gap: 10px; font-size: .74rem; }
}

@media ( max-width: 380px ) {
	.partage-tunnel { padding: 12px; }
	.partage-cal { padding: 6px; }
	.partage-cal__grid { gap: 2px; }
	.partage-cal__cell { border-radius: 5px !important; }
	.partage-cal__nav { width: 32px !important; height: 32px !important; min-width: 32px !important; font-size: 17px; }
}
