/*
 * ON Storie On Time: le ultime storie a fisarmonica (home, #storie).
 * Porta home.css .storie e .fisa (righe 182-214, 497-518, 569-593, 658-661, 701-708, 744-747, 762-765, 846-858)
 * con le correzioni finali del prototipo: contatore VHS e barra di tracking nel DOM ma nascosti
 * (home.css:837), tinta verde e scanline leggere.
 * Mobile first: sotto i 600 px il telefono, 600-900 il tablet, da 901 il desktop.
 * Lo stato "aperto" è la classe is-open, messa dal server sul primo pannello e poi dal JS.
 */

.on-storie {
	/* Colori decorativi del mondo ON, derivati dai token: puntinato del fondo, ombre e velature sulle foto */
	--on-storie-punti: color-mix(in srgb, var(--on-white) 6%, transparent);
	--on-storie-fondo-pan: color-mix(in srgb, var(--on-white) 3%, var(--on-black));
	--on-storie-scanline: color-mix(in srgb, var(--on-shade) 10%, transparent);
	--on-storie-velo-chiuso: linear-gradient(180deg, color-mix(in srgb, var(--on-shade) 30%, transparent), transparent 30%, transparent 55%, color-mix(in srgb, var(--on-shade) 88%, transparent) 100%), repeating-linear-gradient(0deg, var(--on-storie-scanline) 0 2px, transparent 2px 5px);
	--on-storie-velo-aperto: linear-gradient(180deg, color-mix(in srgb, var(--on-shade) 20%, transparent), transparent 25%, color-mix(in srgb, var(--on-shade) 25%, transparent) 50%, color-mix(in srgb, var(--on-shade) 90%, transparent) 100%);
	--on-storie-bagliore: color-mix(in srgb, var(--on-tv-green) 60%, transparent);
	--on-storie-ombra-testo: 0 0 18px color-mix(in srgb, var(--on-shade) 60%, transparent);

	position: relative;
	padding-block: 56px 40px;
	background-color: var(--on-black);
	background-image: radial-gradient(var(--on-storie-punti) 1px, transparent 1.4px);
	background-size: 7px 7px;
	color: var(--on-white);
}

.on-storie__in {
	position: relative;
	z-index: 1;
}

/* ---------------------------------------------------------------------
 * Testata: pagina del Televideo, titolo, sottotitolo, pausa e link
 * ------------------------------------------------------------------ */

.on-storie__testa {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 12px;
	padding-bottom: 16px;
	border-bottom: 1px solid var(--on-line-inv);
}

/* Selettore doppio: la Theme Style del kit (.elementor-kit-N h2) imporrebbe la misura dei titoli di sezione */
.on-storie .on-storie__titolo {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px 12px;
	margin: 0;
	color: var(--on-white);
	font-family: var(--on-font-cond);
	font-size: 1.875rem;
	font-weight: 700;
	letter-spacing: 0;
	line-height: var(--on-lh-title);
	text-transform: uppercase;
}

.on-storie__pagina {
	display: inline-block;
	padding: 4px 8px 2px;
	background: var(--on-tv-green);
	color: var(--on-tv-black);
	font-family: var(--on-font-tv);
	font-size: 1rem;
	font-weight: 400;
	letter-spacing: .02em;
	line-height: 1.1;
	text-transform: none;
	vertical-align: middle;
}

.on-storie__sottotitolo {
	display: inline-block;
	flex-basis: 100%;
	color: var(--on-muted);
	font-family: var(--on-font-text);
	font-size: .8125rem;
	font-weight: 400;
	letter-spacing: 0;
	line-height: 1.5;
	text-transform: none;
}

.on-storie__azioni {
	display: flex;
	align-items: center;
	gap: 16px;
}

.on-storie .on-storie__more {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	/* Sul telefono l'area di tocco è alta 44 px senza spostare il layout (home.css:731) */
	margin-block: -10px -7px;
	padding-block: 10px;
	border-bottom: 1.5px solid currentColor;
	color: var(--on-white);
	font-family: var(--on-font-cond);
	font-size: .8125rem;
	font-weight: 700;
	letter-spacing: var(--on-ls-button);
	line-height: 1.2;
	text-decoration: none;
	text-transform: uppercase;
}

.on-storie .on-storie__more:hover {
	color: var(--on-white);
}

/*
 * Il bottone di pausa non c'è nel prototipo: resta per la tastiera (WCAG 2.2.2) ma è invisibile e non
 * occupa spazio; compare accanto al link solo quando riceve il focus da tastiera.
 */
.on-storie__azioni {
	position: relative;
}

.on-storie .on-storie__azioni button.on-storie__pausa:not(:focus-visible) {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	overflow: hidden;
	border: 0;
	clip-path: inset(50%);
	white-space: nowrap;
}

/* Lo stile bottoni del kit vale per ogni <button>, qui si torna al bottone trasparente */
.on-storie .on-storie__azioni button.on-storie__pausa:focus-visible {
	position: absolute;
	top: 50%;
	left: calc(100% + 12px);
	transform: translateY(-50%);
	display: inline-grid;
	place-items: center;
	width: 32px;
	height: 32px;
	padding: 0;
	border: 1px solid var(--on-line-inv);
	border-radius: var(--on-radius-pill);
	background-color: transparent;
	color: var(--on-white);
	font: inherit;
	letter-spacing: normal;
	cursor: pointer;
}

.on-storie .on-storie__azioni button.on-storie__pausa[hidden] {
	display: none;
}

/* ---------------------------------------------------------------------
 * Fisarmonica
 * ------------------------------------------------------------------ */

.on-storie__lista {
	display: flex;
	flex-direction: column;
	gap: 8px;
	margin: 22px 0 0;
	padding: 0;
	list-style: none;
}

.on-storie__pan {
	position: relative;
	min-width: 0;
	margin: 0;
	aspect-ratio: 16 / 8;
	transition: flex-grow .9s var(--on-ease-out);
}

/* Il pannello è il link: il ritaglio sta qui e non sul <li>, così l'anello del focus non viene tagliato */
.on-storie .on-storie__voce {
	position: absolute;
	inset: 0;
	display: block;
	overflow: hidden;
	border-radius: var(--on-radius-s);
	background: var(--on-storie-fondo-pan);
	color: var(--on-white);
	text-decoration: none;
}

.on-storie .on-storie__voce:hover {
	color: var(--on-white);
}

/* L'anello del link sta fuori dal pannello: il ritaglio è sul link stesso, non lo taglia */
.on-storie a.on-storie__voce:focus-visible {
	outline: 2px solid var(--on-focus, var(--on-white));
	outline-offset: 3px;
}

/* Tinta verde ON sopra la foto in bianco e nero del pannello chiuso */
.on-storie__voce::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
	opacity: .5;
	background: var(--on-green);
	mix-blend-mode: color;
	pointer-events: none;
	transition: opacity .6s;
}

.on-storie__voce::after {
	content: "";
	position: absolute;
	inset: 0;
	background: var(--on-storie-velo-chiuso);
	pointer-events: none;
	transition: opacity .5s;
}

.on-storie .on-storie__foto {
	position: absolute;
	inset: 0;
	display: block;
	width: 100%;
	height: 100%;
	max-width: none;
	object-fit: cover;
	object-position: var(--on-foto-x, 50%) var(--on-foto-y, 50%);
	filter: grayscale(1) contrast(1.1) brightness(.62);
	transform: scale(1.06);
	transition: transform 1.4s var(--on-ease-out), filter .8s;
}

/*
 * Il videoregistratore e la barra di tracking (home.css:505-512): nel prototipo ci sono in ogni pannello
 * ma l'ultima correzione li nasconde (home.css:837, "via contatore VHS e barra di tracking").
 * Stile completo qui, nascosti come lì.
 */
.on-storie__vhs {
	position: absolute;
	top: 16px;
	left: 50%;
	z-index: 3;
	display: none;
	gap: 14px;
	align-items: baseline;
	color: color-mix(in srgb, var(--on-white) 85%, transparent);
	font-family: var(--on-font-tv);
	font-size: clamp(14px, 1.3vw, 20px);
	text-shadow: 0 0 4px color-mix(in srgb, var(--on-white) 35%, transparent);
	white-space: nowrap;
	transform: translateX(-50%);
}

.on-storie__vhs b {
	font-weight: 400;
}

.on-storie__vhs i,
.on-storie__vhs em {
	font-style: normal;
}

.on-storie__vhs i {
	opacity: .8;
}

.on-storie__vhs em {
	font-variant-numeric: tabular-nums;
}

.on-storie__traccia {
	position: absolute;
	right: 0;
	bottom: 0;
	left: 0;
	z-index: 3;
	display: none;
	height: 10px;
	opacity: 0;
	background: repeating-linear-gradient(90deg, color-mix(in srgb, var(--on-white) 55%, transparent) 0 3px, color-mix(in srgb, var(--on-shade) 60%, transparent) 3px 7px, color-mix(in srgb, var(--on-white) 25%, transparent) 7px 9px, transparent 9px 14px);
	filter: blur(.6px);
	pointer-events: none;
}

/* Il numero del canale: un segno del Televideo, decorativo */
.on-storie__n {
	position: absolute;
	top: 14px;
	left: 16px;
	z-index: 2;
	color: var(--on-tv-green);
	font-family: var(--on-font-tv);
	font-size: 1.25rem;
	line-height: 1;
	text-shadow: 0 0 8px var(--on-storie-bagliore);
}

.on-storie__n::before {
	content: "CH ";
	font-size: .7em;
}

/* Il dorso: occhiello e titolo del pannello chiuso (sul telefono in orizzontale, in basso) */
.on-storie__dorso {
	position: absolute;
	right: 16px;
	bottom: 14px;
	left: 16px;
	z-index: 2;
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 4px;
	transition: opacity .35s;
}

.on-storie__dorso-meta,
.on-storie__meta {
	color: var(--on-ink-inv);
	font-family: var(--on-font-cond);
	font-size: .75rem;
	font-weight: 700;
	letter-spacing: .12em;
	line-height: 1.2;
	text-transform: uppercase;
}

.on-storie__dorso-titolo {
	display: block;
	overflow: hidden;
	font-family: var(--on-font-cond);
	font-size: 1.1875rem;
	font-weight: 700;
	line-height: 1.12;
	text-transform: uppercase;
}

.on-storie__copy {
	position: absolute;
	right: 16px;
	bottom: 16px;
	left: 16px;
	z-index: 2;
	display: grid;
	gap: 8px;
	max-width: 34ch;
	opacity: 0;
	transform: translateY(14px);
	transition: opacity .5s .25s, transform .7s .25s var(--on-ease-out);
}

.on-storie__storia-titolo {
	font-family: var(--on-font-cond);
	font-size: 1.375rem;
	font-weight: 700;
	line-height: 1.12;
	text-shadow: var(--on-storie-ombra-testo);
	text-transform: uppercase;
	text-wrap: balance;
}

/*
 * Sotto i 900 px il prototipo toglie il testo breve dal pannello aperto (home.css:852):
 * qui resta per gli screen reader, nascosto solo alla vista.
 */
.on-storie__testo {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip-path: inset(50%);
	color: var(--on-ink-inv);
	font-size: .875rem;
	line-height: 1.5;
	white-space: nowrap;
}

.on-storie__leggi {
	font-family: var(--on-font-cond);
	font-size: .8125rem;
	font-weight: 700;
	letter-spacing: var(--on-ls-button);
	line-height: 1.2;
	text-transform: uppercase;
}

/* ---------------------------------------------------------------------
 * Pannello aperto. Senza JS si apre anche al passaggio del mouse e con il focus,
 * così il testo di ogni storia resta raggiungibile.
 * ------------------------------------------------------------------ */

.on-storie__pan.is-open,
.no-js .on-storie__pan:is(:hover, :focus-within) {
	aspect-ratio: 16 / 10;
}

.on-storie__pan.is-open .on-storie__voce::before,
.no-js .on-storie__pan:is(:hover, :focus-within) .on-storie__voce::before {
	opacity: 0;
}

.on-storie__pan.is-open .on-storie__voce::after,
.no-js .on-storie__pan:is(:hover, :focus-within) .on-storie__voce::after {
	background: var(--on-storie-velo-aperto);
}

.on-storie__pan.is-open .on-storie__foto,
.no-js .on-storie__pan:is(:hover, :focus-within) .on-storie__foto {
	filter: saturate(.95) contrast(1.04) brightness(.95);
	transform: scale(1);
}

.on-storie__pan.is-open .on-storie__dorso,
.no-js .on-storie__pan:is(:hover, :focus-within) .on-storie__dorso {
	opacity: 0;
	pointer-events: none;
}

.on-storie__pan.is-open .on-storie__copy,
.no-js .on-storie__pan:is(:hover, :focus-within) .on-storie__copy {
	opacity: 1;
	transform: none;
}

/* Ingresso: i pannelli salgono uno dopo l'altro. Solo con il movimento e dopo che il JS si è armato */
.on-motion .on-storie.is-armato:not(.is-entrato) .on-storie__pan {
	opacity: 0;
	transform: translateY(24px);
}

/* ---------------------------------------------------------------------
 * Tablet (600-900 px): le misure da telefono sono piccole su uno schermo largo (home.css:758)
 * ------------------------------------------------------------------ */

@media (min-width: 600px) {
	.on-storie .on-storie__titolo {
		font-size: 2.25rem;
	}

	.on-storie__storia-titolo {
		font-size: 1.75rem;
	}

	.on-storie__testo {
		font-size: .9375rem;
	}
}

/* ---------------------------------------------------------------------
 * Desktop (da 901 px): pannelli affiancati, il dorso in verticale
 * ------------------------------------------------------------------ */

@media (min-width: 901px) {
	/* Sul desktop il link sta sul bordo destro: la pausa, quando ha il focus, compare alla sua sinistra */
	.on-storie .on-storie__azioni button.on-storie__pausa:focus-visible {
		right: calc(100% + 12px);
		left: auto;
	}
}

@media (min-width: 901px) {
	.on-storie {
		/* Il pannello aperto sul desktop ha la velatura più leggera (home.css:850) */
		--on-storie-velo-aperto: linear-gradient(180deg, color-mix(in srgb, var(--on-shade) 20%, transparent), transparent 30%, transparent 55%, color-mix(in srgb, var(--on-shade) 85%, transparent) 100%);

		padding-block: clamp(48px, 6vw, 88px) clamp(40px, 4.5vw, 64px);
	}

	.on-storie__testa {
		flex-direction: row;
		justify-content: space-between;
		align-items: baseline;
		gap: 24px;
	}

	.on-storie .on-storie__titolo {
		display: block;
		font-size: clamp(1.75rem, 3vw, 2.875rem);
	}

	.on-storie__pagina {
		margin-right: 14px;
		font-size: 1.125rem;
	}

	.on-storie__sottotitolo {
		margin-left: 12px;
		font-size: var(--on-fs-small);
	}

	.on-storie .on-storie__more {
		margin-block: 0;
		padding-block: 0 3px;
		font-size: var(--on-fs-nav);
	}

	.on-storie__lista {
		flex-direction: row;
		height: clamp(380px, 46vw, 600px);
	}

	.on-storie__pan,
	.on-storie__pan.is-open,
	.no-js .on-storie__pan:is(:hover, :focus-within) {
		flex: 1 1 0;
		aspect-ratio: auto;
	}

	.on-storie__pan.is-open,
	.no-js .on-storie__pan:is(:hover, :focus-within) {
		flex-grow: 3.4;
	}

	.on-storie__n {
		font-size: clamp(1.375rem, 2.2vw, 2rem);
	}

	.on-storie__dorso {
		top: auto;
		right: auto;
		bottom: 20px;
		left: 50%;
		flex-direction: row;
		align-items: center;
		gap: 10px;
		white-space: nowrap;
		transform: translateX(-50%) rotate(180deg);
		writing-mode: vertical-rl;
	}

	.on-storie__dorso-meta {
		font-size: .6875rem;
	}

	.on-storie__dorso-titolo {
		max-height: 60vh;
		font-size: clamp(1rem, 1.5vw, 1.375rem);
	}

	.on-storie__copy {
		right: clamp(16px, 2.4vw, 36px);
		bottom: clamp(16px, 2.4vw, 32px);
		left: clamp(16px, 2.4vw, 36px);
	}

	.on-storie__storia-titolo {
		font-size: clamp(1.625rem, 3vw, 2.875rem);
	}

	.on-storie__testo {
		position: static;
		width: auto;
		height: auto;
		overflow: visible;
		clip-path: none;
		font-size: var(--on-fs-small);
		white-space: normal;
	}

	.on-storie__leggi {
		font-size: var(--on-fs-nav);
	}
}
