/*
 * Menu Pizze (.pz-wheel-*)
 * Layout "reference": blocco info (nome, ingredienti, prezzo) a sinistra in
 * flusso normale, centrato verticalmente nella riga (.pz-wheel-stage,
 * altezza fissa = 60% del diametro della pizza ingrandita). La pizza
 * (.pz-wheel-main, diametro calc(--pizza-menu-size * 1.6)) e' invece fuori
 * flusso (position:absolute, ancorata in alto a destra della riga):
 * siccome la riga e' alta solo il 60% del suo diametro ED ha
 * overflow:hidden, il restante 40% (la parte bassa) viene tagliato dal
 * bordo della riga stessa.
 *
 * Sezione sticky a piena altezza: .pz-wheel-pin-wrapper e' un contenitore
 * piu' alto di un viewport (100vh + margine) con .pz-wheel-section
 * position:sticky al suo interno, cosi' il browser la tiene incollata a
 * top:0 (schermo pieno di solo sfondo di questa sezione, nessun'altra
 * sezione visibile) per tutta la durata della rotazione.
 * .pz-wheel-inner (titolo + stage, spaziatura interna INVARIATA rispetto
 * al layout compatto originale) e' ancorato al fondo della sezione via
 * position:absolute; bottom:0 (non display:flex sulla sezione - un
 * tentativo precedente in tal senso alterava la larghezza/centratura
 * orizzontale di .pz-wheel-inner, "schiacciando" la pizza e sovrapponendola
 * al blocco info di sinistra). left/right:20px replicano il padding
 * orizzontale della sezione, cosi' margin:auto centra .pz-wheel-inner
 * esattamente come un blocco normale nel flusso. Tutto lo spazio nero
 * extra (per riempire i 100vh) si accumula SOPRA il titolo, mentre il
 * fondo della pizza (ultimo elemento dentro inner) combacia sempre
 * esattamente con la fine della sezione.
 */
.pz-wheel-pin-wrapper {
	position: relative;
	height: calc(100vh + 400px);
}

.pz-wheel-section {
	position: sticky;
	top: 0;
	min-height: 100vh;
	padding: calc(var(--pz-section-padding-top) / 2) 20px 0;
	background-color: var(--pz-color-darkest);
	text-align: center;
}

.pz-wheel-inner {
	position: absolute;
	left: 20px;
	right: 20px;
	bottom: 0;
	max-width: var(--pz-wheel-max-width);
	margin: 0 auto;
}

/* Selettore .pz-wheel-section .pz-wheel-heading (2 classi) invece del solo
 * .pz-wheel-heading (1 classe): la tipografia di base di Kadence per
 * .single-content h1..h6 ha specificita' (0,1,1) e sovrascriveva
 * margin-bottom qui (era sempre 0.5em/16.56px a runtime, mai i valori
 * impostati nei round precedenti). */
.pz-wheel-section .pz-wheel-heading {
	margin: 0 0 8.28px;
	padding-left: 0;
	width: calc(100% - 330px);
	font-size: clamp(2.07rem, 4.6vw, 2.99rem);
	font-weight: 800;
	color: var(--pz-color-light);
	text-align: left;
	font-family: var(--pz-font-title);
	text-transform: uppercase;
	white-space: nowrap;
}

.pz-wheel-stage {
	position: relative;
	display: flex;
	align-items: center;
	height: calc(var(--pizza-menu-size) * 0.96);
	overflow: hidden;
}

/* Miniature nascoste: si vede solo la pizza grande che ruota (navigazione
 * via scroll, vedi pz-wheel.js). Restano nel DOM - non rimosse - cosi'
 * il JS puo' ancora leggerne i data-attributes senza modifiche. */
.pz-wheel-list {
	display: none;
}

.pz-wheel-item {
	position: relative;
	width: 50px;
	height: 50px;
	background: none;
	border: none;
	padding: 0;
	cursor: pointer;
}

.pz-wheel-item__glow {
	position: absolute;
	top: 50%;
	left: 50%;
	width: 76px;
	height: 76px;
	margin: -38px 0 0 -38px;
	border-radius: 50%;
	background: radial-gradient(circle, rgba(var(--pz-color-light-rgb), 0.28) 0%, rgba(var(--pz-color-light-rgb), 0) 70%);
	opacity: 0;
	transform: scale(0.7);
	transition: opacity 0.3s ease, transform 0.3s ease;
	pointer-events: none;
}

.pz-wheel-item__thumb {
	display: block;
	width: 100%;
	height: 100%;
	border-radius: 50%;
	background-size: cover;
	background-position: center;
	border: 2px solid rgba(var(--pz-color-light-rgb), 0.2);
	transition: transform 0.3s ease, border-color 0.3s ease;
}

.pz-wheel-item:focus-visible .pz-wheel-item__thumb {
	outline: 2px solid var(--pz-color-accent-light);
	outline-offset: 2px;
}

.pz-wheel-item.is-active .pz-wheel-item__glow {
	opacity: 1;
	transform: scale(1);
}

.pz-wheel-item.is-active .pz-wheel-item__thumb {
	transform: scale(1.18);
	border-color: var(--pz-color-accent-light);
}

.pz-wheel-main {
	position: absolute;
	z-index: 1;
	top: 0;
	right: 0;
	width: calc(var(--pizza-menu-size) * 1.6);
	height: calc(var(--pizza-menu-size) * 1.6);
}

/*
 * Due livelli sovrapposti (invece di uno) per un vero cross-fade: al cambio
 * pizza il livello "back" riceve la nuova immagine e sale a opacity:1 mentre
 * il livello "front" scende a opacity:0, in contemporanea sulla stessa
 * transizione - mai un istante intermedio a opacity:0 su entrambi (l'effetto
 * "on/off" di prima), sempre una dissolvenza incrociata continua.
 */
.pz-wheel-main__img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	border-radius: 50%;
	background-size: cover;
	background-position: center;
	filter: drop-shadow(0 18px 30px rgba(0, 0, 0, 0.45));
	transform: rotate(0deg);
	transform-origin: center center;
	opacity: 0;
	transition: opacity 0.6s ease, transform 0.8s cubic-bezier(0.22, 1, 0.36, 1);
}

.pz-wheel-main__img.is-front {
	opacity: 1;
}

/* Colonna sinistra: nome pizza, ingredienti e prezzo impilati in un unico
 * blocco, centrato verticalmente nella riga (.pz-wheel-stage) tramite
 * align-items:center del genitore. Spaziatura uniforme di 20px tra gli
 * elementi del blocco, eccetto nome/ingredienti a 10px (gestita
 * internamente da .pz-wheel-details). z-index maggiore di .pz-wheel-main
 * cosi' il testo resta sempre leggibile sopra la pizza nell'eventuale
 * sovrapposizione ai bordi. */
.pz-wheel-side {
	position: relative;
	z-index: 2;
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 20px;
	flex: 0 0 auto;
	margin-top: -163px;
	margin-left: 40px;
	text-align: left;
}

.pz-wheel-details {
	display: flex;
	flex-direction: column;
	gap: 10px;
	opacity: 1;
	transition: opacity 0.2s ease;
}

.pz-wheel-details.is-fading {
	opacity: 0;
}

.pz-wheel-details__title {
	margin: 0;
	font-size: 1.92rem;
	font-weight: 800;
	color: var(--pz-color-light);
	font-family: var(--pz-font-secondary);
}

.pz-wheel-details__ingredients {
	margin: 0;
	max-width: 312px;
	font-size: 1.14rem;
	color: var(--pz-color-light-muted);
	font-family: var(--pz-font-secondary);
}

.pz-wheel-price {
	display: inline-block;
	min-width: var(--pz-badge-price-min-width);
	padding: 10px 19px;
	border-radius: 999px;
	background-color: var(--pz-color-accent-light);
	color: var(--pz-color-white);
	font-size: 1.2rem;
	font-weight: 800;
	text-align: center;
	box-shadow: 0 8px 18px rgba(0, 0, 0, 0.35);
	opacity: 1;
	transition: opacity 0.2s ease;
}

.pz-wheel-price.is-fading {
	opacity: 0;
}

/* Sotto i 900px il layout "reference" (pizza fuori flusso, tagliata dalla
 * sezione sotto) non e' praticabile: si torna a un impilamento semplice e
 * sicuro, pizza e freccia rimesse in flusso normale (nessun overflow). */
@media (max-width: 900px) {
	.pz-wheel-heading {
		padding-left: 0;
		width: auto;
	}

	.pz-wheel-stage {
		height: auto;
		flex-wrap: wrap;
		justify-content: center;
		gap: 24px;
	}

	.pz-wheel-side {
		align-items: center;
		margin-top: 0;
		margin-left: 0;
		text-align: center;
		gap: 16px;
	}

	.pz-wheel-details__ingredients {
		max-width: none;
	}

	.pz-wheel-main {
		position: relative;
		top: auto;
		right: auto;
		width: var(--pizza-menu-size);
		height: var(--pizza-menu-size);
	}
}

@media (max-width: 720px) {
	.pz-wheel-list {
		flex-direction: row;
		gap: 10px;
	}

	.pz-wheel-item {
		width: 42px;
		height: 42px;
	}

	.pz-wheel-item__glow {
		width: 64px;
		height: 64px;
		margin: -32px 0 0 -32px;
	}

	.pz-wheel-main {
		width: 210px;
		height: 210px;
	}

	.pz-wheel-price {
		font-size: 0.85rem;
		padding: 6px 12px;
	}
}
