/*
 * ZePartner Contact — formulaire public.
 *
 * Aucune couleur ni police propre : tout passe par les variables --zpc-*, posées
 * par le plugin depuis le kit Elementor actif (ou la surcharge des réglages), puis
 * par les variables globales d'Elementor, et seulement en dernier recours par une
 * valeur neutre.
 *
 * Sélecteurs à deux classes au moins (.zpc .zpc-x) : le thème et le kit Elementor
 * stylent input, button et label avec une spécificité de (0,1,1).
 */

.zpc {
	--zpc-primary: var(--zpc-color-primary, var(--e-global-color-primary, #1f3a5f));
	--zpc-secondary: var(--zpc-color-secondary, var(--e-global-color-secondary, #2f6fa8));
	--zpc-ink: var(--zpc-color-text, var(--e-global-color-text, #1f2933));
	--zpc-accent-c: var(--zpc-color-accent, var(--e-global-color-accent, #d98b1f));
	--zpc-ff-title: var(--zpc-font-primary, var(--e-global-typography-primary-font-family, inherit));
	--zpc-ff-text: var(--zpc-font-secondary, var(--e-global-typography-text-font-family, inherit));
	--zpc-btn-bg: var(--zpc-button-bg, var(--zpc-primary));
	--zpc-btn-fg: var(--zpc-button-text, #fff);
	--zpc-btn-radius: var(--zpc-button-radius, 8px);
	--zpc-btn-weight: var(--zpc-button-weight, 600);
	--zpc-soft: color-mix(in srgb, var(--zpc-primary) 7%, #fff);
	--zpc-line: color-mix(in srgb, var(--zpc-ink) 18%, #fff);
	--zpc-muted: color-mix(in srgb, var(--zpc-ink) 72%, #fff);
	--zpc-error: #b42318;
	--zpc-focus: var(--zpc-secondary);
	--zpc-r: 12px;
	--zpc-ease: cubic-bezier(.16, .84, .44, 1);

	position: relative;
	font-family: var(--zpc-ff-text);
	color: var(--zpc-ink);
	line-height: 1.55;
	max-width: 46rem;
	margin-inline: auto;
}

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

/* ---------------------------------------------------------------- En-tête */

.zpc .zpc-head {
	margin-bottom: 1.75rem;
}

.zpc .zpc-title {
	font-family: var(--zpc-ff-title);
	color: var(--zpc-primary);
	font-size: clamp(1.5rem, 1.1rem + 1.6vw, 2.1rem);
	line-height: 1.15;
	letter-spacing: -.01em;
	margin: 0 0 .4em;
}

.zpc .zpc-intro {
	margin: 0;
	color: var(--zpc-muted);
}

.zpc .zpc-progress {
	margin-top: 1.25rem;
	display: flex;
	align-items: center;
	gap: .9rem;
}

.zpc .zpc-progress-track {
	flex: 1;
	height: 6px;
	border-radius: 6px;
	background: var(--zpc-soft);
	overflow: hidden;
}

.zpc .zpc-progress-bar {
	display: block;
	height: 100%;
	width: 0;
	border-radius: inherit;
	background: var(--zpc-secondary);
	transition: width var(--zpc-speed, 300ms) var(--zpc-ease);
}

.zpc .zpc-progress-text {
	margin: 0;
	font-size: .85rem;
	font-variant-numeric: tabular-nums;
	color: var(--zpc-muted);
	white-space: nowrap;
}

/* ---------------------------------------------------------------- Questions */

.zpc .zpc-step {
	margin-bottom: 2rem;
}

.zpc .zpc-q {
	border: 0;
	margin: 0;
	padding: 0;
	min-width: 0;
}

.zpc .zpc-label {
	display: flex;
	align-items: baseline;
	flex-wrap: wrap;
	gap: .55rem;
	float: none;
	width: 100%;
	padding: 0;
	margin: 0 0 .75rem;
	font-family: var(--zpc-ff-title);
	font-size: clamp(1.15rem, 1rem + .6vw, 1.45rem);
	font-weight: 600;
	line-height: 1.3;
	color: var(--zpc-primary);
	vertical-align: baseline;
}

.zpc .zpc-num {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 1.7em;
	height: 1.7em;
	padding: 0 .4em;
	border-radius: 6px;
	background: var(--zpc-soft);
	color: var(--zpc-secondary);
	font-family: var(--zpc-ff-text);
	font-size: .7em;
	font-weight: 700;
	transform: translateY(-.1em);
}

.zpc .zpc-nojs {
	font-family: var(--zpc-ff-text);
	font-size: .7em;
	font-weight: 400;
	color: var(--zpc-muted);
}

.zpc .zpc-help {
	margin: -.35rem 0 .85rem;
	font-size: .95rem;
	color: var(--zpc-muted);
}

.zpc .zpc-input {
	display: block;
	width: 100%;
	margin: 0;
	padding: .7em .1em;
	border: 0;
	border-bottom: 2px solid var(--zpc-line);
	border-radius: 0;
	background: transparent;
	color: var(--zpc-ink);
	font-family: var(--zpc-ff-text);
	font-size: clamp(1.1rem, 1rem + .5vw, 1.35rem);
	line-height: 1.3;
	box-shadow: none;
	transition: border-color .2s;
}

.zpc .zpc-input::placeholder {
	color: color-mix(in srgb, var(--zpc-ink) 66%, #fff); /* ≥ 4,5:1 sur blanc */
	opacity: 1;
}

.zpc .zpc-input:focus {
	outline: none;
	border-bottom-color: var(--zpc-secondary);
	box-shadow: 0 2px 0 0 var(--zpc-secondary);
}

.zpc .zpc-input[aria-invalid="true"] {
	border-bottom-color: var(--zpc-error);
}

/* Cartes de choix */

.zpc .zpc-choices {
	display: grid;
	gap: .6rem;
	max-width: 32rem;
}

.zpc .zpc-card {
	position: relative;
	display: flex;
	align-items: center;
	gap: .8rem;
	width: 100%;
	margin: 0;
	padding: .75rem 1rem;
	border: 1.5px solid var(--zpc-line);
	border-radius: var(--zpc-r);
	background: #fff;
	color: var(--zpc-ink);
	font-size: 1.02rem;
	line-height: 1.35;
	cursor: pointer;
	transition: border-color .18s, background-color .18s, transform .18s var(--zpc-ease);
}

.zpc .zpc-card:hover {
	border-color: var(--zpc-secondary);
	background: var(--zpc-soft);
}

.zpc .zpc-radio {
	position: absolute;
	opacity: 0;
	width: 1px;
	height: 1px;
	margin: 0;
	pointer-events: none;
}

.zpc .zpc-key {
	flex: none;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 1.75rem;
	height: 1.75rem;
	border: 1.5px solid var(--zpc-line);
	border-radius: 6px;
	background: #fff;
	font-size: .8rem;
	font-weight: 700;
	color: var(--zpc-secondary);
	transition: inherit;
}

.zpc .zpc-card:has(.zpc-radio:checked) {
	border-color: var(--zpc-primary);
	background: var(--zpc-soft);
	box-shadow: inset 0 0 0 1px var(--zpc-primary);
}

.zpc .zpc-card:has(.zpc-radio:checked) .zpc-key {
	background: var(--zpc-primary);
	border-color: var(--zpc-primary);
	color: #fff;
}

.zpc .zpc-card:has(.zpc-radio:focus-visible) {
	outline: 3px solid var(--zpc-focus);
	outline-offset: 2px;
}

.zpc .zpc-card.is-picked {
	transform: scale(.985);
}

/* Erreurs */

.zpc .zpc-error,
.zpc .zpc-form-error {
	margin: .55rem 0 0;
	min-height: 0;
	font-size: .92rem;
	font-weight: 500;
	color: var(--zpc-error);
}

.zpc .zpc-error:empty,
.zpc .zpc-form-error:empty {
	margin: 0;
}

.zpc .zpc-alert {
	margin: 0 0 1.75rem;
	padding: 1rem 1.2rem;
	border-left: 4px solid var(--zpc-error);
	border-radius: 0 var(--zpc-r) var(--zpc-r) 0;
	background: color-mix(in srgb, var(--zpc-error) 7%, #fff);
	color: var(--zpc-ink);
}

.zpc .zpc-alert p,
.zpc .zpc-alert ul {
	margin: 0;
}

.zpc .zpc-alert ul {
	margin-top: .4rem;
	padding-left: 1.2rem;
}

.zpc .zpc-alert a {
	color: var(--zpc-error);
}

/* ---------------------------------------------------------------- Navigation et boutons */

.zpc .zpc-nav {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: .75rem 1rem;
	margin-top: 1.4rem;
}

.zpc .zpc-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: .5em;
	min-height: 2.9rem;
	margin: 0;
	padding: .7em 1.5em;
	border: 1.5px solid var(--zpc-btn-bg);
	border-radius: var(--zpc-btn-radius);
	background: var(--zpc-btn-bg);
	color: var(--zpc-btn-fg);
	font-family: var(--zpc-ff-text);
	font-size: 1rem;
	font-weight: var(--zpc-btn-weight);
	line-height: 1.2;
	text-transform: none;
	letter-spacing: normal;
	text-decoration: none;
	cursor: pointer;
	transition: transform .2s var(--zpc-ease), box-shadow .2s, background-color .2s, border-color .2s, color .2s;
}

.zpc .zpc-btn:hover,
.zpc .zpc-btn:focus-visible {
	background: var(--zpc-btn-bg);
	color: var(--zpc-btn-fg);
	border-color: var(--zpc-btn-bg);
	transform: translateY(-1px);
	box-shadow: 0 6px 18px color-mix(in srgb, var(--zpc-btn-bg) 30%, transparent);
}

.zpc .zpc-btn:focus-visible,
.zpc .zpc-recap-item:focus-visible,
.zpc .zpc-check:focus-visible {
	outline: 3px solid var(--zpc-focus);
	outline-offset: 2px;
}

.zpc .zpc-btn--ghost,
.zpc .zpc-btn--ghost:hover,
.zpc .zpc-btn--ghost:focus-visible {
	background: transparent;
	border-color: transparent;
	color: var(--zpc-muted);
	box-shadow: none;
	padding-inline: .6em;
}

.zpc .zpc-btn--ghost:hover {
	color: var(--zpc-primary);
	text-decoration: underline;
	transform: none;
}

.zpc .zpc-btn[disabled],
.zpc .zpc-btn[aria-busy="true"] {
	opacity: .65;
	cursor: progress;
	transform: none;
}

.zpc .zpc-hint {
	font-size: .85rem;
	color: var(--zpc-muted);
}

/* ---------------------------------------------------------------- Écran final */

.zpc .zpc-recap {
	list-style: none;
	margin: 0 0 1.5rem;
	padding: 0;
	border-top: 1px solid var(--zpc-line);
}

.zpc .zpc-recap li {
	margin: 0;
	border-bottom: 1px solid var(--zpc-line);
}

.zpc .zpc-recap-item {
	display: grid;
	grid-template-columns: minmax(8rem, 38%) 1fr auto;
	gap: .3rem 1rem;
	align-items: baseline;
	width: 100%;
	margin: 0;
	padding: .75rem .25rem;
	border: 0;
	border-radius: 0;
	background: transparent;
	color: var(--zpc-ink);
	font: inherit;
	text-align: left;
	text-transform: none;
	cursor: pointer;
}

.zpc .zpc-recap-item:hover {
	background: var(--zpc-soft);
	color: var(--zpc-ink);
}

.zpc .zpc-recap-k {
	font-size: .88rem;
	color: var(--zpc-muted);
}

.zpc .zpc-recap-v {
	font-weight: 600;
	overflow-wrap: anywhere;
}

.zpc .zpc-recap-v.is-empty {
	font-weight: 400;
	font-style: italic;
	color: var(--zpc-muted);
}

.zpc .zpc-recap-edit {
	font-size: .85rem;
	color: var(--zpc-secondary);
	text-decoration: underline;
}

.zpc .zpc-consent {
	display: flex;
	align-items: flex-start;
	gap: .75rem;
	padding: 1rem 1.1rem;
	border: 1.5px solid var(--zpc-line);
	border-radius: var(--zpc-r);
	background: #fff;
}

.zpc .zpc-consent.has-error {
	border-color: var(--zpc-error);
}

.zpc .zpc-check {
	flex: none;
	width: 1.25rem;
	height: 1.25rem;
	margin: .15rem 0 0;
	accent-color: var(--zpc-primary);
	cursor: pointer;
}

.zpc .zpc-consent label {
	display: block;
	font-size: .95rem;
	line-height: 1.5;
	cursor: pointer;
}

.zpc .zpc-consent a {
	color: var(--zpc-secondary);
	text-decoration: underline;
}

.zpc .zpc-captcha {
	margin-top: 1rem;
}

/* Remerciement */

.zpc .zpc-thanks {
	padding: 2rem 1.5rem;
	border-radius: var(--zpc-r);
	background: var(--zpc-soft);
	font-size: 1.05rem;
}

.zpc .zpc-thanks:focus {
	outline: none;
}

.zpc .zpc-thanks > :first-child {
	margin-top: 0;
}

.zpc .zpc-thanks > :last-child {
	margin-bottom: 0;
}

.zpc .zpc-thanks strong {
	display: block;
	margin-bottom: .35em;
	font-family: var(--zpc-ff-title);
	font-size: 1.35rem;
	color: var(--zpc-primary);
}

/* Texte réservé aux lecteurs d'écran */

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

/* Piège à robots : hors écran, jamais display:none (certains robots l'ignorent alors). */

.zpc .zpc-hp {
	position: absolute !important;
	left: -10000px !important;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

/* ---------------------------------------------------------------- Mode sans JavaScript */

.zpc:not(.zpc--js) .zpc-nav .zpc-prev,
.zpc:not(.zpc--js) .zpc-nav .zpc-next,
.zpc:not(.zpc--js) .zpc-hint,
.zpc:not(.zpc--js) .zpc-recap-wrap {
	display: none;
}

.zpc.zpc--js .zpc-nojs {
	display: none;
}

/* ---------------------------------------------------------------- Mode page unique, avec JavaScript */

.zpc--js.zpc--page .zpc-nav .zpc-prev,
.zpc--js.zpc--page .zpc-nav .zpc-next,
.zpc--js.zpc--page .zpc-hint,
.zpc--js.zpc--page .zpc-recap-wrap {
	display: none;
}

/* ---------------------------------------------------------------- Mode une question par écran */

.zpc--js.zpc--steps .zpc-steps {
	min-height: 21rem;
}

.zpc--js.zpc--steps .zpc-step {
	display: none;
	margin: 0;
}

.zpc--js.zpc--steps .zpc-step.is-active {
	display: block;
	animation: zpc-in var(--zpc-speed, 300ms) var(--zpc-ease) both;
}

.zpc--js.zpc--steps .zpc-step.is-active.is-back {
	animation-name: zpc-in-back;
}

@keyframes zpc-in {
	from {
		opacity: 0;
		transform: translateY(1.5rem);
	}
}

@keyframes zpc-in-back {
	from {
		opacity: 0;
		transform: translateY(-1.5rem);
	}
}

@media (prefers-reduced-motion: reduce) {
	.zpc *,
	.zpc *::before,
	.zpc *::after {
		animation: none !important;
		transition: none !important;
	}
}

@media (max-width: 600px) {
	.zpc .zpc-recap-item {
		grid-template-columns: 1fr auto;
	}

	.zpc .zpc-recap-k {
		grid-column: 1 / -1;
	}

	.zpc .zpc-hint {
		display: none;
	}
}

.zpc .zpc-recap-title:focus {
	outline: none;
}
