/* ==========================================================================
   V6-SCROLL-PARALLAX-PRO-2026-07-06 — Scroll Parallax Professional (ES)
   ==========================================================================
   Layer che SOSTITUISCE l'estetica V3/V4/V5 (orbe, dust, scan-line, rete di
   nodi pulsanti, tilt) con un sistema scroll-driven sobrio e professionale:
   parallax multi-layer per sezione (media fotografico + griglia blueprint +
   velo di leggibilità), reveal misurati, barra di lettura hairline.

   PRINCIPI
   - namespace v6 (classi v6-, variabili --v6-): zero collisioni con i
     namespace es-, v3-, v4-, v5- e con il CSS del DB;
   - le classi es-v6 / es-v6-motion / es-v6-desktop arrivano SOLO da
     v6-scroll-parallax-professional.js → senza JS questo foglio è quasi
     tutto dormiente e NESSUN contenuto viene mai nascosto;
   - lo scroll è l'unico master clock: NESSUN keyframe infinito decorativo
     in questo foglio (unica transizione: reveal/topline one-shot e fade-in
     media, tutti one-shot legati all'ingresso in viewport);
   - le animazioni autonome del CSS DB (esPulse, esStepGlow, esHeroGlow,
     esSpin, esQgSeq, esFlowLine, esLineFlow, esBpm, esGridDrift) vengono
     NEUTRALIZZATE (sez. 09) e dove ha senso sostituite con equivalenti
     scroll-driven (orbita hero, sez. 10);
   - P0 dropdown Servizi: livello del contenuto header sopra ogni
     decorazione (fix misurato in DIAGNOSI-FIX-MENU-SERVIZI-V5.md);
   - decorazioni sempre: z0 nel contesto della sezione, pointer-events:none,
     aria-hidden; i contenuti (.w) sono garantiti sopra (sez. 07);
   - reduced-motion: struttura statica completa, zero movimento (sez. 13).
   Rollback: eliminare questo file + v6-scroll-parallax-professional.js +
   blocco enqueue V6 (la V4 CINEMATIC riprende identica da sola).

   INDICE
   01. Variabili V6
   02. P0 — Dropdown Servizi + spegnimento indicatori legacy
   03. Barra di lettura sobria (#es-v6-progress)
   04. Sistema layer per sezione (.v6-bg: media, griglia, velo, topline)
   05. Media fotografici per pagina (html[data-v6-page])
   06. Parallax scroll-driven (solo es-v6-motion)
   07. Garanzia contenuti sopra le decorazioni
   08. Reveal orfani (v6-prep/v6-in) + spegnimento esRise
   09. Neutralizzazione animazioni autonome del CSS DB (kill-switch)
   10. Sostituzioni scroll-driven (orbita hero, blueprint)
   11. Cinture su residui V3/V4/V5
   12. Guardie mobile/touch
   13. Riduzione movimento (kill-switch totale V6)
   14. Ridichiarazione variabili di sicurezza
   ========================================================================== */


/* --------------------------------------------------------------------------
   01. V6-SCROLL-PARALLAX-PRO-2026-07-06 — Variabili
   Ogni uso nel foglio ha comunque fallback letterale (lezione QA V3).
   -------------------------------------------------------------------------- */
:root {
	--v6-gold: #d6a84f;
	--v6-gold-hi: #e9c87e;
	--v6-gold-deep: #a77c39;
	--v6-navy: #0a1f3c;
	--v6-navy-2: #0e2a50;
	--v6-blue: #1b5fa8;
	--v6-ease: cubic-bezier(0.22, 0.61, 0.36, 1);
	--v6-scroll: 0; /* 0..1, scritta da v6-scroll-parallax-professional.js */
}


/* --------------------------------------------------------------------------
   02. V6-SCROLL-PARALLAX-PRO-2026-07-06 — P0: dropdown Servizi + legacy off
   CAUSA (misurata in V5): .inside-header è uno stacking context a z2
   (MENU-ZFIX DB) → il sub-menu (z99999) resta al livello 2, sotto qualunque
   decorazione figlia diretta di .site-header con z>2. FIX: si alza il
   LIVELLO del contesto del contenuto header. Con V3/V4/V5 spente non esiste
   più alcuna decorazione header, ma la cintura resta (difesa in profondità).
   Gli indicatori di lettura legacy vengono sostituiti dalla barra V6:
   - linea V3 (body::before di v3-experience.css, ungated);
   - #es-hprog del Customizer (il suo JS DB continua a scrivere il transform
     su un elemento nascosto: innocuo, zero contese).
   Rollback: rimuovere la sezione (tornano linea V3 e hairline Customizer).
   -------------------------------------------------------------------------- */
html.es-v6 .site-header .inside-header {
	z-index: 12 !important;
}
html.es-v6 body::before {
	content: none !important; /* linea di progresso V3: sostituita dalla barra V6 */
}
html.es-v6 #es-hprog {
	display: none !important; /* hairline del Customizer: sostituita */
}


/* --------------------------------------------------------------------------
   03. V6-SCROLL-PARALLAX-PRO-2026-07-06 — Barra di lettura sobria
   UNA hairline oro (3px), scaleX = progresso di scroll. Riflesso di stato,
   non animazione autonoma: nessun glow pulsante, nessuna "cometa".
   Il markup (#es-v6-progress + 1 span) è INIETTATO da JS: senza JS non
   esiste. Resta con reduced-motion (informazione di stato, senza fluidità).
   Rollback: rimuovere questa sezione (resta un contenitore invisibile).
   -------------------------------------------------------------------------- */
#es-v6-progress {
	position: fixed;
	top: 0;
	left: 0;
	width: 100%;
	height: 3px;
	z-index: 99991; /* sopra header (99990, che è stacking context: il suo
	   dropdown z99999 vive DENTRO di esso e nel contesto radice compete a
	   99990 — rilievo review V6): la hairline di 3px al bordo superiore
	   dipinge sopra header/dropdown SOLO in quei 3px, zona che il dropdown
	   non raggiunge mai; resta sotto il modal (100000) */
	pointer-events: none;
	contain: strict;
}
body.admin-bar #es-v6-progress {
	top: var(--wp-admin--admin-bar--height, 32px);
}
@media (max-width: 782px) {
	body.admin-bar #es-v6-progress {
		top: 46px;
	}
}
/* binario: hairline neutra che rende leggibile il "restante" su ogni fondo */
#es-v6-progress::before {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	top: 0;
	height: 1px;
	background: rgba(122, 143, 170, 0.18);
}
#es-v6-progress .v6p-bar {
	position: absolute;
	left: 0;
	top: 0;
	width: 100%;
	height: 3px;
	transform: scaleX(var(--v6-scroll, 0));
	transform-origin: left center;
	background: linear-gradient(90deg,
		var(--v6-gold-deep, #a77c39),
		var(--v6-gold, #d6a84f) 55%,
		var(--v6-gold-hi, #e9c87e));
	/* niente box-shadow: sarebbe comunque ritagliata dal contain:strict del
	   contenitore (rilievo review V6) e la direzione è "nessun glow" */
}
@media (max-width: 1024px) {
	#es-v6-progress,
	#es-v6-progress .v6p-bar {
		height: 2.5px;
	}
}


/* --------------------------------------------------------------------------
   04. V6-SCROLL-PARALLAX-PRO-2026-07-06 — Sistema layer per sezione
   Contenitore .v6-bg iniettato da JS come ULTIMO figlio di ogni sezione
   (.es .s + .site-footer): z0 nel contesto locale, pointer-events:none,
   aria-hidden, overflow:hidden. Layer interni (in ordine di pittura):
   - .v6-media  : fotografia di profondità (solo dove il CSS la assegna,
                  sez. 05), inset -8% + scale di sicurezza: mai bordi scoperti;
   - .v6-grid   : griglia blueprint CSS (nessuna immagine);
   - .v6-veil   : velo di leggibilità (gradiente navy sui media) o
                  profondità statica oro/blu sulle sezioni scure;
   - .v6-topline: linea di quota oro, si estende UNA volta all'ingresso
                  (.v6-lit) — reveal misurato, non animazione infinita.
   Marker angolari "+" statici via pseudo-elementi (solo desktop, sez. 04b).
   Z-INDEX DOCUMENTATO: .v6-bg z0 < .w (z1 chiare / z1 blueprint / z2 scure)
   < overlay contenuto (z3-6) — mai sopra menu/dropdown/modal/cookie
   (vivono in contesti superiori: header 99990+, cookie 99985, modal 100000).
   -------------------------------------------------------------------------- */
.v6-bg {
	position: absolute;
	inset: 0;
	z-index: 0;
	overflow: hidden;
	pointer-events: none;
	contain: strict;
}
.v6-media {
	position: absolute;
	inset: -8%;
	background-position: center;
	background-size: cover;
	background-repeat: no-repeat;
	opacity: 0; /* diventa visibile solo dove una regola per pagina imposta --v6-mo */
	transition: opacity 0.8s ease;
}
.v6-lit .v6-media {
	opacity: var(--v6-mo, 0);
}
.v6-grid {
	position: absolute;
	inset: -6%;
	background:
		repeating-linear-gradient(90deg, rgba(167, 124, 57, 0.05) 0 1px, transparent 1px 72px),
		repeating-linear-gradient(0deg, rgba(167, 124, 57, 0.04) 0 1px, transparent 1px 72px);
	-webkit-mask-image: radial-gradient(120% 100% at 50% 38%, #000 55%, transparent 100%);
	mask-image: radial-gradient(120% 100% at 50% 38%, #000 55%, transparent 100%);
}
.es .s.dark .v6-grid,
.site-footer .v6-grid {
	background:
		repeating-linear-gradient(90deg, rgba(214, 168, 79, 0.065) 0 1px, transparent 1px 72px),
		repeating-linear-gradient(0deg, rgba(214, 168, 79, 0.05) 0 1px, transparent 1px 72px);
}
/* le sezioni blueprint hanno GIÀ una griglia dal DB: niente doppia griglia */
.es .s.es-blueprint .v6-grid {
	display: none;
}
.v6-veil {
	position: absolute;
	inset: -4%;
}
/* profondità statica sulle sezioni scure (sostituisce v4-depth SENZA deriva) */
html.es-v6 .es .s.dark .v6-veil {
	background:
		radial-gradient(620px 340px at 12% 18%, rgba(214, 168, 79, 0.07), transparent 60%),
		radial-gradient(560px 320px at 88% 82%, rgba(27, 95, 168, 0.08), transparent 60%);
}
/* velo di leggibilità dove c'è un media fotografico: il testo resta prioritario */
html.es-v6 .es .s.hero .v6-veil {
	background: linear-gradient(180deg,
		rgba(7, 20, 38, 0.88) 0%,
		rgba(7, 26, 47, 0.56) 45%,
		rgba(7, 20, 38, 0.90) 100%);
}
html.es-v6 .es .s.cta .v6-veil {
	background: linear-gradient(180deg,
		rgba(7, 20, 38, 0.90) 0%,
		rgba(10, 31, 60, 0.72) 50%,
		rgba(7, 20, 38, 0.92) 100%);
}
html.es-v6[data-v6-page="home"] .es .s.bridge .v6-veil {
	background: linear-gradient(180deg,
		rgba(7, 20, 38, 0.90) 0%,
		rgba(10, 31, 60, 0.74) 50%,
		rgba(7, 20, 38, 0.92) 100%);
}
/* linea di quota oro: si estende una volta quando la sezione entra */
.v6-topline {
	position: absolute;
	top: 0;
	left: 8%;
	right: 8%;
	height: 1.5px;
	background: linear-gradient(90deg,
		transparent,
		var(--v6-gold-deep, #a77c39) 25%,
		var(--v6-gold, #d6a84f) 50%,
		var(--v6-gold-deep, #a77c39) 75%,
		transparent);
	transform: scaleX(0);
	transform-origin: center;
	transition: transform 1s var(--v6-ease, cubic-bezier(0.22, 0.61, 0.36, 1)) 0.1s;
}
.v6-lit .v6-topline {
	transform: scaleX(1);
}
/* il footer ha già la sua hairline (CSS V3, statica): niente doppia linea */
.site-footer .v6-topline {
	display: none;
}

/* 04b — marker tecnici angolari "+" STATICI (nessun respiro), solo desktop */
@media (min-width: 1025px) and (hover: hover) {
	.es .s.dark .v6-bg::before,
	.es .s.dark .v6-bg::after {
		content: "";
		position: absolute;
		width: 16px;
		height: 16px;
		opacity: 0.5;
		background:
			linear-gradient(rgba(214, 168, 79, 0.45), rgba(214, 168, 79, 0.45)) center/100% 1px no-repeat,
			linear-gradient(rgba(214, 168, 79, 0.45), rgba(214, 168, 79, 0.45)) center/1px 100% no-repeat;
	}
	.es .s.dark .v6-bg::before { top: 24px; left: 24px; }
	.es .s.dark .v6-bg::after  { bottom: 24px; right: 24px; }
}


/* --------------------------------------------------------------------------
   05. V6-SCROLL-PARALLAX-PRO-2026-07-06 — Media fotografici per pagina
   Assegnati via html[data-v6-page] (impostato dal JS dal pathname).
   Solo asset locali ottimizzati (assets/img/v6/, JPEG q68-72):
   - hero: 1920w desktop / 960w ≤960px (variante leggera mobile);
   - CTA e bridge: 1440w unica (sezioni più basse).
   --v6-mo = opacità finale del media SOTTO il velo di leggibilità.
   Le pagine non mappate (policy) non caricano alcun media.
   -------------------------------------------------------------------------- */
html.es-v6[data-v6-page="home"] .es .s.hero .v6-media            { background-image: url('../img/v6/es-v6-hero-home-1920.jpg'); --v6-mo: 0.42; }
html.es-v6[data-v6-page="chi-siamo"] .es .s.hero .v6-media       { background-image: url('../img/v6/es-v6-hero-chi-siamo-1920.jpg'); --v6-mo: 0.40; }
html.es-v6[data-v6-page="servizi"] .es .s.hero .v6-media         { background-image: url('../img/v6/es-v6-hero-servizi-1920.jpg'); --v6-mo: 0.40; }
html.es-v6[data-v6-page="studio-tecnico"] .es .s.hero .v6-media  { background-image: url('../img/v6/es-v6-hero-studio-tecnico-1920.jpg'); --v6-mo: 0.42; }
html.es-v6[data-v6-page="ambiente"] .es .s.hero .v6-media        { background-image: url('../img/v6/es-v6-hero-ambiente-1920.jpg'); --v6-mo: 0.40; }
html.es-v6[data-v6-page="informatica"] .es .s.hero .v6-media     { background-image: url('../img/v6/es-v6-hero-informatica-1920.jpg'); --v6-mo: 0.38; }
html.es-v6[data-v6-page="web-design"] .es .s.hero .v6-media      { background-image: url('../img/v6/es-v6-hero-web-design-1920.jpg'); --v6-mo: 0.40; }
html.es-v6[data-v6-page="ai-automazione"] .es .s.hero .v6-media  { background-image: url('../img/v6/es-v6-hero-ai-automazione-1920.jpg'); --v6-mo: 0.36; }
html.es-v6[data-v6-page="impianti"] .es .s.hero .v6-media        { background-image: url('../img/v6/es-v6-hero-impianti-1920.jpg'); --v6-mo: 0.40; }
html.es-v6[data-v6-page="settori-serviti"] .es .s.hero .v6-media { background-image: url('../img/v6/es-v6-hero-settori-serviti-1920.jpg'); --v6-mo: 0.40; }
html.es-v6[data-v6-page="ecosistema"] .es .s.hero .v6-media      { background-image: url('../img/v6/es-v6-hero-ecosistema-1920.jpg'); --v6-mo: 0.44; }
html.es-v6[data-v6-page="contatti"] .es .s.hero .v6-media        { background-image: url('../img/v6/es-v6-hero-contatti-1920.jpg'); --v6-mo: 0.38; }

@media (max-width: 960px) {
	html.es-v6[data-v6-page="home"] .es .s.hero .v6-media            { background-image: url('../img/v6/es-v6-hero-home-960.jpg'); }
	html.es-v6[data-v6-page="chi-siamo"] .es .s.hero .v6-media       { background-image: url('../img/v6/es-v6-hero-chi-siamo-960.jpg'); }
	html.es-v6[data-v6-page="servizi"] .es .s.hero .v6-media         { background-image: url('../img/v6/es-v6-hero-servizi-960.jpg'); }
	html.es-v6[data-v6-page="studio-tecnico"] .es .s.hero .v6-media  { background-image: url('../img/v6/es-v6-hero-studio-tecnico-960.jpg'); }
	html.es-v6[data-v6-page="ambiente"] .es .s.hero .v6-media        { background-image: url('../img/v6/es-v6-hero-ambiente-960.jpg'); }
	html.es-v6[data-v6-page="informatica"] .es .s.hero .v6-media     { background-image: url('../img/v6/es-v6-hero-informatica-960.jpg'); }
	html.es-v6[data-v6-page="web-design"] .es .s.hero .v6-media      { background-image: url('../img/v6/es-v6-hero-web-design-960.jpg'); }
	html.es-v6[data-v6-page="ai-automazione"] .es .s.hero .v6-media  { background-image: url('../img/v6/es-v6-hero-ai-automazione-960.jpg'); }
	html.es-v6[data-v6-page="impianti"] .es .s.hero .v6-media        { background-image: url('../img/v6/es-v6-hero-impianti-960.jpg'); }
	html.es-v6[data-v6-page="settori-serviti"] .es .s.hero .v6-media { background-image: url('../img/v6/es-v6-hero-settori-serviti-960.jpg'); }
	html.es-v6[data-v6-page="ecosistema"] .es .s.hero .v6-media      { background-image: url('../img/v6/es-v6-hero-ecosistema-960.jpg'); }
	html.es-v6[data-v6-page="contatti"] .es .s.hero .v6-media        { background-image: url('../img/v6/es-v6-hero-contatti-960.jpg'); }
}

html.es-v6[data-v6-page="home"] .es .s.cta .v6-media            { background-image: url('../img/v6/es-v6-cta-home-1440.jpg'); --v6-mo: 0.30; }
html.es-v6[data-v6-page="chi-siamo"] .es .s.cta .v6-media       { background-image: url('../img/v6/es-v6-cta-chi-siamo-1440.jpg'); --v6-mo: 0.30; }
html.es-v6[data-v6-page="studio-tecnico"] .es .s.cta .v6-media  { background-image: url('../img/v6/es-v6-cta-studio-tecnico-1440.jpg'); --v6-mo: 0.30; }
html.es-v6[data-v6-page="ambiente"] .es .s.cta .v6-media        { background-image: url('../img/v6/es-v6-cta-ambiente-1440.jpg'); --v6-mo: 0.30; }
html.es-v6[data-v6-page="informatica"] .es .s.cta .v6-media     { background-image: url('../img/v6/es-v6-cta-informatica-1440.jpg'); --v6-mo: 0.30; }
html.es-v6[data-v6-page="web-design"] .es .s.cta .v6-media      { background-image: url('../img/v6/es-v6-cta-web-design-1440.jpg'); --v6-mo: 0.30; }
html.es-v6[data-v6-page="ai-automazione"] .es .s.cta .v6-media  { background-image: url('../img/v6/es-v6-cta-ai-automazione-1440.jpg'); --v6-mo: 0.30; }
html.es-v6[data-v6-page="impianti"] .es .s.cta .v6-media        { background-image: url('../img/v6/es-v6-cta-impianti-1440.jpg'); --v6-mo: 0.30; }
html.es-v6[data-v6-page="settori-serviti"] .es .s.cta .v6-media { background-image: url('../img/v6/es-v6-cta-settori-serviti-1440.jpg'); --v6-mo: 0.30; }
html.es-v6[data-v6-page="home"] .es .s.bridge .v6-media         { background-image: url('../img/v6/es-v6-bridge-home-1440.jpg'); --v6-mo: 0.28; }


/* --------------------------------------------------------------------------
   06. V6-SCROLL-PARALLAX-PRO-2026-07-06 — Parallax scroll-driven
   --v6-sp (0=sezione sotto la piega, 1=sezione uscita in alto) è scritta dal
   JS SOLO per le sezioni visibili. Tre velocità → profondità:
   - media  : correzione +36px (piano lontano, si muove meno della pagina);
   - griglia: correzione +18px (piano intermedio);
   - velo   : correzione +8px  (piano vicino, quasi solidale al contenuto).
   Escursioni piccole (≤36px, scala 1.06 di sicurezza) come da analisi
   reference: il movimento deve sembrare uno strumento di misura.
   GATE .v6-live (classe gestita dall'observer di visibilità del JS): i
   transform 3D e will-change promuovono layer compositati SOLO per le
   sezioni realmente in viewport — mai layer GPU permanenti su sezioni
   fuori schermo o su media vuoti (rilievo review V6). La classe viene
   rimossa solo a sezione completamente fuori viewport: nessun salto
   visibile.
   -------------------------------------------------------------------------- */
html.es-v6-motion .v6-live .v6-media {
	transform: translate3d(0, calc((var(--v6-sp, 0.5) - 0.5) * 36px), 0) scale(1.06);
	will-change: transform;
}
html.es-v6-motion .v6-live .v6-grid {
	transform: translate3d(0, calc((var(--v6-sp, 0.5) - 0.5) * 18px), 0);
	will-change: transform;
}
html.es-v6-motion .v6-live .v6-veil {
	transform: translate3d(0, calc((var(--v6-sp, 0.5) - 0.5) * 8px), 0);
}


/* --------------------------------------------------------------------------
   07. V6-SCROLL-PARALLAX-PRO-2026-07-06 — Contenuti garantiti sopra i layer
   Le sezioni chiare "semplici" hanno .w NON posizionata: senza questa regola
   un layer z0 dipingerebbe sopra il testo. Le varianti blueprint (z1) e dark
   (z2) sono già posizionate dal DB: escluse per non alterarle.
   z-index:1 NON crea rischi menu: il contesto resta dentro la sezione.
   (Pattern verificato in V5, FASE 10B.)
   -------------------------------------------------------------------------- */
html.es-v6 .es .s:not(.dark):not(.es-blueprint) > .w {
	position: relative;
	z-index: 1;
}
html.es-v6 .site-footer .inside-footer-widgets,
html.es-v6 .site-footer .site-info {
	position: relative;
	z-index: 1;
}


/* --------------------------------------------------------------------------
   08. V6-SCROLL-PARALLAX-PRO-2026-07-06 — Reveal orfani + spegnimento esRise
   Il motore principale resta es-rv/es-rv-in (widget DB). Le classi
   v6-prep/v6-in sono aggiunte SOLO dal JS (mai senza JS: niente nascosto),
   SOLO a elementi fuori dal viewport iniziale, con failsafe 2.5s.
   Ingresso sobrio: translateY + opacity, nessuna prospettiva 3D.
   esRise (fallback scroll-timeline del DB) viene spento sotto es-v6-motion:
   UN solo motore per elemento (pattern già usato dal DB con html.es-gsap).
   -------------------------------------------------------------------------- */
@supports (animation-timeline: view()) {
	html.es-v6-motion .es .reveal,
	html.es-v6-motion .es .stagger > * {
		animation: none !important;
	}
}
@media (prefers-reduced-motion: no-preference) {
	html.es-v6-motion .v6-prep {
		opacity: 0;
		transform: translateY(26px);
		transition:
			opacity 0.65s ease calc(var(--v6-d, 0) * 70ms),
			transform 0.85s var(--v6-ease, cubic-bezier(0.22, 0.61, 0.36, 1)) calc(var(--v6-d, 0) * 70ms);
	}
	html.es-v6-motion .v6-prep.v6-in {
		opacity: 1;
		transform: none;
	}
	@media (max-width: 1024px) {
		html.es-v6-motion .v6-prep {
			transform: translateY(18px);
		}
	}
}


/* --------------------------------------------------------------------------
   09. V6-SCROLL-PARALLAX-PRO-2026-07-06 — Kill-switch animazioni autonome DB
   Il CSS del Customizer/widget (DB, stampato DOPO questo foglio) contiene
   animazioni decorative infinite non conformi alla direzione V6
   ("nessuna animazione autonoma", "nessuna pallina che respira").
   Qui vengono spente con specificità superiore + !important (pattern V4/V5).
   Lo stato statico risultante è quello già previsto dal DB stesso per
   prefers-reduced-motion: nessun contenuto o layout viene alterato.
   ELENCO DOCUMENTATO (nome keyframe → selettore → effetto rimosso):
   - esPulse     → .es .flow / .es .node          → respiro opacità
   - esPulse     → .es .agent .ah::before          → pallina che si gonfia (scale .85→1.15)
   - esQgSeq     → .es .qg                         → glow sequenziale a giostra
   - esStepGlow  → .es .steps .step .n::after      → alone pulsante sui numeri step
   - esLineFlow  → .es .steps .step .line::after   → gradiente che scorre in loop
   - esFlowLine  → .es .flow::before               → linea di flusso in loop
   - esHeroGlow  → .es .hero::after                → alone hero che respira (scale 1→1.1)
   - esBpm       → .es .es-hbp .bpm/.bpm2          → palline blueprint pulsanti
   - esFieldIn, esRip, esHeroRise, esHeroFig: one-shot legati a interazione
     o ingresso pagina → CONSERVATI (non sono animazioni autonome infinite).
   Rollback: rimuovere la sezione (tornano le animazioni del DB).
   -------------------------------------------------------------------------- */
html.es-v6 .es .flow,
html.es-v6 .es .node,
html.es-v6 .es .agent .ah::before,
html.es-v6 .es .qg,
html.es-v6 .es .steps .step .n::after,
html.es-v6 .es .steps .step .line::after,
html.es-v6 .es .flow::before,
html.es-v6 .es .hero::after,
html.es-v6 .es .es-hbp .bpm,
html.es-v6 .es .es-hbp .bpm2 {
	animation: none !important;
}


/* --------------------------------------------------------------------------
   10. V6-SCROLL-PARALLAX-PRO-2026-07-06 — Sostituzioni scroll-driven
   Le rotazioni infinite (esSpin 60/70s) diventano funzioni dello scroll:
   l'orbita dell'hero home ruota di ~70° lungo l'intera pagina — movimento
   intenzionale, deterministico, fermo a scroll fermo.
   La griglia blueprint del DB (esGridDrift) diventa statica: il movimento
   di profondità lo danno i layer V6 (sez. 06).
   -------------------------------------------------------------------------- */
html.es-v6 .es .hero-orbit,
html.es-v6 .es .hero .es-orbital .rspin,
html.es-v6 .es .s.es-blueprint::before {
	animation: none !important;
}
html.es-v6-motion .es .hero-orbit {
	transform: rotate(calc(var(--v6-scroll, 0) * 70deg));
}
html.es-v6-motion .es .hero .es-orbital .rspin {
	transform: rotate(calc(var(--v6-scroll, 0) * 90deg));
}


/* --------------------------------------------------------------------------
   11. V6-SCROLL-PARALLAX-PRO-2026-07-06 — Cinture su residui V3/V4/V5
   I motori V3/V4/V5 sono spenti dalle guardie singleton PRIMA di girare:
   questi elementi non vengono MAI iniettati. Cintura di sicurezza per il
   caso impossibile in cui esistano già nel DOM (es. cache aggressiva di
   markup): nessuna orba, dust, scan, rete di nodi o barra V4 visibile.
   -------------------------------------------------------------------------- */
html.es-v6 .v3-orb,
html.es-v6 .v4-fx,
html.es-v6 .v4-orb,
html.es-v6 .v4-scan,
html.es-v6 .v4-dust,
html.es-v6 .v4-depth,
html.es-v6 .v4-hdr-edge,
html.es-v6 #es-v4-progress,
html.es-v6 .v5-bg,
html.es-v6 .v5-glare,
html.es-v6 .v5-shade {
	display: none !important;
	animation: none !important;
}


/* --------------------------------------------------------------------------
   12. V6-SCROLL-PARALLAX-PRO-2026-07-06 — Guardie mobile/touch
   Mobile = leggero ma vivo: media più discreti (variante 960w dalla sez. 05),
   escursioni parallax dimezzate, niente marker angolari (già solo desktop).
   -------------------------------------------------------------------------- */
@media (max-width: 1024px), (hover: none) {
	html.es-v6-motion .v6-live .v6-media {
		transform: translate3d(0, calc((var(--v6-sp, 0.5) - 0.5) * 18px), 0) scale(1.05);
	}
	html.es-v6-motion .v6-live .v6-grid {
		transform: translate3d(0, calc((var(--v6-sp, 0.5) - 0.5) * 10px), 0);
	}
	html.es-v6-motion .v6-live .v6-veil {
		transform: none;
	}
	.v6-grid {
		opacity: 0.8;
	}
}


/* --------------------------------------------------------------------------
   13. V6-SCROLL-PARALLAX-PRO-2026-07-06 — Riduzione movimento
   Il JS non aggiunge es-v6-motion (né scrive --v6-sp): prima cintura.
   Questo blocco è la SECONDA cintura (pattern V3/V4/V5): qualunque residuo
   si ferma. Resta la struttura statica completa: media visibili (fermi),
   griglia, topline estesa, barra di lettura come informazione di stato.
   -------------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
	.v6-media,
	.v6-grid,
	.v6-veil {
		transform: none !important;
		transition: none !important;
		will-change: auto !important;
	}
	.v6-topline {
		transform: scaleX(1);
		transition: none;
	}
	#es-v6-progress .v6p-bar {
		transition: none;
	}
	html.es-v6 .es .hero-orbit,
	html.es-v6 .es .hero .es-orbital .rspin {
		transform: none !important;
	}
	html.es-v6-motion .v6-prep {
		opacity: 1 !important;
		transform: none !important;
	}
}


/* --------------------------------------------------------------------------
   14. V6-SCROLL-PARALLAX-PRO-2026-07-06 — Ridichiarazione di sicurezza
   Duplicato intenzionale del blocco 01 su selettore html, in coda al file
   (lezione QA V3: un renderer può scartare la prima regola del foglio).
   Tutti gli usi hanno comunque fallback letterali.
   -------------------------------------------------------------------------- */
html {
	--v6-gold: #d6a84f;
	--v6-gold-hi: #e9c87e;
	--v6-gold-deep: #a77c39;
	--v6-navy: #0a1f3c;
	--v6-navy-2: #0e2a50;
	--v6-blue: #1b5fa8;
	--v6-ease: cubic-bezier(0.22, 0.61, 0.36, 1);
}
