/* ==========================================================================
   V6.2-ARTISTIC-MOTION-SHOWCASE-2026-07-07 — Artistic Motion Showcase (ES)
   ==========================================================================
   Layer ADDITIVO sopra V6/V6.1. NESSUN nuovo motore di scroll: riusa il clock
   unico della V6 (v6-scroll-parallax-professional.js) — variabili globali
   --v6-scroll (0..1) e per-sezione --v6-sp (0..1, solo sezioni .v6-live) e le
   classi es-v6 / es-v6-motion. Il JS V6.2 aggiunge SOLO il gate es-v62 (+
   es-v62-motion quando il movimento e consentito) e prepara alcuni nodi
   (split parola-per-parola, indici); il movimento e SEMPRE funzione dello
   scroll o transizione one-shot all'ingresso in viewport.

   OBIETTIVO (mandato V6.2): rendere le animazioni CHIARAMENTE percepibili,
   eleganti, tecniche, scroll-driven — trasformare il sito in una galleria di
   effetti web dello studio — SENZA overreach: niente keyframe infiniti
   decorativi, niente React/Vite/Tailwind/Framer, niente CDN, niente video
   remoti, niente tracker. A scroll fermo il sito e fermo (salvo hover/focus/
   press/transizioni di stato).

   PRINCIPI (invariati da V6/V6.1)
   - namespace v62 (classi v62-, variabili --v62-): zero collisioni con es-,
     v3-, v4-, v6-, v61- e col CSS del DB;
   - il gate html.es-v62 arriva SOLO dal JS V6.2 → senza JS questo foglio e
     quasi tutto dormiente e NESSUN contenuto viene mai nascosto;
   - decorazioni: pointer-events:none, aria-hidden; contenuti sempre sopra;
   - popup: irrobustimento AUTO-SUFFICIENTE (funziona anche senza V6.1);
   - reduced-motion: struttura statica completa (sez. 12), no-JS leggibile
     (sez. 13);
   - fallback letterali su ogni var + ridichiarazione di sicurezza (sez. 14).
   Rollback: eliminare questo file + v6-2-artistic-motion-showcase.js + blocco
   enqueue V6.2 (la V6.1 riprende identica da sola).

   INDICE
   01. Variabili V6.2 + token z-index centralizzati
   02. P0 — Popup Contattaci: portal, X, safe-area, z-index (auto-sufficiente)
   03. BlurText — reveal parola-per-parola dei titoli di sezione (one-shot)
   04. Reading light — lead che si accende parola-per-parola con lo scroll
   05. Liquid glass tecnico (.v62-glass) + chrome vetro su .v61-app + CTA
   06. Showcase amplificato: .v61-app data-line, profondita, .v61-split/.v61-draw
   07. Marquee competenze scroll-tied (.v62-marquee) [componente opzionale]
   08. Capability cards premium (rifiniture .es-mod / .card)
   09. Navigazione: barra, torna-su, CTA (microinterazioni sobrie)
   10. Guardie mobile/touch + safe-area
   11. Contenuti garantiti / z-index locale componenti V6.2
   12. Riduzione movimento (kill-switch totale V6.2)
   13. Fallback no-JS (contenuti sempre leggibili)
   14. Ridichiarazione variabili di sicurezza
   ========================================================================== */


/* --------------------------------------------------------------------------
   01. V6.2 — Variabili + token z-index centralizzati
   Ogni uso nel foglio ha comunque fallback letterale (lezione QA V3).
   La scala z-index e la STESSA gia in uso in V3/V4/V6/V6.1 e nel CSS DB:
   qui viene resa esplicita come token unico e documentato (mandato sez. 11).
   Ordine crescente (chi vince sta sopra):
     base 0  <  layer/parallax 0  <  contenuto 1  <  CTA/card 2
     <  cookie 99985  <  header 99990  <  barra lettura 99991
     <  dropdown Servizi 99999  <  popup/modal 100000  <  X/close 100001.
   -------------------------------------------------------------------------- */
:root {
	--v62-gold: #d6a84f;
	--v62-gold-hi: #e9c87e;
	--v62-gold-deep: #a77c39;
	--v62-navy: #0a1f3c;
	--v62-navy-2: #0e2a50;
	--v62-navy-3: #14406b;
	--v62-blue: #1b5fa8;
	--v62-cyan: #00aeef;
	--v62-ease: cubic-bezier(0.16, 1, 0.3, 1);   /* "premium ease-out" (ref) */
	--v62-ease-soft: cubic-bezier(0.22, 0.61, 0.36, 1);

	/* token z-index documentati (riferimento unico) */
	--v62-z-content: 1;
	--v62-z-cta: 2;
	--v62-z-cookie: 99985;
	--v62-z-header: 99990;
	--v62-z-bar: 99991;
	--v62-z-dropdown: 99999;
	--v62-z-modal: 100000;
	--v62-z-modal-x: 100001;
}


/* --------------------------------------------------------------------------
   02. V6.2 — P0: Popup Contattaci (irrobustimento AUTO-SUFFICIENTE)
   Il fix alla causa radice esiste gia in V6.1 (reparent di #es-cmodal a body
   + X fuori dall'angolo). La V6.2 lo RENDE INDIPENDENTE dalla V6.1: il JS V6.2
   ri-esegue il reparent in modo idempotente e questo foglio ridichiara la
   geometria della X e del box con la stessa direzione, cosi il popup e a
   norma anche se la V6.1 non fosse presente/attiva. Caricato DOPO il CSS V6.1
   ⇒ a pari specificita (html.es-v62 == html.es-v61) vince l'ultimo: la V6.2 e
   l'autorita finale sulla geometria del popup.
   Requisiti mandato: X sempre sopra header/barra/layer, sempre visibile,
   sempre cliccabile; safe-area mobile; nessun layer che intercetta il tap.
   -------------------------------------------------------------------------- */
/* il modal resta l'elemento piu alto della pagina (reparent a body dal JS) */
html.es-v62 #es-cmodal.es-cmodal {
	z-index: 100000; /* --v62-z-modal */
}
html.es-v62 #es-cmodal .es-cmodal__ov {
	/* l'overlay chiude al tap (data-close nel DB): resta cliccabile, sotto il box */
	z-index: 0;
}
html.es-v62 .es-cmodal__box {
	/* overflow visibile: la X puo sporgere fuori dall'angolo senza clipping.
	   Il clipping dei contenuti passa all'iframe (radius sotto). Larghezza con
	   margine laterale > sporgenza X (vedi note V6.1). Altezza limitata con
	   supporto dvh + safe-area: la X non finisce mai sotto il notch. */
	overflow: visible !important;
	width: min(720px, calc(100vw - 36px)) !important;
	height: min(88vh, 840px) !important;
	height: min(88dvh, 840px) !important;
}
html.es-v62 .es-cmodal__frame {
	border-radius: 13px;
	background: #f6f8fb;
}
/* Entrata: SOLO opacita. Il box resta SEMPRE centrato (transform base
   translate(-50%,-50%) mai interpolato) → niente "fly-in" della X dal bordo
   destro (misurato: la transition transform del DB parte da uno stato non
   centrato per ~0.5s). Cosi la X e a posto e cliccabile dal primo frame.
   Robustezza P0 (mandato sez. 3): la geometria del popup non dipende mai da
   una transition in corso. */
html.es-v62 .es-cmodal__box {
	transition: opacity 0.32s ease !important;
}
html.es-v62 .es-cmodal__x {
	/* X ancorata FUORI dall'angolo, dimensione touch >= 44px, sempre sopra il
	   box e ogni layer (contesto locale del box, che e stacking context per il
	   suo transform: la X vive dentro e domina il box). */
	top: -16px !important;
	right: -16px !important;
	width: 46px !important;
	height: 46px !important;
	font-size: 24px !important;
	line-height: 1 !important;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	background: linear-gradient(180deg, var(--v62-navy-3, #14406b), var(--v62-navy, #0a1f3c)) !important;
	border: 1.5px solid rgba(233, 200, 126, 0.9) !important;
	color: #fff !important;
	box-shadow:
		0 6px 20px rgba(3, 8, 18, 0.55),
		0 0 0 3px rgba(10, 31, 60, 0.35) !important;
	z-index: 100001 !important; /* --v62-z-modal-x: sopra tutto entro il box */
	cursor: pointer;
}
html.es-v62 .es-cmodal__x:hover {
	background: linear-gradient(180deg, var(--v62-blue, #1b5fa8), var(--v62-navy-3, #14406b)) !important;
	border-color: var(--v62-gold-hi, #e9c87e) !important;
}
html.es-v62 .es-cmodal__x:focus-visible {
	outline: 2.5px solid var(--v62-gold-hi, #e9c87e);
	outline-offset: 2px;
}
/* mobile: box a tutta larghezza utile, altezza che rispetta le safe-area
   (notch superiore + barra gesti inferiore) usando dvh dove supportato. */
@media (max-width: 600px) {
	html.es-v62 .es-cmodal__box {
		width: calc(100vw - 16px) !important;
		height: min(92vh, 760px) !important;
		height: min(
			calc(100dvh - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px) - 20px),
			760px
		) !important;
	}
	html.es-v62 .es-cmodal__x {
		top: -14px !important;
		right: -6px !important;
		width: 44px !important;
		height: 44px !important;
	}
}
/* dentro l'iframe del popup (il JS V6/V6.1 marca es-v6/es-v61-frame): niente
   header/footer/cookie/barra/torna-su duplicati. Cintura V6.2 indipendente:
   se la V6.1 e assente questa regola garantisce comunque un modulo pulito. */
html.es-v62-frame .site-header,
html.es-v62-frame .site-footer,
html.es-v62-frame .footer-widgets-container,
html.es-v62-frame #es-cookie-bar,
html.es-v62-frame a.generate-back-to-top,
html.es-v62-frame #es-v6-progress {
	display: none !important;
}


/* --------------------------------------------------------------------------
   03. V6.2 — BlurText: reveal parola-per-parola dei titoli di sezione
   Effetto "premium" pervasivo e sobrio: i titoli h2 delle sezioni entrano
   parola-per-parola (blur → nitido, opacita, micro-rise) quando la sezione
   arriva in viewport. UNA volta (one-shot, classe v62-in dal JS), non a ogni
   scroll. NON tocca l'hero h1 (gia gestito dal word-reveal GSAP del DB su
   desktop: un solo motore per nodo). Il JS marca solo un set curato di titoli
   (mandato: "non abusare su ogni testo").
   Il titolo stesso e forzato visibile (defeat dell'opacity:0 di .es-rv del DB):
   l'animazione la portano le parole, mai il blocco intero.
   -------------------------------------------------------------------------- */
/* il blocco titolo resta visibile: sono le parole ad animarsi */
html.es-v62-motion .es h2.v62-blur {
	opacity: 1 !important;
	transform: none !important;
}
html.es-v62 h2.v62-blur .v62-wi {
	display: inline-block; /* transform/filter per parola, wrap a fine parola */
}
@media (prefers-reduced-motion: no-preference) {
	html.es-v62-motion h2.v62-blur.v62-prep .v62-wi {
		opacity: 0;
		filter: blur(12px);
		transform: translateY(0.42em);
		transition:
			opacity 0.6s ease calc(var(--wi, 0) * 85ms),
			filter 0.7s var(--v62-ease, cubic-bezier(0.16, 1, 0.3, 1)) calc(var(--wi, 0) * 85ms),
			transform 0.7s var(--v62-ease, cubic-bezier(0.16, 1, 0.3, 1)) calc(var(--wi, 0) * 85ms);
	}
	html.es-v62-motion h2.v62-blur.v62-prep.v62-in .v62-wi {
		opacity: 1;
		filter: blur(0);
		transform: none;
	}
}


/* --------------------------------------------------------------------------
   04. V6.2 — Reading light: lead che si accende con lo scroll
   Il paragrafo lead di sezione si illumina parola-per-parola man mano che la
   sezione attraversa il viewport: effetto "luce di lettura" cinematico e
   sobrio, riflesso dello scroll (nessuna animazione autonoma). Ogni parola ha
   una soglia --wt (0..1, scritta dal JS) sul progresso di sezione --v6-sp:
   opacita = clamp(pavimento, (sp - wt)*k + base, 1). A scroll fermo e fermo.
   Legibilita: pavimento alto (0.42) → mai testo illeggibile; a sp~0.55 tutto
   e acceso (leggibile mentre si legge). Solo su lead marcati dal JS (curati),
   MAI sull'hero (sopra la piega al load).
   -------------------------------------------------------------------------- */
.es .lead.v62-read .v62-rw {
	display: inline-block;
	opacity: 1; /* base: pieno (no-JS/statico sempre leggibile) */
}
@media (prefers-reduced-motion: no-preference) {
	html.es-v62-motion .es .s.v6-live .lead.v62-read .v62-rw {
		opacity: clamp(0.42, calc((var(--v6-sp, 0) - var(--wt, 0)) * 5 + 0.42), 1);
		transition: opacity 0.25s linear;
	}
}


/* --------------------------------------------------------------------------
   05. V6.2 — Liquid glass tecnico
   Glassmorphism SOBRIO, premium, non-Apple/non-gaming/non-neon: fondo navy
   traslucido, bordo a gradiente oro sottilissimo (trucco mask-composite),
   ombra interna, blur contenuto. Fallback completo se backdrop-filter non e
   supportato (fondo piu opaco). pointer-events sicuri.
   Applicato a: componente riusabile .v62-glass, chrome del pannello .v61-app
   (piu "vetro tecnico"), e micro-showcase hero opzionale.
   -------------------------------------------------------------------------- */
.es .v62-glass {
	position: relative;
	border-radius: 16px;
	background: linear-gradient(180deg, rgba(14, 42, 80, 0.42), rgba(10, 31, 60, 0.5));
	border: 1px solid rgba(233, 200, 126, 0.16);
	box-shadow:
		0 26px 60px rgba(3, 8, 18, 0.4),
		inset 0 1px 0 rgba(255, 255, 255, 0.06);
	-webkit-backdrop-filter: blur(5px) saturate(1.05);
	backdrop-filter: blur(5px) saturate(1.05);
}
/* bordo a gradiente oro (mask-composite: exclude) — solo decorativo */
.es .v62-glass::before {
	content: "";
	position: absolute;
	inset: 0;
	border-radius: inherit;
	padding: 1.2px;
	background: linear-gradient(135deg,
		rgba(233, 200, 126, 0.55),
		rgba(27, 95, 168, 0.18) 45%,
		rgba(233, 200, 126, 0.28));
	-webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
	-webkit-mask-composite: xor;
	mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
	mask-composite: exclude;
	pointer-events: none;
}
/* fallback: senza backdrop-filter il vetro diventa un pannello navy opaco */
@supports not ((backdrop-filter: blur(2px)) or (-webkit-backdrop-filter: blur(2px))) {
	.es .v62-glass {
		background: linear-gradient(180deg, rgba(14, 42, 80, 0.94), rgba(10, 31, 60, 0.96));
	}
}
/* chrome vetro sul pannello dashboard V6.1 (piu "interfaccia viva", sez. 06) */
html.es-v62 .es .v61-app {
	-webkit-backdrop-filter: blur(3px);
	backdrop-filter: blur(3px);
}
html.es-v62 .es .v61-app::after {
	/* riflesso diagonale statico (stato, non animazione): profondita da vetro */
	content: "";
	position: absolute;
	inset: 0;
	border-radius: inherit;
	background: linear-gradient(120deg, rgba(255, 255, 255, 0.06), transparent 42%);
	pointer-events: none;
	z-index: 1;
}


/* --------------------------------------------------------------------------
   06. V6.2 — Showcase amplificato (mandato 6.8/6.9/6.10)
   La V6.1 ha gia .v61-app (barre che crescono, tilt), .v61-split (controfase),
   .v61-draw (linee CAD disegnate). La V6.2 le rende PIU percepibili e aggiunge
   una "linea dati" che si disegna con lo scroll dentro il pannello app —
   dimostrazione credibile di interfaccia viva. Tutto funzione di --v6-sp:
   a scroll fermo, fermo.
   -------------------------------------------------------------------------- */
/* linea dati SVG dentro il pannello app: .v62-dataline (markup opzionale) */
.es .v61-app .v62-dataline {
	display: block;
	width: 100%;
	height: auto;
}
.es .v61-app .v62-dataline path,
.es .v61-app .v62-dataline polyline {
	stroke-dasharray: 1;
	stroke-dashoffset: 0; /* base: disegnata (no-JS/no-motion) */
}
html.es-v62-motion .s.v6-live .v61-app .v62-dataline path,
html.es-v62-motion .s.v6-live .v61-app .v62-dataline polyline {
	stroke-dashoffset: clamp(0, calc(1 - (var(--v6-sp, 0) - 0.05) * 2.4), 1);
}
/* .v61-split: profondita leggermente piu marcata sotto V6.2 (desktop) */
html.es-v62-motion.es-v6-desktop .s.v6-live .v61-split > .v61-l {
	transform: translate3d(0, calc((var(--v6-sp, 0.5) - 0.5) * -32px), 0);
}
html.es-v62-motion.es-v6-desktop .s.v6-live .v61-split > .v61-r {
	transform: translate3d(0, calc((var(--v6-sp, 0.5) - 0.5) * 32px), 0);
}
/* .v61-draw: leggero glow oro sul tratto mentre si disegna (sobrio) */
html.es-v62 .v61-draw {
	filter: drop-shadow(0 0 5px rgba(214, 168, 79, 0.16));
}
/* KPI del pannello app: numeri con un filo di presenza in piu (stato) */
html.es-v62 .es .v61-kpi .v {
	text-shadow: 0 0 14px rgba(233, 200, 126, 0.22);
}


/* --------------------------------------------------------------------------
   07. V6.2 — Marquee competenze scroll-tied (.v62-marquee) [OPZIONALE]
   Striscia di competenze che scorre orizzontalmente in funzione di --v6-scroll
   (NON un loop infinito): la profondita nasce dal moto relativo con lo scroll.
   Markup opzionale in PATCH-CONTENUTI-V6-2.md: se non applicato, questi
   selettori non matchano nulla. aria-hidden nel markup (contenuto ridondante).
   -------------------------------------------------------------------------- */
.es .v62-marquee {
	position: relative;
	overflow: hidden;
	-webkit-mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
	mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
}
.es .v62-marquee__row {
	display: flex;
	gap: 14px;
	width: max-content;
	will-change: transform;
}
/* riga 1 va a sinistra, riga 2 a destra: moto relativo legato allo scroll */
html.es-v62-motion .v6-live .v62-marquee__row.v62-mq-a {
	transform: translate3d(calc(var(--v6-scroll, 0) * -180px), 0, 0);
}
html.es-v62-motion .v6-live .v62-marquee__row.v62-mq-b {
	transform: translate3d(calc(var(--v6-scroll, 0) * 180px - 180px), 0, 0);
}
.es .v62-marquee .v62-mq-item {
	flex: 0 0 auto;
	padding: 9px 16px;
	border-radius: 999px;
	border: 1px solid rgba(167, 124, 57, 0.4);
	background: rgba(214, 168, 79, 0.06);
	font-family: Rajdhani, Consolas, monospace;
	font-size: 0.86rem;
	font-weight: 600;
	letter-spacing: 0.04em;
	white-space: nowrap;
	color: inherit;
}
.es .s.dark .v62-marquee .v62-mq-item {
	border-color: rgba(233, 200, 126, 0.34);
	background: rgba(233, 200, 126, 0.07);
	color: #dbe6f3;
}


/* --------------------------------------------------------------------------
   08. V6.2 — Capability cards premium (rifiniture .es-mod / .card)
   Bordo superiore oro che si completa all'ingresso (one-shot, riusa es-rv-in
   del DB / v6-in), edge di luce sottile. Sobrio: nessun respiro autonomo.
   -------------------------------------------------------------------------- */
@media (prefers-reduced-motion: no-preference) {
	html.es-v62-motion .es .es-mod,
	html.es-v62-motion .es .grid .card {
		transition: box-shadow 0.35s ease, border-color 0.35s ease, transform 0.5s var(--v62-ease-soft, cubic-bezier(0.22, 0.61, 0.36, 1));
	}
	html.es-v62-motion .es .es-mod:hover,
	html.es-v62-motion .es .grid .card:hover {
		box-shadow: 0 18px 44px rgba(3, 8, 18, 0.18), 0 0 0 1px rgba(214, 168, 79, 0.18);
	}
}


/* --------------------------------------------------------------------------
   09. V6.2 — Navigazione: barra, torna-su, CTA (microinterazioni sobrie)
   Mandato 6.12: barra scroll piu evidente ma elegante, torna-su piu chiaro,
   CTA con microinterazioni. La V6.1 ha gia potenziato barra e anello: la V6.2
   aggiunge SOLO un accento sobrio ai CTA principali (press/hover) senza
   toccare la logica esistente.
   -------------------------------------------------------------------------- */
@media (prefers-reduced-motion: no-preference) {
	html.es-v62 .es .btn {
		transition: transform 0.2s var(--v62-ease-soft, cubic-bezier(0.22, 0.61, 0.36, 1)),
			box-shadow 0.25s ease, background 0.25s ease, border-color 0.25s ease, color 0.25s ease;
	}
	html.es-v62 .es .btn:active {
		transform: translateY(0) scale(0.97);
	}
	/* CTA primario oro: alone caldo piu deciso in hover (resta solido/leggibile) */
	html.es-v62 .es .btn-gold:hover {
		box-shadow: 0 16px 38px rgba(167, 124, 57, 0.46), 0 0 0 1px rgba(233, 200, 126, 0.5);
	}
}


/* --------------------------------------------------------------------------
   10. V6.2 — Guardie mobile/touch + safe-area
   Effetti presenti ma dimezzati; niente 3D/tilt aggiuntivo su touch; blur del
   vetro ridotto (costo GPU). Le safe-area del popup sono nella sez. 02.
   -------------------------------------------------------------------------- */
@media (max-width: 1024px), (hover: none) {
	html.es-v62-motion .s.v6-live .v61-split > .v61-l {
		transform: translate3d(0, calc((var(--v6-sp, 0.5) - 0.5) * -14px), 0);
	}
	html.es-v62-motion .s.v6-live .v61-split > .v61-r {
		transform: translate3d(0, calc((var(--v6-sp, 0.5) - 0.5) * 14px), 0);
	}
	.es .v62-glass,
	html.es-v62 .es .v61-app {
		-webkit-backdrop-filter: blur(3px);
		backdrop-filter: blur(3px);
	}
	/* reading light piu leggera su mobile (meno stacco tra parole) */
	html.es-v62-motion .es .s.v6-live .lead.v62-read .v62-rw {
		opacity: clamp(0.55, calc((var(--v6-sp, 0) - var(--wt, 0)) * 5 + 0.55), 1);
	}
}


/* --------------------------------------------------------------------------
   11. V6.2 — Contenuti garantiti / z-index locale dei componenti V6.2
   I componenti V6.2 vivono DENTRO .w (gia sopra i layer .v6-bg): position
   relative + z-index basso locale, mai sopra menu/dropdown/modal/cookie.
   -------------------------------------------------------------------------- */
.es .v62-glass,
.es .v62-marquee {
	position: relative;
	z-index: 1; /* --v62-z-content */
}


/* --------------------------------------------------------------------------
   12. V6.2 — Riduzione movimento (kill-switch totale V6.2)
   Il JS non aggiunge es-v62-motion sotto reduced-motion: prima cintura.
   Questo blocco e la seconda cintura: tutto statico, testi pieni, linee
   disegnate, parole visibili, nessun tilt/parallax. Popup e vetro restano
   (stato, non animazione).
   -------------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
	html.es-v62 h2.v62-blur .v62-wi {
		opacity: 1 !important;
		filter: none !important;
		transform: none !important;
		transition: none !important;
	}
	html.es-v62 .es .lead.v62-read .v62-rw {
		opacity: 1 !important;
		transition: none !important;
	}
	html.es-v62 .v61-app .v62-dataline path,
	html.es-v62 .v61-app .v62-dataline polyline {
		stroke-dashoffset: 0 !important;
	}
	html.es-v62 .es .v61-split > .v61-l,
	html.es-v62 .es .v61-split > .v61-r,
	html.es-v62 .v62-marquee__row {
		transform: none !important;
		transition: none !important;
		will-change: auto !important;
	}
	html.es-v62 .es .btn:active {
		transform: none !important;
	}
}


/* --------------------------------------------------------------------------
   13. V6.2 — Fallback no-JS (contenuti sempre leggibili)
   Senza JS il gate html.es-v62 non esiste: quasi tutto questo foglio e
   dormiente. Le rare regole ungated (componenti .v62-*) hanno stato base
   "completo/visibile". Qui la garanzia esplicita: se per qualsiasi motivo le
   parole fossero gia splittate ma il gate motion mancasse, restano piene.
   -------------------------------------------------------------------------- */
h2.v62-blur .v62-wi,
.es .lead.v62-read .v62-rw {
	opacity: 1;
}


/* --------------------------------------------------------------------------
   14. V6.2 — Ridichiarazione variabili di sicurezza
   (lezione QA V3: un renderer puo scartare la prima regola del foglio)
   -------------------------------------------------------------------------- */
html {
	--v62-gold: #d6a84f;
	--v62-gold-hi: #e9c87e;
	--v62-gold-deep: #a77c39;
	--v62-navy: #0a1f3c;
	--v62-navy-2: #0e2a50;
	--v62-navy-3: #14406b;
	--v62-blue: #1b5fa8;
	--v62-cyan: #00aeef;
	--v62-ease: cubic-bezier(0.16, 1, 0.3, 1);
	--v62-ease-soft: cubic-bezier(0.22, 0.61, 0.36, 1);
	--v62-z-content: 1;
	--v62-z-cta: 2;
	--v62-z-cookie: 99985;
	--v62-z-header: 99990;
	--v62-z-bar: 99991;
	--v62-z-dropdown: 99999;
	--v62-z-modal: 100000;
	--v62-z-modal-x: 100001;
}
