/* EvePics public.css — marketing + shared chrome */



@keyframes section-start-rotate {
	0% {
		background-position: 15% 15%;
	}

	12.5% {
		background-position: 50% 5%;
	}

	25% {
		background-position: 85% 15%;
	}

	37.5% {
		background-position: 95% 50%;
	}

	50% {
		background-position: 85% 85%;
	}

	62.5% {
		background-position: 50% 95%;
	}

	75% {
		background-position: 15% 85%;
	}

	87.5% {
		background-position: 5% 50%;
	}

	100% {
		background-position: 15% 15%;
	}
}/* ==========================================================================
   EvePics – Design system & layout
   Fonts: loaded once via <link preload> in main.php (no @import duplicate)
   ========================================================================== */

:root {
	--font-heading: 'Sora', system-ui, sans-serif;
	--font-body: 'DM Sans', system-ui, sans-serif;
	--bg-page: #f4f6f9;
	--bg-card: #ffffff;
	--bg-zebra: #eef1f5;
	--text-primary: #1a1d24;
	--text-secondary: #5c6370;
	--text-muted: #8b92a0;
	--border-subtle: rgba(0, 0, 0, 0.06);
	--border-default: rgba(0, 0, 0, 0.1);
	--accent: #0d9488;
	--accent-hover: #0f766e;
	--accent-muted: rgba(13, 148, 136, 0.12);
	--danger: #dc2626;
	--danger-hover: #b91c1c;
	--danger-muted: rgba(220, 38, 38, 0.1);
	--success: #059669;
	--success-hover: #047857;
	--success-muted: rgba(5, 150, 105, 0.12);
	--warning: #d97706;
	--warning-muted: rgba(217, 119, 6, 0.12);
	--shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.04);
	--shadow-md: 0 4px 12px rgba(0, 0, 0, 0.06), 0 2px 4px rgba(0, 0, 0, 0.04);
	--shadow-lg: 0 12px 24px rgba(0, 0, 0, 0.08), 0 4px 8px rgba(0, 0, 0, 0.04);
	--shadow-focus: 0 0 0 3px rgba(13, 148, 136, 0.25);
	--radius-sm: 8px;
	--radius-md: 12px;
	--radius-lg: 16px;
	--radius-full: 9999px;
	--space-xs: 0.25rem;
	--space-sm: 0.5rem;
	--space-md: 1rem;
	--space-lg: 1.5rem;
	--space-xl: 2rem;
	--space-2xl: 2.5rem;
	/* Hauteur visuelle du bloc header + encoche (safe area) pour position: sticky / top */
	--header-height: calc(64px + env(safe-area-inset-top, 0px));
	--content-max: 720px;
	--section-min-width: 320px;
	--transition: 0.2s ease;
	--picture-thumb-size: 160px;
	--picture-moderation-size: min(280px, 45vw);
	--bg-sticky: rgba(255, 255, 255, 0.82);
	--bg-sticky-border: rgba(0, 0, 0, 0.08);
}

@media (prefers-color-scheme: dark) {
:root {
		--bg-page: #0f1216;
		--bg-card: #1a1e26;
		--bg-zebra: #2a3140;
		--text-primary: #f0f2f5;
		--text-secondary: #9ca3af;
		--text-muted: #6b7280;
		--border-subtle: rgba(255, 255, 255, 0.06);
		--border-default: rgba(255, 255, 255, 0.1);
		--accent-muted: rgba(13, 148, 136, 0.2);
		--danger-muted: rgba(220, 38, 38, 0.15);
		--success-muted: rgba(5, 150, 105, 0.2);
		--shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.2);
		--shadow-md: 0 4px 12px rgba(0, 0, 0, 0.25);
		--shadow-lg: 0 12px 24px rgba(0, 0, 0, 0.3);
		--shadow-focus: 0 0 0 3px rgba(45, 212, 191, 0.35);
		--bg-sticky: rgba(26, 30, 38, 0.82);
		--bg-sticky-border: rgba(255, 255, 255, 0.08);
	}
}

@media (max-width: 768px) {
:root {
		--content-max: 100%;
		--section-min-width: 100%;
	}
}

@media (max-width: 640px) {
:root {
		--picture-thumb-size: 110px;
	}

	/* Forcer 100% de largeur sur mobile pour que la grille ait 2 colonnes */
	section.fit:has(#pictures-download),
	.section.fit:has(#pictures-download) {
		width: 100%;
	}
}

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

html {
	scroll-behavior: smooth;
	color-scheme: light dark;
	/* Safe area (encoche / status bar) : alignée sur le fond de page, pas de trou au-dessus du header */
	background-color: var(--bg-page);
	/* Décalage pour les ancres (#) : header + barre de boutons sticky */
	scroll-padding-top: calc(var(--header-height) + 15rem);
}

body {
	font-family: var(--font-body);
	font-size: 1rem;
	line-height: 1.6;
	color: var(--text-primary);
	background: var(--bg-page);
	background-image: radial-gradient(ellipse 120% 80% at 50% -20%, var(--accent-muted), transparent 50%);
	margin: 0;
	min-height: 100vh;
	display: flex;
	flex-direction: column;
	-webkit-font-smoothing: antialiased;
}

*[hidden] {
	display: none !important;
}

.logo-title-wrapper {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	flex-shrink: 0;
	min-width: 0;
}

a.site-brand {
	color: inherit;
	text-decoration: none;
}

.site-logo {
	display: block;
	height: 48px;
	width: 48px;
	transition:
		height var(--header-compact-shrink-duration, 0.25s) ease,
		width var(--header-compact-shrink-duration, 0.25s) ease;
}

@media (prefers-color-scheme: dark) {
body {
		background-image: radial-gradient(ellipse 120% 80% at 50% -20%, rgba(13, 148, 136, 0.15), transparent 50%);
	}
}

.text-secondary {
	color: var(--text-secondary);
}

.container {
	display: flex;
	flex-direction: column;
	min-height: 100vh;
	width: 100%;
}

/* Header (WebView : étendre le fond flouté sous la barre d’état = même bandeau que l’heure) */
header,
.header {
	position: sticky;
	top: 0;
	z-index: 100;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: var(--space-md);
	/* Remplace le padding global : safe-area (notch) + marge intérieure */
	padding: calc(env(safe-area-inset-top, 0px) + var(--space-md)) var(--space-lg) var(--space-md) var(--space-lg);
	background: var(--bg-sticky);
	-webkit-backdrop-filter: blur(12px) saturate(180%);
	backdrop-filter: blur(12px) saturate(180%);
	border-bottom: 1px solid var(--bg-sticky-border);
	box-shadow: var(--shadow-sm);
	transition:
		padding var(--header-compact-shrink-duration, 0.25s) ease,
		gap var(--header-compact-shrink-duration, 0.25s) ease;
}

:root {
	--header-compact-fade-duration: 0.2s;
	--header-compact-shrink-duration: 0.25s;
}

/* Pendant la transition compact ↔ normal : une seule ligne pour éviter le reflow en cascade */
body.header-layout-animating header,
body.header-layout-animating .header {
	flex-wrap: nowrap;
	overflow: hidden;
}

header h1,
.header h1,
header .site-title,
.header .site-title {
	margin: 0;
	font-family: var(--font-heading);
	font-size: 1.35rem;
	font-weight: 700;
	letter-spacing: -0.02em;
	transition: font-size var(--header-compact-shrink-duration, 0.25s) ease;
}

/* body.page-home header h1,
body.page-home .header h1,
body.page-home header .site-title,
body.page-home .header .site-title, */
header h1,
.header h1,
header .site-title,
.header .site-title {
	font-size: 1.75rem;
	font-weight: 800;
	letter-spacing: -0.03em;
	background: linear-gradient(135deg, var(--text-primary) 0%, var(--text-secondary) 100%);
	-webkit-background-clip: text;
	-webkit-text-fill-color: transparent;
	background-clip: text;
}

@media (prefers-color-scheme: dark) {
/* body.page-home header h1,
	body.page-home .header h1,
	body.page-home header .site-title,
	body.page-home .header .site-title, */
	header h1,
	.header h1,
	header .site-title,
	.header .site-title {
		background: linear-gradient(135deg, #f0f2f5 0%, #9ca3af 100%);
		-webkit-background-clip: text;
		background-clip: text;
	}
}

/* body.page-home header h1:hover,
body.page-home header #title:hover, */
header h1:hover,
header #title:hover {
	opacity: 1;
	-webkit-text-fill-color: var(--accent);
}

header h1 a,
.header h1 a {
	color: inherit;
	text-decoration: none;
}

header h1:hover,
header #title:hover,
.header #title:hover {
	cursor: pointer;
	opacity: 0.85;
	text-decoration: underline;
	text-underline-offset: 4px;
}

header h2,
.header h2 {
	margin: 0;
	font-family: var(--font-heading);
	font-size: 1.1rem;
	font-weight: 600;
	color: var(--text-secondary);
	transition: font-size var(--header-compact-shrink-duration, 0.25s) ease;
}

.header-event-switch-label {
	display: flex;
	justify-content: center;
	align-items: center;
	margin: 0;
	min-width: 0;
	flex: 1 1 auto;
	max-width: 100%;
}

.header-event-title-compact {
	display: none;
	margin: 0;
	text-align: center;
}

body.header-compact-hidden .header-event-switch-label .header-event-title-compact {
	display: block;
}

/* Même rendu que #language (styles globaux select + règles ci-dessous) */
.header-event-switch {
	display: inline-block;
	width: auto;
	margin: 0;
	field-sizing: content;
	text-align: center;
	text-align-last: center;
	/* padding-left: 2.5rem; */
	padding-left: var(--space-sm);
	transition: width 0.15s ease;
}

/* —— Animation header compact (phases : fade → shrink → display:none) —— */
.header-actions,
.header-event-switch-label .header-event-switch {
	transition:
		opacity var(--header-compact-fade-duration, 0.2s) ease,
		transform var(--header-compact-fade-duration, 0.2s) ease,
		visibility var(--header-compact-fade-duration, 0.2s) ease;
}

body.header-compact-fade .header-actions,
body.header-compact-fade .header-event-switch-label .header-event-switch {
	opacity: 0;
	visibility: hidden;
	transform: translateX(8px);
	pointer-events: none;
}

body.header-compact-shrink header,
body.header-compact-shrink .header,
body.header-compact header,
body.header-compact .header {
	padding-top: calc(env(safe-area-inset-top, 0px) + var(--space-sm) * 0.75);
	padding-bottom: calc(var(--space-sm) * 0.75);
	gap: var(--space-sm);
}

body.header-compact-shrink header h1,
body.header-compact-shrink .header h1,
body.header-compact header h1,
body.header-compact .header h1,
body.header-compact-shrink header .site-title,
body.header-compact header .site-title {
	font-size: 1.05rem;
}

body.header-compact-shrink header h2,
body.header-compact-shrink .header h2,
body.header-compact header h2,
body.header-compact .header h2 {
	font-size: 0.95rem;
}

body.header-compact-shrink .site-logo,
body.header-compact .site-logo {
	height: 24px;
	width: 24px;
}

body.header-compact-hidden .header-event-switch-label .header-event-switch {
	display: none !important;
}

.header-actions {
	position: relative;
	display: flex;
	align-items: stretch;
	align-content: flex-end;
	justify-content: flex-end;
	flex: 0 1 auto;
	min-width: 0;
	max-width: 100%;
	max-height: 12rem;
	flex-wrap: wrap;
	gap: var(--space-sm);
	padding: 0;
	opacity: 1;
	visibility: visible;
	transform: none;
	transition:
		opacity var(--header-compact-fade-duration, 0.2s) ease,
		transform var(--header-compact-fade-duration, 0.2s) ease,
		visibility var(--header-compact-fade-duration, 0.2s) ease,
		max-height var(--header-compact-shrink-duration, 0.25s) ease,
		gap var(--header-compact-shrink-duration, 0.25s) ease;
}

/* Après .header-actions : largeur figée + hauteur repliée (titre centré, pas de saut) */
body.header-compact-slot .header-actions,
body.header-compact-hidden .header-actions {
	visibility: hidden;
	opacity: 0;
	pointer-events: none;
	flex-shrink: 0;
	width: var(--header-actions-width, auto);
	min-width: var(--header-actions-width, 0);
	max-height: 0;
	overflow: hidden;
	margin: 0;
	padding: 0;
	gap: 0;
	border-width: 0;
}

body.header-layout-animating .header-actions {
	flex-wrap: nowrap;
	overflow: hidden;
}

#language {
	min-width: 8rem;
	font-weight: 500;
	max-width: min-content;
	width: auto;
}

.header-event-switch {
	min-width: 8rem;
	font-weight: 500;
	max-width: none;
	width: auto;
	overflow: visible;
}

/* Bouton QR : même hauteur que select / logout, icône maximale dans le carré */
.header-actions .header-qr-scan {
	box-sizing: border-box;
	flex-shrink: 0;
	width: 2.5rem;
	height: 2.5rem;
	min-width: 2.5rem;
	padding: var(--space-xs);
	line-height: 0;
}

.header-actions .header-qr-scan img {
	display: block;
	width: 100%;
	height: 100%;
	max-width: none;
	max-height: none;
	object-fit: contain;
	filter: invert(1);
}

.header-actions .header-qr-scan[hidden] {
	display: none;
}

/* Popup scanner QR (header) */
body.header-qr-scan-open {
	overflow: hidden;
}

.header-qr-scan-dialog[hidden] {
	display: none;
}

.header-qr-scan-dialog {
	position: fixed;
	inset: 0;
	z-index: 10020;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: var(--space-lg);
}

.header-qr-scan-backdrop {
	position: fixed;
	inset: 0;
	background: rgba(15, 18, 22, 0.72);
	cursor: pointer;
}

.header-qr-scan-panel {
	position: relative;
	z-index: 1;
	width: min(420px, 100%);
	max-height: min(90vh, 640px);
	overflow-y: auto;
	background: var(--bg-card);
	border: 1px solid var(--border-subtle);
	border-radius: var(--radius-lg);
	box-shadow: var(--shadow-lg);
	padding: var(--space-lg);
}

.header-qr-scan-close {
	position: absolute;
	top: var(--space-sm);
	right: var(--space-sm);
	width: 2rem;
	height: 2rem;
	padding: 0;
	border-radius: var(--radius-full);
	font-size: 1.25rem;
	line-height: 1;
}

.header-qr-scan-title {
	margin: 0 2rem var(--space-sm) 0;
	font-family: var(--font-heading);
	font-size: 1.1rem;
	font-weight: 600;
}

.header-qr-scan-intro {
	margin: 0 0 var(--space-md);
	font-size: 0.95rem;
	color: var(--text-secondary);
	line-height: 1.45;
}

.header-qr-scan-viewport {
	position: relative;
	width: 100%;
	aspect-ratio: 1;
	max-height: min(60vw, 320px);
	margin: 0 auto var(--space-md);
	border-radius: var(--radius-md);
	overflow: hidden;
	background: #0f1216;
	border: 1px solid var(--border-default);
}

.header-qr-scan-viewport video {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/* Masque l’aperçu caméra sans toucher à visibility (requis par qr-scanner / Safari) */
.header-qr-scan-viewport:not(.is-active)::after {
	content: '';
	position: absolute;
	inset: 0;
	z-index: 2;
	background: #0f1216;
	pointer-events: none;
}

.header-qr-scan-status {
	margin: 0 0 var(--space-sm);
	font-size: 0.9rem;
	color: var(--danger);
	line-height: 1.4;
}

.header-qr-scan-status[hidden] {
	display: none;
}

.header-qr-scan-start {
	width: 100%;
}

.header-qr-scan-start[hidden] {
	display: none;
}

/* Main */
main,
.main {
	flex: 1;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: var(--space-xl);
	padding: var(--space-xl) var(--space-lg) var(--space-2xl);
	width: 100%;
	max-width: 1200px;
	margin: 0 auto;
}

main h3,
.main h3 {
	width: 100%;
	margin: 0 0 var(--space-md);
	font-family: var(--font-heading);
	font-size: 1.25rem;
	font-weight: 600;
	text-align: center;
}

main h4,
.main h4 {
	width: 100%;
	margin: 0 0 var(--space-sm);
	font-family: var(--font-heading);
	font-size: 1.1rem;
	font-weight: 600;
}

.section-icon {
	vertical-align: middle;
	margin-right: var(--space-sm);
	opacity: 0.9;
	filter: invert(42%) sepia(60%) saturate(800%) hue-rotate(140deg);
}

.section-icon-no-filter {
	vertical-align: middle;
	margin-right: var(--space-sm);
	opacity: 0.9;
}

/* Align section icons with titles in main content */
main h2,
.main h2 {
	display: flex;
	align-items: center;
	gap: var(--space-sm);
}

@media (prefers-color-scheme: dark) {
.section-icon {
		filter: invert(72%) sepia(45%) saturate(600%) hue-rotate(140deg);
	}
}

main h5,
.main h5 {
	width: 100%;
	margin: 0;
	font-size: 0.95rem;
	font-weight: 600;
}

/* Sections */
section,
.section {
	display: flex;
	flex-direction: column;
	align-items: stretch;
	width: 100%;
	min-width: var(--section-min-width);
	max-width: var(--content-max);
	padding: var(--space-lg);
	background: var(--bg-card);
	border-radius: var(--radius-lg);
	border: 1px solid var(--border-subtle);
	box-shadow: var(--shadow-md);
	transition: box-shadow var(--transition), opacity 0.65s ease-out, transform 0.65s ease-out;
	opacity: 0.72;
	transform: translateY(28px) scale(0.98);
}

main>section.in-view,
main>.section.in-view {
	opacity: 1;
	transform: translateY(0) scale(1);
}

@media (prefers-reduced-motion: reduce) {
section,
	.section {
		opacity: 1;
		transform: none;
		transition: box-shadow var(--transition);
	}
}

section:hover,
.section:hover {
	box-shadow: var(--shadow-lg);
}

section.fit,
.section.fit {
	width: fit-content;
	max-width: 100%;
}

section.full-width,
.section.full-width {
	max-width: 100%;
}

/* Home page: 3 feature cards */
.home-features {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: var(--space-lg);
	margin: var(--space-xl) 0;
	padding: 0;
	list-style: none;
}

@media (max-width: 520px) {
.home-features {
		grid-template-columns: 1fr;
	}
}

.home-feature {
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
	padding: var(--space-xl) var(--space-md);
	background: var(--bg-page);
	border-radius: var(--radius-md);
	border: 1px solid var(--border-subtle);
	cursor: default;
}

.home-feature-badge {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 56px;
	height: 56px;
	border-radius: var(--radius-full);
	background: var(--accent);
	margin-bottom: var(--space-md);
}

.home-feature-badge img {
	filter: brightness(0) invert(1);
}

.home-feature-title {
	display: block;
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: 1rem;
	color: var(--text-primary);
	margin-bottom: var(--space-xs);
}

.home-feature-desc {
	display: block;
	font-size: 0.9rem;
	color: var(--text-secondary);
	line-height: 1.4;
}

/* Section "start" mise en avant */
#start.section-start {
	background: radial-gradient(circle at center, #38bdf8 0%, #4f46e5 30%, #a855f7 55%, #22c55e 80%);
	background-size: 250% 250%;
	background-position: 15% 15%;
	border-color: transparent;
	box-shadow: 0 18px 45px rgba(0, 0, 0, 0.28);
	color: #fff;
	position: relative;
	overflow: hidden;
	animation: section-start-rotate 20s linear infinite;
}

#start.section-start h2,
#start.section-start h2 .section-icon {
	color: #fff;
	text-shadow: 0 1px 2px rgba(0, 0, 0, 0.5);
}

#start.section-start .section-icon {
	filter: brightness(0) invert(1);
}

#start.section-start label,
#start.section-start .section-start-lead {
	color: #f5f7ff;
}

/* .text-secondary (gris) est illisible sur le dégradé #start — forcer un ton clair */
#start.section-start .text-secondary,
#start.section-start #demo-prefill-note {
	color: rgba(255, 255, 255, 0.92);
	text-shadow: 0 1px 2px rgba(0, 0, 0, 0.45);
}

/* Exception : .partners-cta a un fond clair (bg-page) — garder le gris lisible */
#start.section-start .partners-cta .text-secondary {
	color: var(--text-secondary);
	text-shadow: none;
}

#start.section-start .text-secondary a,
#start.section-start a:not(.button):not(.blue):not(.partners-item) {
	color: #fff;
	text-decoration: underline;
	text-underline-offset: 2px;
}

#start.section-start .text-secondary a:hover,
#start.section-start a:not(.button):not(.blue):not(.partners-item):hover {
	color: #fff;
	opacity: 0.9;
}

#start.section-start .partners-cta a:not(.button):not(.blue) {
	color: var(--accent);
	text-shadow: none;
	opacity: 1;
}

.section-start-lead {
	margin: var(--space-sm) 0 var(--space-md);
	font-size: 1.05rem;
	font-weight: 500;
}

.section-start-form {
	margin-top: var(--space-md);
	padding: var(--space-md);
	border-radius: var(--radius-md);
	background: rgba(0, 0, 0, 0.16);
}

@media (prefers-color-scheme: dark) {
.section-start-form {
		background: rgba(0, 0, 0, 0.32);
	}
}

/* Sections contenant le tableau des achats : utiliser toute la largeur pour limiter le scroll */
section:has(.table-container),
section:has(.partner-dash),
section:has(.partner-dash-chapters),
.section:has(.table-container),
.section:has(.partner-dash) {
	max-width: 100%;
}

section p,
.section p {
	margin: 0 0 var(--space-sm);
}

section p:last-child,
.section p:last-child {
	margin-bottom: 0;
}

section p button,
.section p button {
	margin: var(--space-xs) var(--space-sm) var(--space-xs) 0;
}

/* Actions bar */
section.actions {
	flex-direction: row;
	flex-wrap: wrap;
	align-items: center;
	justify-content: flex-start;
	gap: var(--space-sm);
	padding: var(--space-md) var(--space-lg);
	margin: 0 var(--space-lg) var(--space-md);
	background: var(--bg-sticky);
	-webkit-backdrop-filter: blur(12px) saturate(180%);
	backdrop-filter: blur(12px) saturate(180%);
	border: 1px solid var(--bg-sticky-border);
	border-radius: var(--radius-full);
	box-shadow: var(--shadow-md);
	max-width: 100%;
	position: sticky;
	top: calc(var(--header-height) + var(--space-md));
	z-index: 50;
}

section.actions.no-sticky {
	position: relative;
	top: auto;
}

@media (max-width: 768px) {
section.actions {
		position: relative;
		top: auto;
		margin-left: var(--space-md);
		margin-right: var(--space-md);
		border-radius: var(--radius-lg);
		overflow-x: auto;
		-webkit-overflow-scrolling: touch;
	}
}

/* Forms */
form,
.form {
	display: flex;
	flex-direction: column;
	gap: var(--space-md);
	margin: var(--space-md) 0 0;
	padding: 0;
	background: transparent;
	border: none;
	box-shadow: none;
}

.form-group {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: var(--space-sm);
	width: 100%;
	padding-bottom: var(--space-sm);
}

.form-group>*:last-child {
	flex-grow: 1;
	min-width: 0;
}

/* Formulaires avec cases à cocher : aligner la case avec le label (même niveau) */
.form-group:has(input[type="checkbox"]) {
	align-items: flex-start;
}

.form-group:has(input[type="checkbox"]) input[type="checkbox"] {
	flex-grow: 0;
	flex-shrink: 0;
	margin-top: 0.2em;
	width: auto;
	max-width: none;
	padding: 0;
}

label {
	font-weight: 500;
	flex-shrink: 1;
	min-width: 0;
}

.label-required {
	color: var(--danger);
}

/* Listes d'erreurs formulaires */
.form-group ul {
	list-style: none;
	padding: var(--space-md);
	margin: 0 0 var(--space-sm);
	background: var(--danger-muted);
	border: 1px solid var(--danger);
	border-radius: var(--radius-sm);
	color: var(--danger);
	font-weight: 500;
	width: 100%;
	max-width: 100%;
}

.form-group ul li {
	margin: var(--space-xs) 0;
}

.form-group ul li:first-child {
	margin-top: 0;
}

.form-group ul li:last-child {
	margin-bottom: 0;
}

input,
select,
textarea,
button {
	font-family: inherit;
	font-size: 1rem;
}

input,
select,
textarea {
	width: 100%;
	max-width: 320px;
	padding: var(--space-sm) var(--space-md);
	border: 1px solid var(--border-default);
	border-radius: var(--radius-sm);
	background: var(--bg-card);
	color: var(--text-primary);
	color-scheme: light dark;
	transition: border-color var(--transition), box-shadow var(--transition);
}

input:hover,
select:hover,
textarea:hover {
	border-color: var(--text-muted);
}

input:focus,
select:focus,
textarea:focus {
	outline: none;
	border-color: var(--accent);
	box-shadow: var(--shadow-focus);
}

input[type="checkbox"],
input[type="radio"] {
	width: auto;
	max-width: none;
	padding: 0;
	border: none;
	border-radius: 0;
	background: transparent;
	box-shadow: none;
	accent-color: var(--accent);
}

input[type="file"] {
	padding: var(--space-lg);
	border: 2px dashed var(--border-default);
	border-radius: var(--radius-md);
	cursor: pointer;
	max-width: none;
}

select {
	appearance: none;
	background-color: var(--bg-card);
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%235c6370' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 12px center;
	padding-right: 2.5rem;
}

@media (prefers-color-scheme: dark) {
select {
		background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%239ca3af' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
	}
}

/* Buttons */
button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: var(--space-xs);
	padding: var(--space-sm) var(--space-md);
	border: none;
	border-radius: var(--radius-sm);
	font-weight: 500;
	cursor: pointer;
	transition: background-color var(--transition), color var(--transition), transform 0.1s ease;
}

button:hover {
	transform: translateY(-1px);
}

button:active {
	transform: translateY(0);
}

button:disabled {
	opacity: 0.5;
	cursor: not-allowed;
	transform: none;
}

button:focus {
	outline: none;
	box-shadow: var(--shadow-focus);
}

button {
	background: var(--text-muted);
	color: #fff;
}

button:hover:not(:disabled) {
	background: var(--text-secondary);
}

button.blue {
	background: var(--accent);
	color: #fff;
}

button.blue:hover:not(:disabled) {
	background: var(--accent-hover);
}

button.blue:focus {
	box-shadow: 0 0 0 3px var(--accent-muted);
}

/* Link-styled CTAs (marketing pages) */
a.button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: var(--space-xs);
	padding: var(--space-sm) var(--space-md);
	border: none;
	border-radius: var(--radius-sm);
	font-weight: 500;
	text-decoration: none;
	cursor: pointer;
	background: var(--text-muted);
	color: #fff;
	transition: background-color var(--transition), color var(--transition), transform 0.1s ease;
}

a.button:hover {
	background: var(--text-secondary);
	color: #fff;
	transform: translateY(-1px);
}

a.button.blue {
	background: var(--accent);
	color: #fff;
}

a.button.blue:hover {
	background: var(--accent-hover);
	color: #fff;
}

a.button:focus-visible {
	outline: none;
	box-shadow: 0 0 0 3px var(--accent-muted);
}

/* Bouton CTA principal (Get started) */
#submitBtn {
	padding: var(--space-md) var(--space-xl);
	font-size: 1.05rem;
	font-weight: 600;
	box-shadow: 0 4px 14px rgba(13, 148, 136, 0.35);
}

#submitBtn:hover:not(:disabled) {
	box-shadow: 0 6px 20px rgba(13, 148, 136, 0.45);
	transform: translateY(-2px);
}

#submitBtn:active:not(:disabled) {
	transform: translateY(0);
}

#submitBtn.is-loading {
	opacity: 0.7;
	cursor: wait;
	pointer-events: none;
}

/* Menu croisé : mêmes boutons, mais de vrais liens */
section.actions a {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: var(--space-xs);
	padding: var(--space-sm) var(--space-md);
	border: none;
	border-radius: var(--radius-sm);
	font-size: 1rem;
	font-weight: 500;
	line-height: normal;
	text-decoration: none;
	cursor: pointer;
	transition: background-color var(--transition), color var(--transition), transform 0.1s ease;
	background: var(--text-muted);
	color: #fff;
}

section.actions a:hover {
	transform: translateY(-1px);
	background: var(--text-secondary);
	color: #fff;
}

section.actions a:active {
	transform: translateY(0);
}

section.actions a:focus-visible {
	outline: none;
	box-shadow: var(--shadow-focus);
}

section.actions a.blue {
	background: var(--accent);
	color: #fff;
}

section.actions a.blue:hover {
	background: var(--accent-hover);
	color: #fff;
}

section.actions a.blue:focus-visible {
	box-shadow: 0 0 0 3px var(--accent-muted);
}

section.actions a[aria-current="page"] {
	opacity: 0.5;
	cursor: default;
}

section.actions a[aria-current="page"]:hover {
	transform: none;
	background: var(--text-muted);
	color: #fff;
}

section.actions a.blue[aria-current="page"]:hover {
	background: var(--accent);
}

.header-partner-nav {
	display: flex;
	justify-content: center;
	align-items: center;
	flex: 1 1 auto;
	min-width: 0;
	max-width: 100%;
}

.header-partner-nav .admin-nav-menu {
	/* static → panneau positionné par rapport au header (marges L/R égales) */
	position: static;
	width: min(22rem, 100%);
	max-width: 100%;
	margin: 0;
	align-self: center;
	overflow: visible;
	z-index: 110;
}

.header-partner-nav .admin-nav-menu__summary {
	min-height: 2.5rem;
}

.header-partner-nav .admin-nav-menu__summary-text {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 0.1rem;
	min-width: 0;
}

.header-partner-nav .admin-nav-menu__summary-title {
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	max-width: 100%;
}

.header-partner-nav .admin-nav-menu__summary-email {
	font-size: 0.75rem;
	font-weight: 500;
	color: var(--text-secondary);
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	max-width: 100%;
}

.header-partner-nav .admin-nav-menu__panel {
	left: 0;
	right: 0;
	transform: none;
	width: auto;
	max-width: min(45rem, 100%);
	margin-inline: auto;
	box-sizing: border-box;
	overflow: hidden;
	z-index: 111;
}

/*
  Panneau porté dans <body> (JS) : un descendant du header ne peut pas
  avoir le même backdrop-filter que le header (contenant filter/backdrop).
  Même verre que le header : --bg-sticky + blur(12px) saturate(180%).
*/
.admin-nav-menu__panel.is-body-ported {
	position: fixed;
	display: grid;
	gap: var(--space-md);
	width: auto;
	max-width: min(45rem, calc(100vw - 2 * var(--space-lg)));
	max-height: calc(100vh - var(--header-height) - 24px);
	margin-inline: auto;
	padding: var(--space-md);
	box-sizing: border-box;
	overflow: hidden;
	z-index: 111;
	border-radius: var(--radius-lg);
	border: 1px solid var(--bg-sticky-border);
	box-shadow: var(--shadow-sm);
	background: var(--bg-sticky);
	-webkit-backdrop-filter: blur(12px) saturate(180%);
	backdrop-filter: blur(12px) saturate(180%);
}

.header-public-nav .admin-nav-menu__panel.is-body-ported {
	max-width: min(36rem, calc(100vw - 2 * var(--space-lg)));
}

.header-partner-nav .admin-nav-menu__area {
	grid-template-columns: 1fr;
	gap: var(--space-md);
	min-width: 0;
	min-height: 0;
	overflow: auto;
	overscroll-behavior: contain;
	-webkit-overflow-scrolling: touch;
}

.header-partner-nav .admin-nav-menu__section,
.header-partner-nav .admin-nav-menu__section ul,
.header-partner-nav .admin-nav-menu__section a {
	min-width: 0;
	overflow-wrap: anywhere;
	word-break: break-word;
}

@media (min-width: 520px) {
.header-partner-nav .admin-nav-menu__area {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

body:has(.header-partner-nav .admin-nav-menu[open]) {
	overflow-x: hidden;
}

body.header-compact .header-partner-nav .admin-nav-menu__summary-email {
	display: none;
}

@media (max-width: 720px) {
.header-partner-nav {
		order: 3;
		flex: 1 1 100%;
	}

	.header-partner-nav .admin-nav-menu {
		width: 100%;
	}
}

.partner-notice {
	position: fixed;
	top: calc(var(--header-height) + var(--space-sm));
	left: var(--space-md);
	right: var(--space-md);
	z-index: 10100;
	width: auto;
	max-width: 36rem;
	margin: 0 auto;
	padding: var(--space-md) var(--space-lg);
	border-radius: var(--radius-md);
	border: 1px solid var(--warning);
	background: color-mix(in srgb, var(--warning-muted) 92%, transparent);
	-webkit-backdrop-filter: blur(12px) saturate(180%);
	backdrop-filter: blur(12px) saturate(180%);
	color: var(--text-primary);
	font-weight: 600;
	box-shadow: var(--shadow-lg);
	cursor: pointer;
	opacity: 0;
	transform: translateY(-0.75rem);
	transition: opacity 0.28s ease, transform 0.28s ease;
}

.partner-notice.is-shown {
	opacity: 1;
	transform: translateY(0);
}

.partner-notice.is-hidden {
	opacity: 0;
	transform: translateY(-0.75rem);
	pointer-events: none;
}

.partner-notice.is-ok {
	border-color: var(--success);
	background: color-mix(in srgb, var(--success-muted) 92%, transparent);
}

.partner-notice.is-warn {
	border-color: var(--warning);
	background: color-mix(in srgb, var(--warning-muted) 92%, transparent);
}

.partner-notice.is-error {
	border-color: var(--danger);
	background: color-mix(in srgb, var(--danger-muted) 92%, transparent);
	color: var(--danger);
}

.visually-hidden {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

.partner-code__fields .form-group,
.partner-code__dates .form-group {
	display: grid;
	gap: 0.35rem;
	margin: 0;
	padding: 0;
	width: auto;
	align-items: stretch;
	justify-content: stretch;
}

.partner-code__fields .form-group > *:last-child,
.partner-code__dates .form-group > *:last-child,
.partner-code__fields input,
.partner-code__fields textarea,
.partner-code__dates input {
	flex-grow: 0;
	width: 100%;
	max-width: none;
}

.partner-code__dates .form-group {
	min-width: 0;
	/* label | input | optional help — keeps the 3 inputs on one line */
	grid-template-rows: auto 3.25rem auto;
}

.partner-code__dates .form-group > label {
	grid-row: 1;
	align-self: end;
	min-height: 1.35em;
}

.partner-promo__actions a.blue {
	margin-right: auto;
}

.partner-promo-rules .text-secondary {
	margin: 0;
}

.partner-promo-rules .table-container {
	max-height: none;
	width: fit-content;
	max-width: 100%;
}

/* Form table: size to fields, ignore min-width:max-content / breakout */
.partner-promo-rules .table-container table.partner-promo-rules-table {
	width: max-content;
	max-width: 100%;
	min-width: 0;
	table-layout: auto;
}

/* Override .table-container select { max-width: 7rem } */
.partner-promo-rules .table-container select.partner-promo-input,
.partner-promo-rules .table-container input.partner-promo-input {
	width: auto;
	max-width: 100%;
}

.partner-promo-rules .table-container td:first-child select.partner-promo-input {
	width: 16rem;
	max-width: min(16rem, 100%);
}

.partner-promo-rules .table-container td:nth-child(2) select.partner-promo-input,
.partner-promo-rules .table-container td:nth-child(4) select.partner-promo-input {
	width: 5.5rem;
}

.partner-duplicate-dialog .form-group {
	margin: 0;
}

.partner-duplicate-dialog button.blue {
	justify-self: start;
}

.partner-events-dialog__actions .blue {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	text-decoration: none;
}

.partner-profile-logo .text-secondary {
	margin: 0;
	max-width: 16rem;
	text-align: center;
	font-size: 0.85rem;
}

.admin-nav-menu {
	position: relative;
	align-self: stretch;
	width: 100%;
	max-width: var(--content-max);
	margin: 0;
}

.admin-nav-menu__backdrop {
	position: fixed;
	inset: 0;
	z-index: 80;
	background: transparent;
}

.admin-nav-menu__backdrop[hidden] {
	display: none !important;
}

.admin-nav-menu__summary {
	list-style: none;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--space-sm);
	padding: var(--space-sm) var(--space-md);
	border-radius: var(--radius-md);
	background: var(--bg-card);
	border: 1px solid var(--border-subtle);
	box-shadow: var(--shadow-sm);
	font-weight: 700;
}

.admin-nav-menu__summary::-webkit-details-marker,
.admin-nav-menu__summary::marker {
	display: none;
	content: '';
}

.admin-nav-menu__chevron {
	display: inline-flex;
	width: 1.6rem;
	height: 1.6rem;
	align-items: center;
	justify-content: center;
	border-radius: var(--radius-full);
	background: var(--accent-muted);
	color: var(--accent);
	transition: transform 0.2s ease;
}

.admin-nav-menu[open] .admin-nav-menu__chevron {
	transform: rotate(180deg);
}

.admin-nav-menu:not([open]) > .admin-nav-menu__panel {
	display: none !important;
}

.admin-nav-menu__panel {
	position: absolute;
	left: 0;
	top: calc(100% + 8px);
	z-index: 90;
	display: grid;
	gap: var(--space-md);
	width: min(720px, calc(100vw - 32px));
	max-height: calc(100vh - 140px);
	overflow: hidden;
	padding: var(--space-md);
	border-radius: var(--radius-lg);
	background: var(--bg-sticky);
	-webkit-backdrop-filter: blur(12px) saturate(180%);
	backdrop-filter: blur(12px) saturate(180%);
	border: 1px solid var(--bg-sticky-border);
	box-shadow: var(--shadow-lg);
}

.admin-nav-menu__area {
	display: grid;
	grid-template-columns: repeat(2, minmax(140px, 1fr));
	gap: var(--space-sm) var(--space-lg);
	min-height: 0;
	overflow: auto;
	-webkit-overflow-scrolling: touch;
}

.admin-nav-menu__area-title,
.admin-nav-menu__section-title {
	margin: 0 0 0.25rem;
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: 0.05em;
	text-transform: uppercase;
}

a.admin-nav-menu__area-title {
	display: block;
	grid-column: 1 / -1;
	padding: 0.45rem 0.6rem;
	border-radius: var(--radius-sm);
	text-decoration: none;
	cursor: pointer;
}

a.admin-nav-menu__area-title:hover {
	filter: brightness(0.97);
}

.admin-nav-menu__area--guest .admin-nav-menu__area-title {
	background: var(--accent-muted);
	color: var(--accent);
}

.admin-nav-menu__area--guest .admin-nav-menu__area-title.is-current,
.admin-nav-menu__area--guest .admin-nav-menu__area-title.is-current:hover {
	background: var(--accent);
	color: #fff;
}

.admin-nav-menu__area--admin .admin-nav-menu__area-title {
	background: var(--bg-page);
	color: var(--text-secondary);
}

.admin-nav-menu__area--admin .admin-nav-menu__area-title.is-current,
.admin-nav-menu__area--admin .admin-nav-menu__area-title.is-current:hover {
	background: var(--text-secondary);
	color: #fff;
}

.admin-nav-menu--dual .admin-nav-menu__area + .admin-nav-menu__area {
	padding-top: var(--space-sm);
	border-top: 1px solid var(--border-subtle);
}

.admin-nav-menu__section-title {
	color: var(--text-muted);
}

.admin-nav-menu__section ul {
	list-style: none;
	margin: 0;
	padding: 0;
}

.admin-nav-menu__section a,
.admin-nav-menu__logout a {
	display: block;
	padding: 0.4rem 0.55rem;
	border-radius: var(--radius-sm);
	color: var(--text-primary);
	text-decoration: none;
	font-weight: 500;
}

.admin-nav-menu__section a:hover,
.admin-nav-menu__logout a:hover {
	background: var(--accent-muted);
	color: var(--accent);
}

.admin-nav-menu__section a.is-current,
.admin-nav-menu__section a.is-current:hover {
	background: var(--accent);
	color: #fff;
}

.admin-nav-menu__leave {
	margin-top: var(--space-sm);
	padding-top: var(--space-sm);
	border-top: 1px solid var(--border-subtle);
}

.admin-nav-menu__logout {
	margin: 0;
	padding-top: var(--space-sm);
	border-top: 1px solid var(--border-subtle);
}

@media (max-width: 560px) {
.admin-nav-menu__area {
		grid-template-columns: 1fr;
	}
}

.partner-admin > .text-secondary {
	margin: 0;
}

.partner-account__totp-form .form-group {
	margin: 0;
	padding: 0;
	width: 100%;
	max-width: 16rem;
	display: grid;
	gap: 0.35rem;
}

.partner-account__totp-form .form-group > *:last-child {
	flex-grow: 0;
	width: 100%;
}

.partner-enroll-skip button.blue {
	padding: 0.55rem 1.1rem;
	text-decoration: none;
}

.partner-admin-access-add .form-group {
	display: grid;
	gap: 0.35rem;
	flex: 1 1 14rem;
	margin: 0;
	padding: 0;
	width: auto;
	min-width: 0;
	align-items: stretch;
	justify-content: stretch;
}

.partner-admin-access-add .form-group > *:last-child,
.partner-admin-access-add input[type="email"] {
	flex-grow: 0;
	width: 100%;
	max-width: none;
}

/* Logout notice (home page, after redirect from /logout) */
.logout-notice {
	position: fixed;
	top: calc(var(--header-height) + var(--space-sm));
	left: var(--space-md);
	right: var(--space-md);
	z-index: 10100;
	max-width: 32rem;
	margin: 0 auto;
	pointer-events: none;
	transition: opacity 0.3s ease, transform 0.3s ease;
}

.logout-notice--hidden {
	opacity: 0;
	transform: translateY(-0.75rem);
	pointer-events: none;
}

.logout-notice__inner {
	position: relative;
	display: flex;
	flex-direction: column;
	gap: var(--space-sm);
	padding: var(--space-md) calc(var(--space-md) + 2rem) var(--space-md) var(--space-md);
	background: color-mix(in srgb, var(--bg-card) 94%, transparent);
	-webkit-backdrop-filter: blur(12px) saturate(180%);
	backdrop-filter: blur(12px) saturate(180%);
	border: 1px solid var(--accent);
	border-radius: var(--radius-md);
	box-shadow: var(--shadow-lg);
	color: var(--text-primary);
	pointer-events: auto;
}

.logout-notice__message {
	margin: 0;
	font-weight: 600;
	color: var(--accent);
}

.logout-notice__error {
	margin: 0;
}

.logout-notice__dismiss {
	position: absolute;
	top: var(--space-sm);
	right: var(--space-sm);
	width: 2rem;
	height: 2rem;
	padding: 0;
	border: none;
	border-radius: var(--radius-sm);
	background: transparent;
	color: inherit;
	font-size: 1.25rem;
	line-height: 1;
	cursor: pointer;
}

.logout-notice__dismiss:hover {
	background: rgba(0, 0, 0, 0.06);
}

/* Tables — layout unique + breakout centré (voir /js/table-breakout.js) */
.table-container {
	width: 100%;
	overflow-x: auto;
	overflow-y: auto;
	max-height: 85vh;
	border-radius: var(--radius-md);
	border: 1px solid var(--border-subtle);
}

.table-container table {
	width: 100%;
	min-width: max-content;
	border-collapse: separate;
	border-spacing: 0;
}

.table-container thead {
	position: sticky;
	top: 0;
	z-index: 4;
	background: var(--bg-card);
}

.table-container th,
.table-container td {
	padding: var(--space-sm) var(--space-md);
	border-bottom: 1px solid var(--border-subtle);
}

.table-container th {
	text-align: left;
	font-weight: 600;
	border-bottom: 2px solid var(--border-default);
}

.table-container tbody tr:nth-child(odd) > td {
	background-color: var(--bg-card);
}

.table-container tbody tr:nth-child(even) > td {
	background-color: var(--bg-zebra);
}

.table-container tbody tr:hover > td {
	background-color: var(--accent-muted);
}

.table-container tbody tr>td.col-hover,
.table-container thead tr>th.col-hover {
	background-color: var(--accent-muted);
}

.table-container#storage-reservation-result tbody td:not(:first-child) {
	text-align: right;
}

.table-container input:not([type="checkbox"]):not([type="hidden"]):not([type="file"]),
.table-container select {
	width: auto;
	max-width: 7rem;
	min-width: 0;
	box-sizing: border-box;
}

.table-container input[name="price"] {
	width: 5.25rem;
	max-width: 5.25rem;
}

.table-container > form {
	display: none !important;
	margin: 0 !important;
}

/* Tableau des achats : rester dans la carte, texte qui revient à la ligne. */
.table-container .purchases {
	min-width: 1000px;
	table-layout: fixed;
}

.table-container .purchases th,
.table-container .purchases td {
	white-space: normal;
	overflow-wrap: anywhere;
	word-break: break-word;
}

.table-container .purchases th:first-child,
.table-container .purchases td:first-child {
	width: 28%;
	min-width: 0;
}

.table-container .purchases th:not(:first-child),
.table-container .purchases td:not(:first-child) {
	width: 12%;
	min-width: 0;
}

.table-container.is-measuring {
	overflow: hidden;
}

.table-container.is-measuring>table {
	width: max-content !important;
	min-width: 0 !important;
}

.table-container.is-measuring>table th,
.table-container.is-measuring>table td {
	white-space: nowrap !important;
	max-width: 28rem !important;
	overflow: hidden !important;
	text-overflow: ellipsis !important;
}

.table-container.is-breakout {
	overflow: auto;
	background: var(--bg-card);
	border: none;
	border-radius: var(--radius-md);
	position: relative;
	z-index: 1;
}

.table-container.is-breakout>table th,
.table-container.is-breakout>table td {
	white-space: nowrap;
}

.table-container.is-breakout>table.purchases th,
.table-container.is-breakout>table.purchases td,
.table-container.is-measuring>table.purchases th,
.table-container.is-measuring>table.purchases td {
	white-space: normal !important;
	max-width: none !important;
	overflow: visible !important;
	text-overflow: unset !important;
	overflow-wrap: anywhere;
	word-break: break-word;
}

/* Parents must not clip the centered breakout. */
.container,
main,
section,
.section,
.partner-code,
.partner-code__body {
	overflow: visible;
}

/* Catchphrase */
.catchphrase {
	font-size: 1.5rem;
	font-weight: 600;
	color: var(--accent);
}

@media (prefers-color-scheme: dark) {
.catchphrase {
		color: var(--accent);
	}
}

/* Footer */
footer,
.footer {
	padding: var(--space-xl) var(--space-lg);
	background: var(--bg-card);
	border-top: 1px solid var(--border-subtle);
	font-size: 0.875rem;
	color: var(--text-secondary);
	text-align: center;
}

footer p,
.footer p {
	margin: 0;
}

footer a,
.footer a {
	color: var(--accent);
	font-weight: 500;
}

footer a:hover,
.footer a:hover {
	color: var(--accent-hover);
}

.error {
	color: var(--danger);
	font-weight: 500;
}

.success {
	color: var(--success);
	font-weight: 500;
}

.form-group p.error,
.form-group ul.error {
	width: 100%;
	padding: var(--space-sm) var(--space-md);
	background: var(--danger-muted);
	border-radius: var(--radius-sm);
	border: 1px solid rgba(220, 38, 38, 0.3);
}

.form-group ul.error {
	margin: 0;
	padding-left: var(--space-lg);
	list-style-position: outside;
}

.form-group p.success {
	width: 100%;
	padding: var(--space-sm) var(--space-md);
	background: var(--success-muted);
	border-radius: var(--radius-sm);
	border: 1px solid rgba(5, 150, 105, 0.3);
}

a {
	color: var(--accent);
	text-decoration: none;
	transition: color var(--transition);
}

a:hover {
	color: var(--accent-hover);
	text-decoration: underline;
}

/* FAQ : sous-cartes par question (accueil + page FAQ) – animation entrée depuis la gauche */
section.faq>div,
section#faq>div,
.faq>.faq-item {
	margin-bottom: var(--space-md);
	padding: var(--space-md);
	border-radius: var(--radius-md);
	border-left: 4px solid var(--accent);
	background: var(--bg-page);
	transition: opacity 0.5s ease-out, transform 0.5s cubic-bezier(0.22, 1, 0.36, 1), box-shadow var(--transition), border-left-width var(--transition);
	opacity: 0;
	transform: translateX(-32px);
}

section.faq>div:hover,
section#faq>div:hover,
.faq>.faq-item:hover {
	box-shadow: var(--shadow-md);
	border-left-width: 6px;
}

section.faq>div.in-view,
section#faq>div.in-view,
.faq>.faq-item.in-view {
	opacity: 1;
	transform: translateX(0);
}

section.faq>div:nth-child(2).in-view,
section#faq>div:nth-child(2).in-view,
.faq>.faq-item:nth-child(2).in-view {
	transition-delay: 0.05s;
}

section.faq>div:nth-child(3).in-view,
section#faq>div:nth-child(3).in-view,
.faq>.faq-item:nth-child(3).in-view {
	transition-delay: 0.1s;
}

section.faq>div:nth-child(4).in-view,
section#faq>div:nth-child(4).in-view,
.faq>.faq-item:nth-child(4).in-view {
	transition-delay: 0.15s;
}

section.faq>div:nth-child(5).in-view,
section#faq>div:nth-child(5).in-view,
.faq>.faq-item:nth-child(5).in-view {
	transition-delay: 0.2s;
}

section.faq>div:nth-child(6).in-view,
section#faq>div:nth-child(6).in-view,
.faq>.faq-item:nth-child(6).in-view {
	transition-delay: 0.25s;
}

section.faq>div:nth-child(7).in-view,
section#faq>div:nth-child(7).in-view,
.faq>.faq-item:nth-child(7).in-view {
	transition-delay: 0.3s;
}

section.faq>div:nth-child(8).in-view,
section#faq>div:nth-child(8).in-view,
.faq>.faq-item:nth-child(8).in-view {
	transition-delay: 0.35s;
}

section.faq>div:nth-child(9).in-view,
section#faq>div:nth-child(9).in-view,
.faq>.faq-item:nth-child(9).in-view {
	transition-delay: 0.4s;
}

section.faq>div:nth-child(10).in-view,
section#faq>div:nth-child(10).in-view,
.faq>.faq-item:nth-child(10).in-view {
	transition-delay: 0.45s;
}

section.faq>div:nth-child(11).in-view,
section#faq>div:nth-child(11).in-view,
.faq>.faq-item:nth-child(11).in-view {
	transition-delay: 0.5s;
}

@media (prefers-reduced-motion: reduce) {
section.faq>div,
	section#faq>div,
	.faq>.faq-item {
		opacity: 1;
		transform: none;
		transition-delay: 0s;
	}
}

section.faq>div:last-child,
section#faq>div:last-child,
.faq>.faq-item:last-child {
	margin-bottom: 0;
}

section.faq>div h5,
section#faq>div h5,
section.faq>div h3,
section#faq>div h3,
.faq>.faq-item h3 {
	margin-bottom: var(--space-xs);
	color: var(--text-primary);
}

section.faq,
section#faq,
.faq {
	scroll-margin-top: 5.5rem;
}

section.faq>div p,
section#faq>div p,
.faq>.faq-item p {
	margin-bottom: var(--space-sm);
}

section.faq>div ul,
section#faq>div ul,
.faq>.faq-item ul {
	margin: var(--space-sm) 0;
	padding-left: var(--space-lg);
}

/* FAQ – collapsible details (AutoUpload section) */
.faq-collapse {
	margin-top: var(--space-sm);
	border-radius: var(--radius-md);
	border: 1px solid var(--border-subtle);
	background: #f9fafb;
	overflow: hidden;
}

/* Inside a FAQ card: flatten so the card itself is the visual shell */
section.faq > div > .faq-collapse,
section#faq > div > .faq-collapse,
.faq > .faq-item > .faq-collapse {
	margin: 0;
	border: 0;
	border-radius: 0;
	background: transparent;
}

@media (prefers-color-scheme: dark) {
.faq-collapse {
		background: #111827;
		border-color: rgba(55, 65, 81, 0.8);
	}

	section.faq > div > .faq-collapse,
	section#faq > div > .faq-collapse,
	.faq > .faq-item > .faq-collapse {
		background: transparent;
		border-color: transparent;
	}
}

.faq-collapse>summary {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--space-sm);
	padding: var(--space-sm) var(--space-md);
	cursor: pointer;
	list-style: none;
}

.faq-collapse>summary::-webkit-details-marker,
.faq-collapse>summary::marker {
	display: none;
}

section.faq > div > .faq-collapse > summary,
section#faq > div > .faq-collapse > summary,
.faq > .faq-item > .faq-collapse > summary {
	padding: 0.35rem 0.5rem;
	margin: -0.35rem -0.5rem;
	border-radius: var(--radius-md);
	align-items: center;
	transition: background-color var(--transition);
}

section.faq > div > .faq-collapse > summary:hover,
section#faq > div > .faq-collapse > summary:hover,
.faq > .faq-item > .faq-collapse > summary:hover {
	background: var(--accent-muted);
}

section.faq > div > .faq-collapse > .faq-collapse-body,
section#faq > div > .faq-collapse > .faq-collapse-body,
.faq > .faq-item > .faq-collapse > .faq-collapse-body {
	padding: var(--space-sm) 0 0;
	border-top: 1px solid var(--border-subtle);
	margin-top: var(--space-sm);
}

.faq-collapse-title {
	margin: 0;
	font-size: 1.05rem;
	font-weight: 600;
	color: inherit;
}

.faq-collapse-body h4 {
	margin-top: var(--space-sm);
	margin-bottom: var(--space-xs);
	font-size: 0.95rem;
}

.faq-collapse-badge {
	flex: 0 0 auto;
	font-size: 0.8rem;
	font-weight: 600;
	padding: 0.2rem 0.6rem;
	border-radius: 999px;
	background: var(--accent-muted);
	color: var(--accent);
	white-space: nowrap;
}

.faq-collapse-badge-open {
	display: none;
}

.faq-collapse[open] > summary .faq-collapse-badge-closed {
	display: none;
}

.faq-collapse[open] > summary .faq-collapse-badge-open {
	display: inline;
}

.faq-collapse-body {
	padding: 0 var(--space-md) var(--space-md);
	border-top: 1px solid var(--border-subtle);
}

.faq-collapse-body h6 {
	margin-top: var(--space-sm);
	margin-bottom: var(--space-xs);
	font-size: 0.95rem;
}

.faq-collapse-body ol,
.faq-collapse-body ul {
	margin: var(--space-xs) 0 var(--space-sm);
	padding-left: var(--space-lg);
}

/* Partners directory — aligné pages marketing */
.partners-page .partners-layout {
	display: block;
	margin: var(--space-lg) 0;
}

.partners-page .partners-scroll {
	max-height: none;
	overflow: visible;
}

/* Embed (iframe legacy) : liste scrollable dans la fenêtre */
.partners-page--embed .partners-scroll,
body.iframe-embed .partners-page .partners-scroll {
	max-height: min(70vh, 720px);
	overflow: auto;
	overscroll-behavior: contain;
	-webkit-overflow-scrolling: touch;
}

.partners-page .partners-list {
	display: grid;
	gap: 0;
	margin: 0;
	padding: 0;
	border-top: 1px solid var(--border-subtle);
}

.partners-page .partners-accordion-item {
	border-radius: 0;
	border: 0;
	border-bottom: 1px solid var(--border-subtle);
	background: transparent;
	overflow: hidden;
}

.partners-page .partners-accordion-item--deeplink {
	margin-bottom: var(--space-md);
	border: 1px solid var(--border-subtle);
	border-radius: var(--radius-md);
	background: var(--bg-card);
}

.partners-page .partners-item {
	display: flex;
	align-items: center;
	gap: var(--space-md);
	width: 100%;
	text-align: left;
	padding: var(--space-md) 0;
	border: 0;
	border-radius: 0;
	background: transparent;
	color: var(--text-primary);
	cursor: pointer;
	text-decoration: none;
	font: inherit;
	box-sizing: border-box;
	transition: color var(--transition);
}

.partners-page .partners-accordion-item--deeplink .partners-item {
	padding: var(--space-md);
}

.partners-page .partners-item:hover,
.partners-page a.partners-item--link:hover,
.partners-page a.partners-item--link:focus-visible {
	background: transparent;
	color: var(--accent);
	text-decoration: none;
	outline: none;
}

.partners-page a.partners-item--link:focus-visible {
	box-shadow: inset 0 0 0 2px var(--accent-muted);
}

.partner-public-page .partner-public-back {
	margin: 0 0 var(--space-md);
}

.partner-public-page .partner-public-back a {
	color: var(--text-secondary);
	text-decoration: none;
	font-weight: 500;
}

.partner-public-page .partner-public-back a:hover,
.partner-public-page .partner-public-back a:focus-visible {
	color: var(--accent);
	outline: none;
}

.partner-public-page .partner-public-head {
	display: flex;
	align-items: center;
	gap: var(--space-md);
	margin: 0 0 var(--space-lg);
	position: relative;
	z-index: 2;
}

.partner-public-page .partner-public-logo {
	width: 96px;
	height: 96px;
	object-fit: contain;
	border-radius: var(--radius-md);
	background: var(--bg-zebra);
}

.partner-public-page .partner-public-head h1 {
	margin: 0;
	font-size: clamp(1.5rem, 3vw, 2rem);
	line-height: 1.2;
}

.partner-public-switch {
	position: relative;
	min-width: 0;
	max-width: 100%;
}

.partner-public-switch__summary {
	list-style: none;
	cursor: pointer;
	display: inline-flex;
	align-items: center;
	gap: 0.55rem;
	max-width: 100%;
	padding: 0.15rem 0.35rem 0.15rem 0;
	border-radius: var(--radius-sm);
}

.partner-public-switch__summary::-webkit-details-marker,
.partner-public-switch__summary::marker {
	display: none;
	content: '';
}

.partner-public-switch__summary:hover,
.partner-public-switch__summary:focus-visible {
	outline: none;
	color: var(--accent);
}

.partner-public-switch__summary:focus-visible {
	box-shadow: 0 0 0 3px var(--accent-muted);
}

.partner-public-switch__summary h1 {
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.partner-public-switch__chevron {
	flex-shrink: 0;
	width: 0.55rem;
	height: 0.55rem;
	border-right: 2px solid currentColor;
	border-bottom: 2px solid currentColor;
	transform: rotate(45deg);
	opacity: 0.55;
	transition: transform 120ms ease, opacity 120ms ease;
	margin-top: -0.2rem;
}

.partner-public-switch[open] .partner-public-switch__chevron {
	transform: rotate(-135deg);
	margin-top: 0.15rem;
	opacity: 1;
}

.partner-public-switch__list {
	position: absolute;
	left: 0;
	top: calc(100% + 0.35rem);
	z-index: 20;
	margin: 0;
	padding: var(--space-xs);
	list-style: none;
	min-width: min(18rem, 80vw);
	max-width: min(24rem, 90vw);
	max-height: min(50vh, 20rem);
	overflow: auto;
	background: var(--bg-sticky);
	-webkit-backdrop-filter: blur(12px) saturate(180%);
	backdrop-filter: blur(12px) saturate(180%);
	border: 1px solid var(--bg-sticky-border);
	border-radius: var(--radius-md);
	box-shadow:
		0 16px 40px rgba(0, 0, 0, 0.14),
		0 6px 14px rgba(0, 0, 0, 0.08),
		var(--shadow-lg);
	-webkit-overflow-scrolling: touch;
}

.partner-public-switch__list a {
	display: block;
	padding: 0.55rem 0.7rem;
	border-radius: var(--radius-sm);
	color: var(--text-primary);
	text-decoration: none;
	font-weight: 500;
}

.partner-public-switch__list a:hover,
.partner-public-switch__list a:focus-visible {
	background: var(--accent-muted);
	color: var(--accent);
	outline: none;
}

.partner-public-switch__list a.is-current,
.partner-public-switch__list a.is-current:hover {
	background: var(--accent);
	color: #fff;
}

.partner-public-page .partner-public-description {
	margin-bottom: var(--space-lg);
}

.partner-public-page .partner-public-actions,
.partner-public-page .partners-details-actions {
	display: flex;
	flex-wrap: wrap;
	align-items: stretch;
	gap: var(--space-md);
	margin-top: var(--space-md);
	margin-bottom: var(--space-xl);
}

.partner-public-page .partners-details-actions a.partner-contact-btn {
	flex: 1 1 14rem;
	min-width: min(100%, 14rem);
	justify-content: flex-start;
	text-align: left;
	padding: 0.75rem 1rem;
	line-height: 1.35;
}

.partners-page .partners-item.is-active {
	color: var(--accent);
}

.partners-page .partners-item-logo {
	flex-shrink: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 3.5rem;
	min-height: 2.5rem;
	border-radius: var(--radius-sm);
	overflow: hidden;
	background: var(--bg-zebra, rgba(0, 0, 0, 0.03));
}

.partners-page .partners-item-logo img {
	display: block;
	max-width: 3.5rem;
	max-height: 2.5rem;
	width: auto;
	height: auto;
	object-fit: contain;
}

.partners-page .partners-item-logo-fallback {
	width: 1.25rem;
	height: 1.25rem;
	border-radius: var(--radius-sm);
	background: var(--border-subtle);
	display: block;
}

.partners-page .partners-item-name {
	font-weight: 600;
	font-size: 1.05rem;
	min-width: 0;
}

.partners-page .partners-item-chevron {
	margin-left: auto;
	flex-shrink: 0;
	width: 0.55rem;
	height: 0.55rem;
	border-right: 2px solid currentColor;
	border-bottom: 2px solid currentColor;
	transform: rotate(-45deg);
	opacity: 0.55;
	transition: transform 120ms ease, opacity 120ms ease;
}

.partners-page .partners-item:hover .partners-item-chevron,
.partners-page a.partners-item--link:focus-visible .partners-item-chevron {
	opacity: 1;
}

.partners-page button.partners-item .partners-item-chevron {
	transform: rotate(45deg);
}

.partners-page .partners-item[aria-expanded="true"] .partners-item-chevron {
	transform: rotate(-135deg);
}

.partners-page .partners-accordion-panel {
	padding: 0 0 var(--space-md);
	border-top: 1px solid var(--border-subtle);
}

.partners-page .partners-accordion-item--deeplink .partners-accordion-panel {
	padding: 0 var(--space-md) var(--space-md);
}

.partners-page .partners-details-head {
	display: flex;
	align-items: center;
	gap: var(--space-md);
	margin-bottom: var(--space-md);
}

.partners-page .partners-details-logo {
	flex-shrink: 0;
	display: flex;
	align-items: center;
}

.partners-page .partners-details-logo img {
	display: block;
	max-width: 180px;
	max-height: 56px;
	width: auto;
	height: auto;
}

.partners-page .partners-details-name {
	margin: 0;
}

.partners-page .partners-details-actions {
	display: flex;
	flex-wrap: wrap;
	align-items: stretch;
	gap: var(--space-md);
	margin-top: var(--space-md);
}

.partners-page .partners-details-actions a.partner-contact-btn {
	flex: 1 1 12rem;
	min-width: min(100%, 12rem);
	justify-content: flex-start;
	text-align: left;
	padding: 0.75rem 1rem;
	line-height: 1.35;
}

.partners-page .partners-details-actions a.partner-contact-btn,
.partner-public-page .partners-details-actions a.partner-contact-btn,
.partner-contact-actions a.partner-contact-btn {
	word-break: break-word;
}

.partners-details-description {
	margin-top: var(--space-md);
}

.partners-lang-fallback-banner {
	margin: var(--space-md) 0 0;
	padding: var(--space-sm) var(--space-md);
	border: 1px solid var(--border-default, #cbd5e1);
	border-radius: var(--radius-md, 8px);
	background: color-mix(in srgb, var(--accent, #0d9488) 8%, var(--bg-card, #fff));
	font-size: 0.95rem;
}

.partner-contact-actions {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-sm);
	margin-top: var(--space-md);
}

/* Mini code form on home — carte claire sur le dégradé #start (avant #eventForm) */
.section-start .partners-cta {
	margin: var(--space-md) 0 var(--space-lg);
	padding: var(--space-lg);
	border-radius: var(--radius-md);
	border: 1px solid var(--border-subtle);
	background: var(--bg-page);
	color: var(--text-primary);
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: var(--space-md);
}

.section-start .partners-cta-copy {
	flex: 1 1 14rem;
	min-width: 0;
}

body.iframe-embed .container {
	max-width: none;
	padding: 0;
}

body.iframe-embed .container main {
	padding: var(--space-xl) 0px var(--space-2xl);
}

@media (max-width: 800px) {
.partners-page .partners-item-logo {
		width: 3rem;
		min-height: 2.25rem;
	}

	.partners-page .partners-item-logo img {
		max-width: 3rem;
		max-height: 2.25rem;
	}
}

section.guest-link-section .guest-link-print-btn,
section.guest-link-section .guest-link-print-btns a.blue {
	display: inline-block;
	padding: var(--space-sm) var(--space-md);
	font-size: 1rem;
	font-weight: 500;
	text-decoration: none;
	border: none;
	border-radius: var(--radius-sm);
	background: var(--accent);
	color: #fff;
	cursor: pointer;
	transition: background-color var(--transition), transform 0.1s ease;
}

section.guest-link-section .guest-link-print-btn:hover,
section.guest-link-section .guest-link-print-btns a.blue:hover {
	background: var(--accent-hover);
	transform: translateY(-1px);
}

section.guest-link-section .guest-link-print-btn:focus,
section.guest-link-section .guest-link-print-btns a.blue:focus {
	box-shadow: 0 0 0 3px var(--accent-muted);
	outline: none;
}

.display-activate-encart-body .blue {
	margin-top: 0;
}

body main section form,
body main section .form {
	background: transparent;
	border: none;
	box-shadow: none;
	margin: var(--space-md) 0 0;
}

body main section iframe {
	border-radius: var(--radius-md);
}

/* Print styles live at end of this file (+ end of app.css) so they win over screen rules. */

.white-link {
	color: #fff;
	text-decoration: underline;
}

.white-link:hover {
	color: #fff;
}
/* ==========================================================================
   Table display settings (columns / sort / presets) — from SemainePed pattern
   ========================================================================== */

@media (min-width: 720px) {
/*
	 * Sticky columns: scrolling cells must stay below frozen ones on horizontal scroll.
	 * Opaque backgrounds are required — translucent accent-muted lets scrolled cells show through.
	 */
	.table-container > table tbody td:not(.is-frozen-col),
	.table-scroll > table tbody td:not(.is-frozen-col) {
		position: relative;
		z-index: 0;
	}

	.table-container > table tbody td.is-frozen-col,
	.table-scroll > table tbody td.is-frozen-col {
		position: sticky;
		z-index: 3;
		box-shadow: 1px 0 0 var(--border-subtle);
	}

	.table-container > table thead th.is-frozen-col,
	.table-scroll > table thead th.is-frozen-col {
		position: sticky;
		z-index: 6;
		background-color: var(--bg-card);
		box-shadow: 1px 0 0 var(--border-subtle);
	}

	.table-container > table tbody tr:nth-child(odd) > td.is-frozen-col,
	.table-scroll > table tbody tr:nth-child(odd) > td.is-frozen-col {
		background-color: var(--bg-card);
	}

	.table-container > table tbody tr:nth-child(even) > td.is-frozen-col,
	.table-scroll > table tbody tr:nth-child(even) > td.is-frozen-col {
		background-color: var(--bg-zebra);
	}

	.table-container > table tbody tr:hover > td.is-frozen-col,
	.table-scroll > table tbody tr:hover > td.is-frozen-col,
	.table-container > table tbody tr:focus-visible > td.is-frozen-col,
	.table-scroll > table tbody tr:focus-visible > td.is-frozen-col,
	.partner-events-table tbody tr.partner-events-row:hover > td.is-frozen-col,
	.partner-events-table tbody tr.partner-events-row:focus-visible > td.is-frozen-col,
	.partner-sa-events-table tbody tr.partner-events-row:hover > td.is-frozen-col,
	.partner-sa-events-table tbody tr.partner-events-row:focus-visible > td.is-frozen-col {
		z-index: 3;
		background-color: color-mix(in srgb, var(--accent) 14%, var(--bg-card));
	}

	.table-container > table tbody tr > td.is-frozen-col.col-hover,
	.table-container > table thead tr > th.is-frozen-col.col-hover,
	.table-scroll > table tbody tr > td.is-frozen-col.col-hover,
	.table-scroll > table thead tr > th.is-frozen-col.col-hover {
		background-color: color-mix(in srgb, var(--accent) 14%, var(--bg-card));
	}

	.table-container > table tbody tr:hover > td.is-frozen-col.col-hover,
	.table-scroll > table tbody tr:hover > td.is-frozen-col.col-hover {
		background-color: color-mix(in srgb, var(--accent) 22%, var(--bg-card));
	}
}

/* ==========================================================================
   Public marketing nav / pages
   ========================================================================== */

/*
  Header marketing — 3 états :
  1) Large : logo | Menu (centré) | actions
     Si actions masqué (header compact), la 3ᵉ colonne garde sa largeur
     → le Menu reste centré comme si actions était présent.
  2) Moyen (≤960px) : logo | Menu (à droite) ; actions en 2ᵉ ligne
  3) Étroit (≤420px) : logo ; Menu centré ; actions — évite le chevauchement
*/
body.page-marketing header {
	display: grid;
	grid-template-columns: minmax(min-content, 1fr) auto minmax(min-content, 1fr);
	align-items: center;
	column-gap: var(--space-md);
	row-gap: var(--space-sm);
}

body.header-layout-animating.page-marketing header {
	display: grid;
	overflow: visible;
}

body.page-marketing header > .site-brand,
body.page-marketing header > .logo-title-wrapper {
	grid-column: 1;
	grid-row: 1;
	justify-self: start;
	align-self: center;
	flex: unset;
	min-width: min-content;
	max-width: none;
	overflow: visible;
}

body.page-marketing header > .site-brand .site-title,
body.page-marketing header > .logo-title-wrapper .site-title {
	overflow: visible;
	text-overflow: clip;
	white-space: nowrap;
	max-width: none;
}

body.page-marketing .header-public-nav.header-partner-nav {
	grid-column: 2;
	grid-row: 1;
	justify-self: center;
	align-self: center;
	order: unset;
	flex: unset;
	width: auto;
	max-width: none;
	min-width: 0;
}

body.page-marketing .header-actions {
	grid-column: 3;
	grid-row: 1;
	justify-self: end;
	align-self: center;
	min-width: 0;
}

.header-public-nav .public-nav {
	display: flex;
	align-items: center;
	justify-content: center;
	width: auto;
	min-width: 0;
}

/* Menu public : bouton plus compact, panneau un peu moins large */
.header-public-nav .admin-nav-menu {
	width: auto;
	min-width: 7.5rem;
	max-width: 11rem;
}

.header-public-nav .admin-nav-menu__panel {
	max-width: min(36rem, 100%);
}

/* État 2 — actions en dessous : Menu à droite du logo */
@media (max-width: 960px) {
body.page-marketing header {
		grid-template-columns: minmax(min-content, 1fr) auto;
	}

	body.page-marketing .header-public-nav.header-partner-nav {
		justify-self: end;
	}

	body.page-marketing .header-actions {
		grid-column: 1 / -1;
		grid-row: 2;
		justify-self: stretch;
		justify-content: flex-end;
	}

	/* Compact mobile : pas de rangée vide sous le logo */
	body.page-marketing.header-compact-hidden .header-actions,
	body.page-marketing.header-compact-slot .header-actions {
		display: none;
	}

	.header-public-nav .admin-nav-menu__summary {
		min-height: 2.25rem;
		padding-left: 0.75rem;
		padding-right: 0.75rem;
	}
}

/* État 3 — logo + Menu ne tiennent plus : Menu centré sous le logo */
@media (max-width: 420px) {
body.page-marketing header {
		grid-template-columns: 1fr;
	}

	body.page-marketing header > .site-brand,
	body.page-marketing header > .logo-title-wrapper {
		grid-column: 1;
		grid-row: 1;
		justify-self: start;
	}

	body.page-marketing .header-public-nav.header-partner-nav {
		grid-column: 1;
		grid-row: 2;
		justify-self: center;
	}

	body.page-marketing .header-actions {
		grid-column: 1;
		grid-row: 3;
		justify-self: stretch;
		justify-content: flex-end;
	}
}

.footer-nav {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 0.5rem 1rem;
	margin-bottom: var(--space-md);
}

.footer-nav a {
	font-size: 0.9rem;
}

.footer-author {
	margin-bottom: var(--space-sm);
}

.marketing-page {
	max-width: 48rem;
}

.marketing-lead {
	font-size: 1.1rem;
	line-height: 1.55;
}

.marketing-list {
	margin: var(--space-md) 0;
	padding-left: 1.25rem;
}

.home-steps-list {
	list-style: none;
	padding-left: 0;
	display: flex;
	flex-direction: column;
	gap: var(--space-md);
}

.home-steps-list > li {
	display: flex;
	align-items: flex-start;
	gap: var(--space-md);
}

.home-steps-icon {
	flex-shrink: 0;
	width: 28px;
	height: 28px;
	margin-top: 0.1rem;
	object-fit: contain;
	opacity: 0.95;
	filter: invert(42%) sepia(60%) saturate(800%) hue-rotate(140deg);
}

@media (prefers-color-scheme: dark) {
.home-steps-icon {
		filter: invert(72%) sepia(45%) saturate(600%) hue-rotate(140deg);
	}
}

.marketing-ctas {
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem;
	margin: var(--space-md) 0;
}

.marketing-ctas .button,
.marketing-ctas a.button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	text-decoration: none;
}

.marketing-trust {
	font-size: 0.9rem;
}

.home-hero-benefits {
	list-style: disc;
	padding-left: 1.25rem;
	margin: var(--space-md) 0;
}

.home-proof-placeholders {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
	gap: var(--space-md);
	margin: var(--space-md) 0;
}

.faq h3 {
	margin-top: var(--space-lg);
	font-size: 1.05rem;
}

/* Country gate (marketing / confirmation ; on home replaces #eventForm) */
.country-gate-banner {
	margin: 0 0 var(--space-lg);
	padding: var(--space-md);
	border: 1px solid var(--border-default, #cbd5e1);
	border-radius: var(--radius-md, 8px);
	background: color-mix(in srgb, var(--accent, #0d9488) 8%, var(--bg-card, #fff));
	color: var(--text-primary);
}

.section-start-country-gate {
	scroll-margin-top: calc(var(--header-height) + var(--space-md));
}

/* Dans #start : même verre sombre que .section-start-form, texte clair lisible */
#start.section-start .country-gate-banner {
	margin: var(--space-md) 0 0;
	padding: var(--space-md);
	border: none;
	background: rgba(0, 0, 0, 0.16);
	color: #fff;
	box-shadow: none;
}

@media (prefers-color-scheme: dark) {
#start.section-start .country-gate-banner {
		background: rgba(0, 0, 0, 0.32);
	}
}

#start.section-start .country-gate-banner__text {
	color: rgba(255, 255, 255, 0.95);
	text-shadow: 0 1px 2px rgba(0, 0, 0, 0.35);
	margin: 0 0 var(--space-sm);
	line-height: 1.35;
	max-width: 36rem;
}

#start.section-start .country-gate-banner label {
	color: #f5f7ff;
	flex: 0 0 auto;
	width: 100%;
}

.country-gate-banner__text {
	margin: 0 0 var(--space-sm);
	color: inherit;
}

.country-gate-banner__form {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	align-items: end;
	gap: var(--space-sm) var(--space-md);
	margin: 0;
}

.country-gate-banner__form .form-group {
	margin: 0;
	padding-bottom: 0;
	flex: none;
	width: auto;
	min-width: 0;
	gap: var(--space-xs);
}

.country-gate-banner__form .form-group:has(select) {
	grid-column: 1;
	display: flex;
	flex-direction: column;
	align-items: stretch;
}

.country-gate-banner__form .form-group:has(button) {
	grid-column: 2;
	justify-content: flex-end;
	align-items: stretch;
}

.country-gate-banner__form .form-group:has(button) > *:last-child {
	flex-grow: 0;
}

.country-gate-banner__form select {
	max-width: none;
	width: 100%;
	flex: none;
}

@media (max-width: 520px) {
.country-gate-banner__form {
		grid-template-columns: 1fr;
	}

	.country-gate-banner__form .form-group:has(select),
	.country-gate-banner__form .form-group:has(button) {
		grid-column: 1;
	}

	.country-gate-banner__form .form-group:has(button) {
		justify-content: flex-start;
	}
}

/* Home hero — conversion above the fold (esp. 390px) */
.home-hero {
	margin: 0 0 var(--space-lg);
}

.home-hero .catchphrase {
	margin: 0 0 var(--space-sm);
	line-height: 1.25;
}

.home-hero-lead {
	margin: 0 0 var(--space-sm);
	font-size: 1rem;
	line-height: 1.45;
	max-width: 36rem;
}

.home-hero-benefits {
	margin: var(--space-sm) 0;
	padding-left: 1.15rem;
}

.home-hero-benefits li {
	margin: 0.15rem 0;
}

.home-hero-ctas {
	margin: var(--space-sm) 0;
}

.home-hero .marketing-trust {
	margin: 0;
}

@media (max-width: 430px) {
.home-hero .catchphrase {
		font-size: 1.25rem;
	}
	.home-hero-lead {
		font-size: 0.95rem;
	}
	.home-hero-ctas {
		display: grid;
		grid-template-columns: 1fr;
		gap: 0.5rem;
	}
	.home-hero-ctas .button {
		width: 100%;
		padding: 0.7rem 1rem;
	}
	.home-hero .marketing-trust {
		font-size: 0.8rem;
		line-height: 1.35;
	}
	#start.section-start .country-gate-banner {
		padding: var(--space-sm) var(--space-md);
	}
}

.home-proof-media {
	margin: 0;
	border-radius: 8px;
	overflow: hidden;
	background: var(--bg-card, #fff);
}

.home-proof-media img {
	display: block;
	width: 100%;
	height: auto;
}

#eventForm,
#start {
	scroll-margin-top: 5.5rem;
}

/* 404 — même rythme que les pages marketing */
.not-found .not-found-code {
	margin: 0 0 var(--space-sm);
	font-size: clamp(2.5rem, 8vw, 4rem);
	font-weight: 700;
	line-height: 1;
	letter-spacing: -0.04em;
	color: var(--accent);
	opacity: 0.85;
}

.not-found h1 {
	margin: 0 0 var(--space-md);
}

.not-found .marketing-lead {
	margin-bottom: var(--space-sm);
}

.not-found > .text-secondary {
	margin: 0 0 var(--space-lg);
}

.not-found .not-found-actions {
	margin-bottom: var(--space-xl);
}

.not-found-links {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	gap: 0;
	border-top: 1px solid var(--border-subtle);
}

.not-found-links li {
	border-bottom: 1px solid var(--border-subtle);
}

.not-found-links a {
	display: block;
	padding: var(--space-md) 0;
	color: var(--text-primary);
	text-decoration: none;
	font-weight: 600;
}

.not-found-links a:hover,
.not-found-links a:focus-visible {
	color: var(--accent);
	outline: none;
}

/* Pricing page — table + promo/partner code */
.pricing-code-form {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	gap: var(--space-sm) var(--space-md);
	align-items: end;
	margin: 0 0 var(--space-md);
	padding: var(--space-md);
	border: 1px solid var(--border-subtle);
	border-radius: var(--radius-md);
	background: var(--bg-card);
}

.pricing-code-form .form-group {
	margin: 0;
	padding-bottom: 0;
	flex-direction: column;
	align-items: stretch;
	justify-content: flex-start;
}

.pricing-code-form .form-group > *:last-child {
	flex-grow: 0;
	width: 100%;
}

.pricing-code-form__actions {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-sm);
	align-items: center;
}

.pricing-offer-banner {
	margin: 0 0 var(--space-md);
	padding: var(--space-sm) var(--space-md);
	border-radius: var(--radius-sm);
	background: var(--accent-muted);
	color: var(--accent);
	font-weight: 600;
}

.pricing-block {
	margin: 0 0 var(--space-lg);
}

.pricing-block:last-of-type {
	margin-bottom: var(--space-md);
}

.pricing-block__title {
	margin: 0 0 var(--space-sm);
	font-size: 1.15rem;
	font-weight: 700;
	text-align: left;
	color: var(--text-primary);
}

.pricing-table-wrap {
	margin: 0;
}

.pricing-table {
	width: 100%;
	table-layout: fixed;
	border-collapse: collapse;
}

.pricing-table th,
.pricing-table td {
	padding: 0.65rem 0.75rem;
	vertical-align: top;
	border-bottom: 1px solid var(--border-subtle);
}

.pricing-table thead th {
	font-size: 0.85rem;
	text-transform: none;
	color: var(--text-secondary);
	background: var(--bg-zebra);
}

/* Pas de surbrillance hover (ligne / colonne) sur les tableaux tarifs */
.pricing-table-wrap.table-container tbody tr:hover > td,
.pricing-table-wrap.table-container tbody tr:hover > th,
.pricing-table-wrap.table-container tbody tr > td.col-hover,
.pricing-table-wrap.table-container thead tr > th.col-hover {
	background-color: transparent;
}

.pricing-table-wrap.table-container tbody tr:nth-child(even) > td,
.pricing-table-wrap.table-container tbody tr:nth-child(even):hover > td {
	background-color: var(--bg-zebra);
}

.pricing-table-wrap.table-container tbody tr.pricing-table__row--total > th,
.pricing-table-wrap.table-container tbody tr.pricing-table__row--total > td,
.pricing-table-wrap.table-container tbody tr.pricing-table__row--total:hover > th,
.pricing-table-wrap.table-container tbody tr.pricing-table__row--total:hover > td {
	background: color-mix(in srgb, var(--accent, #0d9488) 6%, var(--bg-card, #fff));
}

.pricing-table__col-offer {
	width: auto;
}

.pricing-table__col-num {
	width: 9.5rem;
}

.pricing-table th.pricing-table__num,
.pricing-table td.pricing-table__num {
	padding-left: 0.85rem;
	padding-right: 0.85rem;
	text-align: center;
	white-space: nowrap;
	font-variant-numeric: tabular-nums;
}

.pricing-table thead th.pricing-table__num {
	white-space: normal;
	line-height: 1.3;
	overflow-wrap: break-word;
}

.pricing-table__name {
	font-weight: 600;
	display: inline;
}

.pricing-table__meta {
	display: block;
	font-size: 0.9rem;
	margin-top: 0.15rem;
}

.pricing-table__discount {
	display: inline-block;
	margin-left: 0.4rem;
	padding: 0.1rem 0.4rem;
	border-radius: var(--radius-sm);
	background: var(--success-muted, rgba(5, 150, 105, 0.12));
	color: var(--success, #059669);
	font-size: 0.8rem;
	font-weight: 700;
}

.pricing-table__list {
	display: block;
	text-decoration: line-through;
	color: var(--text-muted);
	font-size: 0.85rem;
	font-weight: 500;
}

.pricing-table__row--total th,
.pricing-table__row--total td {
	padding-top: 0.9rem;
	padding-bottom: 0.9rem;
	font-size: 1.05rem;
	font-weight: 700;
	border-top: 2px solid var(--border-default, #cbd5e1);
	border-bottom: 2px solid var(--border-default, #cbd5e1);
	background: color-mix(in srgb, var(--accent, #0d9488) 6%, var(--bg-card, #fff));
}

.pricing-vat-note {
	margin-top: var(--space-md);
}

@media (max-width: 640px) {
.pricing-code-form {
		grid-template-columns: 1fr;
	}
}

/* ==========================================================================
   Print — MUST stay at end of file (wins over screen min-width / section cards).
   Facture A4 : police compacte, marges serrées, une page.
   ========================================================================== */

@page {
	size: A4;
	margin: 10mm 12mm;
}

@media print {
	html,
	body {
		background: #fff !important;
		color: #111 !important;
		font-size: 9.5pt !important;
		line-height: 1.3 !important;
		min-height: unset !important;
		height: auto !important;
		overflow: visible !important;
		-webkit-print-color-adjust: economy;
		print-color-adjust: economy;
	}

	.container {
		display: block !important;
		justify-content: flex-start !important;
		width: 100% !important;
		max-width: none !important;
		margin: 0 !important;
		padding: 0 !important;
	}

	main {
		display: block !important;
		width: 100% !important;
		max-width: none !important;
		margin: 0 !important;
		padding: 0 !important;
	}

	.no-print,
	header,
	footer,
	.actions,
	.header-actions,
	.admin-nav-menu,
	.header-partner-nav,
	.header-public-nav,
	.header-event-switch-label,
	.partner-notice,
	.logout-notice {
		display: none !important;
	}

	.only-print {
		display: block !important;
	}

	.align-right.only-print,
	.align-right {
		display: block !important;
		width: 100% !important;
		text-align: right !important;
	}

	.align-right > * {
		display: inline-block !important;
		text-align: left !important;
		width: fit-content !important;
	}

	/* Section facture : plus de carte écran */
	section.invoice-print,
	.invoice-print {
		display: block !important;
		flex-direction: unset !important;
		align-items: unset !important;
		width: 100% !important;
		min-width: 0 !important;
		max-width: none !important;
		margin: 0 !important;
		padding: 0 !important;
		border: none !important;
		border-radius: 0 !important;
		box-shadow: none !important;
		background: transparent !important;
		opacity: 1 !important;
		transform: none !important;
		page-break-after: always;
		page-break-inside: avoid;
		overflow: visible !important;
	}

	section.invoice-print:last-of-type,
	.invoice-print:last-of-type {
		page-break-after: auto;
	}

	.invoice-print.break,
	.break {
		page-break-before: always;
		page-break-inside: avoid;
	}

	.break:first-child,
	.invoice-print.break:first-of-type {
		page-break-before: avoid;
	}

	.invoice-print h4 {
		font-size: 12pt !important;
		font-weight: 700 !important;
		margin: 0 0 0.35rem !important;
		padding: 0 !important;
		color: #111 !important;
	}

	.invoice-print p {
		font-size: 9pt !important;
		margin: 0 0 0.3rem !important;
		color: #111 !important;
	}

	/* Spacer HTML height:50px → compact en print */
	.invoice-print > div.only-print:not(.align-right) {
		height: 10px !important;
		max-height: 10px !important;
		margin: 0 !important;
		padding: 0 !important;
		overflow: hidden !important;
	}

	.table-container {
		width: 100% !important;
		max-width: none !important;
		max-height: none !important;
		margin: 0.4rem 0 0.6rem !important;
		padding: 0 !important;
		overflow: visible !important;
		border: none !important;
		border-radius: 0 !important;
		box-shadow: none !important;
		background: transparent !important;
	}

	.table-container table,
	.table-container .purchases {
		width: 100% !important;
		min-width: 0 !important;
		max-width: none !important;
		table-layout: auto !important;
		border-collapse: collapse !important;
	}

	.table-container thead {
		position: static !important;
	}

	.table-container th,
	.table-container td,
	.table-container .purchases th,
	.table-container .purchases td {
		min-width: 0 !important;
		max-width: none !important;
		padding: 0.18rem 0.35rem !important;
		font-size: 8.5pt !important;
		line-height: 1.25 !important;
		word-break: break-word !important;
		overflow-wrap: anywhere !important;
		white-space: normal !important;
		border-bottom: 1px solid #333 !important;
		background: transparent !important;
		color: #111 !important;
		box-shadow: none !important;
	}

	.table-container td {
		border-top: 1px solid #333 !important;
	}

	.table-container tbody tr:nth-child(odd) > td,
	.table-container tbody tr:nth-child(even) > td,
	.table-container tbody tr:hover > td,
	.table-container tbody tr > td.col-hover,
	.table-container thead tr > th.col-hover,
	.table-container > table tbody td.is-frozen-col,
	.table-container > table thead th.is-frozen-col {
		background: transparent !important;
	}

	* {
		scrollbar-width: none !important;
		-ms-overflow-style: none !important;
	}

	*::-webkit-scrollbar {
		display: none !important;
	}
}
