/* =============================================================
   Marquee footer — "Le défilé". A monumental italic gold
   marquee scrolls horizontally across the marine background;
   the hex emblem is fixed at center, its soft marine halo
   occluding the text behind it so the hex punches through the
   stream of words like a wax seal pressed onto running ribbon.
   ============================================================= */

.ftr--marquee {
	position: relative;
	background: var(--bz-marine, #0B1E38);
	color: var(--bz-creme, #F4F1EA);
	padding: clamp(40px, 5vh, 64px) 0 clamp(28px, 3.5vh, 44px);
	overflow: hidden;
	isolation: isolate;
}

/* The footer is `data-reveal` so the IO can add `is-in` and the
   inner sub-elements (marquee, hex seal, sitemap nav, cosignatures)
   can animate. But the section ITSELF must stay visible from the
   start — otherwise the page-bg flashes white through the footer
   during scroll-in until the reveal finishes. */
.ftr--marquee[data-reveal] {
	opacity: 1;
	transform: none;
}

/* ------------- Mobile-only "partners-led" intro -------------
   Lead the mobile footer with the partner logos (ARQ, QSP, FCEI),
   preceded by a `── MEMBRE DE ──` eyebrow. Builds trust right at
   the page close before the hex emblem seal. Hidden on desktop —
   the desktop bottom row still carries the cosigns inline. */
.ftr--marquee .ftr__intro {
	display: none;
}

.ftr--marquee .ftr__intro-eyebrow {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 16px;
	margin: 0 auto clamp(20px, 3vh, 32px);
	font-family: var(--font-d);
	font-size: 11px;
	font-weight: 500;
	letter-spacing: 0.32em;
	text-transform: uppercase;
	color: var(--bz-or, #B89D64);
	line-height: 1;
}

.ftr--marquee .ftr__intro-eyebrow::before,
.ftr--marquee .ftr__intro-eyebrow::after {
	content: '';
	width: 40px;
	height: 1px;
	background: currentColor;
	opacity: 0.6;
	flex-shrink: 0;
}

.ftr--marquee .ftr__intro-eyebrow span {
	flex: 0 1 auto;
}

.ftr--marquee .ftr__intro-partners {
	display: flex;
	justify-content: center;
	align-items: center;
	gap: clamp(28px, 6vw, 44px);
	flex-wrap: wrap;
	margin: 0 auto clamp(32px, 5vh, 52px);
	padding: 0 clamp(20px, 5vw, 32px);
}

.ftr--marquee .ftr__intro-partner {
	display: inline-flex;
	align-items: center;
	height: clamp(28px, 4.5vw, 36px);
}

.ftr--marquee .ftr__intro-partner img {
	display: block;
	height: 100%;
	width: auto;
	max-width: clamp(78px, 18vw, 110px);
	object-fit: contain;
	/* Mirror the desktop cosign treatment (line 341): grayscale at rest
	   so the logos read as a sober trust strip; brand colours emerge on
	   hover/touch. Updated 2026-05-08 — was full-colour with a brightness
	   lift, but the user wants mobile to match the PC behaviour
	   (grey → couleur de marque au survol). */
	filter: grayscale(1) brightness(1.4) opacity(0.6);
	transition: filter 320ms ease-out;
}

.ftr--marquee .ftr__intro-partner:hover img,
.ftr--marquee .ftr__intro-partner:focus-visible img,
.ftr--marquee .ftr__intro-partner:active img {
	filter: grayscale(0.2) brightness(1.05) opacity(1);
}

/* ------------- Top: sitemap nav (centered) ------------- */

.ftr--marquee .ftr__nav {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 10px clamp(14px, 1.8vw, 28px);
	max-width: 1320px;
	margin: 0 auto clamp(40px, 5vh, 64px);
	padding: 0 clamp(20px, 4vw, 48px);
}

.ftr--marquee .ftr__nav-link {
	font-family: var(--font-d);
	font-size: clamp(10.5px, 0.76vw, 12px);
	font-weight: 500;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--bz-creme-78);
	text-decoration: none;
	padding: 6px 0;
	white-space: nowrap;
	opacity: 0;
	transform: translateY(8px);
	transition: opacity 600ms cubic-bezier(0.3, 0, 0, 1) var(--d, 0ms),
	            transform 600ms cubic-bezier(0.3, 0, 0, 1) var(--d, 0ms),
	            color 240ms ease-out;
}

.ftr--marquee.is-in .ftr__nav-link {
	opacity: 1;
	transform: translateY(0);
}

.ftr--marquee .ftr__nav-link:hover,
.ftr--marquee .ftr__nav-link:focus-visible {
	color: var(--bz-or, #B89D64);
	outline: none;
}

/* ------------- The stage: marquee + seal ------------- */

.ftr--marquee .ftr__stage {
	position: relative;
	width: 100%;
	height: clamp(320px, 40vh, 420px);
	overflow: hidden;
	margin-bottom: clamp(28px, 3.5vh, 48px);
	/* Polish: edge mask gradient — fade-in left/right edges so the words
	   emerge and dissolve gracefully instead of being cut brutally. */
	-webkit-mask-image: linear-gradient(to right,
		transparent 0%, black 8%, black 92%, transparent 100%);
	        mask-image: linear-gradient(to right,
		transparent 0%, black 8%, black 92%, transparent 100%);
}

/* Polish Distinctif: hairline doré au-dessus du marquee comme ouverture
   de chapitre éditorial. Centré, 64px de large, 1px d'épaisseur. */
.ftr--marquee .ftr__stage::before {
	content: "";
	display: block;
	width: 64px;
	height: 1px;
	background: var(--bz-or, #B89D64);
	margin: 0 auto clamp(20px, 3vh, 32px);
	opacity: 0.6;
	position: absolute;
	top: 0;
	left: 50%;
	transform: translateX(-32px);
	z-index: 2;
}

/* The scrolling typographic ribbon. Italic gold, very thin
   weight, monumental size. Two identical tracks side-by-side
   so the loop is seamless: when track-1 has scrolled fully
   left, track-2 has taken its place exactly. */
.ftr--marquee .ftr__marquee {
	position: absolute;
	inset: 0;
	display: flex;
	align-items: center;
	white-space: nowrap;
	opacity: 0;
	transition: opacity 1600ms cubic-bezier(0.25, 0.7, 0, 1) 100ms;
}

.ftr--marquee.is-in .ftr__marquee {
	opacity: 0.78; /* Polish: more present (was 0.62), pairs with screen blend below */
	mix-blend-mode: screen; /* Polish: text glows on marine background instead of sitting flat */
}

.ftr--marquee .ftr__marquee-track {
	display: inline-flex;
	flex-shrink: 0;
	animation: bz-marquee 150s linear infinite; /* Polish: slower tempo (was 112.5s) — reads as a pulse, not a parade */
	will-change: transform;
}

@keyframes bz-marquee {
	from { transform: translateX(0); }
	to   { transform: translateX(-100%); }
}

.ftr--marquee .ftr__marquee-word {
	font-family: var(--font-d);
	font-style: italic;
	font-weight: 200;
	font-size: clamp(60px, 9vw, 140px); /* Polish: refined scale (was 70-160) */
	letter-spacing: -0.02em;
	color: var(--bz-or, #B89D64);
	line-height: 1;
	padding: 0 clamp(20px, 3vw, 50px);
	user-select: none;
}

.ftr--marquee .ftr__marquee-glyph {
	font-family: var(--font-d);
	font-style: normal;
	font-weight: 300;
	font-size: clamp(44px, 7vw, 100px);
	color: var(--bz-or, #B89D64);
	padding: 0 clamp(28px, 4vw, 64px);
	opacity: 0.7;
	transform: translateY(-2px);
}

/* The seal: hex emblem fixed at center, with a soft marine halo
   underneath that occludes the marquee text passing behind it. */
.ftr--marquee .ftr__seal {
	position: absolute;
	left: 50%;
	top: 50%;
	width: clamp(170px, 20vw, 260px);
	aspect-ratio: 500 / 580;
	transform: translate(-50%, -50%) scale(0.92);
	opacity: 0;
	z-index: 2;
	transition: opacity 1200ms cubic-bezier(0.25, 0.7, 0, 1) 250ms,
	            transform 1200ms cubic-bezier(0.25, 0.7, 0, 1) 250ms;
	pointer-events: auto;
}

.ftr--marquee.is-in .ftr__seal {
	opacity: 1;
	transform: translate(-50%, -50%) scale(1);
}

/* The marine occluder behind the emblem — soft radial halo so
   the text "fades into" the seal rather than hitting a hard edge.
   Sized larger than the emblem itself. */
.ftr--marquee .ftr__seal::before {
	content: "";
	position: absolute;
	inset: -35%;
	background: radial-gradient(circle at center,
		var(--bz-marine, #0B1E38) 0%,
		var(--bz-marine, #0B1E38) 38%,
		rgba(11, 30, 56, 0.92) 52%,
		rgba(11, 30, 56, 0.6)  68%,
		rgba(11, 30, 56, 0.2)  82%,
		transparent            100%);
	z-index: -1;
	pointer-events: none;
}

.ftr--marquee .ftr__seal img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: contain;
	opacity: 0.88;
	filter: drop-shadow(0 12px 28px rgba(0, 0, 0, 0.45));
}

/* ------------- Bottom row: cosignatures + copyright ------------- */

.ftr--marquee .ftr__bottom {
	max-width: 1280px;
	width: 100%;
	margin: 0 auto;
	padding: clamp(20px, 2.5vh, 32px) clamp(24px, 4vw, 64px) 0;
	border-top: 1px solid rgba(184, 157, 100, 0.18);
	display: grid;
	grid-template-columns: 1fr auto 1fr;
	align-items: center;
	gap: clamp(16px, 2vw, 32px);
}

.ftr--marquee .ftr__bot-left  { justify-self: start; }
.ftr--marquee .ftr__bot-right { justify-self: end; text-align: right; }

.ftr--marquee .ftr__cosigns {
	display: flex;
	justify-content: center;
	align-items: center;
	gap: clamp(20px, 2.4vw, 36px);
	flex-wrap: wrap;
}

.ftr--marquee .ftr__cosign {
	display: inline-flex;
	align-items: center;
	height: clamp(20px, 1.8vw, 26px);
	opacity: 0;
	transform: translateY(6px);
	transition: opacity 700ms cubic-bezier(0.3, 0, 0, 1) var(--d, 1200ms),
	            transform 700ms cubic-bezier(0.3, 0, 0, 1) var(--d, 1200ms);
}

.ftr--marquee.is-in .ftr__cosign {
	opacity: 1;
	transform: translateY(0);
}

.ftr--marquee .ftr__cosign img {
	display: block;
	height: 100%;
	width: auto;
	max-width: clamp(56px, 6vw, 86px);
	object-fit: contain;
	filter: grayscale(1) brightness(1.4) opacity(0.6);
	transition: filter 320ms ease-out;
}

.ftr--marquee .ftr__cosign:hover img {
	filter: grayscale(0.2) brightness(1.05) opacity(1);
}

.ftr--marquee .ftr__bot-mark {
	font-family: var(--font-d);
	font-size: 11px;
	font-weight: 500;
	letter-spacing: 0.32em;
	text-transform: uppercase;
	color: rgba(244, 241, 234, 0.62);
	line-height: 1;
}

/* Legal sub-row — politique + mentions on their own line below the bottom
   row, centered, hairline gold separator above. Keeps the bottom row
   itself balanced (copyright | cosigns | tagline) and groups the legal
   links as a discreet footer-lite. */
.ftr--marquee .ftr__legal-row {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: 12px;
	margin-top: clamp(16px, 2vh, 24px);
	padding-top: clamp(14px, 1.8vh, 20px);
	border-top: 1px solid rgba(184, 157, 100, 0.14);
	font-family: var(--font-d);
	font-size: 10.5px;
	font-weight: 400;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	line-height: 1.4;
}

.ftr--marquee .ftr__legal-row a {
	color: rgba(244, 241, 234, 0.62);
	text-decoration: none;
	transition: color 320ms cubic-bezier(0.3, 0, 0, 1);
}

.ftr--marquee .ftr__legal-row a:hover,
.ftr--marquee .ftr__legal-row a:focus-visible {
	color: var(--bz-or, #B89D64);
	outline: none;
}

.ftr--marquee .ftr__legal-row span {
	color: rgba(244, 241, 234, 0.25);
}

/* ------------- Mobile (under 720px) ------------- */

@media (max-width: 720px) {
	/* Hamburger drawer carries the sitemap on mobile — drop the
	   cluttered nav row. The partners-led intro takes its place at
	   the top, and the bottom-row cosigns are hidden to avoid the
	   logos appearing twice. */
	.ftr--marquee .ftr__nav {
		display: none;
	}
	.ftr--marquee .ftr__intro {
		display: block;
		margin-top: clamp(8px, 2vh, 18px);
		/* L'eyebrow « Membre de » est en display: inline-flex (forcé en
		   !important par brand-light.css L894), donc margin:auto ne le
		   centre pas. On centre via text-align du parent — les
		   inline-flex respectent le text-align de leur conteneur block.
		   Les logos partenaires en dessous restent centrés via leur
		   propre .ftr__intro-partners (display:flex justify:center). */
		text-align: center;
	}
	.ftr--marquee .ftr__cosigns {
		display: none;
	}
	.ftr--marquee .ftr__stage {
		height: clamp(220px, 32vh, 280px);
	}
	.ftr--marquee .ftr__marquee-track {
		animation-duration: 66s;
	}
	.ftr--marquee .ftr__bottom {
		grid-template-columns: 1fr;
		text-align: center;
		gap: 18px;
	}
	.ftr--marquee .ftr__bot-left,
	.ftr--marquee .ftr__bot-right {
		justify-self: center;
		text-align: center;
	}
	/* "Tous droits réservés" tagline hidden on mobile — already implied
	   by the copyright on the same row, redundant on a small screen. */
	.ftr--marquee .ftr__bot-right {
		display: none;
	}
}

/* ------------- Fallback: reduced-motion OR no @keyframes support -------------
   When the device asks for reduced motion, OR the browser lacks animation
   support, the scrolling ribbon is removed entirely. Only the hex emblem
   (logo "B") remains, centered, at full opacity — same as the animated
   state, just without the moving wordmark behind it. */
@media (prefers-reduced-motion: reduce) {
	.ftr--marquee .ftr__marquee-track {
		animation: none;
		visibility: hidden;
	}
	/* Seal stays at full opacity / normal scale (the .is-in state). */
}

/* Defensive: browsers that do not support CSS animations fall back to the
   same layout — emblem only, no scrolling text. */
@supports not (animation-name: bz-marquee) {
	.ftr--marquee .ftr__marquee-track { visibility: hidden; }
}
