/**
 * MauRide — Design system frontend complet.
 * Mobile-first, accessible, dark-mode ready.
 *
 * Organisation :
 *  1. Base & reset scopé
 *  2. Typographie
 *  3. Boutons (.mauride-button / .mauride-btn)
 *  4. Formulaires & inputs
 *  5. Cards génériques
 *  6. Vehicle grid (catalogue)
 *  7. Vehicle single (fiche détail)
 *  8. Specs icons (SVG)
 *  9. Trust badges
 * 10. Stepper & booking form
 * 11. Breakdown (récap prix)
 * 12. Estimator
 * 13. My bookings (espace client)
 * 14. Confirmation
 * 15. Social proof / reviews
 * 16. Notices, toasts, skeletons
 * 17. Options, coupon, payment modes
 * 18. Calendrier / disponibilité
 * 19. Currency toggle
 * 20. Utilitaires
 */

/* ====================================================================
   1. BASE — scopée via .mauride-wrap et sélecteurs mauride-*
   ==================================================================== */
[class*="mauride-"] {
	box-sizing: border-box;
}
.mauride-wrap,
[class^="mauride-"] * {
	box-sizing: border-box;
}

.mauride-wrap,
.mauride-vehicle-grid-wrapper,
.mauride-vehicle-single,
.mauride-booking,
.mauride-estimator,
.mauride-my-bookings,
.mauride-confirmation {
	font-family: var(--mauride-font);
	font-size: var(--mauride-font-size);
	line-height: var(--mauride-line-height);
	color: var(--mauride-text);
	max-width: 1280px;
	margin: 0 auto;
	padding: var(--mauride-space-5) var(--mauride-space-4);
}

/* ====================================================================
   2. TYPOGRAPHIE
   ==================================================================== */
.mauride-title,
.mauride-vehicle-single__title {
	font-size: clamp(1.75rem, 3.5vw, 2.5rem);
	font-weight: 800;
	line-height: 1.15;
	margin: 0 0 var(--mauride-space-3);
	color: var(--mauride-text);
	letter-spacing: -0.02em;
}
.mauride-subtitle,
.mauride-vehicle-single__subtitle {
	font-size: 1rem;
	color: var(--mauride-text-muted);
	margin: 0 0 var(--mauride-space-6);
}
.mauride-section-title {
	font-size: 1.25rem;
	font-weight: 700;
	margin: 0 0 var(--mauride-space-4);
	color: var(--mauride-text);
	letter-spacing: -0.01em;
}
.mauride-section-label {
	font-size: 0.75rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	color: var(--mauride-text-muted);
	margin: 0 0 var(--mauride-space-2);
}
.mauride-muted { color: var(--mauride-text-muted); }
.mauride-prose { line-height: 1.65; color: var(--mauride-text); }
.mauride-prose p { margin: 0 0 var(--mauride-space-3); }

/* ====================================================================
   3. BOUTONS — supporte .mauride-button et .mauride-btn (alias)
   ==================================================================== */
.mauride-button,
.mauride-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: var(--mauride-space-2);
	min-height: 44px;
	padding: 0 var(--mauride-space-5);
	font-family: inherit;
	font-size: 0.9375rem;
	font-weight: 600;
	line-height: 1;
	text-decoration: none;
	border: 1px solid transparent;
	border-radius: var(--mauride-radius);
	cursor: pointer;
	transition: transform var(--mauride-transition), box-shadow var(--mauride-transition), background var(--mauride-transition), border-color var(--mauride-transition);
	background: var(--mauride-bg-muted);
	color: var(--mauride-text);
	white-space: nowrap;
}
.mauride-button:hover,
.mauride-btn:hover { transform: translateY(-1px); box-shadow: var(--mauride-shadow-md); }
.mauride-button:active,
.mauride-btn:active { transform: translateY(0); }
.mauride-button:focus-visible,
.mauride-btn:focus-visible {
	outline: 3px solid var(--mauride-primary-light);
	outline-offset: 2px;
}

.mauride-button--primary,
.mauride-btn--primary {
	background: var(--mauride-primary);
	color: var(--mauride-text-inverse);
	border-color: var(--mauride-primary);
	box-shadow: 0 4px 14px rgba(14, 165, 233, 0.3);
}
.mauride-button--primary:hover,
.mauride-btn--primary:hover {
	background: var(--mauride-primary-dark);
	border-color: var(--mauride-primary-dark);
	box-shadow: 0 6px 20px rgba(14, 165, 233, 0.4);
}

.mauride-button--secondary,
.mauride-btn--secondary {
	background: var(--mauride-secondary);
	color: var(--mauride-text-inverse);
	border-color: var(--mauride-secondary);
}
.mauride-button--secondary:hover,
.mauride-btn--secondary:hover {
	background: var(--mauride-secondary-dark);
	border-color: var(--mauride-secondary-dark);
}

.mauride-button--ghost,
.mauride-btn--ghost {
	background: transparent;
	color: var(--mauride-primary);
	border-color: var(--mauride-border-strong);
}
.mauride-button--ghost:hover,
.mauride-btn--ghost:hover {
	background: var(--mauride-primary-light);
	border-color: var(--mauride-primary);
}

.mauride-button--danger {
	background: transparent;
	color: var(--mauride-error);
	border-color: var(--mauride-error);
}
.mauride-button--danger:hover {
	background: var(--mauride-error);
	color: var(--mauride-text-inverse);
}

.mauride-button--whatsapp {
	background: #25D366;
	color: #fff;
	border-color: #25D366;
}
.mauride-button--whatsapp:hover { background: #1ea855; border-color: #1ea855; }

.mauride-button--lg,
.mauride-btn--lg {
	min-height: 54px;
	padding: 0 var(--mauride-space-6);
	font-size: 1rem;
}
.mauride-button--block,
.mauride-btn--block { width: 100%; }
.mauride-button[disabled],
.mauride-btn[disabled] { opacity: 0.5; cursor: not-allowed; pointer-events: none; }

/* ====================================================================
   4. FORMULAIRES
   ==================================================================== */
.mauride-field {
	margin-bottom: var(--mauride-space-4);
	display: flex;
	flex-direction: column;
	gap: var(--mauride-space-2);
}
.mauride-field--actions {
	display: flex;
	flex-direction: row;
	gap: var(--mauride-space-2);
	align-items: flex-end;
}
.mauride-field--range label {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	gap: var(--mauride-space-2);
}
.mauride-field label,
.mauride-label {
	display: block;
	font-size: 0.875rem;
	font-weight: 600;
	color: var(--mauride-text);
}
[class*="mauride-"] input[type="text"],
[class*="mauride-"] input[type="email"],
[class*="mauride-"] input[type="tel"],
[class*="mauride-"] input[type="date"],
[class*="mauride-"] input[type="time"],
[class*="mauride-"] input[type="number"],
[class*="mauride-"] input[type="url"],
[class*="mauride-"] input[type="password"],
[class*="mauride-"] select,
[class*="mauride-"] textarea,
.mauride-input,
.mauride-select,
.mauride-textarea {
	width: 100%;
	min-height: 44px;
	padding: 10px 14px;
	font-family: inherit;
	font-size: 1rem;
	color: var(--mauride-text);
	background: var(--mauride-bg);
	border: 1px solid var(--mauride-border);
	border-radius: var(--mauride-radius-sm);
	transition: border-color var(--mauride-transition), box-shadow var(--mauride-transition);
	-webkit-appearance: none;
	appearance: none;
}
[class*="mauride-"] input:focus,
[class*="mauride-"] select:focus,
[class*="mauride-"] textarea:focus {
	outline: none;
	border-color: var(--mauride-primary);
	box-shadow: 0 0 0 3px var(--mauride-primary-light);
}
[class*="mauride-"] select {
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>");
	background-repeat: no-repeat;
	background-position: right 14px center;
	padding-right: 38px;
}
[class*="mauride-"] textarea { min-height: 100px; resize: vertical; }
[class*="mauride-"] input[type="range"] {
	-webkit-appearance: none;
	appearance: none;
	width: 100%;
	height: 6px;
	border-radius: 999px;
	background: var(--mauride-bg-muted);
	outline: none;
	padding: 0;
	min-height: 0;
}
[class*="mauride-"] input[type="range"]::-webkit-slider-thumb {
	-webkit-appearance: none;
	width: 22px;
	height: 22px;
	border-radius: 50%;
	background: var(--mauride-primary);
	cursor: pointer;
	border: 3px solid #fff;
	box-shadow: 0 2px 6px rgba(14, 165, 233, 0.4);
}
[class*="mauride-"] input[type="range"]::-moz-range-thumb {
	width: 22px;
	height: 22px;
	border-radius: 50%;
	background: var(--mauride-primary);
	cursor: pointer;
	border: 3px solid #fff;
	box-shadow: 0 2px 6px rgba(14, 165, 233, 0.4);
}
.mauride-checkbox {
	display: flex;
	align-items: flex-start;
	gap: var(--mauride-space-2);
	cursor: pointer;
	line-height: 1.5;
}
.mauride-checkbox input[type="checkbox"] {
	width: 20px;
	height: 20px;
	accent-color: var(--mauride-primary);
	margin: 2px 0 0;
	flex-shrink: 0;
}
.mauride-field-error { color: var(--mauride-error); font-size: 0.8125rem; }
.mauride-help { font-size: 0.8125rem; color: var(--mauride-text-muted); }
.mauride-requirements {
	margin: var(--mauride-space-4) 0;
	padding: var(--mauride-space-3) var(--mauride-space-4);
	background: var(--mauride-bg-alt);
	border: 1px solid var(--mauride-border);
	border-radius: var(--mauride-radius);
}
.mauride-requirements__title {
	display: block;
	margin-bottom: var(--mauride-space-3);
	font-size: 0.6875rem;
	font-weight: 700;
	letter-spacing: 0.07em;
	text-transform: uppercase;
	color: var(--mauride-text-muted);
}
.mauride-requirements__list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: var(--mauride-space-2);
}
.mauride-requirements__item {
	display: flex;
	align-items: center;
	gap: var(--mauride-space-3);
	font-size: 0.875rem;
	line-height: 1.35;
	color: var(--mauride-text);
}
.mauride-requirements__icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 30px;
	width: 30px;
	height: 30px;
	border-radius: var(--mauride-radius-full);
	background: var(--mauride-bg);
	border: 1px solid var(--mauride-border);
	color: var(--mauride-primary);
}
.mauride-requirements__icon svg { width: 16px; height: 16px; }

/* ====================================================================
   5. CARDS GÉNÉRIQUES
   ==================================================================== */
.mauride-card {
	background: var(--mauride-bg);
	border: 1px solid var(--mauride-border);
	border-radius: var(--mauride-radius);
	box-shadow: var(--mauride-shadow-sm);
	padding: var(--mauride-space-5);
	overflow: hidden;
}

/* ====================================================================
   6. VEHICLE GRID
   ==================================================================== */
.mauride-vehicle-grid-wrapper {
	display: flex;
	flex-direction: column;
	gap: var(--mauride-space-5);
}
.mauride-filters {
	background: linear-gradient(135deg, var(--mauride-bg-alt) 0%, var(--mauride-bg) 100%);
	border: 1px solid var(--mauride-border);
	border-radius: var(--mauride-radius-lg);
	box-shadow: var(--mauride-shadow-sm);
	padding: var(--mauride-space-5);
}
.mauride-filters__grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--mauride-space-4);
	align-items: end;
}
@media (min-width: 640px) { .mauride-filters__grid { grid-template-columns: 1fr 1fr; } }
@media (min-width: 1024px) { .mauride-filters__grid { grid-template-columns: repeat(6, 1fr); } }
.mauride-filters .mauride-field--range { grid-column: span 1; }
@media (min-width: 1024px) { .mauride-filters .mauride-field--range { grid-column: span 2; } }
.mauride-filters .mauride-field--actions { grid-column: span 1; }
@media (min-width: 1024px) { .mauride-filters .mauride-field--actions { grid-column: span 6; justify-content: flex-end; } }

.mauride-grid-state {
	text-align: center;
	padding: var(--mauride-space-8);
	color: var(--mauride-text-muted);
}
.mauride-spinner {
	display: inline-block;
	width: 32px;
	height: 32px;
	border: 3px solid var(--mauride-bg-muted);
	border-top-color: var(--mauride-primary);
	border-radius: 50%;
	animation: mauride-spin 800ms linear infinite;
}
@keyframes mauride-spin { to { transform: rotate(360deg); } }

.mauride-vehicle-grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--mauride-space-5);
}
@media (min-width: 640px) { .mauride-vehicle-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .mauride-vehicle-grid { grid-template-columns: repeat(3, 1fr); } }
.mauride-vehicle-grid--cols-2 { grid-template-columns: 1fr; }
@media (min-width: 768px) { .mauride-vehicle-grid--cols-2 { grid-template-columns: repeat(2, 1fr); } }
.mauride-vehicle-grid--cols-4 { grid-template-columns: 1fr; }
@media (min-width: 640px) { .mauride-vehicle-grid--cols-4 { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .mauride-vehicle-grid--cols-4 { grid-template-columns: repeat(4, 1fr); } }

/* Vehicle card — structure BEM complète */
.mauride-vehicle-card,
.mauride-card.mauride-vehicle-card {
	display: flex;
	flex-direction: column;
	background: var(--mauride-bg);
	border: 1px solid var(--mauride-border);
	border-radius: var(--mauride-radius-lg);
	overflow: hidden;
	padding: 0;
	transition: transform var(--mauride-transition), box-shadow var(--mauride-transition);
	box-shadow: var(--mauride-shadow-sm);
}
.mauride-vehicle-card:hover {
	transform: translateY(-4px);
	box-shadow: var(--mauride-shadow-lg);
}
.mauride-card__media {
	position: relative;
	display: block;
	aspect-ratio: 16 / 10;
	background: linear-gradient(135deg, var(--mauride-bg-muted) 0%, var(--mauride-primary-light) 100%);
	overflow: hidden;
	text-decoration: none;
}
.mauride-card__media .mauride-card__image,
.mauride-card__media img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 400ms ease;
}
.mauride-vehicle-card:hover .mauride-card__image { transform: scale(1.05); }
.mauride-card__placeholder {
	width: 100%;
	height: 100%;
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 250' fill='none' stroke='%230EA5E9' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'><path d='M60 180 l25 -70 q6 -18 25 -18 h180 q19 0 25 18 l25 70 v28 h-20 a15 15 0 0 1 -30 0 h-180 a15 15 0 0 1 -30 0 h-20 z' fill='%23E0F2FE'/><circle cx='120' cy='200' r='15' fill='%230EA5E9'/><circle cx='280' cy='200' r='15' fill='%230EA5E9'/></svg>");
	background-size: 65%;
	background-repeat: no-repeat;
	background-position: center;
	opacity: 0.8;
}
/* Placeholder LOGEMENT : illustration maison/villa (et non la voiture partagée). */
.mauride-lodging-card .mauride-card__placeholder {
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 250' fill='none' stroke='%230EA5E9' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'><path d='M110 138 L200 72 L290 138 v72 h-180 z' fill='%23E0F2FE'/><rect x='150' y='150' width='32' height='32' fill='none'/><path d='M215 210 v-44 h30 v44' fill='none'/></svg>");
}
.mauride-card__badge {
	position: absolute;
	top: var(--mauride-space-3);
	left: var(--mauride-space-3);
	background: rgba(14, 165, 233, 0.95);
	color: #fff;
	font-size: 0.6875rem;
	font-weight: 700;
	padding: 5px 12px;
	border-radius: var(--mauride-radius-full);
	text-transform: uppercase;
	letter-spacing: 0.05em;
	backdrop-filter: blur(8px);
}
.mauride-card__body {
	padding: var(--mauride-space-5);
	display: flex;
	flex-direction: column;
	gap: var(--mauride-space-3);
	flex: 1;
}
.mauride-card__title {
	font-size: 1.125rem;
	font-weight: 700;
	margin: 0;
	line-height: 1.3;
}
.mauride-card__title a {
	color: var(--mauride-text);
	text-decoration: none;
}
.mauride-card__title a:hover { color: var(--mauride-primary); }
.mauride-card__subtitle {
	font-size: 0.8125rem;
	color: var(--mauride-text-muted);
	margin: 0;
}
.mauride-card__specs {
	list-style: none;
	padding: 0;
	margin: 0;
	display: flex;
	flex-wrap: wrap;
	gap: var(--mauride-space-3) var(--mauride-space-4);
	font-size: 0.8125rem;
	color: var(--mauride-text-muted);
}
.mauride-card__specs li {
	display: inline-flex;
	align-items: center;
	gap: 6px;
}
.mauride-card__specs .mauride-spec__icon {
	color: var(--mauride-primary);
	flex-shrink: 0;
}
.mauride-card__footer {
	margin-top: auto;
	padding-top: var(--mauride-space-4);
	border-top: 1px solid var(--mauride-border);
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--mauride-space-3);
}
.mauride-card__price {
	display: flex;
	flex-direction: column;
	line-height: 1.1;
}
.mauride-card__price-label {
	font-size: 0.6875rem;
	font-weight: 600;
	color: var(--mauride-text-muted);
	text-transform: uppercase;
	letter-spacing: 0.04em;
}
.mauride-card__price-value {
	font-size: 1.5rem;
	font-weight: 800;
	color: var(--mauride-primary);
	font-variant-numeric: tabular-nums;
}
.mauride-card__price-value small {
	font-size: 0.75rem;
	font-weight: 500;
	color: var(--mauride-text-muted);
	display: inline-block;
	margin-left: 2px;
}
/* P2.3 — Prix total exact du séjour (rempli quand des dates sont saisies dans la
   barre de recherche). État « … » discret pendant le calcul ; une fois résolu,
   le total devient la valeur de tête et le « à partir de /jour » passe en second. */
.mauride-card__total {
	font-size: 0.8125rem;
	color: var(--mauride-text-muted);
	font-variant-numeric: tabular-nums;
}
.mauride-card--has-total .mauride-card__total {
	order: -1;
	font-size: 1.5rem;
	font-weight: 800;
	color: var(--mauride-primary);
	line-height: 1.15;
}
.mauride-card--has-total .mauride-card__price-label { display: none; }
.mauride-card--has-total .mauride-card__price-value {
	font-size: 0.8125rem;
	font-weight: 500;
	color: var(--mauride-text-muted);
}
.mauride-card--has-total .mauride-card__price-value small { color: var(--mauride-text-muted); }

/* ====================================================================
   7. VEHICLE SINGLE
   ==================================================================== */
.mauride-vehicle-single {
	display: flex;
	flex-direction: column;
	gap: var(--mauride-space-6);
}
.mauride-vehicle-single__header {
	margin-bottom: var(--mauride-space-2);
}
/* Bouton « Retour » en tête de fiche détail. */
.mauride-back-link {
	display: inline-flex;
	align-items: center;
	align-self: flex-start;
	gap: var(--mauride-space-2);
	padding: var(--mauride-space-2) var(--mauride-space-4);
	border: 1px solid var(--mauride-border);
	border-radius: var(--mauride-radius-full);
	background: var(--mauride-bg);
	color: var(--mauride-text);
	font-size: 0.9375rem;
	font-weight: 600;
	line-height: 1;
	text-decoration: none;
	box-shadow: var(--mauride-shadow-sm);
	transition: background var(--mauride-transition), border-color var(--mauride-transition), color var(--mauride-transition);
}
.mauride-back-link:hover,
.mauride-back-link:focus-visible {
	background: var(--mauride-primary-light);
	border-color: var(--mauride-border-strong);
	color: var(--mauride-primary-dark);
}
.mauride-back-link svg {
	transition: transform var(--mauride-transition);
}
.mauride-back-link:hover svg,
.mauride-back-link:focus-visible svg {
	transform: translateX(-3px);
}
.mauride-back-link:focus-visible {
	outline: 2px solid var(--mauride-primary);
	outline-offset: 2px;
}
.mauride-vehicle-single__gallery {
	/* Conteneur transparent : le carrousel porte lui-même son arrondi + son ombre
	   (plus d'encadré « carte » bleu autour de la galerie). */
}
.mauride-vehicle-single__gallery img {
	width: 100%;
	object-fit: cover;
}
.mauride-vehicle-single__body {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--mauride-space-5);
}
@media (min-width: 1024px) {
	.mauride-vehicle-single__body {
		grid-template-columns: 2fr 1fr;
	}
}

/* Boutons du widget de réservation (« Réserver » + « Ajouter au panier ») :
   pile PLEINE LARGEUR avec espacement, sinon les deux boutons (auto-width, l'un
   <a> l'autre <button>) se désalignaient et se chevauchaient. */
.mauride-vehicle-single__booking [data-mauride-booking-link] {
	display: flex;
	width: 100%;
	margin-top: var(--mauride-space-2);
}
.mauride-add-to-cart-wrap {
	display: flex;
	flex-direction: column;
	gap: var(--mauride-space-2);
	margin-top: var(--mauride-space-3);
}
.mauride-add-to-cart-wrap [data-mauride-add-to-cart] {
	width: 100%;
}

/* ====================================================================
   Panneau de réservation « sobre » (fiche véhicule)
   Présentation calmée (fine-print discret, prix neutres). NB : le panneau
   n'est PAS sticky. Il est souvent plus haut que le viewport (prix + dates +
   6 options + estimation + conditions + inclus + 2 CTA) ; un sticky plafonné
   à la hauteur d'écran cachait les boutons « Réserver »/« Panier » sous la
   ligne de flottaison (pire encore une fois l'estimation affichée). Il défile
   donc normalement avec la page → tout reste atteignable.
   ==================================================================== */
/* Prix « à partir de » : hiérarchie claire, sobre, séparé du reste. */
.mauride-vehicle-single__booking .mauride-price-preview {
	display: flex;
	align-items: baseline;
	gap: var(--mauride-space-2);
	padding-bottom: var(--mauride-space-3);
	margin-bottom: var(--mauride-space-2);
	border-bottom: 1px solid var(--mauride-border);
}
.mauride-vehicle-single__booking .mauride-price-preview__from {
	font-size: 0.8125rem;
	color: var(--mauride-text-muted);
}
.mauride-vehicle-single__booking .mauride-price-preview__value {
	font-size: 1.375rem;
	font-weight: 700;
	color: var(--mauride-text);
}
.mauride-vehicle-single__booking .mauride-price-preview__value small {
	font-size: 0.8125rem;
	font-weight: 500;
	color: var(--mauride-text-muted);
}
/* Prix des options en texte neutre plutôt qu'accent primaire → moins criard. */
.mauride-vehicle-single__booking .mauride-single-option__price {
	color: var(--mauride-text);
	font-weight: 600;
}
/* Blocs « Conditions du conducteur » / « Inclus » ramenés à un fine-print
   discret (sans encadré appuyé) pour alléger le panneau. */
.mauride-vehicle-single__booking .mauride-requirements {
	margin: var(--mauride-space-3) 0 0;
	padding: var(--mauride-space-3) 0 0;
	background: transparent;
	border: 0;
	border-top: 1px solid var(--mauride-border);
	border-radius: 0;
}
.mauride-vehicle-single__booking .mauride-requirements__item {
	font-size: 0.8125rem;
	color: var(--mauride-text-muted);
	gap: var(--mauride-space-2);
}
.mauride-vehicle-single__booking .mauride-requirements__icon {
	flex-basis: 22px;
	width: 22px;
	height: 22px;
	background: transparent;
	border: 0;
	color: var(--mauride-text-muted);
}
.mauride-vehicle-single__booking .mauride-requirements__icon svg { width: 15px; height: 15px; }

/* ====================================================================
   8. SPECS ICONS GRID
   ==================================================================== */
.mauride-specs-grid {
	list-style: none;
	padding: 0;
	margin: 0;
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: var(--mauride-space-3);
}
@media (min-width: 640px) { .mauride-specs-grid { grid-template-columns: repeat(3, 1fr); } }
.mauride-specs-grid .mauride-spec {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: var(--mauride-space-2);
	padding: var(--mauride-space-4);
	background: var(--mauride-bg-alt);
	border: 1px solid var(--mauride-border);
	border-radius: var(--mauride-radius);
	text-align: center;
	transition: all var(--mauride-transition);
}
.mauride-specs-grid .mauride-spec:hover {
	border-color: var(--mauride-primary);
	background: var(--mauride-primary-light);
	transform: translateY(-2px);
}
.mauride-specs-grid .mauride-spec__icon {
	color: var(--mauride-primary);
	display: inline-flex;
}
.mauride-specs-grid .mauride-spec__label {
	font-size: 0.8125rem;
	font-weight: 600;
	color: var(--mauride-text);
}

/* ====================================================================
   9. TRUST BADGES (grille catalogue)
   ==================================================================== */
.mauride-trust-badges {
	list-style: none;
	margin: 0;
	padding: var(--mauride-space-5);
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--mauride-space-4);
	background: var(--mauride-bg);
	border: 1px solid var(--mauride-border);
	border-radius: var(--mauride-radius-lg);
	box-shadow: var(--mauride-shadow-sm);
}
@media (min-width: 640px) { .mauride-trust-badges { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .mauride-trust-badges { grid-template-columns: repeat(4, 1fr); } }
.mauride-trust-badge {
	display: flex;
	align-items: flex-start;
	gap: var(--mauride-space-3);
	padding: var(--mauride-space-4);
	border-radius: var(--mauride-radius);
	background: var(--mauride-primary-light);
	transition: transform var(--mauride-transition);
}
.mauride-trust-badge:hover { transform: translateY(-2px); }
.mauride-trust-badge__icon {
	flex-shrink: 0;
	color: var(--mauride-primary);
	width: 28px;
	height: 28px;
}
.mauride-trust-badge__body {
	display: flex;
	flex-direction: column;
	gap: 2px;
	min-width: 0;
}
.mauride-trust-badge__title {
	font-size: 0.875rem;
	font-weight: 700;
	color: var(--mauride-text);
	line-height: 1.3;
}
.mauride-trust-badge__desc {
	font-size: 0.75rem;
	color: var(--mauride-text-muted);
	line-height: 1.4;
}

/* ====================================================================
   10. STEPPER & BOOKING FORM
   ==================================================================== */
/* .mauride-booking est un wrapper contenant le stepper + le form.
   Le grid 2fr/1fr s'applique au form (qui contient __main + __sidebar). */
.mauride-booking {
	display: flex;
	flex-direction: column;
	gap: var(--mauride-space-5);
	align-items: stretch;
}
.mauride-booking__form {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--mauride-space-6);
	align-items: start;
}
@media (min-width: 1024px) {
	.mauride-booking__form { grid-template-columns: 2fr 1fr; }
	.mauride-booking__sidebar { position: sticky; top: var(--mauride-space-6); }
}
.mauride-booking__main {
	display: flex;
	flex-direction: column;
	gap: var(--mauride-space-5);
}

.mauride-stepper {
	list-style: none;
	padding: 0;
	margin: 0 0 var(--mauride-space-5);
	display: flex;
	flex-wrap: wrap;
	gap: var(--mauride-space-2);
}
.mauride-stepper__item {
	display: flex;
	align-items: center;
	gap: var(--mauride-space-2);
	padding: var(--mauride-space-2) var(--mauride-space-4);
	border-radius: var(--mauride-radius-full);
	background: var(--mauride-bg-muted);
	color: var(--mauride-text-muted);
	font-size: 0.8125rem;
	font-weight: 600;
	counter-increment: step;
	transition: all var(--mauride-transition);
}
/* Numéro du step : le HTML contient déjà <span class="mauride-stepper__num">N</span>.
   Pas de CSS counter (évite la double numérotation). */
.mauride-stepper__num {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 24px;
	height: 24px;
	border-radius: 50%;
	background: var(--mauride-bg);
	color: var(--mauride-text-muted);
	font-size: 0.75rem;
	font-weight: 700;
	box-shadow: inset 0 0 0 1px var(--mauride-border);
	flex-shrink: 0;
}
.mauride-stepper__item.is-active {
	background: var(--mauride-primary);
	color: var(--mauride-text-inverse);
	box-shadow: 0 4px 14px rgba(14, 165, 233, 0.3);
}
.mauride-stepper__item.is-active .mauride-stepper__num {
	background: rgba(255, 255, 255, 0.25);
	color: #fff;
	box-shadow: none;
}
.mauride-stepper__item.is-done {
	background: var(--mauride-success);
	color: #fff;
}
.mauride-stepper__item.is-done .mauride-stepper__num {
	background: rgba(255, 255, 255, 0.25);
	color: #fff;
	box-shadow: none;
}
.mauride-stepper__label { white-space: nowrap; }

/* Steps */
.mauride-step {
	background: var(--mauride-bg);
	border: 1px solid var(--mauride-border);
	border-radius: var(--mauride-radius-lg);
	padding: var(--mauride-space-6);
	box-shadow: var(--mauride-shadow-sm);
}
.mauride-step[hidden] { display: none !important; }
.mauride-step__actions {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: var(--mauride-space-3);
	margin-top: var(--mauride-space-5);
	padding-top: var(--mauride-space-5);
	border-top: 1px solid var(--mauride-border);
}
.mauride-step__actions > :only-child { margin-left: auto; }

.mauride-booking__vehicle-summary {
	display: flex;
	align-items: center;
	gap: var(--mauride-space-4);
	padding: var(--mauride-space-4);
	background: var(--mauride-bg-alt);
	border-radius: var(--mauride-radius);
	margin-bottom: var(--mauride-space-4);
}
.mauride-booking__vehicle-img {
	width: 96px;
	height: 64px;
	border-radius: var(--mauride-radius-sm);
	object-fit: cover;
	background: var(--mauride-bg-muted);
}

/* Cartes véhicule (P2.2) : sélection visuelle photo + prix, remplace le <select>. */
.mauride-vehicle-cards {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
	gap: var(--mauride-space-3);
	margin-top: var(--mauride-space-2);
}
.mauride-vehicle-card {
	position: relative;
	display: flex;
	flex-direction: column;
	border: 1px solid var(--mauride-border);
	border-radius: var(--mauride-radius);
	overflow: hidden;
	cursor: pointer;
	background: var(--mauride-bg);
	transition: border-color .15s ease, box-shadow .15s ease;
}
.mauride-vehicle-card:hover { border-color: var(--mauride-border-strong); }
.mauride-vehicle-card__input {
	position: absolute;
	width: 1px;
	height: 1px;
	opacity: 0;
	pointer-events: none;
}
.mauride-vehicle-card__media {
	display: block;
	aspect-ratio: 16 / 10;
	background: var(--mauride-bg-muted);
}
.mauride-vehicle-card__media img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}
.mauride-vehicle-card__placeholder {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	height: 100%;
	font-size: 2rem;
}
.mauride-vehicle-card__body {
	display: flex;
	flex-direction: column;
	gap: 2px;
	padding: var(--mauride-space-3);
}
.mauride-vehicle-card__name { font-weight: 600; }
.mauride-vehicle-card__price {
	font-size: 0.8125rem;
	color: var(--mauride-text-muted);
}
/* État sélectionné (radio coché) + focus clavier — :has() supporté navigateurs courants. */
.mauride-vehicle-card:has(.mauride-vehicle-card__input:checked) {
	border-color: var(--mauride-primary);
	box-shadow: 0 0 0 2px var(--mauride-primary-light);
}
.mauride-vehicle-card:has(.mauride-vehicle-card__input:focus-visible) {
	box-shadow: 0 0 0 3px var(--mauride-primary-light);
}

/* Form grid/row within steps */
.mauride-form-grid,
.mauride-form-row {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--mauride-space-4);
}
@media (min-width: 640px) {
	.mauride-form-grid,
	.mauride-form-row { grid-template-columns: 1fr 1fr; }
}

/* ====================================================================
   11. BREAKDOWN (récap prix)
   ==================================================================== */
.mauride-breakdown {
	background: linear-gradient(160deg, var(--mauride-primary-light) 0%, var(--mauride-bg) 100%);
	border: 1px solid var(--mauride-border);
	border-radius: var(--mauride-radius-lg);
	padding: var(--mauride-space-5);
	box-shadow: var(--mauride-shadow-sm);
}
.mauride-breakdown__list {
	list-style: none;
	padding: 0;
	margin: 0;
	display: flex;
	flex-direction: column;
	gap: var(--mauride-space-2);
}
.mauride-breakdown__list li {
	display: flex;
	justify-content: space-between;
	padding: 6px 0;
	font-size: 0.9375rem;
	color: var(--mauride-text);
}
.mauride-breakdown__list li strong {
	font-variant-numeric: tabular-nums;
	font-weight: 700;
}
.mauride-breakdown__row {
	display: flex;
	justify-content: space-between;
	padding: var(--mauride-space-2) 0;
	font-size: 0.9375rem;
	font-variant-numeric: tabular-nums;
}
.mauride-breakdown__row--total,
.mauride-breakdown__total {
	border-top: 2px solid var(--mauride-border-strong);
	margin-top: var(--mauride-space-3);
	padding-top: var(--mauride-space-3);
	font-size: 1.125rem;
	font-weight: 800;
	color: var(--mauride-text);
}
.mauride-breakdown__discount,
.mauride-breakdown__vat,
.mauride-breakdown-vat { color: var(--mauride-success); font-weight: 600; }
.mauride-breakdown-total { font-weight: 800; }

/* ====================================================================
   12. ESTIMATOR
   ==================================================================== */
.mauride-estimator {
	display: flex;
	flex-direction: column;
	gap: var(--mauride-space-5);
}
.mauride-estimator__grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--mauride-space-5);
	align-items: start;
}
@media (min-width: 900px) {
	.mauride-estimator__grid { grid-template-columns: 1fr 1fr; }
}
.mauride-estimator__form {
	background: var(--mauride-bg);
	border: 1px solid var(--mauride-border);
	border-radius: var(--mauride-radius-lg);
	padding: var(--mauride-space-5);
	box-shadow: var(--mauride-shadow-sm);
}
.mauride-estimator__form .mauride-button { margin-top: var(--mauride-space-3); }

/* ====================================================================
   13. MY BOOKINGS
   ==================================================================== */
.mauride-my-bookings {
	display: flex;
	flex-direction: column;
	gap: var(--mauride-space-5);
}
.mauride-my-bookings__header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: var(--mauride-space-3);
}
.mauride-tabs {
	display: flex;
	gap: 0;
	border-bottom: 2px solid var(--mauride-border);
	flex-wrap: wrap;
}
.mauride-tab {
	background: none;
	border: none;
	padding: var(--mauride-space-3) var(--mauride-space-5);
	font-family: inherit;
	font-size: 0.9375rem;
	font-weight: 600;
	color: var(--mauride-text-muted);
	cursor: pointer;
	border-bottom: 3px solid transparent;
	margin-bottom: -2px;
	transition: all var(--mauride-transition);
}
.mauride-tab:hover { color: var(--mauride-text); }
.mauride-tab[aria-selected="true"],
.mauride-tab.is-active {
	color: var(--mauride-primary);
	border-bottom-color: var(--mauride-primary);
}
.mauride-tab__count {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 22px;
	height: 22px;
	padding: 0 7px;
	margin-left: 6px;
	background: var(--mauride-bg-muted);
	color: var(--mauride-text-muted);
	border-radius: var(--mauride-radius-full);
	font-size: 0.6875rem;
	font-weight: 700;
}
.mauride-tab[aria-selected="true"] .mauride-tab__count,
.mauride-tab.is-active .mauride-tab__count {
	background: var(--mauride-primary);
	color: #fff;
}
.mauride-tab-panel { display: none; }
.mauride-tab-panel[hidden] { display: none !important; }
.mauride-tab-panel.is-active,
.mauride-tab-panel:not([hidden]) { display: block; }

.mauride-booking-list {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--mauride-space-4);
	margin-top: var(--mauride-space-4);
}
@media (min-width: 768px) { .mauride-booking-list { grid-template-columns: 1fr 1fr; } }
/* Booking card — design premium avec barre latérale de statut */
.mauride-booking-card {
	background: var(--mauride-bg);
	border: 1px solid var(--mauride-border);
	border-radius: var(--mauride-radius-lg);
	padding: 0;
	display: flex;
	flex-direction: column;
	box-shadow: var(--mauride-shadow-sm);
	transition: transform var(--mauride-transition), box-shadow var(--mauride-transition);
	overflow: hidden;
	position: relative;
}
.mauride-booking-card:hover {
	transform: translateY(-3px);
	box-shadow: 0 8px 30px rgba(14, 165, 233, 0.12);
	border-color: var(--mauride-primary);
}

.mauride-booking-card__header {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: var(--mauride-space-3);
	padding: var(--mauride-space-4) var(--mauride-space-5) 0;
}
.mauride-booking-card__ref {
	font-weight: 800;
	font-family: ui-monospace, "SF Mono", Menlo, Monaco, Consolas, monospace;
	font-size: 0.875rem;
	color: var(--mauride-primary);
	letter-spacing: 0.02em;
}
.mauride-booking-card__body {
	display: flex;
	flex-direction: column;
	gap: var(--mauride-space-3);
	padding: var(--mauride-space-4) var(--mauride-space-5);
}
.mauride-booking-card__vehicle {
	font-size: 1.125rem;
	font-weight: 700;
	color: var(--mauride-text);
	margin: 0;
	display: flex;
	align-items: center;
	gap: var(--mauride-space-2);
}
/* Icône voiture SVG avant le nom du véhicule */
.mauride-booking-card__vehicle::before {
	content: "";
	display: inline-block;
	width: 20px;
	height: 20px;
	flex-shrink: 0;
	background: var(--mauride-primary);
	-webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M5 17h14v-4l-2-5H7l-2 5v4z'/><circle cx='7.5' cy='17.5' r='1.5'/><circle cx='16.5' cy='17.5' r='1.5'/></svg>") no-repeat center / contain;
	mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M5 17h14v-4l-2-5H7l-2 5v4z'/><circle cx='7.5' cy='17.5' r='1.5'/><circle cx='16.5' cy='17.5' r='1.5'/></svg>") no-repeat center / contain;
}
.mauride-booking-card__dates {
	font-size: 0.875rem;
	color: var(--mauride-text-muted);
	font-variant-numeric: tabular-nums;
	display: flex;
	align-items: center;
	gap: 6px;
}
.mauride-booking-card__dates::before {
	content: "";
	display: inline-block;
	width: 16px;
	height: 16px;
	flex-shrink: 0;
	background: var(--mauride-text-muted);
	-webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2'><rect x='3' y='4' width='18' height='18' rx='2'/><line x1='16' y1='2' x2='16' y2='6'/><line x1='8' y1='2' x2='8' y2='6'/><line x1='3' y1='10' x2='21' y2='10'/></svg>") no-repeat center / contain;
	mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2'><rect x='3' y='4' width='18' height='18' rx='2'/><line x1='16' y1='2' x2='16' y2='6'/><line x1='8' y1='2' x2='8' y2='6'/><line x1='3' y1='10' x2='21' y2='10'/></svg>") no-repeat center / contain;
}

/* Montants en grille 3 colonnes */
.mauride-booking-card__amounts {
	list-style: none;
	padding: var(--mauride-space-3) var(--mauride-space-4);
	margin: 0;
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: var(--mauride-space-2);
	background: var(--mauride-bg-alt);
	border-radius: var(--mauride-radius);
	font-variant-numeric: tabular-nums;
	text-align: center;
}
.mauride-booking-card__amounts li {
	display: flex;
	flex-direction: column;
	gap: 2px;
}
.mauride-booking-card__amounts li span:first-child {
	font-size: 0.6875rem;
	font-weight: 600;
	color: var(--mauride-text-muted);
	text-transform: uppercase;
	letter-spacing: 0.05em;
}
.mauride-booking-card__amounts strong {
	font-size: 1.125rem;
	font-weight: 800;
	color: var(--mauride-text);
}

.mauride-booking-card__footer {
	display: flex;
	flex-wrap: wrap;
	gap: var(--mauride-space-2);
	padding: var(--mauride-space-3) var(--mauride-space-5) var(--mauride-space-4);
	border-top: 1px solid var(--mauride-border);
	background: var(--mauride-bg);
}
.mauride-booking-card__footer .mauride-button {
	min-height: 38px;
	padding: 0 var(--mauride-space-4);
	font-size: 0.8125rem;
	border-radius: var(--mauride-radius);
}
/* Premier bouton (Voir le détail) en primary */
.mauride-booking-card__footer .mauride-button:first-child {
	background: var(--mauride-primary);
	color: var(--mauride-text-inverse);
	border-color: var(--mauride-primary);
}
.mauride-booking-card__footer .mauride-button:first-child:hover {
	background: var(--mauride-primary-dark);
}

/* ====================================================================
   14. CONFIRMATION
   ==================================================================== */
.mauride-confirmation {
	max-width: 720px;
	text-align: center;
}
.mauride-confirmation__header {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: var(--mauride-space-3);
	margin-bottom: var(--mauride-space-6);
}
.mauride-confirmation__check {
	width: 84px;
	height: 84px;
	border-radius: 50%;
	background: linear-gradient(135deg, var(--mauride-success) 0%, #0d9488 100%);
	color: #fff;
	display: flex;
	align-items: center;
	justify-content: center;
	box-shadow: 0 8px 24px rgba(16, 185, 129, 0.35);
	animation: mauride-check-in 500ms cubic-bezier(0.34, 1.56, 0.64, 1);
}
@keyframes mauride-check-in {
	from { transform: scale(0.5); opacity: 0; }
	to { transform: scale(1); opacity: 1; }
}
/* Paiement en attente de validation : orange (pas le vert « succès »), pour ne
   pas laisser croire que la réservation est déjà confirmée. */
.mauride-confirmation__check--pending {
	background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);
	box-shadow: 0 8px 24px rgba(245, 158, 11, 0.35);
	animation: mauride-check-in 500ms cubic-bezier(0.34, 1.56, 0.64, 1),
		mauride-pending-pulse 1.6s ease-in-out 500ms infinite;
}
@keyframes mauride-pending-pulse {
	0%, 100% { box-shadow: 0 8px 24px rgba(245, 158, 11, 0.35); }
	50% { box-shadow: 0 8px 30px rgba(245, 158, 11, 0.6); }
}
.mauride-confirmation__pending-note {
	max-width: 34rem;
	margin: 0.75rem auto 0;
	color: var(--mauride-text-muted);
	font-size: 0.95rem;
	line-height: 1.5;
}
.mauride-confirmation__title {
	font-size: clamp(1.5rem, 3vw, 2rem);
	font-weight: 800;
	margin: 0;
}
/* Erreur de paiement inline sous le champ carte (retry immédiat, cf. P0.5). */
.mauride-card-error {
	margin: 0.5rem 0 0;
	padding: 0.6rem 0.8rem;
	border-radius: 8px;
	background: rgba(220, 38, 38, 0.08);
	border: 1px solid rgba(220, 38, 38, 0.3);
	color: #b91c1c;
	font-size: 0.9rem;
	line-height: 1.4;
}
.mauride-confirmation__ref {
	font-size: 1rem;
	color: var(--mauride-text-muted);
}
.mauride-confirmation__ref strong {
	color: var(--mauride-primary);
	font-family: ui-monospace, "SF Mono", Menlo, monospace;
	font-size: 1.125rem;
	margin-left: 6px;
}
.mauride-confirmation__summary {
	text-align: left;
	margin-bottom: var(--mauride-space-5);
}
.mauride-confirmation__actions {
	display: flex;
	flex-wrap: wrap;
	gap: var(--mauride-space-3);
	justify-content: center;
	margin-bottom: var(--mauride-space-5);
}
.mauride-confirmation--empty {
	text-align: center;
	padding: var(--mauride-space-10);
	color: var(--mauride-text-muted);
}

/* ====================================================================
   15. SOCIAL PROOF / REVIEWS
   ==================================================================== */
.mauride-social-proof {
	margin-top: var(--mauride-space-8);
	padding: var(--mauride-space-8) var(--mauride-space-5);
	background: var(--mauride-bg-alt);
	border-radius: var(--mauride-radius-lg);
}
.mauride-social-proof__header {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	justify-content: space-between;
	gap: var(--mauride-space-4);
	margin-bottom: var(--mauride-space-6);
}
.mauride-social-proof__rating {
	display: flex;
	align-items: center;
	gap: var(--mauride-space-2);
	font-variant-numeric: tabular-nums;
}
.mauride-stars { display: inline-flex; gap: 2px; color: #F59E0B; }
.mauride-social-proof__avg {
	font-size: 1.5rem;
	font-weight: 800;
	color: var(--mauride-text);
	margin-left: var(--mauride-space-2);
}
.mauride-social-proof__count { font-size: 0.875rem; color: var(--mauride-text-muted); }
.mauride-reviews {
	list-style: none;
	padding: 0;
	margin: 0;
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--mauride-space-5);
}
@media (min-width: 768px) { .mauride-reviews { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .mauride-reviews { grid-template-columns: repeat(3, 1fr); } }
.mauride-review {
	background: var(--mauride-bg);
	border: 1px solid var(--mauride-border);
	border-radius: var(--mauride-radius);
	padding: var(--mauride-space-5);
	display: flex;
	flex-direction: column;
	gap: var(--mauride-space-3);
	box-shadow: var(--mauride-shadow-sm);
}
.mauride-review__header { display: flex; align-items: center; justify-content: space-between; gap: var(--mauride-space-2); }
.mauride-review__date { font-size: 0.75rem; color: var(--mauride-text-muted); }
.mauride-review__text {
	margin: 0;
	font-size: 0.9375rem;
	line-height: 1.55;
	color: var(--mauride-text);
	quotes: "\201C" "\201D";
}
.mauride-review__text::before { content: open-quote; color: var(--mauride-primary); font-weight: 700; font-size: 1.2em; }
.mauride-review__text::after { content: close-quote; color: var(--mauride-primary); font-weight: 700; font-size: 1.2em; }
.mauride-review__author {
	display: flex;
	flex-direction: column;
	gap: 2px;
	padding-top: var(--mauride-space-3);
	border-top: 1px solid var(--mauride-border);
	font-size: 0.8125rem;
}
.mauride-review__author strong { color: var(--mauride-text); font-weight: 700; }
.mauride-review__country { color: var(--mauride-text-muted); }

/* ====================================================================
   16. NOTICES, TOASTS, SKELETONS
   ==================================================================== */
.mauride-notice {
	margin: var(--mauride-space-4) 0;
	padding: var(--mauride-space-4);
	background: var(--mauride-bg-alt);
	border: 1px solid var(--mauride-border);
	border-radius: var(--mauride-radius);
	font-family: var(--mauride-font);
	font-size: 0.875rem;
	line-height: 1.5;
	color: var(--mauride-text);
}
.mauride-notice > :first-child { margin-top: 0; }
.mauride-notice > :last-child { margin-bottom: 0; }

/* Titre : police UI (sans-serif) + pastille colorée discrète selon le type,
   à la place de l'ancienne barre d'accent border-left. */
.mauride-notice h4 {
	display: flex;
	align-items: center;
	gap: var(--mauride-space-2);
	margin: 0 0 var(--mauride-space-2);
	font-family: var(--mauride-font);
	font-size: 0.9375rem;
	font-weight: 600;
	line-height: 1.3;
	color: var(--mauride-text);
}
.mauride-notice h4::before {
	content: "";
	flex: 0 0 auto;
	width: 8px;
	height: 8px;
	border-radius: var(--mauride-radius-full);
	background: var(--mauride-primary);
}
.mauride-notice p { margin: 0; color: var(--mauride-text-muted); }
.mauride-notice ul {
	margin: 0;
	padding: 0;
	list-style: none;
	display: flex;
	flex-direction: column;
	gap: var(--mauride-space-2);
}
.mauride-notice li {
	position: relative;
	padding-left: var(--mauride-space-4);
	color: var(--mauride-text-muted);
}
.mauride-notice li::before {
	content: "";
	position: absolute;
	left: 3px;
	top: 0.55em;
	width: 5px;
	height: 5px;
	border-radius: var(--mauride-radius-full);
	background: var(--mauride-border-strong);
}

/* Variantes — teinte douce sur tout le panneau + pastille de titre assortie.
   Plus aucune barre border-left. */
.mauride-notice--success { border-color: rgba(5, 150, 105, 0.35); background: rgba(5, 150, 105, 0.05); }
.mauride-notice--info    { border-color: var(--mauride-border); background: var(--mauride-bg-alt); }
.mauride-notice--warn    { border-color: rgba(217, 119, 6, 0.32); background: rgba(217, 119, 6, 0.05); }
.mauride-notice--error   { border-color: rgba(220, 38, 38, 0.32); background: rgba(220, 38, 38, 0.045); }

.mauride-notice--success h4::before { background: var(--mauride-success); }
.mauride-notice--info    h4::before { background: var(--mauride-info); }
.mauride-notice--warn    h4::before { background: var(--mauride-warning); }
.mauride-notice--error   h4::before { background: var(--mauride-error); }

.mauride-toast-container {
	position: fixed;
	top: var(--mauride-space-5);
	right: var(--mauride-space-5);
	z-index: 9999;
	display: flex;
	flex-direction: column;
	gap: var(--mauride-space-3);
	pointer-events: none;
	max-width: calc(100vw - 40px);
}
.mauride-toast {
	display: flex;
	align-items: center;
	gap: var(--mauride-space-3);
	background: var(--mauride-bg);
	color: var(--mauride-text);
	padding: var(--mauride-space-4) var(--mauride-space-5);
	border-radius: var(--mauride-radius);
	border: 1px solid var(--mauride-border);
	box-shadow: var(--mauride-shadow-lg);
	pointer-events: auto;
	animation: mauride-toast-in 300ms ease;
	min-width: 280px;
	max-width: 420px;
	font-size: 0.875rem;
}
.mauride-toast::before {
	content: "";
	flex: 0 0 auto;
	width: 8px;
	height: 8px;
	border-radius: var(--mauride-radius-full);
	background: var(--mauride-primary);
}
.mauride-toast--success { border-color: rgba(5, 150, 105, 0.35); }
.mauride-toast--success::before { background: var(--mauride-success); }
.mauride-toast--error { border-color: rgba(220, 38, 38, 0.32); }
.mauride-toast--error::before { background: var(--mauride-error); }
@keyframes mauride-toast-in {
	from { opacity: 0; transform: translateX(24px); }
	to { opacity: 1; transform: translateX(0); }
}

.mauride-skeleton {
	background: linear-gradient(90deg, var(--mauride-bg-muted) 25%, var(--mauride-bg-alt) 50%, var(--mauride-bg-muted) 75%);
	background-size: 200% 100%;
	animation: mauride-shimmer 1.6s infinite;
	border-radius: var(--mauride-radius-sm);
}
@keyframes mauride-shimmer {
	0% { background-position: 200% 0; }
	100% { background-position: -200% 0; }
}

/* ====================================================================
   17. OPTIONS, COUPON, PAYMENT MODES
   ==================================================================== */
.mauride-options-list {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--mauride-space-3);
}
@media (min-width: 640px) { .mauride-options-list { grid-template-columns: 1fr 1fr; } }
.mauride-options {
	list-style: none;
	padding: 0;
	margin: 0;
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--mauride-space-3);
}
@media (min-width: 640px) { .mauride-options { grid-template-columns: 1fr 1fr; } }
.mauride-option {
	display: block;
	padding: 0;
	background: var(--mauride-bg);
	border: 2px solid var(--mauride-border);
	border-radius: var(--mauride-radius);
	cursor: pointer;
	transition: all var(--mauride-transition);
}
.mauride-option:hover { border-color: var(--mauride-primary); }
.mauride-option label {
	display: flex;
	align-items: center;
	gap: var(--mauride-space-3);
	padding: var(--mauride-space-3) var(--mauride-space-4);
	cursor: pointer;
	margin: 0;
}
.mauride-option input[type="checkbox"] { accent-color: var(--mauride-primary); width: 18px; height: 18px; margin: 0; flex-shrink: 0; }
.mauride-option:has(input:checked) {
	border-color: var(--mauride-primary);
	background: var(--mauride-primary-light);
}
.mauride-option__body { flex: 1; display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.mauride-option__body strong { font-size: 0.9375rem; color: var(--mauride-text); }
.mauride-option__body small { font-size: 0.75rem; color: var(--mauride-text-muted); }
.mauride-option__price {
	font-weight: 700;
	color: var(--mauride-primary);
	font-variant-numeric: tabular-nums;
	flex-shrink: 0;
}
.mauride-option__price small { font-size: 0.75rem; color: var(--mauride-text-muted); font-weight: 500; display: block; }

.mauride-coupon { margin: var(--mauride-space-4) 0; }
.mauride-coupon__row {
	display: flex;
	gap: var(--mauride-space-2);
	align-items: stretch;
}
.mauride-coupon__row input { flex: 1; text-transform: uppercase; letter-spacing: 0.05em; font-weight: 600; }
.mauride-coupon__feedback {
	margin-top: var(--mauride-space-2);
	font-size: 0.875rem;
	color: var(--mauride-success);
	font-weight: 600;
}
.mauride-coupon__feedback.is-error { color: var(--mauride-error); }

.mauride-payment-modes {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--mauride-space-3);
	margin: var(--mauride-space-4) 0;
}
@media (min-width: 640px) { .mauride-payment-modes { grid-template-columns: 1fr 1fr; } }
.mauride-payment-mode {
	display: block;
	padding: 0;
	border: 2px solid var(--mauride-border);
	border-radius: var(--mauride-radius);
	cursor: pointer;
	transition: all var(--mauride-transition);
}
.mauride-payment-mode:hover { border-color: var(--mauride-primary); }
.mauride-payment-mode label {
	display: flex;
	align-items: flex-start;
	gap: var(--mauride-space-3);
	padding: var(--mauride-space-4);
	cursor: pointer;
	margin: 0;
}
.mauride-payment-mode input[type="radio"] { accent-color: var(--mauride-primary); margin-top: 3px; flex-shrink: 0; }
.mauride-payment-mode:has(input:checked) {
	border-color: var(--mauride-primary);
	background: var(--mauride-primary-light);
}
.mauride-payment-modes.mauride-payment-modes--single { grid-template-columns: 1fr; }
.mauride-payment-mode--info {
	padding: var(--mauride-space-4);
	cursor: default;
}
.mauride-payment-mode--info:hover { border-color: var(--mauride-border); }
.mauride-payment-mode--info span {
	display: flex;
	flex-direction: column;
	gap: var(--mauride-space-1);
}

#mauride-stripe-card {
	/* Le Payment Element (Stripe) fournit son propre cadre/champs : on garde juste
	   l'espacement + une hauteur mini pour éviter le saut de mise en page au montage. */
	margin: var(--mauride-space-3) 0;
	min-height: 44px;
}
#mauride-stripe-card.mauride-stripe-card--boxed {
	/* Mode « carte seule » : le Card Element est un champ unique sans cadre propre —
	   on lui donne l'apparence d'un input. */
	border: 1px solid var(--mauride-border);
	border-radius: var(--mauride-radius);
	padding: 12px 14px;
	background: #fff;
}
.mauride-stripe-hint {
	font-size: 0.8125rem;
	color: var(--mauride-text-muted);
}

/* ====================================================================
   18. CALENDRIER / DISPONIBILITÉ
   ==================================================================== */
.mauride-calendar {
	display: grid;
	grid-template-columns: repeat(7, 1fr);
	gap: 4px;
}
.mauride-calendar__day {
	aspect-ratio: 1;
	display: flex;
	align-items: center;
	justify-content: center;
	background: var(--mauride-bg-muted);
	border-radius: var(--mauride-radius-sm);
	font-size: 0.8125rem;
	cursor: pointer;
	transition: background var(--mauride-transition);
}
.mauride-calendar__day--unavailable {
	background: rgba(239, 68, 68, 0.12);
	color: var(--mauride-error);
	text-decoration: line-through;
	cursor: not-allowed;
}
.mauride-calendar__day--selected { background: var(--mauride-primary); color: #fff; }
.mauride-calendar__day--in-range { background: var(--mauride-primary-light); color: var(--mauride-primary-dark); }
.mauride-calendar__loading {
	padding: var(--mauride-space-4);
	text-align: center;
	color: var(--mauride-text-muted);
	font-size: 0.875rem;
}

/* Grille de mois (calendrier de disponibilité fiche véhicule) */
.mauride-avail-grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--mauride-space-5);
}
@media (min-width: 640px) { .mauride-avail-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .mauride-avail-grid { grid-template-columns: repeat(3, 1fr); } }
.mauride-avail-month__title {
	font-size: 0.9375rem;
	font-weight: 700;
	margin: 0 0 var(--mauride-space-3);
	color: var(--mauride-text);
	text-align: center;
}
.mauride-calendar__head {
	font-size: 0.6875rem;
	font-weight: 700;
	color: var(--mauride-text-muted);
	text-align: center;
	text-transform: uppercase;
}
.mauride-calendar__day--empty { visibility: hidden; }
.mauride-calendar__day--free {
	background: rgba(5, 150, 105, 0.1);
	color: var(--mauride-success);
	font-weight: 600;
}
.mauride-calendar__day--past {
	color: var(--mauride-border-strong);
	cursor: default;
}
.mauride-calendar__day--today {
	outline: 2px solid var(--mauride-primary);
	outline-offset: -2px;
	font-weight: 800;
}
.mauride-calendar__day--free:hover {
	background: rgba(5, 150, 105, 0.22);
}
/* Surcharges nécessaires car `--free` est déclaré APRÈS `--selected`/`--in-range`
   et gagnerait sur la spécificité égale. */
.mauride-calendar__day--free.mauride-calendar__day--in-range,
.mauride-calendar__day--in-range {
	background: var(--mauride-primary-light);
	color: var(--mauride-primary-dark);
}
.mauride-calendar__day--free.mauride-calendar__day--selected,
.mauride-calendar__day--selected {
	background: var(--mauride-primary);
	color: #fff;
}

/* Légende */
.mauride-availability-legend {
	display: flex;
	align-items: center;
	gap: var(--mauride-space-4);
	font-size: 0.8125rem;
	color: var(--mauride-text-muted);
}
.mauride-avail-dot {
	display: inline-block;
	width: 12px;
	height: 12px;
	border-radius: 3px;
	margin-right: 4px;
	vertical-align: middle;
}
.mauride-avail-dot--free { background: rgba(5, 150, 105, 0.25); border: 1px solid var(--mauride-success); }
.mauride-avail-dot--booked { background: rgba(239, 68, 68, 0.15); border: 1px solid var(--mauride-error); }
.mauride-avail-dot--today { background: var(--mauride-primary-light); border: 2px solid var(--mauride-primary); }

/* Options mini-grid sur fiche véhicule (lecture seule, pas de checkboxes) */
.mauride-single-options { margin: var(--mauride-space-4) 0; }
.mauride-single-options__grid {
	display: flex;
	flex-direction: column;
	gap: var(--mauride-space-2);
}
.mauride-single-options__hint {
	margin: 0 0 var(--mauride-space-2);
	font-size: 0.75rem;
	color: var(--mauride-text-muted);
}
.mauride-single-option {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--mauride-space-2);
	padding: 8px 12px;
	background: var(--mauride-bg-alt);
	border: 1px solid transparent;
	border-radius: var(--mauride-radius-sm);
	font-size: 0.8125rem;
	overflow: hidden;
	cursor: pointer;
	transition: var(--mauride-transition);
}
.mauride-single-option:hover { background: var(--mauride-bg-muted); }
.mauride-single-option__check {
	flex: none;
	width: 16px;
	height: 16px;
	margin: 0;
	accent-color: var(--mauride-primary);
	cursor: pointer;
}
.mauride-single-option:has(.mauride-single-option__check:checked) {
	border-color: var(--mauride-primary);
	background: var(--mauride-primary-light);
}
.mauride-single-option__icon { display: none; }
.mauride-single-option__name {
	flex: 1;
	min-width: 0;
	font-weight: 600;
	color: var(--mauride-text);
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}
.mauride-single-option__price {
	font-weight: 700;
	color: var(--mauride-primary);
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
}
.mauride-single-option__price small {
	font-weight: 500;
	color: var(--mauride-text-muted);
}

.mauride-daterange {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: var(--mauride-space-3);
}

/* ====================================================================
   19. CURRENCY TOGGLE
   ==================================================================== */
.mauride-currency-toggle {
	display: inline-flex;
	background: var(--mauride-bg-muted);
	border-radius: var(--mauride-radius-full);
	padding: 4px;
}
.mauride-currency-toggle button {
	background: none;
	border: none;
	padding: 6px 14px;
	font-weight: 600;
	font-size: 0.8125rem;
	border-radius: var(--mauride-radius-full);
	cursor: pointer;
	color: var(--mauride-text-muted);
	font-family: inherit;
}
.mauride-currency-toggle button[aria-pressed="true"] {
	background: var(--mauride-bg);
	color: var(--mauride-primary);
	box-shadow: var(--mauride-shadow-sm);
}

/* ====================================================================
   20. BADGES & STATUSES
   ==================================================================== */
.mauride-badge {
	display: inline-flex;
	align-items: center;
	padding: 4px 10px;
	border-radius: var(--mauride-radius-full);
	font-size: 0.75rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.04em;
}
.mauride-badge--success, .mauride-badge--confirmed { background: rgba(16, 185, 129, 0.15); color: var(--mauride-success); }
.mauride-badge--warning, .mauride-badge--pending   { background: rgba(217, 119, 6, 0.15); color: var(--mauride-warning); }
.mauride-badge--error,   .mauride-badge--cancelled { background: rgba(220, 38, 38, 0.15); color: var(--mauride-error); }
.mauride-badge--info, .mauride-badge--in_progress  { background: var(--mauride-primary-light); color: var(--mauride-primary); }
.mauride-badge--muted, .mauride-badge--completed   { background: var(--mauride-bg-muted); color: var(--mauride-text-muted); }

/* ====================================================================
   MAP & LOCATIONS
   ==================================================================== */
.mauride-map {
	width: 100%;
	min-height: 320px;
	border-radius: var(--mauride-radius);
	overflow: hidden;
	background: var(--mauride-bg-muted);
	margin-top: var(--mauride-space-3);
}
.mauride-vehicle-single__pickup-map { margin-top: var(--mauride-space-5); }

/* Shortcode [mauride_locations_map] — wrapper et liste fallback */
.mauride-locations-map {
	display: flex;
	flex-direction: column;
	gap: var(--mauride-space-5);
	max-width: 1280px;
	margin: 0 auto;
	padding: var(--mauride-space-5) var(--mauride-space-4);
}
.mauride-locations-list {
	list-style: none;
	padding: 0;
	margin: 0;
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--mauride-space-4);
}
@media (min-width: 640px) { .mauride-locations-list { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .mauride-locations-list { grid-template-columns: repeat(3, 1fr); } }
.mauride-location-item {
	background: var(--mauride-bg);
	border: 1px solid var(--mauride-border);
	border-radius: var(--mauride-radius-lg);
	padding: var(--mauride-space-5);
	box-shadow: var(--mauride-shadow-sm);
	transition: transform var(--mauride-transition), box-shadow var(--mauride-transition);
	display: flex;
	flex-direction: column;
	gap: var(--mauride-space-2);
	position: relative;
	padding-left: calc(var(--mauride-space-5) + 32px);
}
.mauride-location-item:hover {
	transform: translateY(-2px);
	box-shadow: var(--mauride-shadow-md);
	border-color: var(--mauride-primary);
}
/* Pin icon avant chaque location */
.mauride-location-item::before {
	content: "";
	position: absolute;
	left: var(--mauride-space-5);
	top: var(--mauride-space-5);
	width: 22px;
	height: 22px;
	background: var(--mauride-primary);
	-webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'><path d='M20 10c0 7-8 13-8 13s-8-6-8-13a8 8 0 0 1 16 0z'/><circle cx='12' cy='10' r='3'/></svg>") no-repeat center / contain;
	mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'><path d='M20 10c0 7-8 13-8 13s-8-6-8-13a8 8 0 0 1 16 0z'/><circle cx='12' cy='10' r='3'/></svg>") no-repeat center / contain;
}
.mauride-location-item strong {
	font-size: 1rem;
	font-weight: 700;
	color: var(--mauride-text);
	line-height: 1.3;
}
.mauride-location-address {
	font-size: 0.875rem;
	color: var(--mauride-text-muted);
	line-height: 1.4;
}
.mauride-location-phone {
	font-size: 0.875rem;
	color: var(--mauride-primary);
	font-weight: 600;
	font-variant-numeric: tabular-nums;
	margin-top: 2px;
}
.mauride-location-phone::before {
	content: "\260E\00a0\00a0";
}

/* ====================================================================
   GALLERY
   ==================================================================== */
/* Masque les blocs du thème (titre, image à la une, auteur/date) sur la fiche
   véhicule : notre template les rend déjà avec un style cohérent.
   Cible les block themes (FSE) ET les thèmes classiques. */
body.single-mauride_vehicle .wp-block-post-title,
body.single-mauride_vehicle .wp-block-post-featured-image,
body.single-mauride_vehicle .wp-block-post-author,
body.single-mauride_vehicle .wp-block-post-author-name,
body.single-mauride_vehicle .wp-block-post-author-biography,
body.single-mauride_vehicle .wp-block-post-date,
body.single-mauride_vehicle .wp-block-post-terms,
body.single-mauride_vehicle .wp-block-avatar,
body.single-mauride_vehicle .entry-header,
body.single-mauride_vehicle .entry-meta,
body.single-mauride_vehicle .post-thumbnail,
body.single-mauride_vehicle .entry-footer {
	display: none !important;
}

/* ====================================================================
   ACCESSIBILITÉ — FOCUS VISIBLE
   ==================================================================== */
.mauride-wrap a:focus-visible,
.mauride-wrap button:focus-visible,
.mauride-wrap [tabindex]:focus-visible,
[class^="mauride-"] a:focus-visible,
[class^="mauride-"] button:focus-visible,
.mauride-vehicle-card:focus-within,
.mauride-option:focus-within,
.mauride-calendar__day:focus-visible {
	outline: 3px solid var(--mauride-primary);
	outline-offset: 3px;
	border-radius: var(--mauride-radius-sm);
}

/* Chiffres tabulaires pour les prix */
.mauride-vcard__price,
.mauride-card__price-value,
.mauride-breakdown__row,
.mauride-breakdown__list li,
[data-mauride-price],
[data-mauride-amount] {
	font-variant-numeric: tabular-nums;
	font-feature-settings: "tnum";
}

/* Screen-reader only */
.mauride-sr-only {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

/* ====================================================================
   MODALE DÉTAIL RÉSERVATION
   ==================================================================== */
.mauride-modal-overlay {
	position: fixed;
	inset: 0;
	z-index: 99999;
	background: rgba(0, 0, 0, 0.5);
	backdrop-filter: blur(4px);
	display: flex;
	align-items: center;
	justify-content: center;
	padding: var(--mauride-space-4);
}
.mauride-modal-overlay[hidden] { display: none !important; }
.mauride-modal {
	background: var(--mauride-bg);
	border-radius: var(--mauride-radius-lg);
	box-shadow: var(--mauride-shadow-lg);
	width: 100%;
	max-width: 640px;
	max-height: 85vh;
	display: flex;
	flex-direction: column;
	overflow: hidden;
	animation: mauride-modal-in 250ms ease;
}
@keyframes mauride-modal-in {
	from { opacity: 0; transform: translateY(16px) scale(0.97); }
	to   { opacity: 1; transform: translateY(0) scale(1); }
}
.mauride-modal__header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: var(--mauride-space-4) var(--mauride-space-5);
	border-bottom: 1px solid var(--mauride-border);
}
.mauride-modal__header .mauride-section-title { margin: 0; }
.mauride-modal__close {
	background: none;
	border: none;
	font-size: 1.5rem;
	color: var(--mauride-text-muted);
	cursor: pointer;
	padding: 4px 8px;
	line-height: 1;
	border-radius: var(--mauride-radius-sm);
	transition: all var(--mauride-transition);
}
.mauride-modal__close:hover { background: var(--mauride-bg-muted); color: var(--mauride-text); }
.mauride-modal__body {
	padding: var(--mauride-space-5);
	overflow-y: auto;
}
.mauride-detail-table {
	width: 100%;
	border-collapse: collapse;
}
.mauride-detail-table th,
.mauride-detail-table td {
	padding: 10px 12px;
	text-align: left;
	border-bottom: 1px solid var(--mauride-border);
	font-size: 0.9375rem;
	vertical-align: top;
}
.mauride-detail-table th {
	width: 140px;
	color: var(--mauride-text-muted);
	font-weight: 600;
	font-size: 0.8125rem;
	white-space: nowrap;
}
.mauride-detail-table td { color: var(--mauride-text); }
.mauride-detail-table td strong {
	font-weight: 700;
	font-variant-numeric: tabular-nums;
}
.mauride-detail-table small { color: var(--mauride-text-muted); }

/* Dates stylisées dans la modale détail */
.mauride-detail-dates {
	display: flex;
	align-items: center;
	gap: var(--mauride-space-3);
	flex-wrap: wrap;
}
.mauride-detail-dates__block {
	display: flex;
	flex-direction: column;
	gap: 2px;
	padding: 8px 14px;
	background: var(--mauride-bg-alt);
	border-radius: var(--mauride-radius-sm);
	border: 1px solid var(--mauride-border);
}
.mauride-detail-dates__label {
	font-size: 0.6875rem;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	color: var(--mauride-text-muted);
}
.mauride-detail-dates__block strong {
	font-size: 0.9375rem;
	color: var(--mauride-text);
}
.mauride-detail-dates__arrow {
	font-size: 1.25rem;
	color: var(--mauride-primary);
	font-weight: 700;
}
.mauride-detail-dates__days {
	padding: 4px 10px;
	background: var(--mauride-primary-light);
	color: var(--mauride-primary);
	border-radius: var(--mauride-radius-full);
	font-size: 0.75rem;
	font-weight: 700;
}

/* Utilitaires */
.mauride-hidden { display: none !important; }
.mauride-sticky { position: sticky; top: var(--mauride-space-5); }
.mauride-mt-4 { margin-top: var(--mauride-space-4); }
.mauride-mt-6 { margin-top: var(--mauride-space-6); }
.mauride-mt-8 { margin-top: var(--mauride-space-8); }
.mauride-flex-between { display: flex; align-items: center; justify-content: space-between; gap: var(--mauride-space-3); }

/* Panier combiné ([mauride_cart]) */
.mauride-cart__empty {
	padding: var(--mauride-space-8) var(--mauride-space-5);
	text-align: center;
	color: var(--mauride-text-muted);
	background: var(--mauride-bg-muted);
	border: 1px dashed var(--mauride-border);
	border-radius: var(--mauride-radius-lg);
}
.mauride-cart__list {
	list-style: none;
	margin: 0 0 var(--mauride-space-5);
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: var(--mauride-space-3);
}
.mauride-cart__item {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--mauride-space-4);
	padding: var(--mauride-space-4);
	background: var(--mauride-bg);
	border: 1px solid var(--mauride-border);
	border-radius: var(--mauride-radius);
	box-shadow: var(--mauride-shadow-sm);
}
.mauride-cart__item-body {
	display: flex;
	flex-direction: column;
	gap: var(--mauride-space-1);
	min-width: 0;
}
.mauride-cart__item-label {
	font-weight: 700;
	color: var(--mauride-text);
}
.mauride-cart__item-meta {
	font-size: 0.8125rem;
	color: var(--mauride-text-muted);
}
.mauride-cart__item-price {
	font-weight: 700;
	color: var(--mauride-primary);
	white-space: nowrap;
}
.mauride-cart__remove {
	flex: none;
	margin-left: var(--mauride-space-3);
	padding: 4px 10px;
	font-size: 0.8125rem;
	color: var(--mauride-error);
	background: transparent;
	border: 1px solid var(--mauride-border);
	border-radius: var(--mauride-radius-sm);
	cursor: pointer;
	transition: var(--mauride-transition);
}
.mauride-cart__remove:hover {
	color: var(--mauride-text-inverse);
	background: var(--mauride-error);
	border-color: var(--mauride-error);
}
.mauride-cart-line--unavailable {
	border-color: var(--mauride-warning);
	background: color-mix(in srgb, var(--mauride-warning) 8%, var(--mauride-bg));
}
.mauride-cart__item-unavailable {
	font-size: 0.8125rem;
	font-weight: 600;
	color: var(--mauride-warning);
}
.mauride-cart__totals {
	margin: 0 0 var(--mauride-space-5);
	padding: var(--mauride-space-4);
	background: var(--mauride-bg-alt);
	border: 1px solid var(--mauride-border);
	border-radius: var(--mauride-radius);
}
.mauride-cart__totals-row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--mauride-space-3);
	padding: 4px 0;
	font-size: 0.9375rem;
	color: var(--mauride-text);
}
.mauride-cart__totals-row--total {
	margin-top: var(--mauride-space-2);
	padding-top: var(--mauride-space-3);
	border-top: 1px solid var(--mauride-border-strong);
	font-size: 1.0625rem;
	font-weight: 700;
}
.mauride-cart__totals-row--total span:last-child {
	color: var(--mauride-primary);
}
.mauride-cart__line-specifics {
	display: flex;
	flex-direction: column;
	gap: var(--mauride-space-4);
}
.mauride-cart__line-specific {
	padding: var(--mauride-space-4);
	background: var(--mauride-bg-muted);
	border: 1px solid var(--mauride-border);
	border-radius: var(--mauride-radius);
}
.mauride-cart__line-specific-title {
	display: block;
	margin-bottom: var(--mauride-space-3);
	font-weight: 700;
	color: var(--mauride-text);
}
.mauride-cart__feedback {
	margin-top: var(--mauride-space-3);
	font-size: 0.875rem;
}
.mauride-cart__feedback--error { color: var(--mauride-error); }
.mauride-cart-feedback--success { color: var(--mauride-success); }
.mauride-cart__coupon {
	margin: 0 0 var(--mauride-space-4);
	padding: var(--mauride-space-4);
	background: var(--mauride-bg-muted);
	border: 1px solid var(--mauride-border);
	border-radius: var(--mauride-radius);
}
.mauride-cart__coupon-label {
	display: block;
	margin-bottom: var(--mauride-space-2);
	font-weight: 600;
	font-size: 0.875rem;
	color: var(--mauride-text);
}
.mauride-cart__coupon-row {
	display: flex;
	gap: var(--mauride-space-2);
	align-items: stretch;
}
.mauride-cart__coupon-row input {
	flex: 1;
	min-width: 0;
	padding: 8px 12px;
	border: 1px solid var(--mauride-border);
	border-radius: var(--mauride-radius-sm);
	font-size: 0.875rem;
	text-transform: uppercase;
}
.mauride-cart__coupon-feedback {
	margin: var(--mauride-space-2) 0 0;
	font-size: 0.8125rem;
}
.mauride-cart__coupon-feedback--ok { color: var(--mauride-success); }
.mauride-cart__coupon-feedback--error { color: var(--mauride-error); }

/* ====================================================================
   P2.4 — Récap sticky du panier (produits, dates, coupon, total, annulation)
   ==================================================================== */
.mauride-cart-recap__items {
	list-style: none;
	margin: 0 0 var(--mauride-space-3);
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: var(--mauride-space-2);
}
.mauride-cart-recap__item {
	display: flex;
	flex-direction: column;
	gap: 2px;
	padding-bottom: var(--mauride-space-2);
	border-bottom: 1px solid var(--mauride-border);
}
.mauride-cart-recap__item-name { font-weight: 600; font-size: 0.9375rem; }
.mauride-cart-recap__item-dates { font-size: 0.8125rem; color: var(--mauride-text-muted); font-variant-numeric: tabular-nums; }
.mauride-cart-recap__totals {
	display: flex;
	flex-direction: column;
	gap: var(--mauride-space-1);
	margin-top: var(--mauride-space-2);
}
.mauride-cart-recap__row {
	display: flex;
	justify-content: space-between;
	gap: var(--mauride-space-3);
	font-size: 0.875rem;
}
.mauride-cart-recap__row strong { font-variant-numeric: tabular-nums; }
.mauride-cart-recap__row--discount { color: var(--mauride-success); }
.mauride-cart-recap__row--total {
	margin-top: var(--mauride-space-1);
	padding-top: var(--mauride-space-2);
	border-top: 1px solid var(--mauride-border);
	font-size: 1.05rem;
	font-weight: 800;
}
.mauride-cart-recap__cancel {
	margin: var(--mauride-space-3) 0 0;
	padding: var(--mauride-space-2) var(--mauride-space-3);
	background: rgba(5, 150, 105, 0.10);
	color: var(--mauride-success);
	border-radius: var(--mauride-radius);
	font-size: 0.8125rem;
	font-weight: 600;
}

/* ====================================================================
   Solde en ligne — badge de statut de paiement, bouton compact, carte Stripe
   ==================================================================== */
.mauride-pay-status {
	display: inline-flex;
	align-items: center;
	gap: var(--mauride-space-1);
	padding: 4px 10px;
	border-radius: var(--mauride-radius-full);
	background: var(--mauride-bg-muted);
	color: var(--mauride-text-muted);
	font-size: 0.75rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.04em;
}
.mauride-pay-status em { font-style: normal; font-weight: 600; text-transform: none; letter-spacing: normal; }
.mauride-pay-status--paid { background: rgba(16, 185, 129, 0.15); color: var(--mauride-success); }
.mauride-pay-status--partial { background: rgba(217, 119, 6, 0.15); color: var(--mauride-warning); }
.mauride-pay-status--unpaid { background: var(--mauride-bg-muted); color: var(--mauride-text-muted); }

.mauride-button--sm,
.mauride-btn--sm {
	min-height: 34px;
	padding: 0 var(--mauride-space-3);
	font-size: 0.8125rem;
}

#mauride-balance-card {
	/* Champ Stripe (Card Element) sans cadre propre pour le paiement du solde :
	   même traitement que #mauride-stripe-card.mauride-stripe-card--boxed. */
	border: 1px solid var(--mauride-border);
	border-radius: var(--mauride-radius);
	padding: 12px 14px;
	background: var(--mauride-bg);
	min-height: 44px;
	margin: var(--mauride-space-2) 0;
}

/* ============================================================
   Carrousel photos réutilisable (fiches & cartes)
   ============================================================ */
.mauride-carousel {
	position: relative;
	width: 100%;
}
.mauride-carousel__viewport {
	position: relative;
	height: 100%;
	overflow: hidden;
	border-radius: inherit;
}
.mauride-carousel__track {
	display: flex;
	height: 100%;
	transition: transform var(--mauride-transition);
	will-change: transform;
}
.mauride-carousel__slide {
	flex: 0 0 100%;
	min-width: 0;
	display: block;
	margin: 0;
	padding: 0;
	border: none;
	background: none;
	overflow: hidden;
}
/* Curseur main uniquement sur les slides cliquables (cartes → lien fiche). */
a.mauride-carousel__slide,
button.mauride-carousel__slide {
	cursor: pointer;
}
.mauride-carousel__image {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}
.mauride-carousel__arrow {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	width: 36px;
	height: 36px;
	display: flex;
	align-items: center;
	justify-content: center;
	border: none;
	border-radius: var(--mauride-radius-full);
	background: rgba(255, 255, 255, 0.92);
	color: #0f172a;
	font-size: 22px;
	line-height: 1;
	cursor: pointer;
	box-shadow: var(--mauride-shadow-sm);
	z-index: 2;
	transition: background var(--mauride-transition);
}
.mauride-carousel__arrow:hover {
	background: #fff;
}
.mauride-carousel__arrow--prev {
	left: 10px;
}
.mauride-carousel__arrow--next {
	right: 10px;
}
.mauride-carousel__dots {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 10px;
	display: flex;
	gap: 6px;
	justify-content: center;
	z-index: 2;
}
.mauride-carousel__dot {
	width: 7px;
	height: 7px;
	padding: 0;
	border: none;
	border-radius: var(--mauride-radius-full);
	background: rgba(255, 255, 255, 0.6);
	cursor: pointer;
	transition: background var(--mauride-transition), transform var(--mauride-transition);
}
.mauride-carousel__dot.is-active {
	background: #fff;
	transform: scale(1.3);
}
.mauride-carousel__counter {
	position: absolute;
	right: 10px;
	bottom: 10px;
	padding: 2px 8px;
	border-radius: var(--mauride-radius-full);
	background: rgba(15, 23, 42, 0.6);
	color: #fff;
	font-size: 0.8rem;
	z-index: 2;
}

/* Contexte FICHE : hero large, contrôles toujours visibles. */
.mauride-vehicle-single__gallery .mauride-carousel {
	border-radius: var(--mauride-radius-lg);
	overflow: hidden;
	box-shadow: var(--mauride-shadow-md);
}
.mauride-vehicle-single__gallery .mauride-carousel__viewport {
	aspect-ratio: 16 / 9;
}

/* Contexte CARTE : le carrousel remplit le média, contrôles révélés au survol/focus. */
.mauride-card__media .mauride-carousel {
	position: absolute;
	inset: 0;
}
.mauride-card__media .mauride-carousel__arrow,
.mauride-card__media .mauride-carousel__dots {
	opacity: 0;
	transition: opacity var(--mauride-transition);
}
.mauride-card:hover .mauride-carousel__arrow,
.mauride-card:focus-within .mauride-carousel__arrow,
.mauride-card:hover .mauride-carousel__dots,
.mauride-card:focus-within .mauride-carousel__dots {
	opacity: 1;
}

@media (max-width: 640px) {
	.mauride-carousel__arrow {
		width: 32px;
		height: 32px;
		font-size: 20px;
	}
	/* Tactile : contrôles toujours visibles sur les cartes (pas de survol). */
	.mauride-card__media .mauride-carousel__arrow,
	.mauride-card__media .mauride-carousel__dots {
		opacity: 1;
	}
}

/* Fiche : conteneur galerie = contexte de positionnement pour le bouton « voir toutes ». */
