/* ============================================================
   Lakour des Fées — le mouvement
   Tout ce qui bouge répond à prefers-reduced-motion.
   ============================================================ */

/* ---------- Poussière d’or ambiante ---------- */
.ldf-poussiere {
	position: absolute;
	inset: 0;
	overflow: hidden;
	pointer-events: none;
	z-index: 0;
}
.ldf-poussiere i {
	position: absolute;
	width: 3px;
	height: 3px;
	border-radius: 50%;
	background: var(--lkf-gold);
	opacity: 0;
	animation: ldf-derive linear infinite;
}
@keyframes ldf-derive {
	0%   { opacity: 0; transform: translate3d(0, 12px, 0) scale(.4); }
	12%  { opacity: .7; }
	78%  { opacity: .5; }
	100% { opacity: 0; transform: translate3d(14px, -110px, 0) scale(1.1); }
}
.ldf-hero > .ldf-shell { position: relative; z-index: 1; }

/* ---------- Le Pass qui se remplit ---------- */
/* Les pastilles se posent une à une, comme les gommettes du vrai Pass. */
.ldf-js .lkf-couleur__pastille {
	transform: scale(.55);
	opacity: 0;
	transition: transform .55s var(--lkf-ease), opacity .4s var(--lkf-ease);
}
.ldf-js .lkf-pass.is-visible .lkf-couleur__pastille { transform: scale(1); opacity: 1; }
.ldf-js .lkf-pass.is-visible .lkf-couleur:nth-child(1) .lkf-couleur__pastille { transition-delay: .10s; }
.ldf-js .lkf-pass.is-visible .lkf-couleur:nth-child(2) .lkf-couleur__pastille { transition-delay: .26s; }
.ldf-js .lkf-pass.is-visible .lkf-couleur:nth-child(3) .lkf-couleur__pastille { transition-delay: .42s; }
.ldf-js .lkf-pass.is-visible .lkf-couleur:nth-child(4) .lkf-couleur__pastille { transition-delay: .58s; }
.ldf-js .lkf-pass.is-visible .lkf-couleur:nth-child(5) .lkf-couleur__pastille { transition-delay: .74s; }

/* Le trait de liaison se trace derrière les pastilles. */
.ldf-js .lkf-couleur:not(:last-child)::after {
	transform: scaleX(0);
	transform-origin: left;
	transition: transform .4s var(--lkf-ease);
}
.ldf-js .lkf-pass.is-visible .lkf-couleur:not(:last-child)::after { transform: scaleX(1); }
.ldf-js .lkf-pass.is-visible .lkf-couleur:nth-child(1)::after { transition-delay: .22s; }
.ldf-js .lkf-pass.is-visible .lkf-couleur:nth-child(2)::after { transition-delay: .38s; }
.ldf-js .lkf-pass.is-visible .lkf-couleur:nth-child(3)::after { transition-delay: .54s; }
.ldf-js .lkf-pass.is-visible .lkf-couleur:nth-child(4)::after { transition-delay: .70s; }

/* Un éclat doré au moment où la pastille se pose. */
.lkf-couleur__pastille::after {
	content: "";
	position: absolute;
	inset: -6px;
	border-radius: 50%;
	border: 1.5px solid var(--lkf-gold);
	opacity: 0;
}
.lkf-couleur { position: relative; }
.lkf-couleur__pastille { position: relative; }
.ldf-js .lkf-pass.is-visible .lkf-couleur__pastille::after { animation: ldf-eclat .9s var(--lkf-ease) forwards; }
.ldf-js .lkf-pass.is-visible .lkf-couleur:nth-child(1) .lkf-couleur__pastille::after { animation-delay: .10s; }
.ldf-js .lkf-pass.is-visible .lkf-couleur:nth-child(2) .lkf-couleur__pastille::after { animation-delay: .26s; }
.ldf-js .lkf-pass.is-visible .lkf-couleur:nth-child(3) .lkf-couleur__pastille::after { animation-delay: .42s; }
.ldf-js .lkf-pass.is-visible .lkf-couleur:nth-child(4) .lkf-couleur__pastille::after { animation-delay: .58s; }
.ldf-js .lkf-pass.is-visible .lkf-couleur:nth-child(5) .lkf-couleur__pastille::after { animation-delay: .74s; }
@keyframes ldf-eclat {
	0%   { opacity: 0; transform: scale(.7); }
	35%  { opacity: .9; }
	100% { opacity: 0; transform: scale(1.5); }
}

/* ---------- Boutons : halo doré au survol ---------- */
.ldf-btn--primary { position: relative; overflow: hidden; }
.ldf-btn--primary::before {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(110deg, transparent 30%, rgba(228, 206, 147, .38) 50%, transparent 70%);
	transform: translateX(-120%);
	transition: transform .7s var(--lkf-ease);
}
.ldf-btn--primary:hover::before { transform: translateX(120%); }
.ldf-btn--primary > * { position: relative; }

/* ---------- Compteurs animés ---------- */
.ldf-chiffre__n { font-variant-numeric: tabular-nums; }

/* ---------- Cartes : élévation plus douce ---------- */
.lkf-edition, .lkf-partenaire, .ldf-fee, .lkf-pass__carte, .ldf-etape, .ldf-repartition__bloc {
	will-change: transform;
}
.lkf-pass__carte { transition: transform .35s var(--lkf-ease), box-shadow .35s var(--lkf-ease); }
.lkf-pass__carte:hover { transform: translateY(-3px); box-shadow: var(--lkf-shadow-sm); }

/* ---------- Révélations en cascade ---------- */
.ldf-js .ldf-stagger > * {
	opacity: 0;
	transform: translateY(18px);
	transition: opacity .6s var(--lkf-ease), transform .6s var(--lkf-ease);
}
.ldf-js .ldf-stagger.is-visible > * { opacity: 1; transform: none; }
.ldf-js .ldf-stagger.is-visible > *:nth-child(1) { transition-delay: .04s; }
.ldf-js .ldf-stagger.is-visible > *:nth-child(2) { transition-delay: .12s; }
.ldf-js .ldf-stagger.is-visible > *:nth-child(3) { transition-delay: .20s; }
.ldf-js .ldf-stagger.is-visible > *:nth-child(4) { transition-delay: .28s; }
.ldf-js .ldf-stagger.is-visible > *:nth-child(5) { transition-delay: .36s; }
.ldf-js .ldf-stagger.is-visible > *:nth-child(6) { transition-delay: .44s; }

@media (prefers-reduced-motion: reduce) {
	.ldf-poussiere { display: none; }
	.ldf-js .lkf-couleur__pastille,
	.ldf-js .ldf-stagger > * { opacity: 1; transform: none; transition: none; }
	.ldf-js .lkf-couleur:not(:last-child)::after { transform: scaleX(1); }
	.lkf-couleur__pastille::after { display: none; }
	.ldf-btn--primary::before { display: none; }
}
/* ---------- Fourche visiteur / exposant ---------- */
.ldf-fourche {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
	gap: 1.4rem;
}
.ldf-voie {
	position: relative;
	display: grid;
	gap: .5rem;
	align-content: start;
	padding: clamp(1.6rem, 4vw, 2.4rem);
	background: var(--lkf-white);
	border: 1px solid var(--lkf-line);
	border-radius: var(--lkf-radius-lg);
	text-decoration: none;
	color: inherit;
	overflow: hidden;
	transition: transform .38s var(--lkf-ease), box-shadow .38s var(--lkf-ease), border-color .38s var(--lkf-ease);
}
.ldf-voie::before {
	content: "";
	position: absolute;
	inset: 0 0 auto;
	height: 4px;
	background: linear-gradient(90deg, var(--lkf-sage-deep), var(--lkf-gold));
	transform: scaleX(0);
	transform-origin: left;
	transition: transform .5s var(--lkf-ease);
}
.ldf-voie:hover { transform: translateY(-5px); box-shadow: var(--lkf-shadow); border-color: transparent; color: inherit; }
.ldf-voie:hover::before { transform: scaleX(1); }
.ldf-voie--exposant::before { background: linear-gradient(90deg, var(--lkf-violet), var(--lkf-violet-light)); }

.ldf-voie__ico {
	display: grid;
	place-items: center;
	width: 56px;
	height: 56px;
	border-radius: 50%;
	background: var(--lkf-cream-deep);
	color: var(--lkf-sage-deep);
	margin-bottom: .6rem;
	transition: transform .45s var(--lkf-ease), background-color .38s var(--lkf-ease);
}
.ldf-voie--exposant .ldf-voie__ico { background: var(--lkf-mauve-mist); color: var(--lkf-violet); }
.ldf-voie:hover .ldf-voie__ico { transform: scale(1.08) rotate(-6deg); }

.ldf-voie__kicker { font-size: .72rem; letter-spacing: .2em; text-transform: uppercase; color: var(--lkf-gold); margin: 0; }
.ldf-voie h3 { margin: 0 0 .3rem; font-size: clamp(1.3rem, 2.6vw, 1.7rem); }
.ldf-voie p { margin: 0 0 1rem; color: var(--lkf-ink-soft); font-size: .98rem; }
.ldf-voie__liste { list-style: none; margin: 0 0 1.3rem; padding: 0; display: grid; gap: .45rem; }
.ldf-voie__liste li { display: flex; gap: .6rem; align-items: flex-start; font-size: .94rem; color: var(--lkf-ink-soft); }
.ldf-voie__liste li::before { content: "✦"; color: var(--lkf-gold); flex: none; font-size: .8em; margin-top: .25em; }
.ldf-voie__cta {
	display: inline-flex;
	align-items: center;
	gap: .5em;
	font-family: var(--lkf-font-display);
	font-size: 1.05rem;
	color: var(--lkf-violet);
}
.ldf-voie__cta span { transition: transform .35s var(--lkf-ease); }
.ldf-voie:hover .ldf-voie__cta span { transform: translateX(5px); }

/* ---------- Compte à rebours ---------- */
.ldf-rebours { display: flex; flex-wrap: wrap; gap: .7rem; }
.ldf-rebours__bloc {
	display: grid;
	justify-items: center;
	min-width: 68px;
	padding: .7rem .6rem;
	border-radius: 14px;
	background: var(--lkf-white);
	border: 1px solid var(--lkf-line);
}
.ldf-rebours__n {
	font-family: var(--lkf-font-display);
	font-size: 1.6rem;
	line-height: 1;
	color: var(--lkf-violet);
	font-variant-numeric: tabular-nums;
}
.ldf-rebours__l { font-size: .68rem; letter-spacing: .12em; text-transform: uppercase; color: var(--lkf-ink-faint); margin-top: .25rem; }

/* ---------- Bandeau d’action mobile ---------- */
.ldf-barre-mobile {
	position: fixed;
	left: 0; right: 0; bottom: 0;
	z-index: 65;
	display: none;
	align-items: center;
	justify-content: space-between;
	gap: .9rem;
	padding: .7rem var(--lkf-gutter) calc(.7rem + env(safe-area-inset-bottom));
	background: color-mix(in srgb, var(--lkf-cream) 94%, transparent);
	backdrop-filter: saturate(160%) blur(14px);
	-webkit-backdrop-filter: saturate(160%) blur(14px);
	border-top: 1px solid var(--lkf-line);
	transform: translateY(110%);
	transition: transform .45s var(--lkf-ease);
}
.ldf-barre-mobile.is-visible { transform: none; }
.ldf-barre-mobile__txt { display: grid; line-height: 1.25; min-width: 0; }
.ldf-barre-mobile__quoi { font-size: .72rem; letter-spacing: .14em; text-transform: uppercase; color: var(--lkf-gold); }
.ldf-barre-mobile__quand { font-family: var(--lkf-font-display); font-size: 1rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ldf-barre-mobile .ldf-btn { flex: none; padding: .8em 1.4em; font-size: .9rem; }

@media (max-width: 780px) {
	.ldf-barre-mobile { display: flex; }
	body.ldf-a-barre .ldf-footer { padding-bottom: 4.5rem; }
}
@media (prefers-reduced-motion: reduce) {
	.ldf-barre-mobile { transition: none; }
	.ldf-voie, .ldf-voie__ico, .ldf-voie__cta span { transition: none; }
}