/* =========================================================================
   Luxoos — Revendeurs + carte de France ([luxoos_revendeurs])
   ========================================================================= */

:root {
	--lux-dlr-navy:      #123a56;
	--lux-dlr-bg:        #0d3a51;
	--lux-dlr-gold:      var(--lux-gold, #c8981c);
	--lux-dlr-cream:     #f2e6c9;
	--lux-dlr-region:    #d7e5ec;
	--lux-dlr-rule:      #e6ebef;
	--lux-dlr-muted:     #4d6577;
	--lux-dlr-radius:    320px;
	--lux-dealers-height: 420px;
}

.lux-dealers,
.lux-dealers *,
.lux-dealers *::before,
.lux-dealers *::after {
	box-sizing: border-box;
}

.lux-dealers {
	font-family: var(--lux-font, "Poppins", system-ui, sans-serif);
	color: var(--lux-dlr-navy);
	background: transparent;
	padding: 0;
}

/* Variante avec fond bleu : [luxoos_revendeurs class="lux-dealers--bg"] */
.lux-dealers--bg {
	background: var(--lux-dlr-bg);
	padding: clamp(1.5rem, 4vw, 3.5rem) clamp(1rem, 3vw, 2.5rem);
}

/* Pleine largeur : [luxoos_revendeurs class="lux-dealers--full"] */
.lux-dealers--full {
	width: 100vw;
	max-width: 100vw;
	margin-left: calc(50% - 50vw);
	margin-right: calc(50% - 50vw);
}

.lux-dealers__card {
	max-width: 1500px;
	margin: 0 auto;
	/* Le padding horizontal doit dépasser la corde de l'arrondi, sinon le
	   titre et la carte débordent de la forme blanche. */
	padding: clamp(2rem, 5vw, 4.5rem) clamp(1.5rem, 11vw, 175px);
	background: #fff;
	border-radius: var(--lux-dlr-radius);
}

.lux-dealers__grid {
	display: grid;
	grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr);
	gap: clamp(1.5rem, 4vw, 3.5rem);
	align-items: center;
}

/* ----------------------------------------------------------------- Titre */

.lux-dealers__title {
	margin: 0 0 1.5rem;
	font-size: clamp(1.35rem, 2.2vw, 1.85rem);
	font-weight: 700;
	line-height: 1.25;
	color: var(--lux-dlr-navy);
}

.lux-dealers__title-accent {
	color: var(--lux-dlr-gold);
}

/* ------------------------------------------------------- Liste scrollable */

.lux-dealers__list {
	max-height: var(--lux-dealers-height);
	margin: 0;
	padding: 0 1.75rem 0 0;
	overflow-y: auto;
	overscroll-behavior: contain;
	list-style: none;
	scrollbar-width: thin;
	scrollbar-color: var(--lux-dlr-navy) transparent;
}

.lux-dealers__list::-webkit-scrollbar {
	width: 7px;
}

.lux-dealers__list::-webkit-scrollbar-track {
	background: transparent;
}

.lux-dealers__list::-webkit-scrollbar-thumb {
	background: var(--lux-dlr-navy);
	border-radius: 4px;
}

.lux-dealers__list:focus-visible {
	outline: 2px solid var(--lux-dlr-gold);
	outline-offset: 4px;
	border-radius: 6px;
}

/* ------------------------------------------------------------ Une fiche */

.lux-dealer {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr) auto;
	align-items: start;
	gap: 0.15rem 0.85rem;
	padding: 1.1rem 0.5rem 1.1rem 0.4rem;
	border-radius: 10px;
	transition: background 180ms ease;
}

.lux-dealer + .lux-dealer {
	border-top: 1px solid var(--lux-dlr-rule);
}

.lux-dealer.is-active {
	background: #f4f8fa;
}

/* Badge numéroté (bouton « situer sur la carte ») */

.lux-dealer__locate {
	display: block;
	width: 34px;
	padding: 0;
	background: none;
	border: 0;
	cursor: pointer;
	line-height: 0;
}

.lux-dealer__locate svg {
	width: 34px;
	height: 51px;
	overflow: visible;
}

.lux-dealer__pin {
	fill: var(--lux-dlr-gold);
	transition: transform 180ms ease;
	transform-origin: 12px 36px;
}

.lux-dealer.is-active .lux-dealer__pin,
.lux-dealer__locate:hover .lux-dealer__pin {
	transform: scale(1.12);
}

.lux-dealer__num {
	fill: #fff;
	font-size: 11px;
	font-weight: 700;
	font-family: var(--lux-font, system-ui, sans-serif);
}

.lux-dealer__locate:focus-visible {
	outline: 2px solid var(--lux-dlr-gold);
	outline-offset: 2px;
	border-radius: 6px;
}

/* Contenu */

.lux-dealer__body {
	min-width: 0;
}

.lux-dealer__name {
	margin: 0 0 0.2rem;
	font-size: 0.97rem;
	font-weight: 700;
	line-height: 1.3;
	color: var(--lux-dlr-navy);
}

.lux-dealer__address,
.lux-dealer__desc {
	margin: 0;
	font-size: 0.9rem;
	line-height: 1.45;
	color: var(--lux-dlr-muted);
}

.lux-dealer__desc {
	margin-top: 0.15rem;
}

/* Bouton téléphone */

.lux-dealer__phone {
	display: inline-flex;
	align-items: center;
	gap: 0.6rem;
	padding: 0.55rem 0.85rem;
	font-size: 0.85rem;
	font-weight: 700;
	white-space: nowrap;
	color: var(--lux-dlr-navy);
	text-decoration: none;
	background: var(--lux-dlr-cream);
	border-radius: 7px;
	transition: background 160ms ease;
}

.lux-dealer__phone:hover,
.lux-dealer__phone:focus-visible {
	color: #000;
	background: #e9d9b2;
}

.lux-dealer__phone svg {
	flex: 0 0 auto;
	width: 17px;
	height: 17px;
}

/* ------------------------------------------------------------- La carte */

.lux-dealers__map {
	display: flex;
	justify-content: center;
}

.lux-map {
	width: 100%;
	max-width: 520px;
	height: auto;
	overflow: visible;
}

.lux-map__region {
	fill: var(--lux-dlr-region);
	stroke: #fff;
	stroke-width: 2.5;
	stroke-linejoin: round;
	transition: fill 200ms ease;
}

.lux-map__region.is-active {
	fill: var(--lux-dlr-navy);
}

.lux-map__region.is-highlight {
	fill: #1d5279;
}

.lux-map__inset-label {
	fill: var(--lux-dlr-navy);
	font-size: 21px;
	font-weight: 600;
	font-family: var(--lux-font, system-ui, sans-serif);
}

/* Marqueurs */

.lux-map__marker {
	cursor: pointer;
	transition: opacity 180ms ease;
}

.lux-map__pin {
	fill: var(--lux-dlr-gold);
	stroke: #fff;
	stroke-width: 1.4;
	transition: filter 180ms ease;
}

.lux-map__hit {
	pointer-events: all;
}

.lux-map__num {
	fill: #fff;
	font-size: 11px;
	font-weight: 700;
	font-family: var(--lux-font, system-ui, sans-serif);
	pointer-events: none;
}

.lux-map__marker.is-active .lux-map__pin {
	filter: drop-shadow(0 3px 5px rgba(0, 0, 0, 0.45));
}

.lux-map__markers.has-active .lux-map__marker:not(.is-active) {
	opacity: 0.55;
}

.lux-map__marker:focus-visible {
	outline: none;
}

.lux-map__marker:focus-visible .lux-map__pin {
	stroke: var(--lux-dlr-navy);
	stroke-width: 2.6;
}

/* -------------------------------------------------------- Responsive */

@media (max-width: 1100px) {
	:root {
		--lux-dlr-radius: 60px;
	}

	.lux-dealers__card {
		padding: clamp(1.75rem, 4vw, 3rem) clamp(1.25rem, 5vw, 3rem);
	}

	.lux-dealers__grid {
		grid-template-columns: 1fr;
		gap: 2rem;
	}

	.lux-dealers__map {
		order: -1;
	}

	.lux-map {
		max-width: 400px;
	}
}

@media (max-width: 680px) {
	:root {
		--lux-dlr-radius: 24px;
	}

	.lux-dealer {
		grid-template-columns: auto minmax(0, 1fr);
		gap: 0.5rem 0.85rem;
	}

	.lux-dealer__phone {
		grid-column: 2;
		justify-self: start;
		margin-top: 0.6rem;
	}

	.lux-dealers__list {
		padding-right: 1rem;
	}
}

@media (prefers-reduced-motion: reduce) {
	.lux-dealers *,
	.lux-map * {
		transition-duration: 0.01ms !important;
	}
}
