/**
 * Widget Elementor : Roue en 4 étapes (cadran central animé)
 */
.pumpup-wheel {
	--pumpup-wheel-dial-size: 300px;

	--pumpup-wheel-bg: var( --pumpup-color-accent, #E8FE8A );
	--pumpup-wheel-ink: var( --pumpup-color-dark, #151C15 );
	--pumpup-wheel-accent: var( --pumpup-color-dark, #151C15 );
	--pumpup-wheel-ring: color-mix( in srgb, var( --pumpup-wheel-ink ) 16%, transparent );
	--pumpup-wheel-tick: color-mix( in srgb, var( --pumpup-wheel-ink ) 32%, transparent );
	--pumpup-wheel-muted: color-mix( in srgb, var( --pumpup-wheel-ink ) 64%, transparent );
	--pumpup-wheel-dim: 0.34;

	position: relative;
	overflow: hidden;
	background: var( --pumpup-wheel-bg );
	color: var( --pumpup-wheel-ink );
	padding: clamp( 32px, 5vw, 60px ) clamp( 20px, 4vw, 56px ) clamp( 36px, 5vw, 56px );
}

.pumpup-wheel[data-skin="forest"] {
	--pumpup-wheel-bg: var( --pumpup-color-dark, #151C15 );
	--pumpup-wheel-ink: var( --pumpup-color-secondaire, #F2F2F2 );
	--pumpup-wheel-accent: var( --pumpup-color-accent, #E8FE8A );
	--pumpup-wheel-dim: 0.36;
}

/* ---------- En-tête ---------- */
.pumpup-wheel__head {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	justify-content: space-between;
	gap: 16px;
	margin-bottom: clamp( 16px, 3vw, 28px );
}

.pumpup-wheel__title {
	font-family: var( --pumpup-font-heading, serif );
	font-weight: 400;
	font-size: clamp( 2.4rem, 6vw, 4.2rem );
	line-height: 0.98;
	margin: 0;
	letter-spacing: -0.01em;
	color: var( --pumpup-wheel-ink );
}

.pumpup-wheel__kicker {
	font-size: 0.7rem;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var( --pumpup-wheel-muted );
	margin: 0;
	font-weight: 500;
}

/* ---------- Grille : 4 étapes + cadran ---------- */
.pumpup-wheel__grid {
	display: grid;
	grid-template-columns: 1fr auto 1fr;
	grid-template-rows: auto auto;
	grid-template-areas: "s4 dial s1" "s3 dial s2";
	align-items: center;
	column-gap: clamp( 16px, 3vw, 44px );
	row-gap: clamp( 24px, 4vw, 52px );
}

.pumpup-wheel__dial {
	grid-area: dial;
	position: relative;
	justify-self: center;
}

.pumpup-wheel__step--s1 { grid-area: s1; }
.pumpup-wheel__step--s2 { grid-area: s2; }
.pumpup-wheel__step--s3 { grid-area: s3; }
.pumpup-wheel__step--s4 { grid-area: s4; }

.pumpup-wheel__step {
	background: none;
	border: 0;
	padding: 0;
	margin: 0;
	font-family: var( --pumpup-font-body );
	color: inherit;
	text-align: left;
	cursor: pointer;
	display: flex;
	align-items: flex-start;
	gap: clamp( 12px, 1.6vw, 22px );
	opacity: var( --pumpup-wheel-dim );
	transition: opacity 0.5s ease;
	width: 100%;
}

.pumpup-wheel__step,
.pumpup-wheel__step:hover,
.pumpup-wheel__step:focus,
.pumpup-wheel__step:active {
	background: none;
	color: inherit;
	text-decoration: none;
	box-shadow: none;
	border-radius: 0;
}

.pumpup-wheel__step.is-active {
	opacity: 1;
}

.pumpup-wheel__step:focus-visible {
	outline: 2px solid var( --pumpup-wheel-accent );
	outline-offset: 6px;
}

.pumpup-wheel__step--s4,
.pumpup-wheel__step--s3 {
	flex-direction: row-reverse;
}

.pumpup-wheel__step--s4 .pumpup-wheel__step-txt,
.pumpup-wheel__step--s3 .pumpup-wheel__step-txt {
	text-align: right;
	align-items: flex-end;
}

.pumpup-wheel__step-num {
	font-family: var( --pumpup-font-heading, serif );
	font-size: clamp( 2.7rem, 5.6vw, 4.4rem );
	font-weight: 300;
	line-height: 0.86;
	letter-spacing: -0.02em;
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
	flex: 0 0 auto;
	color: var( --pumpup-wheel-ink );
	transition: color 0.5s ease;
}

.pumpup-wheel__step.is-active .pumpup-wheel__step-num {
	color: var( --pumpup-wheel-accent );
}

.pumpup-wheel__step-txt {
	display: flex;
	flex-direction: column;
	gap: 6px;
	padding-top: 6px;
	min-width: 0;
}

.pumpup-wheel__step-label {
	font-family: var( --pumpup-font-body );
	font-size: 0.76rem;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	font-weight: 600;
	white-space: normal;
	display: inline-block;
	position: relative;
	padding-bottom: 7px;
}

.pumpup-wheel__step-label::after {
	content: "";
	position: absolute;
	left: 0;
	bottom: 0;
	height: 1px;
	width: 0;
	background: var( --pumpup-wheel-accent );
	transition: width 0.6s cubic-bezier( .65, 0, .35, 1 );
}

.pumpup-wheel__step--s4 .pumpup-wheel__step-label::after,
.pumpup-wheel__step--s3 .pumpup-wheel__step-label::after {
	left: auto;
	right: 0;
}

.pumpup-wheel__step.is-active .pumpup-wheel__step-label::after {
	width: 100%;
}

.pumpup-wheel__step-desc {
	display: block;
	font-family: var( --pumpup-font-body );
	font-size: 0.94rem;
	line-height: 1.5;
	color: var( --pumpup-wheel-muted );
	white-space: normal;
	max-width: 31ch;
}

/* ---------- Cadran ---------- */
.pumpup-wheel__dial-svg {
	display: block;
	width: var( --pumpup-wheel-dial-size );
	max-width: 32vw;
	height: auto;
}

.pumpup-wheel__dial-ring {
	fill: none;
	stroke: var( --pumpup-wheel-ring );
	stroke-width: 1.5;
}

.pumpup-wheel__dial-tick {
	stroke: var( --pumpup-wheel-tick );
	stroke-width: 1.5;
}

.pumpup-wheel__dial-rotor {
	transform-box: view-box;
	transform-origin: 170px 170px;
	transform: rotate( 45deg );
	transition: transform 1s cubic-bezier( .66, 0, .28, 1 );
}

.pumpup-wheel__dial-arc {
	fill: none;
	stroke: var( --pumpup-wheel-accent );
	stroke-width: 2.5;
	stroke-dasharray: 181.5 635.3;
	stroke-dashoffset: 181.5;
	transform: rotate( -90deg );
	transform-box: view-box;
	transform-origin: 170px 170px;
}

.pumpup-wheel__dial-head {
	fill: var( --pumpup-wheel-accent );
}

.pumpup-wheel__dial-center {
	position: absolute;
	inset: 0;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	text-align: center;
	padding: 0 20%;
	pointer-events: none;
}

.pumpup-wheel__dial-eyebrow {
	font-size: 0.6rem;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: var( --pumpup-wheel-muted );
	margin: 0 0 10px;
	font-weight: 500;
}

.pumpup-wheel__dial-word {
	font-family: var( --pumpup-font-heading, serif );
	font-size: clamp( 1.4rem, 3vw, 2rem );
	line-height: 1.04;
	margin: 0;
	color: var( --pumpup-wheel-ink );
	transition: opacity 0.38s ease, transform 0.38s ease;
}

.pumpup-wheel__dial-word.is-out {
	opacity: 0;
	transform: translateY( 6px );
}

/* ---------- Pied ---------- */
.pumpup-wheel__foot {
	margin: clamp( 26px, 4vw, 42px ) 0 0;
	font-family: var( --pumpup-font-body );
	font-size: 0.82rem;
	line-height: 1.5;
	color: var( --pumpup-wheel-muted );
	max-width: 60ch;
}

@media ( max-width: 860px ) {
	.pumpup-wheel__grid {
		grid-template-columns: 1fr;
		grid-template-rows: auto;
		grid-template-areas: "dial" "s1" "s2" "s3" "s4";
		row-gap: 22px;
	}

	.pumpup-wheel__dial {
		margin-bottom: 8px;
	}

	.pumpup-wheel__dial-svg {
		max-width: min( 320px, 74vw );
	}

	.pumpup-wheel__step--s4,
	.pumpup-wheel__step--s3 {
		flex-direction: row;
	}

	.pumpup-wheel__step--s4 .pumpup-wheel__step-txt,
	.pumpup-wheel__step--s3 .pumpup-wheel__step-txt {
		text-align: left;
		align-items: flex-start;
	}

	.pumpup-wheel__step--s4 .pumpup-wheel__step-label::after,
	.pumpup-wheel__step--s3 .pumpup-wheel__step-label::after {
		left: 0;
		right: auto;
	}

	.pumpup-wheel__step {
		opacity: 0.58;
	}

	.pumpup-wheel__step-num {
		font-size: 2.5rem;
	}

	.pumpup-wheel__step-desc {
		max-width: none;
	}
}

@media ( prefers-reduced-motion: reduce ) {
	.pumpup-wheel__dial-rotor,
	.pumpup-wheel__step {
		transition: none;
	}

	.pumpup-wheel__step {
		opacity: 1;
	}

	.pumpup-wheel__step-label::after {
		width: 100%;
	}
}
