/*
Theme Name:   PHAMM Engineering — Brandbook
Theme URI:    https://phammeng.com
Description:  Child theme di Salient. Implementa il PHAMM Engineering Brand Identity System v1.0 (luglio 2026). Questo foglio copre la sezione 04 — Tipografia, e i token di colore necessari a farla leggere correttamente. Superfici, componenti e motion restano da implementare.
Author:       Ottobix
Author URI:   https://www.ottobix.com
Template:     salient
Version:      1.0.0
Text Domain:  phamm-child
*/

/* ==========================================================================
   PHAMM ENGINEERING — BRAND IDENTITY SYSTEM v1.0
   04 — Tipografia

   Due famiglie, mai una terza.
     Display : DM Sans          — titoli, numeri, CTA, claim
     Testo   : Instrument Sans  — body, navigazione, tabelle

   Ogni regola che tocca un selettore di Salient porta !important: il tema
   stampa la propria dynamic-css inline dopo i fogli in coda, e senza
   !important vincerebbe lui.
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. TOKEN
   -------------------------------------------------------------------------- */

:root {
	/* Famiglie */
	--ph-display: 'DM Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
	--ph-text: 'Instrument Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;

	/* Pesi */
	--ph-w-regular: 400;
	--ph-w-medium: 500;
	--ph-w-semibold: 600;
	--ph-w-bold: 700;
	--ph-w-extrabold: 800;

	/* Scala tipografica — valori desktop del brandbook */
	--ph-size-display: clamp(2.5rem, 5.2vw, 4.5rem); /* 40 → 72px */
	--ph-size-h1: 2.5rem;      /* 40px */
	--ph-size-h2: 1.875rem;    /* 30px */
	--ph-size-h3: 1.375rem;    /* 22px */
	--ph-size-h4: 1.125rem;    /* 18px */
	--ph-size-h5: 1rem;        /* 16px */
	--ph-size-h6: 0.875rem;    /* 14px */
	--ph-size-claim: 1.75rem;  /* 28px */
	--ph-size-body: 1.0625rem; /* 17px */
	--ph-size-eyebrow: 0.75rem;/* 12px */
	--ph-size-caption: 0.8125rem; /* 13px */

	/* Interlinee */
	--ph-lh-display: 1.05;
	--ph-lh-h1: 1.1;
	--ph-lh-h2: 1.2;
	--ph-lh-h3: 1.3;
	--ph-lh-h4: 1.4;
	--ph-lh-body: 1.7;

	/* Spaziature */
	--ph-ls-display: -0.025em;
	--ph-ls-eyebrow: 0.2em; /* tracking +20%, riservato all'eyebrow */

	/* Colori — Brandbook 03 */
	--ph-blu: #285AA6;      /* Blu PHAMM — azione, link, CTA */
	--ph-azzurro: #69A0BF;  /* Azzurro PHAMM — solo su fondo scuro */
	--ph-fondo: #10294B;    /* Blu Fondo — titoli, fondi scuri */
	--ph-grigio: #5F7085;   /* Grigio Aria — caption su bianco, disabilitati */
	--ph-camera: #EAF0F7;   /* Azzurro Camera — superfici quiete */
	--ph-grafite: #313840;  /* Grafite — corpo del testo */
	--ph-bianco: #FFFFFF;

	/* Misura del testo: 60–70 caratteri per riga */
	--ph-measure: 66ch;
}

/* --------------------------------------------------------------------------
   2. BASE
   -------------------------------------------------------------------------- */

html {
	-webkit-text-size-adjust: 100%;
}

body,
body.material,
body #search-outer input,
.container-wrap,
.wpb_text_column,
.wpb_text_column p,
p,
li,
dd,
dt,
td,
th,
figcaption,
label,
.widget,
#sidebar,
#footer-outer,
#footer-widgets {
	font-family: var(--ph-text) !important;
}

body {
	font-size: var(--ph-size-body) !important;
	font-weight: var(--ph-w-regular) !important;
	line-height: var(--ph-lh-body) !important;
	color: var(--ph-grafite) !important;
	letter-spacing: 0 !important;

	/* Mai un obliquo o un grassetto sintetizzati dal browser:
	   il claim va in corsivo VERO, non in finto obliquo. */
	font-synthesis: none;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	text-rendering: optimizeLegibility;
}

p {
	font-size: var(--ph-size-body) !important;
	line-height: var(--ph-lh-body) !important;
}

strong,
b {
	font-weight: var(--ph-w-semibold) !important;
}

em,
i,
cite {
	font-family: inherit !important;
	font-style: italic !important;
}

/* --------------------------------------------------------------------------
   3. TITOLI — sempre DM Sans
   -------------------------------------------------------------------------- */

h1, h2, h3, h4, h5, h6,
body h1, body h2, body h3, body h4, body h5, body h6,
.row .col h1, .row .col h2, .row .col h3, .row .col h4, .row .col h5, .row .col h6,
#page-header-bg h1, #page-header-bg h2,
.nectar-post-grid-item h2, .nectar-post-grid-item h3,
.wpb_wrapper h1, .wpb_wrapper h2, .wpb_wrapper h3, .wpb_wrapper h4, .wpb_wrapper h5, .wpb_wrapper h6,
#footer-outer h1, #footer-outer h2, #footer-outer h3, #footer-outer h4, #footer-outer h5, #footer-outer h6 {
	font-family: var(--ph-display) !important;
	color: var(--ph-fondo);
	letter-spacing: 0;
	text-transform: none !important;
}

h1, body h1, .row .col h1, #page-header-bg h1 {
	font-size: var(--ph-size-h1) !important;
	font-weight: var(--ph-w-bold) !important;
	line-height: var(--ph-lh-h1) !important;
}

h2, body h2, .row .col h2 {
	font-size: var(--ph-size-h2) !important;
	font-weight: var(--ph-w-bold) !important;
	line-height: var(--ph-lh-h2) !important;
}

h3, body h3, .row .col h3 {
	font-size: var(--ph-size-h3) !important;
	font-weight: var(--ph-w-semibold) !important;
	line-height: var(--ph-lh-h3) !important;
}

h4, body h4, .row .col h4 {
	font-size: var(--ph-size-h4) !important;
	font-weight: var(--ph-w-semibold) !important;
	line-height: var(--ph-lh-h4) !important;
}

h5, body h5, .row .col h5 {
	font-size: var(--ph-size-h5) !important;
	font-weight: var(--ph-w-semibold) !important;
	line-height: var(--ph-lh-h4) !important;
}

h6, body h6, .row .col h6 {
	font-size: var(--ph-size-h6) !important;
	font-weight: var(--ph-w-semibold) !important;
	line-height: var(--ph-lh-h4) !important;
}

/* --------------------------------------------------------------------------
   4. NAVIGAZIONE — Instrument Sans
   Il brandbook assegna a Instrument Sans "body, navigazione, tabelle".
   -------------------------------------------------------------------------- */

#header-outer #top nav > ul > li > a,
#header-outer #top nav > ul > li > a .menu-title-text,
#header-outer .sf-menu > li > a,
#header-outer .sf-menu > li > a .menu-title-text,
#top nav > ul > li > a,
body #header-outer .sf-menu li a {
	font-family: var(--ph-text) !important;
	font-weight: var(--ph-w-medium) !important;
	font-size: 0.9375rem !important; /* 15px */
	line-height: 1.5 !important;
	letter-spacing: 0 !important;
	text-transform: none !important;
}

/* Colore delle voci di menu: Grafite su bianco (11,86:1), Blu PHAMM allo stato
   attivo e al passaggio (6,76:1). Salient di suo usa #555 e il proprio blu. */
#header-outer #top nav > ul > li > a,
#header-outer .sf-menu > li > a,
#header-outer #top nav > ul > li > a .menu-title-text {
	color: var(--ph-grafite) !important;
}

#header-outer #top nav > ul > li > a:hover,
#header-outer #top nav > ul > li.current-menu-item > a,
#header-outer #top nav > ul > li.current-menu-ancestor > a,
#header-outer #top nav > ul > li.sfHover > a,
#header-outer .sf-menu > li > a:hover,
#header-outer #top nav > ul > li > a:hover .menu-title-text,
#header-outer #top nav > ul > li.current-menu-item > a .menu-title-text {
	color: var(--ph-blu) !important;
}

/* Dropdown e megamenu */
#header-outer .sf-menu li ul li a,
#header-outer .sf-menu li ul li a .menu-title-text,
#header-outer .sf-menu .sub-menu li a,
#header-outer .megamenu > ul > li > a {
	font-family: var(--ph-text) !important;
	font-weight: var(--ph-w-regular) !important;
	font-size: 0.875rem !important; /* 14px */
	line-height: 1.5 !important;
	letter-spacing: 0 !important;
	text-transform: none !important;
}

/* Intestazioni di colonna del megamenu: sono titoli, quindi DM Sans */
#header-outer .megamenu > ul > li > a,
#header-outer .megamenu .sub-menu .menu-item-megamenu-parent > a {
	font-family: var(--ph-display) !important;
	font-weight: var(--ph-w-semibold) !important;
	font-size: 0.8125rem !important;
	letter-spacing: var(--ph-ls-eyebrow) !important;
	text-transform: uppercase !important;
}

/* Logo testuale — finché non arriva il vettoriale della fenice.
   DM Sans e la stessa costruzione geometrica del wordmark PHAMM. */
#header-outer #logo,
#header-outer #logo span,
.no-text-logo #logo {
	font-family: var(--ph-display) !important;
	font-weight: var(--ph-w-bold) !important;
	letter-spacing: -0.015em !important;
	color: var(--ph-fondo) !important;
}

/* Off canvas */
#slide-out-widget-area .off-canvas-menu-container li a,
#slide-out-widget-area .inner .off-canvas-menu-container li a {
	font-family: var(--ph-display) !important;
	font-weight: var(--ph-w-bold) !important;
	letter-spacing: -0.015em !important;
}

#slide-out-widget-area .menu-item-description,
#slide-out-widget-area .widget {
	font-family: var(--ph-text) !important;
	font-weight: var(--ph-w-regular) !important;
}

/* --------------------------------------------------------------------------
   5. PAGE HEADER (titolo di pagina Salient)
   -------------------------------------------------------------------------- */

#page-header-bg h1,
#page-header-wrap h1,
.page-header-no-bg h1 {
	font-family: var(--ph-display) !important;
	font-weight: var(--ph-w-bold) !important;
	font-size: var(--ph-size-h1) !important;
	line-height: var(--ph-lh-h1) !important;
	letter-spacing: 0 !important;
	text-transform: none !important;
}

#page-header-bg .subheader,
#page-header-wrap .subheader {
	font-family: var(--ph-text) !important;
	font-weight: var(--ph-w-regular) !important;
	font-size: var(--ph-size-body) !important;
	line-height: var(--ph-lh-body) !important;
	letter-spacing: 0 !important;
}

/* --------------------------------------------------------------------------
   6. CTA E PULSANTI — DM Sans 700
   -------------------------------------------------------------------------- */

.nectar-button,
body .nectar-button,
.nectar-button span,
a.button,
input[type="submit"],
input[type="button"],
button,
.wpb_button,
.wpcf7-submit {
	font-family: var(--ph-display) !important;
	font-weight: var(--ph-w-bold) !important;
	letter-spacing: 0 !important;
	text-transform: none !important;
}

/* Corpo della CTA: il brandbook fissa il carattere e il peso, non la misura.
   15px e la misura minima con cui una CTA in DM Sans 700 regge accanto
   a un corpo testo da 17px. Valore derivato, non prescritto. */
.nectar-button,
body .nectar-button,
body .nectar-button.large,
a.button,
input[type="submit"],
button,
.wpcf7-submit {
	font-size: 0.9375rem !important;
	line-height: 1.4 !important;
}

/* --------------------------------------------------------------------------
   7. FORM — Instrument Sans
   -------------------------------------------------------------------------- */

input,
textarea,
select,
.wpcf7 input,
.wpcf7 textarea,
.wpcf7 select,
body input[type="text"],
body input[type="email"],
body input[type="tel"],
body textarea {
	font-family: var(--ph-text) !important;
	font-weight: var(--ph-w-regular) !important;
	font-size: 1rem !important;
	line-height: 1.5 !important;
	color: var(--ph-grafite) !important;
}

::placeholder {
	font-family: var(--ph-text) !important;
	color: var(--ph-grigio) !important;
	opacity: 1;
}

label,
.wpcf7 label {
	font-family: var(--ph-text) !important;
	font-weight: var(--ph-w-medium) !important;
	font-size: 0.875rem !important;
	color: var(--ph-grafite) !important;
}

/* --------------------------------------------------------------------------
   8. TABELLE — cifre tabellari per collaudi e listini
   -------------------------------------------------------------------------- */

table,
table td,
table th,
.ph-tabular {
	font-family: var(--ph-text) !important;
	font-variant-numeric: tabular-nums lining-nums;
	font-feature-settings: 'tnum' 1, 'lnum' 1;
}

table th {
	font-weight: var(--ph-w-semibold) !important;
}

/* --------------------------------------------------------------------------
   9. CITAZIONI
   -------------------------------------------------------------------------- */

blockquote,
body blockquote {
	font-family: var(--ph-text) !important;
	font-style: italic !important;
	font-weight: var(--ph-w-regular) !important;
	line-height: 1.6 !important;
	color: var(--ph-grafite) !important;
}

/* --------------------------------------------------------------------------
   10. CLASSI DEL SISTEMA
   Elementi del brandbook che non hanno un equivalente nativo in Salient.
   Si applicano come classe sui moduli WPBakery o nel markup.
   -------------------------------------------------------------------------- */

/* Display — la misura da copertina, 56–72px */
.ph-display {
	font-family: var(--ph-display) !important;
	font-weight: var(--ph-w-extrabold) !important;
	font-size: var(--ph-size-display) !important;
	line-height: var(--ph-lh-display) !important;
	letter-spacing: var(--ph-ls-display) !important;
	color: var(--ph-fondo);
	text-wrap: balance;
}

/* Eyebrow — l'unico posto dove il tracking e largo */
.ph-eyebrow {
	font-family: var(--ph-text) !important;
	font-weight: var(--ph-w-medium) !important;
	font-size: var(--ph-size-eyebrow) !important;
	line-height: 1.4 !important;
	letter-spacing: var(--ph-ls-eyebrow) !important;
	text-transform: uppercase !important;
	color: var(--ph-blu);
	display: block;
}

/* Claim — corsivo regular, MAI bold, mai fra virgolette quando e firma */
.ph-claim {
	font-family: var(--ph-display) !important;
	font-weight: var(--ph-w-regular) !important;
	font-style: italic !important;
	font-size: var(--ph-size-claim) !important;
	line-height: 1.3 !important;
	letter-spacing: 0 !important;
	color: var(--ph-blu);
}

/* Il claim non diventa mai un grassetto, nemmeno se qualcuno lo avvolge in <strong> */
.ph-claim strong,
.ph-claim b {
	font-weight: var(--ph-w-regular) !important;
}

/* Stat / KPI — cifre grandi, sempre tabellari */
.ph-stat {
	font-family: var(--ph-display) !important;
	font-weight: var(--ph-w-extrabold) !important;
	font-size: clamp(2rem, 4vw, 3.5rem) !important;
	line-height: 1 !important;
	letter-spacing: -0.02em !important;
	color: var(--ph-blu);
	font-variant-numeric: tabular-nums lining-nums;
	font-feature-settings: 'tnum' 1, 'lnum' 1;
	display: block;
}

.ph-stat-label {
	font-family: var(--ph-text) !important;
	font-weight: var(--ph-w-regular) !important;
	font-size: var(--ph-size-caption) !important;
	line-height: 1.4 !important;
	color: var(--ph-grafite);
	display: block;
}

/* Caption — 13px. Grigio Aria SOLO su bianco: su Azzurro Camera non passa 4,5:1 */
.ph-caption {
	font-family: var(--ph-text) !important;
	font-weight: var(--ph-w-regular) !important;
	font-size: var(--ph-size-caption) !important;
	line-height: 1.5 !important;
	color: var(--ph-grigio);
}

.ph-caption--on-tint {
	color: var(--ph-grafite);
}

/* Misura: 60–70 caratteri per riga. Da applicare al blocco di testo. */
.ph-measure,
.ph-measure p {
	max-width: var(--ph-measure);
}

/* Utility di famiglia, per i casi limite */
.ph-font-display { font-family: var(--ph-display) !important; }
.ph-font-text    { font-family: var(--ph-text) !important; }

/* --------------------------------------------------------------------------
   11. TESTO SU FONDO SCURO
   Su Blu Fondo l'azzurro passa (5,12:1); su bianco no (2,84:1).
   -------------------------------------------------------------------------- */

.ph-on-dark,
.ph-on-dark p,
.ph-on-dark li {
	color: var(--ph-camera) !important;
}

.ph-on-dark h1,
.ph-on-dark h2,
.ph-on-dark h3,
.ph-on-dark h4,
.ph-on-dark h5,
.ph-on-dark h6,
.ph-on-dark .ph-display {
	color: var(--ph-bianco) !important;
}

.ph-on-dark .ph-eyebrow,
.ph-on-dark .ph-caption {
	color: var(--ph-azzurro) !important;
}

/* --------------------------------------------------------------------------
   12. LINK
   -------------------------------------------------------------------------- */

body a {
	font-family: inherit;
	color: var(--ph-blu);
}

body a:hover {
	color: var(--ph-fondo);
}

/* --------------------------------------------------------------------------
   13. RESPONSIVE
   Mobile-first dichiarato dal brandbook: la scala scende, non si comprime.
   Breakpoint allineati a quelli di Salient (1000px / 690px).
   -------------------------------------------------------------------------- */

@media only screen and (max-width: 1300px) and (min-width: 1000px) {
	:root {
		--ph-size-h1: 2.25rem;   /* 36px */
		--ph-size-h2: 1.75rem;   /* 28px */
	}
}

@media only screen and (max-width: 999px) {
	:root {
		--ph-size-h1: 2rem;      /* 32px */
		--ph-size-h2: 1.625rem;  /* 26px */
		--ph-size-h3: 1.25rem;   /* 20px */
		--ph-size-claim: 1.5rem; /* 24px */
	}
}

@media only screen and (max-width: 690px) {
	:root {
		--ph-size-h1: 1.75rem;   /* 28px */
		--ph-size-h2: 1.5rem;    /* 24px */
		--ph-size-h3: 1.1875rem; /* 19px */
		--ph-size-h4: 1.0625rem; /* 17px */
		--ph-size-body: 1rem;    /* 16px */
		--ph-size-claim: 1.375rem; /* 22px */
	}

	.ph-eyebrow {
		letter-spacing: 0.16em !important;
	}
}

























































































































/* --------------------------------------------------------------------------
   15. COLORI DELL'HEADER
   Salient deriva underline, hover e stati attivi da --nectar-accent-color,
   che di default vale #3452ff. Lo riportiamo al Blu PHAMM.
   Il fondo pieno dei dropdown di Salient viola inoltre la regola del
   brandbook 09 ("i fondi colorati sono sempre trasparenze dello stesso
   colore: 7-9% per un'area"): diventa una velatura all'8%.
   -------------------------------------------------------------------------- */

:root,
html body {
	--nectar-accent-color: #285AA6;
	--nectar-accent-color-dark: #10294B;
	--ph-tint-8: rgba(40, 90, 166, 0.08);
	--ph-tint-12: rgba(40, 90, 166, 0.12);
}

/* Animated underline delle voci di primo livello */
#header-outer[data-lhe="animated_underline"] #top nav > ul > li > a .menu-title-text::after,
#header-outer[data-lhe="animated_underline"] nav > ul > li:not([class*="button_"]) > a .menu-title-text::after,
#header-outer .mobile-header li:not([class*="button_"]) > a .menu-title-text::after,
#header-outer #top nav > ul > li > a .menu-title-text::after {
	background-color: var(--ph-blu) !important;
	height: 2px !important;
}

/* Superficie del dropdown: bianca, non il grigio scuro di Salient */
#header-outer .sf-menu li ul,
#header-outer .sf-menu li ul li,
#header-outer nav > ul > .megamenu > ul,
#header-outer nav > ul > .megamenu > ul ul {
	background-color: var(--ph-bianco) !important;
}

#header-outer .sf-menu li ul {
	border: 1px solid rgba(16, 41, 75, 0.12) !important;
	border-radius: 12px !important;
	box-shadow: 0 12px 32px rgba(16, 41, 75, 0.10) !important;
	padding: 8px !important;
	/* mai overflow:hidden qui: taglierebbe il terzo livello del menu Prodotti */
	overflow: visible !important;
	/* con icona + gap le etichette lunghe non stanno nei 14em di Salient */
	width: auto !important;
	min-width: 252px !important;
}

#header-outer .sf-menu li ul li {
	width: auto !important;
	min-width: 100% !important;
}

#header-outer .sf-menu li ul li > a {
	white-space: nowrap !important;
	padding-right: 22px !important;
}

/* Voci del dropdown a riposo */
#header-outer .sf-menu li ul li a,
#header-outer .sf-menu li ul li a .menu-title-text {
	color: var(--ph-grafite) !important;
	background-color: transparent !important;
}

#header-outer .sf-menu li ul li a {
	border-radius: 8px !important;
}

/* Hover e stato corrente: velatura all'8%, testo Blu PHAMM (6,76:1) */
#header-outer .sf-menu li ul li a:hover,
#header-outer .sf-menu li ul li.sfHover > a,
#header-outer .sf-menu li ul li.current-menu-item > a,
#header-outer .sf-menu li ul li.current-menu-ancestor > a,
#header-outer nav > ul > .megamenu > ul ul li a:hover {
	background-color: var(--ph-tint-8) !important;
	color: var(--ph-blu) !important;
}

#header-outer .sf-menu li ul li a:hover .menu-title-text,
#header-outer .sf-menu li ul li.sfHover > a .menu-title-text,
#header-outer .sf-menu li ul li.current-menu-item > a .menu-title-text {
	color: var(--ph-blu) !important;
}

/* Freccine dei sottomenu */
#header-outer .sf-menu .sf-sub-indicator i,
#header-outer .sf-menu li ul .sf-sub-indicator i {
	color: currentColor !important;
}

/* Guardia di specificita.
   salient-dynamic-styles.css inchioda il proprio accento con !important su un
   selettore piu specifico del nostro, e vince anche dopo aver cambiato l'accent
   color nelle opzioni del tema. Queste regole ne ricalcano la forma e la
   superano, così il dropdown resta corretto qualunque cosa rigeneri Salient. */
html body #header-outer #top nav > ul > li:not(.megamenu) ul li > a:hover,
html body #header-outer #top nav > ul > li:not(.megamenu) ul li.sfHover > a,
html body #header-outer #top nav > ul > li:not(.megamenu) ul li.current-menu-item > a,
html body #header-outer #top nav > ul > li:not(.megamenu) ul li.current-menu-ancestor > a,
html body #header-outer:not([data-format="left-header"]) #top nav > ul > li:not(.megamenu) .sfHover > a,
html body #header-outer:not([data-format="left-header"]) #top nav > ul > li:not(.megamenu) ul a:hover {
	background-color: var(--ph-tint-8) !important;
	color: var(--ph-blu) !important;
}

html body #header-outer #top nav > ul > li:not(.megamenu) ul li > a:hover .menu-title-text,
html body #header-outer #top nav > ul > li:not(.megamenu) ul li.sfHover > a .menu-title-text,
html body #header-outer #top nav > ul > li:not(.megamenu) ul li.current-menu-item > a .menu-title-text,
html body #header-outer #top nav > ul > li:not(.megamenu) ul li.current-menu-ancestor > a .menu-title-text {
	color: var(--ph-blu) !important;
}

/* La voce corrente dentro il dropdown.
   Qui la guardia sopra non bastava e il bug era visibile: sulla pagina di un
   settore, la sua voce nel menu Settori diventava un confetto Blu PHAMM pieno
   con il testo Blu PHAMM sopra — invisibile.
   Il motivo e aritmetica di specificita. La regola di Salient e
     #header-outer:not([data-format="left-header"]) #top nav > ul >
     li:not(.megamenu) ul .current-menu-item > a
   che vale (2 id, 3 classi, 5 elementi): l'attributo del primo :not, la classe
   del secondo e .current-menu-item. La mia guardia si fermava a due classi, e
   il terzo posto si confronta prima del numero di elementi: quindi perdeva
   sempre, per quanti elementi le aggiungessi. Sull'hover invece vinceva,
   perche la regola hover di Salient ha due classi come la mia — ed e per
   questo che il difetto si vedeva solo sulla pagina corrente.
   Qui ricalco la forma di Salient e aggiungo html body: due elementi in piu a
   parita di classi, (2,3,7) contro (2,3,5). */
html body #header-outer:not([data-format="left-header"]) #top nav > ul > li:not(.megamenu) ul .current-menu-item > a,
html body #header-outer:not([data-format="left-header"]) #top nav > ul > li:not(.megamenu) ul .current-menu-ancestor > a,
html body #header-outer:not([data-format="left-header"]) #top nav > ul > li:not(.megamenu) ul .current_page_item > a {
	background-color: var(--ph-tint-8) !important;
	color: var(--ph-blu) !important;
	/* la pagina in cui sei si distingue dal semplice hover con il peso, non con
	   un fondo piu carico: il brandbook tiene le velature fra il 7 e il 9%. */
	font-weight: 500 !important;
}

html body #header-outer:not([data-format="left-header"]) #top nav > ul > li:not(.megamenu) ul .current-menu-item > a .menu-title-text,
html body #header-outer:not([data-format="left-header"]) #top nav > ul > li:not(.megamenu) ul .current-menu-ancestor > a .menu-title-text,
html body #header-outer:not([data-format="left-header"]) #top nav > ul > li:not(.megamenu) ul .current_page_item > a .menu-title-text {
	color: var(--ph-blu) !important;
}

/* Stesso trattamento per le voci di primo livello */
html body #header-outer #top nav > ul > li:not(.megamenu) > a:hover,
html body #header-outer #top nav > ul > li.sfHover > a,
html body #header-outer #top nav > ul > li.current-menu-item > a,
html body #header-outer #top nav > ul > li.current-menu-ancestor > a {
	background-color: transparent !important;
	color: var(--ph-blu) !important;
}

/* --------------------------------------------------------------------------
   16. ICONOGRAFIA DEI DROPDOWN
   Brandbook 09: griglia 24, tratto 2px, giunzioni arrotondate, mai piene,
   un solo colore. Mai icon font, mai emoji.

   Ogni SVG entra come CSS mask, non come immagine: il disegno prende
   currentColor, quindi vira in Blu PHAMM insieme al testo al passaggio.
   Un solo blocco di regole, un --ph-ico per voce.
   -------------------------------------------------------------------------- */

#header-outer .sf-menu li ul li > a {
	display: flex !important;
	align-items: center !important;
	gap: 10px !important;
}

#header-outer .sf-menu li ul li > a::before {
	content: '';
	flex: 0 0 20px;
	width: 20px;
	height: 20px;
	background-color: currentColor;
	-webkit-mask: var(--ph-ico, none) center / 20px 20px no-repeat;
	mask: var(--ph-ico, none) center / 20px 20px no-repeat;
	opacity: 0.7;
	transition: opacity 0.3s cubic-bezier(0.22, 0.61, 0.36, 1);
}

#header-outer .sf-menu li ul li > a:hover::before,
#header-outer .sf-menu li ul li.current-menu-item > a::before,
#header-outer .sf-menu li ul li.current-menu-ancestor > a::before {
	opacity: 1;
}

/* Le voci senza icona assegnata non lasciano un vuoto */
#header-outer .sf-menu li ul li > a:not([style*="--ph-ico"]) {
	gap: 10px;
}

/* -- una regola per voce ---------------------------------------------------- */

/* chi-siamo — Lo stabilimento di Pozzo d'Adda */
#header-outer .sf-menu li ul li > a:is([href$="/azienda/chi-siamo/"],[href$="/en/company/about-us/"],[href$="/es/empresa/quienes-somos/"],[href$="/fr/entreprise/qui-sommes-nous/"]) {
	--ph-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 21h20 M4.5 21V9.5l4.5 3v-3l4.5 3V6.5h6V21 M17 10.5h1.5 M17 14h1.5 M7 15h3v6H7z'/%3E%3C/svg%3E");
}

/* perche-sceglierci — Garanzia verificata */
#header-outer .sf-menu li ul li > a:is([href$="/azienda/perche-sceglierci/"],[href$="/en/company/why-choose-us/"],[href$="/es/empresa/por-que-elegirnos/"],[href$="/fr/entreprise/pourquoi-nous-choisir/"]) {
	--ph-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3l7.5 3v5.5c0 4.4-3.2 7.6-7.5 9-4.3-1.4-7.5-4.6-7.5-9V6z M8.8 11.8l2.4 2.4 4-4.4'/%3E%3C/svg%3E");
}

/* certificazioni-qualita — Certificato con sigillo */
#header-outer .sf-menu li ul li > a:is([href$="/azienda/certificazioni-qualita/"],[href$="/en/company/certifications-and-quality/"],[href$="/es/empresa/certificaciones-calidad/"],[href$="/fr/entreprise/certifications-qualite/"]) {
	--ph-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M13.5 3H6.5A1.5 1.5 0 0 0 5 4.5v15A1.5 1.5 0 0 0 6.5 21h4 M13.5 3L19 8.5V11 M13.5 3v5.5H19 M8 11h5 M8 14.5h3.5 M16.5 17.2a2.6 2.6 0 1 0 0-5.2 2.6 2.6 0 0 0 0 5.2z M14.8 16.6V21l1.7-1.2 1.7 1.2v-4.4'/%3E%3C/svg%3E");
}

/* lavora-con-noi — Tesserino di stabilimento */
#header-outer .sf-menu li ul li > a:is([href$="/azienda/lavora-con-noi/"],[href$="/en/company/work-with-us/"],[href$="/es/empresa/trabaja-con-nosotros/"],[href$="/fr/entreprise/travailler-avec-nous/"]) {
	--ph-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 7h16a1 1 0 0 1 1 1v11a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V8a1 1 0 0 1 1-1z M9.8 7V5.2a2.2 2.2 0 0 1 4.4 0V7 M8.7 13.6a1.6 1.6 0 1 0 0-3.2 1.6 1.6 0 0 0 0 3.2z M6.2 17.2c0-1.4 1.1-2.5 2.5-2.5s2.5 1.1 2.5 2.5 M14 11.5h4 M14 15h3'/%3E%3C/svg%3E");
}

/* assistenza-manutenzione — Chiave di manutenzione */
#header-outer .sf-menu li ul li > a:is([href$="/servizi/assistenza-manutenzione/"],[href$="/en/services/service-and-maintenance/"],[href$="/es/servicios/asistencia-mantenimiento/"],[href$="/fr/services/assistance-maintenance/"]) {
	--ph-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20.4 4.2a5.2 5.2 0 0 1-6.6 6.6L6.4 18.2a2.2 2.2 0 1 1-3.1-3.1l7.4-7.4a5.2 5.2 0 0 1 6.6-6.6l-3 3 .5 3.1 3.1.5z'/%3E%3C/svg%3E");
}

/* certificazione-validazione — Contaparticelle */
#header-outer .sf-menu li ul li > a:is([href$="/servizi/certificazione-validazione/"],[href$="/en/services/certification-and-qualification/"],[href$="/es/servicios/certificacion-cualificacion/"],[href$="/fr/services/certification-qualification/"]) {
	--ph-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 8.5h10a1 1 0 0 1 1 1v10.5a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1V9.5a1 1 0 0 1 1-1z M12 8.5V5.2A2.2 2.2 0 0 1 14.2 3H18 M8.5 11.5h7v4h-7z M9 18.5h1.5 M13.5 18.5H15'/%3E%3C/svg%3E");
}

/* global-contractor — Planimetria di cantiere */
#header-outer .sf-menu li ul li > a:is([href$="/servizi/global-contractor/"],[href$="/en/services/global-contractor/"],[href$="/es/servicios/global-contractor/"],[href$="/fr/services/global-contractor/"]) {
	--ph-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 4.5h18v15H3z M10 4.5v6.5 M10 11h11 M10 15h5v4.5 M3 11h4'/%3E%3C/svg%3E");
}

/* camere-bianche — Camera bianca con flusso laminare */
#header-outer .sf-menu li ul li > a:is([href$="/prodotti/camere-bianche/"],[href$="/en/products/cleanrooms/"],[href$="/es/productos/salas-blancas/"],[href$="/fr/produits/salles-blanches/"]) {
	--ph-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3.5 3.5h17v17h-17z M3.5 8h17 M8 10.5v6 M6.9 15.4 8 16.6l1.1-1.2 M12 10.5v6 M10.9 15.4 12 16.6l1.1-1.2 M16 10.5v6 M14.9 15.4 16 16.6l1.1-1.2'/%3E%3C/svg%3E");
}

/* softwall — Isola softwall a tende */
#header-outer .sf-menu li ul li > a:is([href$="/prodotti/softwall/"],[href$="/en/products/softwall/"],[href$="/es/productos/softwall/"],[href$="/fr/produits/softwall/"]) {
	--ph-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2.5 4.5h19 M5 4.5v15 M19 4.5v15 M8.5 4.5v13.5 M12 4.5v14.5 M15.5 4.5v13.5 M5 19.5h14'/%3E%3C/svg%3E");
}

/* hardwall — Parete rigida a pannelli */
#header-outer .sf-menu li ul li > a:is([href$="/prodotti/hardwall/"],[href$="/en/products/hardwall/"],[href$="/es/productos/hardwall/"],[href$="/fr/produits/hardwall/"]) {
	--ph-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 4h18v16H3z M9 4v16 M15 4v16 M12.7 12.2h.6'/%3E%3C/svg%3E");
}

/* isolatore compatto — Camera compatta con passamateriali */
#header-outer .sf-menu li ul li > a:is([href$="/prodotti/isolatore-compatto/"],[href$="/en/products/compact-isolator/"],[href$="/es/productos/aislador-compacto/"],[href$="/fr/produits/isolateur-compact/"]) {
	--ph-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 5.5h18v13H3z M3 9h18 M8.5 12v4 M15.5 12v4 M11 13.5h2'/%3E%3C/svg%3E");
}

/* modulo filtrante PRPH — Filtratore su ruote */
#header-outer .sf-menu li ul li > a:is([href$="/prodotti/modulo-filtrante-prph/"],[href$="/en/products/standalone-prph-filter-module/"],[href$="/es/productos/modulo-filtrante-prph/"],[href$="/fr/produits/module-filtrant-prph/"]) {
	--ph-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 4h12v14H6z M6 8h12 M6 12h12 M8.5 20.5h.01 M15.5 20.5h.01 M12 4V2'/%3E%3C/svg%3E");
}

/* cappe — Cappa a flusso laminare */
#header-outer .sf-menu li ul li > a:is([href$="/prodotti/cappe/"],[href$="/en/products/laboratory-hoods/"],[href$="/es/productos/campanas/"],[href$="/fr/produits/hottes/"]) {
	--ph-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 3.5h16v4.5H4z M5.5 8v11 M18.5 8v11 M3 19.5h18 M9 10.5v4.5 M7.9 13.9 9 15.1l1.1-1.2 M15 10.5v4.5 M13.9 13.9 15 15.1l1.1-1.2'/%3E%3C/svg%3E");
}

/* attrezzature — Componenti modulari */
#header-outer .sf-menu li ul li.ph-ico-attrezzature > a,
#header-outer .sf-menu li ul li.menu-item-85 > a {
	--ph-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 4h6v6H4z M14 4h6v6h-6z M4 14h6v6H4z M14 14h6v6h-6z'/%3E%3C/svg%3E");
}

/* arredi-inox — Tavolo inox da cleanroom */
#header-outer .sf-menu li ul li > a:is([href$="/prodotti/arredi-inox/"],[href$="/en/products/stainless-steel-furniture-for-cleanrooms/"],[href$="/es/productos/mobiliario-inox/"],[href$="/fr/produits/mobilier-inox/"]) {
	--ph-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2.5 9h19 M2.5 9v2.2h19V9 M5 11.2V20 M19 11.2V20 M5 16h14'/%3E%3C/svg%3E");
}

/* passacarrelli — Passacarrello a due porte */
#header-outer .sf-menu li ul li > a:is([href$="/prodotti/passacarrelli/"],[href$="/en/products/trolley-pass-throughs-and-air-showers/"],[href$="/es/productos/pasacarros/"],[href$="/fr/produits/sas-chariot/"]) {
	--ph-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 5h18v12H3z M12 5v12 M10.2 11h.6 M13.2 11h.6 M6.5 17v1.6 M17.5 17v1.6 M6.5 21.2a1.3 1.3 0 1 0 0-2.6 1.3 1.3 0 0 0 0 2.6z M17.5 21.2a1.3 1.3 0 1 0 0-2.6 1.3 1.3 0 0 0 0 2.6z'/%3E%3C/svg%3E");
}

/* passamateriali — Passamateriali con interblocco */
#header-outer .sf-menu li ul li > a:is([href$="/prodotti/passamateriali/"],[href$="/en/products/cleanroom-pass-throughs/"],[href$="/es/productos/pasamateriales/"],[href$="/fr/produits/sas-materiel/"]) {
	--ph-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 6h18v12H3z M7.5 9.5h9v5h-9z M4.8 12h2.7 M16.5 12h2.7'/%3E%3C/svg%3E");
}

/* docce-daria — Doccia d'aria a ugelli */
#header-outer .sf-menu li ul li > a:is([href$="/prodotti/camere-bianche/docce-daria/"],[href$="/en/products/cleanrooms/air-showers/"],[href$="/es/productos/salas-blancas/duchas-de-aire/"],[href$="/fr/produits/salles-blanches/douches-a-air/"]) {
	--ph-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 3v18 M19 3v18 M7 8h3.2 M9 6.6 10.5 8 9 9.4 M17 8h-3.2 M15 6.6 13.5 8 15 9.4 M7 14h3.2 M9 12.6 10.5 14 9 15.4 M17 14h-3.2 M15 12.6 13.5 14 15 15.4'/%3E%3C/svg%3E");
}

/* isolatori-positivi — Isolatore a pressione positiva */
#header-outer .sf-menu li ul li > a:is([href$="/prodotti/isolatori-positivi/"],[href$="/en/products/positive-pressure-isolators/"],[href$="/es/productos/aisladores-positivos/"],[href$="/fr/produits/isolateurs-positifs/"]) {
	--ph-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 7.5h18V18H3z M11 7.5V2.6 M9.4 4.2 11 2.6l1.6 1.6 M15.6 4.2h3 M17.1 2.7v3 M9 15a2.1 2.1 0 1 0 0-4.2 2.1 2.1 0 0 0 0 4.2z M15 15a2.1 2.1 0 1 0 0-4.2 2.1 2.1 0 0 0 0 4.2z'/%3E%3C/svg%3E");
}

/* isolatori-negativi — Isolatore a pressione negativa */
#header-outer .sf-menu li ul li > a:is([href$="/prodotti/isolatori-negativi/"],[href$="/en/products/negative-pressure-isolators/"],[href$="/es/productos/aisladores-negativos/"],[href$="/fr/produits/isolateurs-negatifs/"]) {
	--ph-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 7.5h18V18H3z M11 2.6v4.9 M9.4 5.9 11 7.5l1.6-1.6 M15.6 4.2h3 M9 15a2.1 2.1 0 1 0 0-4.2 2.1 2.1 0 0 0 0 4.2z M15 15a2.1 2.1 0 1 0 0-4.2 2.1 2.1 0 0 0 0 4.2z'/%3E%3C/svg%3E");
}

/* ffu — Fan Filter Unit */
#header-outer .sf-menu li ul li > a:is([href$="/prodotti/ffu/"],[href$="/en/products/fan-filter-unit-ffu/"],[href$="/es/productos/ffu/"],[href$="/fr/produits/ffu/"]) {
	--ph-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 3.5h18v6H3z M12 8.4a1.9 1.9 0 1 0 0-3.8 1.9 1.9 0 0 0 0 3.8z M3 12.5l3 3.5 3-3.5 3 3.5 3-3.5 3 3.5 3-3.5 M8 18.5v2.5 M12 18.5v2.5 M16 18.5v2.5'/%3E%3C/svg%3E");
}

/* aerospaziale — Satellite */
#header-outer .sf-menu li ul li > a:is([href$="/settori/aerospaziale/"],[href$="/en/sectors/aerospace/"],[href$="/es/sectores/aeroespacial/"],[href$="/fr/secteurs/aerospatial/"]) {
	--ph-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9.5 9.5h5v5h-5z M3 9h5.5v6H3z M15.5 9h5.5v6h-5.5z M12 9.5V6 M10.2 6h3.6 M12 14.5V18'/%3E%3C/svg%3E");
}

/* alimentare — Contenitore alimentare sigillato */
#header-outer .sf-menu li ul li > a:is([href$="/settori/alimentare/"],[href$="/en/sectors/food/"],[href$="/es/sectores/alimentario/"],[href$="/fr/secteurs/agroalimentaire/"]) {
	--ph-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5.5 4.5h13v3.2h-13z M6.8 7.7h10.4V19a2 2 0 0 1-2 2H8.8a2 2 0 0 1-2-2z M9.5 12.5h5'/%3E%3C/svg%3E");
}

/* automotive — Vettura */
#header-outer .sf-menu li ul li > a:is([href$="/settori/automotive/"],[href$="/en/sectors/automotive/"],[href$="/es/sectores/automocion/"],[href$="/fr/secteurs/automobile/"]) {
	--ph-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 16.5v-2.2l2.2-1L7.8 9h8.4l2.6 4.3 2.2 1v2.2 M3 16.5h3 M18 16.5h3 M9.5 16.5h5 M7.5 19a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5z M16.5 19a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5z'/%3E%3C/svg%3E");
}

/* beverage — Bottiglia */
#header-outer .sf-menu li ul li > a:is([href$="/settori/beverage/"],[href$="/en/sectors/beverage/"],[href$="/es/sectores/bebidas/"],[href$="/fr/secteurs/boissons/"]) {
	--ph-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 2.5h4v3.2l2.2 3.3V19a2 2 0 0 1-2 2h-4.4a2 2 0 0 1-2-2V9l2.2-3.3z M9.8 5.7h4.4 M7.8 12.5h8.4'/%3E%3C/svg%3E");
}

/* elettronico — Circuito integrato */
#header-outer .sf-menu li ul li > a:is([href$="/settori/elettronico/"],[href$="/en/sectors/electronics/"],[href$="/es/sectores/electronico/"],[href$="/fr/secteurs/electronique/"]) {
	--ph-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 7h10v10H7z M10.5 10.5h3v3h-3z M9.5 7V4 M14.5 7V4 M9.5 20v-3 M14.5 20v-3 M7 9.5H4 M7 14.5H4 M20 9.5h-3 M20 14.5h-3'/%3E%3C/svg%3E");
}

/* farmaceutico — Blister farmaceutico */
#header-outer .sf-menu li ul li > a:is([href$="/settori/farmaceutico/"],[href$="/en/sectors/pharmaceutical/"],[href$="/es/sectores/farmaceutico/"],[href$="/fr/secteurs/pharmaceutique/"]) {
	--ph-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 6.5h16a1.5 1.5 0 0 1 1.5 1.5v8a1.5 1.5 0 0 1-1.5 1.5H4a1.5 1.5 0 0 1-1.5-1.5v-8A1.5 1.5 0 0 1 4 6.5z M8.5 11.6a1.8 1.8 0 1 0 0-3.6 1.8 1.8 0 0 0 0 3.6z M15.5 11.6a1.8 1.8 0 1 0 0-3.6 1.8 1.8 0 0 0 0 3.6z M8.5 16.6a1.8 1.8 0 1 0 0-3.6 1.8 1.8 0 0 0 0 3.6z M15.5 16.6a1.8 1.8 0 1 0 0-3.6 1.8 1.8 0 0 0 0 3.6z'/%3E%3C/svg%3E");
}

/* fibre-composite — Trama di fibra */
#header-outer .sf-menu li ul li > a:is([href$="/settori/fibre-composite/"],[href$="/en/sectors/composite-fibres/"],[href$="/es/sectores/fibras-compuestas/"],[href$="/fr/secteurs/fibres-composites/"]) {
	--ph-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 7h18 M3 12h18 M3 17h18 M8 3v4 M8 8.6v2.8 M8 13v3.4 M8 18v3 M16 3v3.4 M16 8v3.4 M16 13v2.8 M16 17.6v3.4'/%3E%3C/svg%3E");
}

/* meccanica — Ingranaggio */
#header-outer .sf-menu li ul li > a:is([href$="/settori/meccanica/"],[href$="/en/sectors/mechanical/"],[href$="/es/sectores/mecanica/"],[href$="/fr/secteurs/mecanique/"]) {
	--ph-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 19a7 7 0 1 0 0-14 7 7 0 0 0 0 14z M12 14.6a2.6 2.6 0 1 0 0-5.2 2.6 2.6 0 0 0 0 5.2z M12 5V2.4 M12 19v2.6 M19 12h2.6 M5 12H2.4 M17 7l1.8-1.8 M7 7 5.2 5.2 M17 17l1.8 1.8 M7 17 5.2 18.8'/%3E%3C/svg%3E");
}

/* medicale — Presidio medicale */
#header-outer .sf-menu li ul li > a:is([href$="/settori/medicale/"],[href$="/en/sectors/medical/"],[href$="/es/sectores/sanitario/"],[href$="/fr/secteurs/medical/"]) {
	--ph-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10.4 3h3.2a1 1 0 0 1 1 1v5.4H20a1 1 0 0 1 1 1v3.2a1 1 0 0 1-1 1h-5.4V20a1 1 0 0 1-1 1h-3.2a1 1 0 0 1-1-1v-5.4H4a1 1 0 0 1-1-1v-3.2a1 1 0 0 1 1-1h5.4V4a1 1 0 0 1 1-1z'/%3E%3C/svg%3E");
}

/* semiconduttori — Wafer con flat e die */
#header-outer .sf-menu li ul li > a:is([href$="/settori/semiconduttori/"],[href$="/en/sectors/semiconductors/"],[href$="/es/sectores/semiconductores/"],[href$="/fr/secteurs/semi-conducteurs/"]) {
	--ph-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15.6 20.4A9 9 0 1 1 20.4 15.6Z M7.6 8h3.6v3.6H7.6z M12.8 8h3.6v3.6h-3.6z M7.6 12.8h3.6v3.6H7.6z'/%3E%3C/svg%3E");
}

/* Sotto la soglia mobile il dropdown diventa lista: le icone restano,
   ma allineate al testo con un rientro minore. */
@media only screen and (max-width: 999px) {
	#header-outer .sf-menu li ul li > a::before {
		flex: 0 0 18px;
		width: 18px;
		height: 18px;
		-webkit-mask-size: 18px 18px;
		mask-size: 18px 18px;
	}
}

/* --------------------------------------------------------------------------
   17. FOOTER + COPYFOOTER
   Global Section "Footer + Copyfooter" (ID 112).
   Il footer nativo di Salient e la sua barra copyright sono disattivati:
   questa sezione e l'intero pie di pagina.

   Fondo Blu Fondo #10294B — il brandbook 03 lo assegna a "titoli, hover,
   fondi scuri, copertine". Su questo fondo la tabella dei contrasti cambia
   tutte le assegnazioni, e va seguita alla lettera:

     Bianco          14,57:1  AAA  recapiti, hover, pill
     Azzurro Camera  12,70:1  AAA  link, claim, indirizzi
     Azzurro PHAMM    5,12:1  AA   eyebrow, testo secondario, riga legale
     Grigio Aria      2,87:1  FAIL mai testo — solo divisori e riempimenti
     Blu PHAMM        2,15:1  FAIL mai testo — solo campiture del dispositivo

   Le ultime due righe non sono limiti da aggirare ma assegnazioni: il
   Grigio Aria diventa il colore dei filetti, il Blu PHAMM quello del fascio
   laminare. Ognuno finisce dove il brandbook lo manda.

   Il contenitore e .container di Salient, lo stesso dell'header: logo di
   testa e logo di piede restano incolonnati a ogni breakpoint senza che
   nessuno debba ricalcolare margini a mano.
   -------------------------------------------------------------------------- */

.phf {
	--phf-bg: var(--ph-fondo);
	--phf-bg-legal: #0C203A; /* Blu Fondo scurito del 22%: stacca il copyfooter */
	--phf-rule: rgba(95, 112, 133, 0.45); /* Grigio Aria, il divisore da brandbook */

	/* rompe il contenitore di Salient e va a piena larghezza */
	width: 100vw !important;
	max-width: 100vw !important;
	margin-left: calc(50% - 50vw) !important;
	margin-right: calc(50% - 50vw) !important;
	position: relative;
	z-index: 1;
	background-color: var(--phf-bg);
}

.nectar-global-section .phf,
.container-wrap .phf {
	margin-bottom: 0 !important;
}

/* Salient impagina p, ul e li con padding proprio: dentro il footer il ritmo
   lo detta la griglia a 4px, non il tema. */
.phf p,
.phf ul,
.phf li,
.phf h2,
.phf address {
	padding: 0 !important;
}

/* -- banda principale ------------------------------------------------------ */

.phf-band {
	background-color: var(--phf-bg);
	padding: 8px 0 64px;
}

/* .phf-inner porta anche la classe .container di Salient: max-width e
   breakpoint sono quelli dell'header, non una copia da tenere allineata a
   mano. Salient pero azzera il padding dei .container annidati, e la Global
   Section e dentro un altro container. Salient pero lascia una via d'uscita
   nella sua stessa regola — :not(.normal-container) — quindi al contenitore
   basta quella classe per riprendere il padding del tema, con le sue media
   query. Nessun !important, nessun valore duplicato: il logo di piede resta
   incolonnato con quello di testa a ogni larghezza. */
.phf .phf-inner.container {
	box-sizing: border-box;
}

/* -- riga alta: marca e contatti ------------------------------------------- */

.phf-top {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-start;
	justify-content: space-between;
	gap: 36px 48px;
	padding-bottom: 40px;
	border-bottom: 1px solid var(--phf-rule);
}

.phf-brand {
	max-width: 46ch;
}

.phf-logo {
	display: block;
	line-height: 0;
}

/* Stessa altezza del logo in header (60px) e stesso allineamento a sinistra.
   Il marchio va in negativo su fondo scuro: finche non arriva il vettoriale
   bianco, lo si ricava dal file a colori. [DA FORNIRE] versione negativa. */
.phf-logo img {
	height: 60px;
	width: auto;
	display: block;
	filter: brightness(0) invert(1);
}

.phf .phf-claim {
	font-family: var(--ph-display) !important;
	font-weight: var(--ph-w-regular) !important;
	font-style: italic !important;
	font-size: 1.75rem !important;
	line-height: 1.2 !important;
	letter-spacing: 0 !important;
	color: var(--ph-camera) !important;
	margin: 18px 0 0 !important;
}

.phf .phf-pos {
	font-family: var(--ph-text) !important;
	font-weight: var(--ph-w-regular) !important;
	font-size: 0.875rem !important;
	line-height: 1.6 !important;
	color: var(--ph-azzurro) !important;
	margin: 10px 0 0 !important;
	max-width: 46ch;
}

.phf-reach {
	display: flex;
	gap: 44px;
	flex-wrap: wrap;
	margin-top: 34px;
	padding-top: 28px;
	border-top: 1px solid var(--phf-rule);
}

.phf .phf-reach-item {
	display: block;
	text-decoration: none !important;
	border: 0 !important;
}

.phf .phf-reach-label {
	display: block;
	font-family: var(--ph-text) !important;
	font-weight: var(--ph-w-medium) !important;
	font-size: 0.6875rem !important;
	line-height: 1.4 !important;
	letter-spacing: var(--ph-ls-eyebrow) !important;
	text-transform: uppercase !important;
	color: var(--ph-azzurro) !important;
	margin-bottom: 6px;
}

.phf .phf-reach-value {
	display: block;
	font-family: var(--ph-display) !important;
	font-weight: var(--ph-w-semibold) !important;
	font-size: 1.0625rem !important;
	line-height: 1.3 !important;
	color: var(--ph-bianco) !important;
	font-variant-numeric: tabular-nums lining-nums;
	font-feature-settings: 'tnum' 1, 'lnum' 1;
	transition: color 0.3s cubic-bezier(0.22, 0.61, 0.36, 1);
}

.phf .phf-reach-item:hover .phf-reach-value {
	text-decoration: underline !important;
	text-underline-offset: 4px;
	text-decoration-thickness: 1px;
}

/* -- split section: marca a sinistra, rete internazionale a destra ---------
   Il riferimento portato dal cliente taglia le due meta in diagonale. Qui la
   diagonale non c'e: il sistema PHAMM e ortogonale, e la soglia fra le due
   meta e il fascio laminare — lo stesso dispositivo che separa pagina e
   footer, ruotato di novanta gradi. Le linee si infittiscono avvicinandosi
   al taglio, esattamente come l'aria attraversa un filtro.
   -------------------------------------------------------------------------- */

.phf-split {
	/* stesso incolonnamento del container di Salient, ma calcolato: le due
	   meta hanno fondi diversi e non possono stare dentro un unico container */
	--phf-gutter: max(24px, calc((100vw - 1425px) / 2 + var(--nectar-resp-container-padding, 90px)));

	/* Il taglio: 53,5% in alto, 46,5% in basso. Sette punti di pendenza —
	   abbastanza perche si legga come un gesto voluto, troppo pochi perche
	   diventi un effetto. Sopra i dieci punti la diagonale grida. */
	--phf-cut-top: 53.5%;
	--phf-cut-bottom: 46.5%;

	/* Franco fra il testo e il taglio: senza, il contenuto finirebbe a cavallo
	   della diagonale a certe larghezze. */
	--phf-clear: clamp(32px, 5.6vw, 86px);

	position: relative;
	isolation: isolate;
	display: grid;
	grid-template-columns: 1fr 1fr;
	/* Le due colonne hanno masse diverse: la piu alta detta l'altezza, l'altra
	   si centra. Appoggiate in alto lasciavano un vuoto morto sotto il blu. */
	align-items: center;
	background-color: var(--ph-camera);
}

/* Una sola campitura tagliata, non due pannelli accostati: il blu e un piano
   ritagliato sopra il chiaro, così la diagonale e un bordo netto e non la
   giunzione fra due elementi che devono combaciare. */
.phf-split-canvas {
	position: absolute;
	inset: 0;
	z-index: -1;
	background-color: var(--ph-fondo);
	-webkit-clip-path: polygon(0 0, var(--phf-cut-top) 0, var(--phf-cut-bottom) 100%, 0 100%);
	clip-path: polygon(0 0, var(--phf-cut-top) 0, var(--phf-cut-bottom) 100%, 0 100%);
}

.phf-split-inner {
	padding-top: 88px;
	padding-bottom: 88px;
	position: relative;
}

.phf-split-inner--left {
	padding-left: var(--phf-gutter);
	padding-right: var(--phf-clear);
}

.phf-split-inner--right {
	padding-left: var(--phf-clear);
	padding-right: var(--phf-gutter);
}

/* -- rete internazionale --------------------------------------------------- */

.phf .phf-eyebrow {
	display: block;
	font-family: var(--ph-text) !important;
	font-weight: var(--ph-w-medium) !important;
	font-size: 0.75rem !important;
	line-height: 1.4 !important;
	letter-spacing: var(--ph-ls-eyebrow) !important;
	text-transform: uppercase !important;
	color: var(--ph-blu) !important;
}

.phf .phf-net-title {
	font-family: var(--ph-display) !important;
	font-weight: var(--ph-w-bold) !important;
	font-size: clamp(1.375rem, 1.9vw, 1.875rem) !important;
	line-height: 1.2 !important;
	letter-spacing: 0 !important;
	color: var(--ph-fondo) !important;
	margin: 14px 0 34px !important;
}

.phf .phf-partners {
	list-style: none !important;
	margin: 0 !important;
	display: grid;
	grid-template-columns: 1fr 1fr;
	column-gap: 0;
}

/* Il filetto sta sulle celle e non sulla griglia: le due celle di una riga
   lo fanno combaciare in una linea sola, senza disegnare un reticolo. */
.phf .phf-partner {
	list-style: none !important;
	margin: 0 !important;
	border-top: 1px solid rgba(16, 41, 75, 0.12);
}

.phf .phf-partner:nth-last-child(-n+2) {
	border-bottom: 1px solid rgba(16, 41, 75, 0.12);
}

.phf .phf-partner:nth-child(odd) .phf-partner-link {
	padding-right: 32px;
}

.phf .phf-partner:nth-child(even) .phf-partner-link {
	padding-left: 32px;
}

/* Nessun riquadro, nessuna ombra, nessun raggio. Il marchio del partner e
   l'unico elemento colorato: tutto il resto e tipografia. */
.phf .phf-partner-link {
	display: block;
	height: 100%;
	box-sizing: border-box;
	padding: 24px 0 22px;
	background: none !important;
	border: 0 !important;
	border-radius: 0 !important;
	box-shadow: none !important;
	text-decoration: none !important;
}

/* Slot del marchio identico per tutte e quattro: e la misura ottica a
   pareggiarsi, non quella nominale del file. */
.phf .phf-partner-mark {
	display: flex;
	align-items: center;
	height: 36px;
	margin-bottom: 16px;
}

.phf .phf-partner-logo {
	max-height: 36px;
	max-width: 148px;
	width: auto;
	height: auto;
	object-fit: contain;
	object-position: left center;
}

.phf .phf-partner-text {
	display: block;
}

.phf .phf-partner-name {
	display: block;
	font-family: var(--ph-display) !important;
	font-weight: var(--ph-w-semibold) !important;
	font-size: 0.9375rem !important;
	line-height: 1.35 !important;
	color: var(--ph-fondo) !important;
	transition: color 0.3s cubic-bezier(0.22, 0.61, 0.36, 1);
}

/* Su Azzurro Camera il Grigio Aria si ferma a 4,41:1 e non passa: il meta
   va in Grafite, che arriva a 10,34:1. */
.phf .phf-partner-meta {
	display: block;
	font-family: var(--ph-text) !important;
	font-weight: var(--ph-w-regular) !important;
	font-size: 0.8125rem !important;
	line-height: 1.5 !important;
	color: var(--ph-grafite) !important;
	opacity: 0.72;
	margin-top: 3px;
}

.phf .phf-partner-link:hover .phf-partner-name,
.phf .phf-partner-link:focus-visible .phf-partner-name {
	color: var(--ph-blu) !important;
	text-decoration: underline !important;
	text-underline-offset: 3px;
	text-decoration-thickness: 1px;
}

.phf .phf-split-inner--right a:focus-visible {
	outline: 2px solid var(--ph-blu);
	outline-offset: 3px;
}

/* -- divisore ---------------------------------------------------------------
   Un filetto solo, ma non uniforme: i primi 72px sono in Azzurro PHAMM
   pieno, il resto scende a un grigio appena accennato. Non e un motivo,
   e una riga che sa dove comincia — e vale come firma proprio perche
   non chiede attenzione.
   -------------------------------------------------------------------------- */

.phf .phf-rule {
	height: 1px;
	border: 0 !important;
	margin: 0 0 4px !important;
	padding: 0 !important;
	background-image: linear-gradient(90deg, var(--ph-azzurro) 0 72px, rgba(95, 112, 133, 0.40) 72px);
}

/* Gli altri filetti del footer parlano la stessa lingua */
.phf-nav,
.phf-reach {
	background-repeat: no-repeat;
	background-size: 100% 1px;
}

.phf-nav {
	background-image: linear-gradient(90deg, var(--ph-azzurro) 0 72px, rgba(95, 112, 133, 0.40) 72px);
	background-position: left bottom;
}

.phf-reach {
	background-image: linear-gradient(90deg, var(--ph-azzurro) 0 72px, rgba(95, 112, 133, 0.40) 72px);
	background-position: left top;
}

/* -- griglia della mappa del sito ------------------------------------------ */

.phf-nav {
	display: grid;
	grid-template-columns: repeat(5, 1fr);
	gap: 40px 24px;
	padding: 40px 0;
	border-bottom: 1px solid var(--phf-rule);
}

.phf .phf-h {
	font-family: var(--ph-text) !important;
	font-weight: var(--ph-w-medium) !important;
	font-size: 0.75rem !important;
	line-height: 1.4 !important;
	letter-spacing: var(--ph-ls-eyebrow) !important;
	text-transform: uppercase !important;
	color: var(--ph-azzurro) !important;
	margin: 0 0 16px !important;
}

.phf .phf-list {
	list-style: none !important;
	margin: 0 !important;
}

.phf .phf-list li {
	margin: 0 0 9px !important;
	list-style: none !important;
	font-size: 0.9375rem !important;
	line-height: 1.5 !important;
	break-inside: avoid;
}

.phf .phf-list li:last-child {
	margin-bottom: 0 !important;
}

/* Stessa misura della navigazione in testa: 15px, Instrument Sans 400. */
.phf .phf-list a {
	font-family: var(--ph-text) !important;
	font-weight: var(--ph-w-regular) !important;
	font-size: 0.9375rem !important;
	line-height: 1.5 !important;
	color: var(--ph-camera) !important;
	text-decoration: none !important;
	border: 0 !important;
	background: none !important;
	transition: color 0.3s cubic-bezier(0.22, 0.61, 0.36, 1);
}

.phf .phf-list a:hover,
.phf .phf-list a:focus-visible {
	color: var(--ph-bianco) !important;
	text-decoration: underline !important;
	text-underline-offset: 3px;
	text-decoration-thickness: 1px;
}

/* -- sedi ------------------------------------------------------------------ */

.phf-sites {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-start;
	gap: 32px 64px;
	padding-top: 40px;
}

.phf .phf-addr {
	font-family: var(--ph-text) !important;
	font-style: normal !important;
	font-weight: var(--ph-w-regular) !important;
	font-size: 0.8125rem !important;
	line-height: 1.65 !important;
	color: var(--ph-camera) !important;
	margin: 0 !important;
}

.phf .phf-iso {
	margin: 0 0 0 auto !important;
	display: flex;
	gap: 8px;
	flex-wrap: wrap;
	align-self: center;
}

/* Pill neutre su fondo scuro: velatura di bianco al 10%, peso 600 */
.phf .phf-pill {
	display: inline-block;
	font-family: var(--ph-text) !important;
	font-weight: var(--ph-w-semibold) !important;
	font-size: 0.875rem !important;
	line-height: 1 !important;
	letter-spacing: 0 !important;
	color: var(--ph-bianco) !important;
	background-color: rgba(255, 255, 255, 0.10) !important;
	padding: 9px 16px !important;
	border-radius: 999px !important;
}

/* -- copyfooter ------------------------------------------------------------
   Una riga sola, voci tutte allineate e spaziate allo stesso passo.
   Il separatore e un middot generato in CSS, non un carattere nel markup:
   se una voce va a capo il separatore la segue, e l'ultima non lo porta mai.
   -------------------------------------------------------------------------- */

.phf-legal {
	background-color: var(--phf-bg-legal);
	padding: 18px 0;
}

.phf .phf-legal-list {
	list-style: none !important;
	margin: 0 !important;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 4px 0;
}

.phf .phf-legal-list li {
	list-style: none !important;
	margin: 0 !important;
	display: inline-flex;
	align-items: center;
	font-family: var(--ph-text) !important;
	font-weight: var(--ph-w-regular) !important;
	font-size: 0.8125rem !important;
	line-height: 1.6 !important;
	color: var(--ph-azzurro) !important;
	font-variant-numeric: tabular-nums lining-nums;
}

.phf .phf-legal-list li::after {
	content: '·';
	color: var(--ph-azzurro);
	opacity: 0.5;
	margin: 0 14px;
}

.phf .phf-legal-list li:last-child::after {
	content: none;
}

.phf .phf-legal-list a {
	font-family: var(--ph-text) !important;
	font-size: 0.8125rem !important;
	color: var(--ph-azzurro) !important;
	text-decoration: none !important;
	border: 0 !important;
	transition: color 0.3s cubic-bezier(0.22, 0.61, 0.36, 1);
}

.phf .phf-legal-list a:hover,
.phf .phf-legal-list a:focus-visible {
	color: var(--ph-bianco) !important;
	text-decoration: underline !important;
	text-underline-offset: 3px;
}

/* -- focus visibile -------------------------------------------------------- */

.phf a:focus-visible {
	outline: 2px solid var(--ph-bianco);
	outline-offset: 3px;
	border-radius: 3px;
}

/* -- responsive ------------------------------------------------------------ */

@media only screen and (max-width: 1200px) {
	.phf-nav {
		grid-template-columns: repeat(3, 1fr);
		gap: 36px 24px;
	}

	.phf-col--wide {
		grid-column: auto;
	}
}

@media only screen and (max-width: 1100px) {
	.phf-split {
		grid-template-columns: 1fr;
		align-items: stretch;
	}

	/* In colonna la diagonale non ha piu senso da tagliare: il colore torna
	   sui due blocchi, che così si dimensionano sul proprio contenuto. */
	.phf-split-canvas {
		display: none;
	}

	.phf-split-inner--left {
		background-color: var(--ph-fondo);
	}

	.phf-split-inner--right {
		background-color: var(--ph-camera);
	}

	.phf-split-inner--left,
	.phf-split-inner--right {
		padding-left: var(--phf-gutter);
		padding-right: var(--phf-gutter);
	}

	.phf-split-inner--right {
		padding-top: 56px;
	}

	.phf-split-inner--left {
		padding-bottom: 64px;
	}
}

@media only screen and (max-width: 999px) {
	/* Salient porta il logo di testa a 50px sotto i 1000px: il piede lo segue,
	   così restano della stessa misura oltre che incolonnati. */
	.phf-logo img {
		height: 50px;
	}

	.phf-band {
		padding-bottom: 52px;
	}

	.phf-top {
		flex-direction: column;
		gap: 32px;
	}

	.phf-reach {
		gap: 36px;
	}

	.phf-nav {
		grid-template-columns: repeat(2, 1fr);
	}

	.phf-col--wide {
		grid-column: auto;
	}

	.phf .phf-iso {
		margin-left: 0 !important;
	}
}

@media only screen and (max-width: 690px) {
	.phf .phf-claim {
		font-size: 1.375rem !important;
	}

	.phf-nav {
		grid-template-columns: 1fr;
		gap: 32px;
	}

	.phf-col--wide {
		grid-column: auto;
	}

	.phf-sites {
		gap: 28px;
	}

	.phf .phf-partners {
		grid-template-columns: 1fr;
	}

	.phf .phf-partner:nth-child(odd) .phf-partner-link,
	.phf .phf-partner:nth-child(even) .phf-partner-link {
		padding-left: 0;
		padding-right: 0;
	}

	.phf .phf-partner:nth-last-child(-n+2) {
		border-bottom: 0;
	}

	.phf .phf-partner:last-child {
		border-bottom: 1px solid rgba(16, 41, 75, 0.12);
	}

	/* in colonna il middot fra le voci diventa rumore */
	.phf .phf-legal-list {
		flex-direction: column;
		align-items: flex-start;
		gap: 8px;
	}

	.phf .phf-legal-list li::after {
		content: none;
	}
}

/* --------------------------------------------------------------------------
   18. POST HEADER STRIP
   Global Section "Post header strip" (ID 142), agganciata da Salient
   subito sotto la navigazione.

   Fondo Azzurro Camera: la fascia deve leggersi come una mensola sotto
   l'header, non come una seconda barra di navigazione. Su bianco sarebbe
   invisibile, su Blu Fondo ruberebbe la scena al marchio.

   Un solo accento, e non e un pulsante pieno: il brandbook 10 chiede "un
   solo accento per schermata" e la pagina sotto ne ha gia uno. La CTA resta
   un link in Blu PHAMM con la freccia — la stessa scelta che farebbe Apple
   in una barra di servizio.
   -------------------------------------------------------------------------- */

.phs {
	width: 100vw !important;
	max-width: 100vw !important;
	margin-left: calc(50% - 50vw) !important;
	margin-right: calc(50% - 50vw) !important;
	background-color: var(--ph-camera);
	box-shadow: inset 0 -1px 0 rgba(16, 41, 75, 0.10);
}

.phs .phs-inner {
	box-sizing: border-box;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 24px;
	min-height: 52px;
}

/* Salient mette due pseudo-elementi di clearfix su .container. In un
   contenitore flex smettono di essere invisibili e diventano item veri:
   lo space-between li conta e il primo gruppo finisce spostato di un
   centinaio di pixel. Vanno tolti, non aggirati. */
.phs .phs-inner::before,
.phs .phs-inner::after {
	display: none !important;
	content: none !important;
}

/* Il reset non deve toccare le voci: hanno un padding loro che regge la
   spaziatura fra i filetti. */
.phs ul,
.phs p,
.phs li:not(.phs-fact) {
	margin: 0 !important;
	padding: 0 !important;
	list-style: none !important;
}

.phs .phs-fact {
	margin: 0 !important;
	list-style: none !important;
}

/* -- i tre fatti ----------------------------------------------------------- */

.phs .phs-facts {
	display: flex;
	align-items: center;
	gap: 0;
	flex-wrap: nowrap;
	min-width: 0;
}

.phs .phs-fact {
	font-family: var(--ph-text) !important;
	font-weight: var(--ph-w-medium) !important;
	font-size: 0.6875rem !important;
	line-height: 1.4 !important;
	letter-spacing: var(--ph-ls-eyebrow) !important;
	text-transform: uppercase !important;
	color: var(--ph-fondo) !important;
	white-space: nowrap;
	padding: 0 20px;
}

.phs .phs-fact:first-child {
	padding-left: 0;
}

/* Il separatore e un filetto, non un middot: in una fascia alta 52px una
   linea verticale tiene l'occhio sulla riga, un punto lo fa inciampare. */
.phs .phs-fact + .phs-fact {
	border-left: 1px solid rgba(95, 112, 133, 0.38);
}

/* -- recapiti e CTA -------------------------------------------------------- */

.phs .phs-reach {
	display: flex;
	align-items: center;
	gap: 16px;
	flex-shrink: 0;
}

.phs .phs-link {
	font-family: var(--ph-text) !important;
	font-weight: var(--ph-w-medium) !important;
	font-size: 0.8125rem !important;
	line-height: 1.4 !important;
	color: var(--ph-grafite) !important;
	text-decoration: none !important;
	border: 0 !important;
	transition: color 0.3s cubic-bezier(0.22, 0.61, 0.36, 1);
}

.phs .phs-link:hover,
.phs .phs-link:focus-visible {
	color: var(--ph-blu) !important;
}

/* Il numero e un numero: DM Sans, cifre tabellari. */
.phs .phs-tel {
	font-family: var(--ph-display) !important;
	font-weight: var(--ph-w-semibold) !important;
	font-size: 0.875rem !important;
	font-variant-numeric: tabular-nums lining-nums;
	font-feature-settings: 'tnum' 1, 'lnum' 1;
	color: inherit !important;
}

.phs .phs-sep {
	width: 1px;
	height: 14px;
	background-color: rgba(95, 112, 133, 0.38);
	display: block;
}

.phs .phs-cta {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	margin-left: 12px;
	font-family: var(--ph-display) !important;
	font-weight: var(--ph-w-bold) !important;
	font-size: 0.8125rem !important;
	line-height: 1.4 !important;
	letter-spacing: 0 !important;
	color: var(--ph-blu) !important;
	text-decoration: none !important;
	border: 0 !important;
	white-space: nowrap;
}

/* Solo transform: e l'unica proprieta che il brandbook 12 ammette in
   movimento, insieme all'opacita. */
.phs .phs-chev {
	transform: translateX(0);
	transition: transform 0.3s cubic-bezier(0.22, 0.61, 0.36, 1);
}

.phs .phs-cta:hover .phs-chev,
.phs .phs-cta:focus-visible .phs-chev {
	transform: translateX(3px);
}

.phs .phs-cta:hover,
.phs .phs-cta:focus-visible {
	text-decoration: underline !important;
	text-underline-offset: 4px;
	text-decoration-thickness: 1px;
}

.phs a:focus-visible {
	outline: 2px solid var(--ph-blu);
	outline-offset: 4px;
	border-radius: 3px;
}

@media (prefers-reduced-motion: reduce) {
	.phs .phs-chev {
		transition: none;
	}
}

/* -- responsive ------------------------------------------------------------
   La fascia non va mai a capo e non scorre: si accorcia. Prima cade il terzo
   fatto, poi gli altri due, poi l'email. Il numero e la CTA restano fino
   in fondo, perche sono le uniche due cose che si cliccano davvero.
   -------------------------------------------------------------------------- */

@media only screen and (max-width: 1240px) {
	.phs .phs-fact:nth-child(3) {
		display: none;
	}
}

@media only screen and (max-width: 1080px) {
	.phs .phs-facts {
		display: none;
	}

	.phs .phs-inner {
		justify-content: flex-end;
	}
}

@media only screen and (max-width: 700px) {
	.phs .phs-link--mail,
	.phs .phs-sep {
		display: none;
	}

	.phs .phs-inner {
		justify-content: space-between;
		min-height: 48px;
	}

	.phs .phs-cta {
		margin-left: 0;
	}
}

/* --------------------------------------------------------------------------
   19. PULSANTI FLOTTANTI
   Email e WhatsApp, fissi a destra.

   Il verde di WhatsApp non entra: il brandbook 03 dice "nessun secondo colore
   di marca", e una pastiglia verde accanto a un sistema tutto blu si vede da
   lontano come un corpo estraneo. Resta il glifo, disegnato sulla griglia 24
   con tratto 2px come tutte le altre icone del sistema.

   Il colore si ribalta con il fondo. Su chiaro: pastiglia Blu Fondo, icona
   bianca (14,57:1). Su scuro: pastiglia bianca, icona Blu Fondo. Non e un
   vezzo — a colore fisso una delle due combinazioni finirebbe sotto soglia.
   -------------------------------------------------------------------------- */

.phfab {
	position: fixed;
	right: 24px;
	top: 50%;
	transform: translateY(-50%);
	z-index: 9000;
	display: flex;
	flex-direction: column;
	gap: 12px;
}

.phfab-btn {
	/* Su chiaro: pastiglia Blu PHAMM, icona bianca. Su scuro l'esatto
	   contrario. Le due combinazioni danno lo stesso rapporto — 6,76:1 —
	   perche sono la stessa coppia di colori scambiata di posto: quello che
	   cambia e chi dei due fa da fondo. Il pulsante e sempre l'opposto della
	   pagina che ha dietro, ed e per questo che si vede. */
	--phfab-bg: var(--ph-blu);
	--phfab-fg: var(--ph-bianco);
	--phfab-edge: rgba(16, 41, 75, 0.16);

	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 52px;
	height: 52px;
	border-radius: 999px;
	/* Salient impone un fondo ai link: senza !important la pastiglia resta
	   bianca anche quando la variabile e gia cambiata. */
	background-color: var(--phfab-bg) !important;
	color: var(--phfab-fg) !important;
	text-decoration: none !important;
	/* Il filetto serve nel caso ribaltato — pastiglia bianca su una
	   sezione chiara ma non bianchissima — e non disturba nell'altro. */
	border: 1px solid var(--phfab-edge) !important;
	box-shadow: 0 10px 28px rgba(16, 41, 75, 0.16);
	/* Niente transizione su background-color e color: sono alimentati da
	   var() e Chrome, quando la custom property cambia, lascia
	   l'interpolazione bloccata a meta strada — la pastiglia resta di un
	   colore che non e ne l'uno ne l'altro. Il cambio di tono e istantaneo,
	   che e anche l'unica cosa che il brandbook 12 ammette: in movimento
	   vanno solo transform e opacita. */
	transition:
		transform 0.3s cubic-bezier(0.22, 0.61, 0.36, 1),
		box-shadow 0.3s cubic-bezier(0.22, 0.61, 0.36, 1);
}

/* Su fondo scuro si inverte la coppia: pastiglia bianca, icona Blu PHAMM.
   Il filetto resta appena accennato — una pastiglia bianca su Blu Fondo si
   stacca da se, e un bordo chiaro sul bianco non si vedrebbe comunque. */
.phfab[data-tone="dark"] .phfab-btn {
	--phfab-bg: var(--ph-bianco);
	--phfab-fg: var(--ph-blu);
	--phfab-edge: rgba(16, 41, 75, 0.10);
	box-shadow: 0 10px 28px rgba(0, 0, 0, 0.32);
}

.phfab-btn:hover,
.phfab-btn:focus-visible {
	transform: translateY(-2px);
	box-shadow: 0 16px 34px rgba(16, 41, 75, 0.22);
}

.phfab[data-tone="dark"] .phfab-btn:hover,
.phfab[data-tone="dark"] .phfab-btn:focus-visible {
	box-shadow: 0 16px 34px rgba(0, 0, 0, 0.40);
}

.phfab-btn:focus-visible {
	outline: 2px solid var(--phfab-fg);
	outline-offset: 3px;
}

.phfab-ico {
	display: flex;
	align-items: center;
	justify-content: center;
	color: inherit;
}

/* L'etichetta esce da sotto il pulsante, non lo copre: e un chiarimento,
   non un tooltip che ruba la scena. */
.phfab-label {
	position: absolute;
	right: calc(100% + 10px);
	top: 50%;
	transform: translate(6px, -50%);
	padding: 7px 13px;
	border-radius: 999px;
	background-color: var(--phfab-bg) !important;
	color: var(--phfab-fg) !important;
	border: 1px solid var(--phfab-edge);
	font-family: var(--ph-text) !important;
	font-weight: var(--ph-w-medium) !important;
	font-size: 0.75rem !important;
	line-height: 1 !important;
	letter-spacing: 0.02em;
	white-space: nowrap;
	opacity: 0;
	pointer-events: none;
	box-shadow: 0 8px 22px rgba(16, 41, 75, 0.14);
	transition:
		opacity 0.3s cubic-bezier(0.22, 0.61, 0.36, 1),
		transform 0.3s cubic-bezier(0.22, 0.61, 0.36, 1);
}

.phfab-btn:hover .phfab-label,
.phfab-btn:focus-visible .phfab-label {
	opacity: 1;
	transform: translate(0, -50%);
}

@media (prefers-reduced-motion: reduce) {
	.phfab-btn,
	.phfab-label {
		transition: none;
	}

	.phfab-btn:hover,
	.phfab-btn:focus-visible {
		transform: none;
	}

	.phfab-btn:hover .phfab-label,
	.phfab-btn:focus-visible .phfab-label {
		transform: translate(0, -50%);
	}
}

/* Da desktop, come richiesto. Per averli anche su mobile basta togliere
   questa regola. */
@media only screen and (max-width: 999px) {
	.phfab {
		display: none;
	}
}


/* --------------------------------------------------------------------------
   20. PAGINE LEGALI
   Privacy Policy, Cookie Policy, Note Legali.

   Sono documenti, non pagine di vendita: l'unico compito del progetto e
   rendere leggibile un testo lungo e far trovare in fretta il paragrafo
   giusto. Da qui le due scelte che governano tutto il blocco.

   La prima e la misura. Il corpo resta sulla riga da 60-70 caratteri del
   brandbook 04 anche quando la colonna potrebbe essere piu larga: su un
   testo di trenta paragrafi la riga lunga e la prima causa di abbandono.

   La seconda e l'indice agganciato. Position: sticky non funzionava:
   Salient mette overflow:hidden sul body per contenere le proprie
   animazioni, e cosi il body diventa il contenitore di scorrimento, che
   non scorre mai. Il rimedio non e disegnare l'indice in modo diverso ma
   togliere la causa: overflow:clip taglia allo stesso modo — la prova e
   che scrollWidth resta 1440 su viewport 1440 — senza creare un
   contenitore di scorrimento. Vale solo sulle pagine legali, cosi il
   comportamento del resto del sito non cambia di una virgola.

   Colori. Su Azzurro Camera il brandbook 03 boccia il Grigio Aria (4,41).
   L'intestazione usa quindi Blu PHAMM per l'eyebrow (5,89 AA), Blu Fondo
   per il titolo (12,70 AAA) e Grafite per il corpo (10,34 AAA).
   -------------------------------------------------------------------------- */

/* La classe arriva da phamm_page_body_class() e vale per tutte le pagine
   composte a mano, non solo per quelle legali: il selettore resta corto e
   non serve un :has() su tutto il documento. */
body.ph-page {
	overflow: clip !important;
}

/* Il documento comincia a filo della fascia informativa: l'intestazione
   porta il proprio respiro, quello del tema si somma e sballa il ritmo. */
body.ph-page .container-wrap {
	padding-top: 0 !important;
}

body.ph-page .container-wrap > .container.main-content {
	padding-bottom: 0 !important;
}

/* -- guscio ---------------------------------------------------------------- */

.phlegal {
	/* Stessa formula del footer e della fascia: il margine del contenuto
	   coincide con quello dell'header a ogni larghezza, senza duplicare i
	   breakpoint di Salient. */
	--phl-gutter: max(24px, calc((100vw - 1425px) / 2 + var(--nectar-resp-container-padding, 90px)));
	/* Header fisso 90px + aria. Salient lo rimpicciolisce scorrendo, quindi
	   il valore e un massimo, non una misura da inseguire. */
	--phl-top: 108px;
	--phl-hair: rgba(16, 41, 75, 0.12);
	--phl-hair-soft: rgba(16, 41, 75, 0.08);

	font-family: var(--ph-text);
	font-size: var(--ph-size-body);
	line-height: var(--ph-lh-body);
	color: var(--ph-grafite);
}

/* Salient assegna padding a p, ul e li come elementi: dentro un documento
   impaginato a mano quel padding va azzerato e ridato dove serve. */
.phlegal p,
.phlegal ul,
.phlegal ol,
.phlegal li,
.phlegal dl,
.phlegal dt,
.phlegal dd,
.phlegal h1,
.phlegal h2,
.phlegal h3,
.phlegal table {
	padding: 0;
}

/* -- 20.1 Intestazione ----------------------------------------------------- */

/* Esce dal contenitore e torna dentro col proprio padding: il fondo e a
   pieno schermo, il testo resta incolonnato col menu. body ha overflow-x
   contenuto, quindi i 100vw non generano scorrimento orizzontale. */
.phlegal-hero {
	margin-left: calc(50% - 50vw);
	margin-right: calc(50% - 50vw);
	padding: clamp(52px, 6vw, 96px) var(--phl-gutter) clamp(44px, 4.6vw, 72px);
	background-color: var(--ph-camera);
	box-shadow: inset 0 -1px 0 var(--phl-hair-soft);
}

.phlegal-hero-inner {
	max-width: 1245px;
	margin: 0 auto;
}

.phlegal-eyebrow {
	display: block;
	font-family: var(--ph-text);
	font-weight: var(--ph-w-medium);
	font-size: var(--ph-size-eyebrow);
	line-height: 1.2;
	letter-spacing: var(--ph-ls-eyebrow);
	text-transform: uppercase;
	color: var(--ph-blu);
	margin: 0 0 18px;
}

html body .phlegal .phlegal-title {
	font-family: var(--ph-display) !important;
	font-weight: var(--ph-w-bold) !important;
	font-size: var(--ph-size-h1) !important;
	line-height: var(--ph-lh-h1) !important;
	letter-spacing: -0.015em !important;
	color: var(--ph-fondo) !important;
	margin: 0 0 20px !important;
	max-width: 22ch;
}

.phlegal-lede {
	font-family: var(--ph-text);
	font-weight: var(--ph-w-regular);
	font-size: 1.1875rem; /* 19px: sta fra il corpo 17 e il claim 28 */
	line-height: 1.6;
	color: var(--ph-fondo);
	margin: 0;
	max-width: 58ch;
}

.phlegal-meta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 10px;
	margin: 26px 0 0 !important;
	font-size: var(--ph-size-caption);
	line-height: 1.4;
	color: var(--ph-grafite);
}

.phlegal-meta-dot {
	width: 3px;
	height: 3px;
	border-radius: 999px;
	background-color: var(--ph-blu);
}

/* -- 20.2 Corpo: indice + documento --------------------------------------- */

.phlegal-body {
	display: grid;
	grid-template-columns: minmax(0, 232px) minmax(0, 1fr);
	gap: clamp(36px, 5vw, 92px);
	align-items: start;
	padding: clamp(44px, 5vw, 80px) 0 clamp(72px, 8vw, 132px);
}

.phlegal-index {
	position: sticky;
	top: var(--phl-top);
	max-height: calc(100vh - var(--phl-top) - 40px);
	overflow-y: auto;
	overscroll-behavior: contain;
	/* la barra di scorrimento interna non deve tagliare il bordo attivo */
	padding-right: 4px;
}

html body .phlegal .phlegal-index-h {
	display: block;
	font-family: var(--ph-text);
	font-weight: var(--ph-w-medium);
	font-size: var(--ph-size-eyebrow);
	line-height: 1.2;
	letter-spacing: var(--ph-ls-eyebrow);
	text-transform: uppercase;
	color: var(--ph-grafite);
	margin: 0 0 14px 14px;
}

.phlegal-index ol {
	list-style: none;
	margin: 0;
	counter-reset: phli;
}

.phlegal-index li {
	margin: 0;
	list-style: none;
	counter-increment: phli;
}

.phlegal-index a {
	display: block;
	font-family: var(--ph-text);
	font-weight: var(--ph-w-medium);
	font-size: 0.875rem; /* 14px */
	line-height: 1.35;
	color: var(--ph-grafite);
	text-decoration: none !important;
	padding: 8px 0 8px 14px;
	border-left: 2px solid var(--phl-hair-soft);
	/* solo colore e bordo: nessuna traslazione, il brandbook 10 vuole un
	   solo movimento per schermata e qui lo prende l'indice attivo */
	transition: color 0.2s cubic-bezier(0.22, 0.61, 0.36, 1);
}

/* Lo stesso numero che apre la sezione: l'indice e il documento si
   leggono come una cosa sola. Cifre tabellari, altrimenti 01 e 11 non
   stanno incolonnate. */
.phlegal-index a::before {
	content: counter(phli, decimal-leading-zero);
	margin-right: 9px;
	font-variant-numeric: tabular-nums;
	color: var(--ph-grigio);
}

.phlegal-index a[aria-current="true"]::before,
.phlegal-index a:hover::before {
	color: var(--ph-blu);
}

.phlegal-doc {
	overflow-wrap: break-word;
}

.phlegal-index a:hover,
.phlegal-index a:focus-visible {
	color: var(--ph-blu);
	border-left-color: var(--ph-blu);
}

.phlegal-index a[aria-current="true"] {
	color: var(--ph-blu);
	font-weight: var(--ph-w-semibold);
	border-left-color: var(--ph-blu);
}

/* -- 20.3 Il documento ----------------------------------------------------- */

.phlegal-doc {
	counter-reset: phl;
	min-width: 0;
	/* I filetti fra le sezioni, le tabelle e i riquadri finiscono tutti sullo
	   stesso bordo destro, poco oltre la misura del testo: un filetto molto
	   piu largo del paragrafo che divide si legge come un errore. */
	max-width: 880px;
}

.phlegal-sec {
	counter-increment: phl;
	padding: clamp(38px, 4vw, 60px) 0;
	scroll-margin-top: calc(var(--phl-top) - 8px);
}

.phlegal-sec:first-child {
	padding-top: 0;
}

.phlegal-sec + .phlegal-sec {
	border-top: 1px solid var(--phl-hair-soft);
}

html body .phlegal .phlegal-sec > h2 {
	font-family: var(--ph-display) !important;
	font-weight: var(--ph-w-semibold) !important;
	font-size: var(--ph-size-h2) !important;
	line-height: var(--ph-lh-h2) !important;
	letter-spacing: -0.01em !important;
	color: var(--ph-fondo) !important;
	margin: 0 0 20px !important;
	max-width: 34ch;
}

/* Il numero di sezione e un eyebrow, non un titolo: stesso carattere e
   stesso tracking dell'eyebrow del brandbook 04. */
.phlegal-sec > h2::before {
	content: counter(phl, decimal-leading-zero);
	display: block;
	font-family: var(--ph-text);
	font-weight: var(--ph-w-medium);
	font-size: var(--ph-size-eyebrow);
	line-height: 1.2;
	letter-spacing: var(--ph-ls-eyebrow);
	color: var(--ph-blu);
	margin-bottom: 12px;
}

html body .phlegal .phlegal-sec h3 {
	font-family: var(--ph-display) !important;
	font-weight: var(--ph-w-semibold) !important;
	font-size: var(--ph-size-h3) !important;
	line-height: var(--ph-lh-h3) !important;
	color: var(--ph-fondo) !important;
	margin: 34px 0 14px !important;
	max-width: 40ch;
}

.phlegal-sec h3:first-child {
	margin-top: 0 !important;
}

.phlegal-doc p {
	font-family: var(--ph-text);
	font-weight: var(--ph-w-regular);
	font-size: var(--ph-size-body);
	line-height: var(--ph-lh-body);
	color: var(--ph-grafite);
	margin: 0 0 18px;
	max-width: var(--ph-measure);
}

.phlegal-doc p:last-child {
	margin-bottom: 0;
}

.phlegal-doc strong {
	font-weight: var(--ph-w-semibold);
	color: var(--ph-fondo);
}

.phlegal-doc a {
	color: var(--ph-blu);
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 3px;
	text-decoration-color: rgba(40, 90, 166, 0.38);
	transition: text-decoration-color 0.2s cubic-bezier(0.22, 0.61, 0.36, 1);
}

.phlegal-doc a:hover,
.phlegal-doc a:focus-visible {
	color: var(--ph-fondo);
	text-decoration-color: var(--ph-fondo);
}

/* -- elenchi --------------------------------------------------------------- */

.phlegal-doc ul,
.phlegal-doc ol {
	margin: 0 0 20px;
	max-width: var(--ph-measure);
	list-style: none;
}

.phlegal-doc ul > li,
.phlegal-doc ol > li {
	position: relative;
	font-size: var(--ph-size-body);
	line-height: 1.6;
	color: var(--ph-grafite);
	margin: 0 0 10px;
	padding-left: 26px;
	list-style: none;
}

.phlegal-doc ul > li:last-child,
.phlegal-doc ol > li:last-child {
	margin-bottom: 0;
}

/* Il segno di elenco e un filetto, non un pallino: 2px, come lo spessore
   di tratto delle icone del sistema. */
.phlegal-doc ul > li::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0.72em;
	width: 10px;
	height: 2px;
	background-color: var(--ph-blu);
}

.phlegal-doc ol {
	counter-reset: phlo;
}

.phlegal-doc ol > li {
	counter-increment: phlo;
	padding-left: 30px;
}

.phlegal-doc ol > li::before {
	content: counter(phlo) ".";
	position: absolute;
	left: 0;
	top: 0;
	font-family: var(--ph-display);
	font-weight: var(--ph-w-semibold);
	font-size: 0.9375rem;
	line-height: 1.75;
	color: var(--ph-blu);
	font-variant-numeric: tabular-nums;
}

.phlegal-doc li > ul {
	margin: 10px 0 0;
}

/* -- 20.4 Scheda dati (anagrafica, recapiti) ------------------------------ */

.phlegal-facts {
	display: grid;
	grid-template-columns: minmax(140px, 200px) minmax(0, 1fr);
	gap: 0;
	margin: 0 0 22px;
	max-width: 720px;
	border-top: 1px solid var(--phl-hair-soft);
}

.phlegal-facts dt {
	font-family: var(--ph-text);
	font-weight: var(--ph-w-semibold);
	font-size: var(--ph-size-caption);
	line-height: 1.5;
	letter-spacing: 0.02em;
	text-transform: uppercase;
	color: var(--ph-grafite);
	padding: 14px 20px 14px 0 !important;
	border-bottom: 1px solid var(--phl-hair-soft);
	margin: 0;
}

.phlegal-facts dd {
	font-family: var(--ph-text);
	font-weight: var(--ph-w-regular);
	font-size: var(--ph-size-body);
	line-height: 1.55;
	color: var(--ph-fondo);
	padding: 14px 0 !important;
	border-bottom: 1px solid var(--phl-hair-soft);
	margin: 0;
}

/* -- 20.5 Tabelle --------------------------------------------------------- */

.phlegal-table {
	margin: 0 0 22px;
	overflow-x: auto;
	overscroll-behavior-x: contain;
	border: 1px solid var(--phl-hair);
	border-radius: 14px;
	background-color: var(--ph-bianco);
}

.phlegal-table table {
	width: 100%;
	min-width: 560px;
	border-collapse: collapse;
	margin: 0;
	font-family: var(--ph-text);
}

.phlegal-table th,
.phlegal-table td {
	text-align: left;
	vertical-align: top;
	padding: 14px 18px;
	border-bottom: 1px solid var(--phl-hair-soft);
}

.phlegal-table thead th {
	font-weight: var(--ph-w-semibold);
	font-size: var(--ph-size-caption);
	line-height: 1.4;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	color: var(--ph-fondo);
	background-color: var(--ph-camera);
	white-space: nowrap;
}

.phlegal-table tbody td {
	font-size: 0.9375rem; /* 15px: una tabella tecnica sta piu stretta */
	line-height: 1.55;
	color: var(--ph-grafite);
}

/* Nota sotto il nome di un cookie: Grigio Aria su bianco e 4,71 — il
   brandbook 03 lo assegna proprio alle caption su fondo bianco. */
.phlegal-table .phlegal-desc {
	display: block;
	font-size: 0.75rem;
	line-height: 1.4;
	color: var(--ph-grigio);
	margin-top: 2px;
}

.phlegal-table tbody tr:last-child th,
.phlegal-table tbody tr:last-child td {
	border-bottom: 0;
}

.phlegal-table td code,
.phlegal-doc code {
	font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
	font-size: 0.8125rem;
	color: var(--ph-fondo);
	background-color: var(--ph-camera);
	border-radius: 6px;
	padding: 2px 6px;
	white-space: nowrap;
}

/* -- 20.6 Riquadri -------------------------------------------------------- */

.phlegal-note {
	margin: 0 0 22px;
	padding: 20px 24px;
	background-color: var(--ph-camera);
	border-radius: 12px;
	border-left: 2px solid var(--ph-blu);
	max-width: 720px;
}

/* Provvisorio: il filetto tratteggiato dice "non ancora validato" senza
   introdurre un colore che nel brandbook non esiste. */
.phlegal-note--check {
	border-left-style: dashed;
}

.phlegal-note-h {
	display: block;
	font-family: var(--ph-text);
	font-weight: var(--ph-w-medium);
	font-size: var(--ph-size-eyebrow);
	line-height: 1.2;
	letter-spacing: var(--ph-ls-eyebrow);
	text-transform: uppercase;
	color: var(--ph-blu);
	margin: 0 0 10px;
}

.phlegal-note p {
	font-size: 0.9375rem;
	line-height: 1.6;
	margin: 0 0 10px;
	max-width: 62ch;
}

.phlegal-note p:last-child {
	margin-bottom: 0;
}

/* -- 20.7 Rimandi in coda ------------------------------------------------- */

.phlegal-more {
	border-top: 1px solid var(--phl-hair-soft);
	padding-top: clamp(32px, 3.4vw, 48px);
	margin-top: clamp(12px, 2vw, 24px);
}

.phlegal-more-h {
	display: block;
	font-family: var(--ph-text);
	font-weight: var(--ph-w-medium);
	font-size: var(--ph-size-eyebrow);
	line-height: 1.2;
	letter-spacing: var(--ph-ls-eyebrow);
	text-transform: uppercase;
	color: var(--ph-grafite);
	margin: 0 0 18px;
}

.phlegal-more-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
	gap: 14px;
	margin: 0;
	list-style: none;
	max-width: none;
}

.phlegal-more-grid li {
	margin: 0;
	padding: 0;
	list-style: none;
}

.phlegal-more-grid li::before {
	display: none;
}

.phlegal-card {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 14px;
	height: 100%;
	padding: 18px 20px;
	background-color: var(--ph-bianco);
	border: 1px solid var(--phl-hair);
	border-radius: 14px;
	box-shadow: 0 12px 32px rgba(16, 41, 75, 0.06);
	font-family: var(--ph-display);
	font-weight: var(--ph-w-semibold);
	font-size: 0.9375rem;
	line-height: 1.4;
	color: var(--ph-fondo) !important;
	text-decoration: none !important;
	transition:
		transform 0.3s cubic-bezier(0.22, 0.61, 0.36, 1),
		box-shadow 0.3s cubic-bezier(0.22, 0.61, 0.36, 1);
}

.phlegal-card:hover,
.phlegal-card:focus-visible {
	transform: translateY(-2px);
	box-shadow: 0 16px 34px rgba(16, 41, 75, 0.10);
}

.phlegal-card svg {
	flex: 0 0 auto;
	color: var(--ph-blu);
}

/* -- 20.8 Responsive ------------------------------------------------------ */

@media only screen and (max-width: 1100px) {
	.phlegal-body {
		grid-template-columns: minmax(0, 1fr);
		gap: 28px;
	}

	/* Senza colonna laterale l'indice diventa una scheda in testa: resta
	   utile per saltare al paragrafo, smette di occupare mezzo schermo. */
	.phlegal-index {
		position: static;
		max-height: none;
		overflow: visible;
		padding: 20px 22px;
		background-color: var(--ph-camera);
		border-radius: 14px;
	}

	.phlegal-index-h {
		margin-left: 0;
	}

	.phlegal-index ol {
		columns: 2;
		column-gap: 28px;
	}

	.phlegal-index a {
		border-left: 0;
		padding: 6px 0;
	}

	.phlegal-index a[aria-current="true"],
	.phlegal-index a:hover {
		border-left: 0;
	}
}

/* Sotto i 900px la riga dei dati va a capo e i puntini restano appesi in
   fine di riga. Impilata, i separatori non servono piu. */
@media only screen and (max-width: 900px) {
	.phlegal-meta {
		flex-direction: column;
		align-items: flex-start;
		gap: 5px;
	}

	.phlegal-meta-dot {
		display: none;
	}
}

@media only screen and (max-width: 690px) {
	.phlegal-title {
		font-size: 2rem !important; /* 32px */
	}

	.phlegal-lede {
		font-size: 1.0625rem;
	}

	.phlegal-sec > h2 {
		font-size: 1.5rem !important; /* 24px */
	}

	.phlegal-index ol {
		columns: 1;
	}

	.phlegal-facts {
		grid-template-columns: minmax(0, 1fr);
	}

	.phlegal-facts dt {
		padding-bottom: 0 !important;
		border-bottom: 0;
	}

	.phlegal-facts dd {
		padding-top: 6px !important;
	}

	.phlegal-note {
		padding: 18px 20px;
	}
}

/* -- 20.9 Stampa ---------------------------------------------------------- */

@media print {
	.phlegal-index,
	.phlegal-more {
		display: none !important;
	}

	.phlegal-hero {
		margin: 0;
		padding: 0 0 18px;
		background: none;
		box-shadow: none;
	}

	.phlegal-body {
		display: block;
		padding: 0;
	}

	.phlegal-doc a::after {
		content: " (" attr(href) ")";
		font-size: 0.75rem;
		color: #5F7085;
	}

	.phlegal-sec {
		break-inside: avoid;
	}
}

@media (prefers-reduced-motion: reduce) {
	.phlegal-card,
	.phlegal-index a,
	.phlegal-doc a {
		transition: none;
	}

	.phlegal-card:hover,
	.phlegal-card:focus-visible {
		transform: none;
	}
}

/* --------------------------------------------------------------------------
   21. BANNER COOKIE
   Stampato in wp_footer da phamm_cookie_banner(), logica in assets/consent.js.

   Una fascia in basso, a tutta larghezza, alta il minimo necessario: il
   contenuto della pagina resta leggibile mentre il banner e aperto. Un velo
   che copre tutto spinge ad accettare per levarselo di torno, e un consenso
   ottenuto cosi non e libero.

   Tre categorie, tre levette: Essenziali sempre attive e bloccate, Analitici
   e Marketing spente all'origine. La riga breve sotto il nome dice a che
   cosa serve la categoria; il dettaglio completo — nomi dei cookie, durate,
   terze parti — sta nella Cookie Policy, a un clic di distanza.

   La fascia e allineata al resto del sito: stesso margine laterale
   dell'header, del footer e della fascia informativa, stessa formula.

   Colori: fondo bianco, quindi la coppia testo/fondo e sempre quella del
   brandbook su bianco (Grafite 12,63 · Blu Fondo 15,30 · Blu PHAMM 6,76).
   Le levette accese sono Blu PHAMM.

   Movimento: solo transform e opacity, brandbook 10. La levetta accesa non
   cambia colore in transizione — quello e il bug che aveva congelato i
   pulsanti flottanti a meta interpolazione — ma scopre per opacita una
   campitura blu che le sta sotto. Il pomello trasla, e l'unico movimento.
   -------------------------------------------------------------------------- */

.phcc {
	position: fixed;
	left: 0;
	right: 0;
	bottom: 0;
	/* sopra i pulsanti flottanti (9000), sotto l'header fisso (9999) */
	z-index: 9500;
	font-family: var(--ph-text);
	opacity: 0;
	transform: translateY(100%);
	transition:
		opacity 0.42s cubic-bezier(0.22, 0.61, 0.36, 1),
		transform 0.46s cubic-bezier(0.22, 0.61, 0.36, 1);
}

.phcc[hidden] {
	display: none !important;
}

.phcc.is-in {
	opacity: 1;
	transform: none;
}

.phcc-card {
	--phcc-gutter: max(20px, calc((100vw - 1425px) / 2 + var(--nectar-resp-container-padding, 90px)));

	position: relative;
	background-color: var(--ph-bianco);
	border-top: 1px solid rgba(16, 41, 75, 0.12);
	box-shadow: 0 -14px 40px rgba(16, 41, 75, 0.12);
	padding: 20px var(--phcc-gutter) 18px;
	/* Anche impilata su schermi bassi la fascia non deve mangiarsi la
	   pagina: oltre il tetto scorre al proprio interno. */
	max-height: min(62vh, 520px);
	overflow-y: auto;
	overscroll-behavior: contain;
}

.phcc-inner {
	max-width: 1245px;
	margin: 0 auto;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 16px 32px;
}

/* Salient assegna padding a p, ul e li: dentro la fascia va azzerato. */
.phcc p,
.phcc ul,
.phcc li,
.phcc h2 {
	padding: 0;
	margin: 0;
	list-style: none;
}

/* -- 21.1 Testata --------------------------------------------------------- */

.phcc-head {
	flex: 1 1 340px;
	min-width: 0;
}

.phcc-title {
	font-family: var(--ph-display) !important;
	font-weight: var(--ph-w-semibold) !important;
	font-size: 1.1875rem !important; /* 19px: una fascia, non una pagina */
	line-height: 1.25 !important;
	letter-spacing: -0.01em !important;
	color: var(--ph-fondo) !important;
	margin: 0 0 5px !important;
}

.phcc-intro {
	font-size: 0.875rem !important; /* 14px */
	line-height: 1.5 !important;
	color: var(--ph-grafite) !important;
	margin: 0 !important;
}

/* I rimandi su una riga loro: dentro il periodo finirebbero a capo in mezzo
   a una frase, che e come sono venuti fuori la prima volta. */
.phcc-more {
	display: block;
	margin-top: 5px;
	font-size: var(--ph-size-caption);
	line-height: 1.4;
}

.phcc-intro a {
	color: var(--ph-blu);
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 2px;
	text-decoration-color: rgba(40, 90, 166, 0.4);
}

.phcc-intro a:hover {
	text-decoration-color: var(--ph-blu);
}

.phcc-sep {
	margin: 0 6px;
	color: var(--ph-grigio);
}

/* -- 21.2 La X ------------------------------------------------------------ */

/* Chiude senza decidere: rimanda alla visita successiva e non scrive alcun
   consenso. Una X che valesse "accetto" sarebbe consenso presunto. */
.phcc-x {
	position: absolute;
	/* nell'angolo vero della fascia, non incolonnata coi pulsanti: una X che
	   sta sopra "Accetta tutti" si prende clic che non erano per lei. */
	top: 10px;
	right: 12px;
	width: 32px;
	height: 32px;
	display: flex !important;
	align-items: center;
	justify-content: center;
	padding: 0 !important;
	margin: 0 !important;
	border: 0 !important;
	border-radius: 999px !important;
	background-color: transparent !important;
	color: var(--ph-grigio) !important;
	cursor: pointer;
}

.phcc-x:hover,
.phcc-x:focus-visible {
	background-color: var(--ph-camera) !important;
	color: var(--ph-fondo) !important;
}

.phcc-x:focus-visible {
	outline: 2px solid var(--ph-blu);
	outline-offset: 2px;
}

/* -- 21.3 Le tre levette -------------------------------------------------- */

.phcc-opts {
	flex: 0 1 auto;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 10px 22px;
	margin: 0 !important;
}

.phcc-opt {
	margin: 0;
}

.phcc-row {
	display: flex;
	align-items: center;
	gap: 11px;
	margin: 0;
	cursor: pointer;
}

.phcc-opt--locked .phcc-row {
	cursor: default;
}

.phcc-txt {
	display: block;
	min-width: 0;
}

.phcc-name {
	display: block;
	font-family: var(--ph-display);
	font-weight: var(--ph-w-semibold);
	font-size: 0.875rem; /* 14px */
	line-height: 1.3;
	color: var(--ph-fondo);
	white-space: nowrap;
}

.phcc-desc {
	display: block;
	font-size: 0.75rem; /* 12px */
	line-height: 1.35;
	color: var(--ph-grigio);
	margin-top: 1px;
	white-space: nowrap;
}

/* La levetta. Tre strati: il binario spento, la campitura blu che si
   scopre per opacita, il pomello che trasla. */
.phcc-sw {
	/* Uno <span> resta inline e su un elemento inline larghezza e altezza
	   non si applicano: la levetta collasserebbe a zero e i tre strati
	   assoluti finirebbero fuori dalla fascia. Serve un box. */
	display: block;
	position: relative;
	flex: 0 0 auto;
	width: 42px;
	height: 24px;
	border-radius: 999px;
	background-color: rgba(16, 41, 75, 0.16);
}

.phcc-sw input {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	margin: 0;
	padding: 0;
	opacity: 0;
	border-radius: 999px;
	cursor: pointer;
	-webkit-appearance: none;
	appearance: none;
	z-index: 2;
}

.phcc-sw input:disabled {
	cursor: default;
}

.phcc-sw input:focus-visible {
	outline: 2px solid var(--ph-blu);
	outline-offset: 3px;
	/* l'anello di fuoco deve vedersi anche su un campo trasparente */
	opacity: 1;
}

.phcc-track {
	position: absolute;
	inset: 0;
	border-radius: 999px;
	background-color: var(--ph-blu);
	opacity: 0;
	transition: opacity 0.28s cubic-bezier(0.22, 0.61, 0.36, 1);
}

.phcc-knob {
	position: absolute;
	top: 3px;
	left: 3px;
	width: 18px;
	height: 18px;
	z-index: 1;
	border-radius: 999px;
	background-color: var(--ph-bianco);
	box-shadow: 0 1px 3px rgba(16, 41, 75, 0.32);
	transition: transform 0.28s cubic-bezier(0.22, 0.61, 0.36, 1);
}

.phcc-sw input:checked ~ .phcc-track {
	opacity: 1;
}

.phcc-sw input:checked ~ .phcc-knob {
	transform: translateX(18px);
}

/* Essenziali: accesa e bloccata. La levetta smorzata dice "non si tocca"
   senza togliere contrasto all'etichetta, che resta piena. */
.phcc-opt--locked .phcc-sw {
	opacity: 0.42;
}

/* -- 21.4 Pulsanti --------------------------------------------------------

   "Rifiuta tutti" e "Accetta tutti" hanno la stessa misura, la stessa
   altezza e lo stesso corpo, e stanno sulla stessa riga: e la condizione
   che le linee guida EDPB chiedono perche il consenso sia libero. Il
   riempimento pieno su "Accetta" resta legittimo — segnala l'azione
   affermativa, non la nasconde — ma non guadagna un pixel di superficie.
   "Salva le mie preferenze" e la terza via e sta sotto, in forma quieta:
   serve a chi ha toccato le levette, non e un'alternativa alle prime due.
   ------------------------------------------------------------------------- */

.phcc-actions {
	flex: 0 0 auto;
	display: grid;
	grid-template-columns: auto auto;
	gap: 8px;
	margin-left: auto;
}

.phcc-btn {
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
	min-height: 44px;
	min-width: 124px;
	padding: 10px 18px !important;
	margin: 0 !important;
	border-radius: 12px !important;
	font-family: var(--ph-display) !important;
	font-weight: var(--ph-w-bold) !important;
	font-size: 0.875rem !important; /* 14px */
	line-height: 1.3 !important;
	letter-spacing: 0 !important;
	text-transform: none !important;
	text-align: center;
	white-space: nowrap;
	cursor: pointer;
	transition:
		transform 0.24s cubic-bezier(0.22, 0.61, 0.36, 1),
		box-shadow 0.24s cubic-bezier(0.22, 0.61, 0.36, 1);
}

.phcc-btn:focus-visible {
	outline: 2px solid var(--ph-fondo);
	outline-offset: 2px;
}

.phcc-btn--ghost {
	background-color: var(--ph-bianco) !important;
	color: var(--ph-fondo) !important;
	border: 1px solid rgba(16, 41, 75, 0.24) !important;
}

.phcc-btn--ghost:hover {
	background-color: var(--ph-camera) !important;
	color: var(--ph-fondo) !important;
	transform: translateY(-1px);
}

.phcc-btn--solid {
	background-color: var(--ph-blu) !important;
	color: var(--ph-bianco) !important;
	border: 1px solid var(--ph-blu) !important;
	box-shadow: 0 8px 20px rgba(40, 90, 166, 0.35);
}

.phcc-btn--solid:hover {
	background-color: var(--ph-fondo) !important;
	border-color: var(--ph-fondo) !important;
	color: var(--ph-bianco) !important;
	transform: translateY(-1px);
	box-shadow: 0 12px 26px rgba(16, 41, 75, 0.24);
}

/* Terza via: nessun riempimento, nessun bordo, corpo minore. */
.phcc-btn--quiet {
	grid-column: 1 / -1;
	justify-self: center;
	min-height: 24px;
	min-width: 0;
	padding: 0 !important;
	background: none !important;
	border: 0 !important;
	box-shadow: none !important;
	font-family: var(--ph-text) !important;
	font-weight: var(--ph-w-semibold) !important;
	font-size: var(--ph-size-caption) !important;
	color: var(--ph-grafite) !important;
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 3px;
	text-decoration-color: rgba(16, 41, 75, 0.28);
}

.phcc-btn--quiet:hover {
	color: var(--ph-blu) !important;
	text-decoration-color: var(--ph-blu);
}

/* -- 21.5 Voce "Preferenze cookie" nel copyfooter ------------------------- */

/* E un <button>, perche riapre un pannello e non porta a una pagina, ma
   nella riga legale deve leggersi esattamente come i link accanto. */
.phf-legal-list .phf-prefs {
	display: inline !important;
	padding: 0 !important;
	margin: 0 !important;
	border: 0 !important;
	background: none !important;
	font-family: inherit !important;
	font-weight: inherit !important;
	font-size: inherit !important;
	line-height: inherit !important;
	letter-spacing: inherit !important;
	text-transform: none !important;
	color: inherit !important;
	cursor: pointer;
	text-decoration: none;
}

.phf-legal-list .phf-prefs:hover,
.phf-legal-list .phf-prefs:focus-visible {
	color: var(--ph-bianco) !important;
}

.phf-legal-list .phf-prefs:focus-visible {
	outline: 2px solid var(--ph-azzurro);
	outline-offset: 3px;
}

/* -- 21.6 Responsive ------------------------------------------------------ */

/* Sotto i 1240px le tre zone non stanno piu su una riga: le levette passano
   sotto al testo e i pulsanti restano a destra. */
@media only screen and (max-width: 1240px) {
	.phcc-inner {
		gap: 14px 26px;
	}

	/* impilata, la X finisce sopra il titolo: gli si fa spazio */
	.phcc-head {
		padding-right: 34px;
	}

	.phcc-opts {
		flex: 1 1 100%;
		order: 3;
	}

	.phcc-actions {
		order: 4;
		margin-left: 0;
	}
}

@media only screen and (max-width: 860px) {
	.phcc-card {
		padding: 18px 20px 16px;
		max-height: min(72vh, 560px);
	}

	.phcc-head {
		flex: 1 1 100%;
	}

	.phcc-opts {
		gap: 12px 24px;
	}

	.phcc-actions {
		width: 100%;
		grid-template-columns: 1fr 1fr;
	}

	.phcc-btn {
		min-width: 0;
	}
}

@media only screen and (max-width: 520px) {
	.phcc-opts {
		flex-direction: column;
		align-items: flex-start;
		gap: 12px;
	}

	.phcc-title {
		font-size: 1.0625rem !important;
	}
}

@media (prefers-reduced-motion: reduce) {
	.phcc,
	.phcc-btn,
	.phcc-knob,
	.phcc-track {
		transition: none;
	}

	.phcc-btn:hover {
		transform: none;
	}
}

@media print {
	.phcc {
		display: none !important;
	}
}

/* --------------------------------------------------------------------------
   23. PAGINA CONTATTI
   E anche il primo pezzo di libreria: fasce, schede, numeri, passi, FAQ e
   modulo nascono qui e verranno riusati sulle altre pagine. I nomi restano
   pero sotto .phct finche non decidiamo la forma definitiva dei blocchi:
   meglio promuovere piu tardi una classe gia collaudata che pubblicare oggi
   un'astrazione che non ha ancora visto una seconda pagina.

   Ritmo del brandbook 03: 70% bianco, superfici quiete in Azzurro Camera,
   Blu PHAMM riservato ad azione e accenti. Le fasce si alternano
   bianco / Azzurro Camera, mai due colorate di fila.

   Movimento (brandbook 10): solo transform e opacity, un movimento per
   schermata, curva cubic-bezier(.22,.61,.36,1). Si muovono le schede che
   sono link e il chevron delle FAQ. Nient'altro.
   -------------------------------------------------------------------------- */

.phct {
	/* Stessa formula di header, footer e fascia: il contenuto resta
	   incolonnato col menu a ogni larghezza. */
	--phct-gutter: max(24px, calc((100vw - 1425px) / 2 + var(--nectar-resp-container-padding, 90px)));
	--phct-hair: rgba(16, 41, 75, 0.12);
	--phct-hair-soft: rgba(16, 41, 75, 0.08);
	/* Unico colore fuori palette di tutto il sistema: l'errore di un campo.
	   Il brandbook non prevede uno stato di errore e i sette colori non ne
	   contengono uno leggibile come tale. 6,04:1 su bianco, e non e mai
	   l'unico segnale — c'e sempre anche il testo. */
	--phct-errore: #B3261E;

	font-family: var(--ph-text);
	font-size: var(--ph-size-body);
	line-height: var(--ph-lh-body);
	color: var(--ph-grafite);
}

/* Salient assegna padding a p, ul e li come elementi. */
.phct p,
.phct ul,
.phct ol,
.phct li,
.phct dl,
.phct dt,
.phct dd,
.phct h1,
.phct h2,
.phct h3,
.phct address {
	padding: 0;
}

/* -- 23.1 Fasce ----------------------------------------------------------- */

/* Ogni sezione esce dal contenitore e rientra col proprio margine: i fondi
   vanno da bordo a bordo, il testo resta allineato al menu. */
.phct-sec {
	margin-left: calc(50% - 50vw);
	margin-right: calc(50% - 50vw);
	padding: clamp(60px, 6.4vw, 108px) var(--phct-gutter);
}

.phct-sec--camera {
	background-color: var(--ph-camera);
}

/* La terza superficie del brandbook 03. Serve quando due fasce vicine sono
   una bianca e l'altra pure: con solo bianco e Azzurro Camera l'alternanza
   si inchioda, con il Blu Fondo si riapre. Su questo fondo le schede bianche
   staccano piu che su qualunque altro. */
.phct-sec--fondo {
	background-color: var(--ph-fondo);
}

/* Contrasti su Blu Fondo, tabella del brandbook 03: Bianco 14,57 AAA,
   Azzurro Camera 12,70 AAA, Azzurro PHAMM 5,12 AA. Il Grigio Aria (2,87) e
   il Blu PHAMM (2,15) qui non sono testo. */
.phct-sec--fondo .ph-eyebrow {
	color: var(--ph-azzurro) !important;
}

html body .phct .phct-sec--fondo .phct-h2 {
	color: var(--ph-bianco) !important;
}

.phct-sec--fondo .phct-lede {
	color: var(--ph-camera);
}

/* Due fasce bianche di fila si leggerebbero come una sola: il filetto le
   separa senza aggiungere un altro campo di colore. */
.phct-sec--rule {
	box-shadow: inset 0 1px 0 var(--phct-hair-soft);
}

.phct-inner {
	max-width: 1245px;
	margin: 0 auto;
}

.phct-head {
	max-width: 60ch;
	margin: 0 0 clamp(32px, 3.4vw, 52px);
}

.phct-head .ph-eyebrow {
	margin: 0 0 14px;
}

html body .phct .phct-h2 {
	font-family: var(--ph-display) !important;
	font-weight: var(--ph-w-semibold) !important;
	font-size: var(--ph-size-h2) !important;
	line-height: var(--ph-lh-h2) !important;
	letter-spacing: -0.01em !important;
	color: var(--ph-fondo) !important;
	margin: 0 !important;
	text-wrap: balance;
}

.phct-lede {
	font-size: 1.0625rem;
	line-height: 1.65;
	color: var(--ph-grafite);
	margin: 14px 0 0;
	max-width: var(--ph-measure);
}

/* -- 23.2 Intestazione della pagina --------------------------------------- */

/* Intestazione su bianco, con il modulo subito a destra: chi arriva qui
   vuole chiedere un preventivo, e il primo schermo glielo mette davanti
   invece di raccontargli qualcosa prima. */
.phct-hero {
	background-color: var(--ph-bianco);
	padding-top: clamp(44px, 4.6vw, 78px);
	padding-bottom: clamp(48px, 5vw, 88px);
}

.phct-hero-grid {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 545px);
	gap: clamp(32px, 4vw, 72px);
	align-items: start;
}

.phct-hero-testo {
	min-width: 0;
	padding-top: clamp(0px, 1.4vw, 22px);
}

html body .phct .phct-title {
	font-family: var(--ph-display) !important;
	font-weight: var(--ph-w-bold) !important;
	font-size: var(--ph-size-h1) !important;
	line-height: var(--ph-lh-h1) !important;
	letter-spacing: -0.018em !important;
	color: var(--ph-fondo) !important;
	margin: 18px 0 0 !important;
	max-width: 18ch;
	text-wrap: balance;
}

.phct-hero-lede {
	font-size: 1.1875rem; /* 19px */
	line-height: 1.6;
	color: var(--ph-fondo);
	margin: 20px 0 0;
	max-width: 56ch;
}

.phct-cta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 12px;
	margin-top: 30px;
}

.phct-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 9px;
	min-height: 50px;
	padding: 13px 26px;
	border-radius: 12px;
	font-family: var(--ph-display) !important;
	font-weight: var(--ph-w-bold) !important;
	font-size: 0.9375rem !important;
	line-height: 1.3 !important;
	letter-spacing: 0 !important;
	text-decoration: none !important;
	text-transform: none !important;
	transition:
		transform 0.26s cubic-bezier(0.22, 0.61, 0.36, 1),
		box-shadow 0.26s cubic-bezier(0.22, 0.61, 0.36, 1);
}

.phct-btn--solid {
	background-color: var(--ph-blu) !important;
	color: var(--ph-bianco) !important;
	border: 1px solid var(--ph-blu);
	box-shadow: 0 8px 20px rgba(40, 90, 166, 0.35);
}

.phct-btn--solid:hover,
.phct-btn--solid:focus-visible {
	background-color: var(--ph-fondo) !important;
	border-color: var(--ph-fondo);
	color: var(--ph-bianco) !important;
	transform: translateY(-2px);
	box-shadow: 0 14px 30px rgba(16, 41, 75, 0.24);
}

.phct-btn--ghost {
	background-color: transparent !important;
	color: var(--ph-fondo) !important;
	border: 1px solid rgba(16, 41, 75, 0.22);
}

.phct-btn--ghost:hover,
.phct-btn--ghost:focus-visible {
	background-color: var(--ph-bianco) !important;
	color: var(--ph-fondo) !important;
	transform: translateY(-2px);
	box-shadow: 0 12px 26px rgba(16, 41, 75, 0.10);
}

.phct-btn svg {
	flex: 0 0 auto;
}

.phct-punti {
	list-style: none;
	margin: 24px 0 0;
	padding: 0;
	display: grid;
	gap: 11px;
}

.phct-punti li {
	display: flex;
	align-items: flex-start;
	gap: 11px;
	margin: 0;
	padding: 0;
	list-style: none;
	font-size: 0.9375rem;
	line-height: 1.55;
	color: var(--ph-grafite);
}

.phct-tick {
	flex: 0 0 auto;
	margin-top: 3px;
	color: var(--ph-blu);
}

/* -- 23.3 I numeri -------------------------------------------------------- */

/* Quattro dati tecnici, non quattro titoli: al corpo del Display il numero
   grida e il resto della colonna scompare. 30px bastano a farne un dato, e
   il filetto verticale li rende una riga di specifiche. */
/* ".phct ul" vale (0,1,1) e batteva ".phct-stats" (0,1,0): il padding-top
   veniva azzerato e i quattro numeri restavano incollati al filetto. */
html body .phct .phct-stats {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 18px 0;
	list-style: none;
	margin: clamp(34px, 3.6vw, 52px) 0 0;
	padding-top: clamp(24px, 2.6vw, 32px);
	border-top: 1px solid var(--phct-hair);
}

.phct-stats li {
	margin: 0;
	list-style: none;
	min-width: 0;
	padding-left: clamp(14px, 1.6vw, 24px);
	border-left: 1px solid var(--phct-hair);
}

.phct-stats li:first-child {
	padding-left: 0;
	border-left: 0;
}

.phct-stats .ph-stat {
	font-size: 1.875rem !important; /* 30px */
	letter-spacing: -0.015em !important;
}

/* Su Azzurro Camera il Grigio Aria non passa (4,41): l'etichetta e Grafite. */
.phct-stats .ph-stat-label {
	font-size: 0.75rem !important;
	line-height: 1.35 !important;
	color: var(--ph-grafite);
	margin-top: 6px;
}

/* -- 23.4 Schede ---------------------------------------------------------- */

.phct-grid {
	display: grid;
	gap: 20px;
	list-style: none;
	margin: 0;
}

.phct-grid--3 {
	grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
}

.phct-grid--2 {
	grid-template-columns: repeat(auto-fit, minmax(340px, 1fr));
}

.phct-grid--4 {
	grid-template-columns: repeat(auto-fit, minmax(258px, 1fr));
}

.phct-grid > li {
	margin: 0;
	list-style: none;
	min-width: 0;
}

.phct-card {
	display: flex;
	flex-direction: column;
	height: 100%;
	background-color: var(--ph-bianco);
	border: 1px solid var(--phct-hair);
	border-radius: 14px;
	padding: 26px 26px 24px;
	box-shadow: 0 12px 32px rgba(16, 41, 75, 0.06);
}

/* Si muove solo cio che si puo cliccare. */
a.phct-card,
.phct-card--link {
	text-decoration: none !important;
	transition:
		transform 0.3s cubic-bezier(0.22, 0.61, 0.36, 1),
		box-shadow 0.3s cubic-bezier(0.22, 0.61, 0.36, 1);
}

a.phct-card:hover,
a.phct-card:focus-visible,
.phct-card--link:hover {
	transform: translateY(-3px);
	box-shadow: 0 16px 34px rgba(16, 41, 75, 0.10);
}

/* Pastiglia in Blu PHAMM con il tratto bianco: 6,74:1, e porta il colore
   del marchio dentro le schede invece di lasciarlo solo negli eyebrow. */
.phct-ico {
	display: flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
	width: 44px;
	height: 44px;
	border-radius: 12px;
	background-color: var(--ph-blu);
	color: var(--ph-bianco);
	margin-bottom: 18px;
}

html body .phct .phct-card-h {
	font-family: var(--ph-display) !important;
	font-weight: var(--ph-w-semibold) !important;
	font-size: 1.125rem !important; /* 18px */
	line-height: 1.35 !important;
	color: var(--ph-fondo) !important;
	margin: 0 0 12px !important;
}

.phct-card p {
	font-size: 0.9375rem;
	line-height: 1.6;
	color: var(--ph-grafite);
	margin: 0 0 8px;
}

.phct-card p:last-child {
	margin-bottom: 0;
}

/* Righe recapito: etichetta piccola sopra, valore sotto. */
.phct-rows {
	list-style: none;
	margin: 0;
	display: grid;
	gap: 14px;
}

.phct-rows li {
	margin: 0;
	list-style: none;
}

.phct-k {
	display: block;
	font-size: 0.6875rem; /* 11px */
	font-weight: var(--ph-w-semibold);
	line-height: 1.3;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--ph-grigio);
	margin-bottom: 3px;
}

.phct-v {
	display: block;
	font-size: 0.9375rem;
	line-height: 1.5;
	color: var(--ph-fondo);
}

.phct-v a,
.phct-card a:not(.phct-btn):not(.phct-visita) {
	color: var(--ph-blu);
	text-decoration: none;
	border-bottom: 1px solid rgba(40, 90, 166, 0.32);
}

.phct-v a:hover,
.phct-card a:not(.phct-btn):not(.phct-visita):hover {
	color: var(--ph-fondo);
	border-bottom-color: var(--ph-fondo);
}

/* -- 23.5 Sedi ------------------------------------------------------------ */

.phct-sede {
	padding: 30px 30px 28px;
}

.phct-sede-paese {
	display: block;
	font-size: var(--ph-size-eyebrow);
	font-weight: var(--ph-w-medium);
	line-height: 1.3;
	letter-spacing: var(--ph-ls-eyebrow);
	text-transform: uppercase;
	color: var(--ph-blu);
	margin-bottom: 10px;
}

html body .phct .phct-sede-h {
	font-family: var(--ph-display) !important;
	font-weight: var(--ph-w-semibold) !important;
	font-size: var(--ph-size-h3) !important;
	line-height: var(--ph-lh-h3) !important;
	color: var(--ph-fondo) !important;
	margin: 0 0 6px !important;
}

.phct-sede-rag {
	font-size: 0.9375rem;
	color: var(--ph-grafite);
	margin: 0 0 18px;
}

.phct-addr {
	font-style: normal;
	font-size: 0.9375rem;
	line-height: 1.6;
	color: var(--ph-fondo);
	margin: 0 0 18px;
}

.phct-reparti {
	display: flex;
	flex-wrap: wrap;
	gap: 7px;
	list-style: none;
	margin: 20px 0 0;
	padding-top: 20px;
	border-top: 1px solid var(--phct-hair-soft);
}

.phct-reparti li {
	margin: 0;
	list-style: none;
	font-size: 0.75rem;
	line-height: 1.2;
	font-weight: var(--ph-w-medium);
	letter-spacing: 0.02em;
	color: var(--ph-fondo);
	background-color: var(--ph-camera);
	border-radius: 999px;
	padding: 7px 13px;
}

/* -- 23.6 Modulo: impaginazione della sezione ----------------------------- */

.phct-form-grid {
	display: grid;
	grid-template-columns: minmax(0, 1.65fr) minmax(0, 1fr);
	gap: clamp(28px, 3.4vw, 56px);
	align-items: start;
}

.phct-form-testa {
	margin-bottom: 22px;
	padding-bottom: 18px;
	border-bottom: 1px solid var(--phct-hair-soft);
}

.phct-form-testa .ph-eyebrow {
	margin-bottom: 10px;
}

html body .phct .phct-form-h {
	font-family: var(--ph-display) !important;
	font-weight: var(--ph-w-semibold) !important;
	font-size: var(--ph-size-h3) !important;
	line-height: var(--ph-lh-h3) !important;
	color: var(--ph-fondo) !important;
	margin: 0 !important;
}

.phct-form-t {
	font-size: 0.9375rem;
	line-height: 1.6;
	color: var(--ph-grafite);
	margin: 8px 0 0;
}

/* Il modulo e il motivo per cui la pagina esiste, quindi deve staccare dal
   bianco su cui poggia. Tre mezzi, tutti sotto la soglia del "si vede che
   c'e un effetto": un velo di Azzurro Camera che si spegne dopo i primi
   pixel, un filetto dipinto in gradiente invece che in tinta piatta, e un
   motivo di lamine nell'angolo alto a destra al 13% — quello che Apple
   chiamerebbe un dettaglio che non chiedi mai di vedere e che se togli
   senti mancare.

   Il filetto in gradiente si ottiene con due maschere in esclusione: il
   riempimento resta solo nella corona di un pixel. Un border-image farebbe
   la stessa cosa ma perderebbe il raggio agli angoli. */
.phct-form-card {
	position: relative;
	isolation: isolate;
	overflow: hidden;
	background-color: var(--ph-bianco);
	background-image: linear-gradient(180deg, rgba(234, 240, 247, 0.66) 0, rgba(255, 255, 255, 0) 210px);
	border: 0;
	border-radius: 16px;
	padding: clamp(24px, 2.6vw, 38px);
	box-shadow:
		0 26px 62px rgba(16, 41, 75, 0.11),
		0 4px 14px rgba(16, 41, 75, 0.05);
}

.phct-form-card::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 2;
	border-radius: inherit;
	padding: 1px;
	background: linear-gradient(
		152deg,
		rgba(40, 90, 166, 0.58) 0,
		rgba(40, 90, 166, 0.07) 44%,
		rgba(40, 90, 166, 0.36) 100%
	);
	-webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
	mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
	-webkit-mask-composite: xor;
	mask-composite: exclude;
	pointer-events: none;
}

.phct-form-card::after {
	content: "";
	position: absolute;
	top: 0;
	right: 0;
	z-index: 0;
	width: 206px;
	height: 132px;
	background-image: repeating-linear-gradient(
		180deg,
		rgba(40, 90, 166, 0.13) 0,
		rgba(40, 90, 166, 0.13) 1px,
		transparent 1px,
		transparent 9px
	);
	-webkit-mask-image: radial-gradient(128% 128% at 100% 0, #000 0, transparent 66%);
	mask-image: radial-gradient(128% 128% at 100% 0, #000 0, transparent 66%);
	pointer-events: none;
}

/* I figli in flusso verrebbero dipinti prima di uno ::after con z-index 0:
   una riga li riporta sopra il motivo. */
.phct-form-card > * {
	position: relative;
	z-index: 1;
}

.phct-aside {
	position: sticky;
	top: 108px;
}

.phct-steps {
	counter-reset: phst;
	list-style: none;
	margin: 0;
}

.phct-step {
	counter-increment: phst;
	display: grid;
	grid-template-columns: 30px minmax(0, 1fr);
	gap: 14px;
	list-style: none;
	margin: 0;
	padding: 18px 0;
	border-top: 1px solid var(--phct-hair);
}

.phct-step:first-child {
	border-top: 0;
	padding-top: 0;
}

.phct-step::before {
	content: counter(phst, decimal-leading-zero);
	font-family: var(--ph-text);
	font-weight: var(--ph-w-semibold);
	font-size: 0.75rem;
	line-height: 1.7;
	letter-spacing: 0.1em;
	color: var(--ph-blu);
	font-variant-numeric: tabular-nums;
}

.phct-step-h {
	display: block;
	font-family: var(--ph-display);
	font-weight: var(--ph-w-semibold);
	font-size: 0.9375rem;
	line-height: 1.4;
	color: var(--ph-fondo);
	margin-bottom: 4px;
}

.phct-step-t {
	display: block;
	font-size: 0.875rem;
	line-height: 1.55;
	color: var(--ph-grafite);
}

.phct-nota {
	margin-top: 22px;
	background-color: var(--ph-camera);
	border-color: transparent;
	padding: 18px 20px;
	background-color: var(--ph-bianco);
	border: 1px solid var(--phct-hair);
	border-radius: 12px;
	font-size: 0.8125rem;
	line-height: 1.55;
	color: var(--ph-grafite);
}

.phct-nota a {
	color: var(--ph-blu);
	text-decoration: underline;
	text-underline-offset: 2px;
}

.phct-steps--riga {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: clamp(20px, 2.4vw, 40px);
}

.phct-steps--riga .phct-step {
	border-top: 1px solid var(--phct-hair);
	padding: 20px 0 0;
}

.phct-steps--riga .phct-step:first-child {
	border-top: 1px solid var(--phct-hair);
	padding-top: 20px;
}

/* -- 23.7 Il modulo Contact Form 7 ---------------------------------------- */

/* Le classi ph-form__* vengono dal modulo, non dal tema: sono scritte nel
   corpo del form in Contact Form 7. Qui prendono la veste del brandbook.
   Il selettore parte da html body perche Salient assegna ai campi regole
   con specificita alta e valori propri di bordo, ombra e raggio. */

html body .ph-form .ph-form__row {
	margin: 0 0 20px;
}

html body .ph-form .ph-form__row--half {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 20px;
}

html body .ph-form .ph-form__row--submit {
	margin: 28px 0 0;
}

html body .ph-form .ph-form__field {
	min-width: 0;
}

html body .ph-form .ph-form__label {
	display: block !important;
	font-family: var(--ph-text) !important;
	font-weight: var(--ph-w-semibold) !important;
	font-size: 0.8125rem !important; /* 13px */
	line-height: 1.3 !important;
	letter-spacing: 0.01em !important;
	color: var(--ph-fondo) !important;
	margin: 0 0 8px !important;
}

html body .ph-form .wpcf7-form-control-wrap {
	display: block;
}

html body .ph-form .ph-form__input,
html body .ph-form .ph-form__select,
html body .ph-form .ph-form__textarea {
	box-sizing: border-box;
	width: 100% !important;
	max-width: 100% !important;
	margin: 0 !important;
	padding: 13px 16px !important;
	background-color: var(--ph-bianco) !important;
	border: 1px solid var(--phct-hair) !important;
	/* brandbook 11: campi 10-12 */
	border-radius: 11px !important;
	font-family: var(--ph-text) !important;
	font-weight: var(--ph-w-regular) !important;
	/* 16px: sotto questa misura iOS ingrandisce la pagina al focus */
	font-size: 1rem !important;
	line-height: 1.5 !important;
	color: var(--ph-grafite) !important;
	box-shadow: none !important;
	-webkit-appearance: none;
	appearance: none;
	transition:
		border-color 0.2s cubic-bezier(0.22, 0.61, 0.36, 1),
		box-shadow 0.2s cubic-bezier(0.22, 0.61, 0.36, 1);
}

html body .ph-form .ph-form__input:hover,
html body .ph-form .ph-form__select:hover,
html body .ph-form .ph-form__textarea:hover {
	border-color: rgba(16, 41, 75, 0.24) !important;
}

html body .ph-form .ph-form__input:focus,
html body .ph-form .ph-form__select:focus,
html body .ph-form .ph-form__textarea:focus {
	border-color: var(--ph-blu) !important;
	box-shadow: 0 0 0 3px rgba(40, 90, 166, 0.16) !important;
	outline: none !important;
}

html body .ph-form .ph-form__textarea {
	min-height: 152px;
	resize: vertical;
	display: block;
}

/* La freccia del select e disegnata qui: quella di sistema cambia da
   piattaforma a piattaforma e non e mai del colore giusto. */
html body .ph-form .ph-form__select {
	padding-right: 46px !important;
	background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23285AA6' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 15px center;
	background-size: 17px 17px;
	cursor: pointer;
}

/* -- caselle di spunta ---------------------------------------------------- */

html body .ph-form .ph-form__field--check .wpcf7-list-item {
	margin: 0 !important;
	display: block;
}

html body .ph-form .ph-form__field--check label {
	display: flex !important;
	align-items: flex-start;
	gap: 12px;
	margin: 0 !important;
	font-family: var(--ph-text) !important;
	font-weight: var(--ph-w-regular) !important;
	font-size: 0.875rem !important;
	line-height: 1.55 !important;
	color: var(--ph-grafite) !important;
	cursor: pointer;
}

html body .ph-form .ph-form__field--check input[type="checkbox"] {
	flex: 0 0 auto;
	width: 20px;
	height: 20px;
	margin: 1px 0 0 !important;
	padding: 0 !important;
	border: 1px solid rgba(16, 41, 75, 0.28) !important;
	border-radius: 6px !important;
	background-color: var(--ph-bianco) !important;
	-webkit-appearance: none;
	appearance: none;
	cursor: pointer;
	transition: box-shadow 0.2s cubic-bezier(0.22, 0.61, 0.36, 1);
}

html body .ph-form .ph-form__field--check input[type="checkbox"]:checked {
	background-color: var(--ph-blu) !important;
	border-color: var(--ph-blu) !important;
	background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23FFFFFF' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 13l4 4 10-10'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: center;
	background-size: 14px 14px;
}

html body .ph-form .ph-form__field--check input[type="checkbox"]:focus-visible {
	outline: 2px solid var(--ph-blu);
	outline-offset: 2px;
}

html body .ph-form .ph-form__field--check a {
	color: var(--ph-blu);
	text-decoration: underline;
	text-underline-offset: 2px;
	text-decoration-thickness: 1px;
}

/* -- pulsante di invio ---------------------------------------------------- */

html body .ph-form .ph-form__btn {
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
	min-height: 52px;
	padding: 14px 34px !important;
	margin: 0 !important;
	background-color: var(--ph-blu) !important;
	color: var(--ph-bianco) !important;
	border: 1px solid var(--ph-blu) !important;
	border-radius: 12px !important;
	font-family: var(--ph-display) !important;
	font-weight: var(--ph-w-bold) !important;
	font-size: 0.9375rem !important;
	line-height: 1.3 !important;
	letter-spacing: 0 !important;
	text-transform: none !important;
	box-shadow: 0 8px 20px rgba(40, 90, 166, 0.35) !important;
	cursor: pointer;
	transition:
		transform 0.24s cubic-bezier(0.22, 0.61, 0.36, 1),
		box-shadow 0.24s cubic-bezier(0.22, 0.61, 0.36, 1);
}

html body .ph-form .ph-form__btn:hover,
html body .ph-form .ph-form__btn:focus-visible {
	background-color: var(--ph-fondo) !important;
	border-color: var(--ph-fondo) !important;
	color: var(--ph-bianco) !important;
	transform: translateY(-2px);
	box-shadow: 0 14px 30px rgba(16, 41, 75, 0.24) !important;
}

/* La rotellina di CF7 accanto al pulsante */
html body .ph-form .wpcf7-spinner {
	margin: 0 0 0 14px;
	vertical-align: middle;
}

/* -- stati di validazione ------------------------------------------------- */

html body .ph-form .wpcf7-not-valid {
	border-color: var(--phct-errore) !important;
}

html body .ph-form .wpcf7-not-valid-tip {
	display: block;
	font-family: var(--ph-text) !important;
	font-size: 0.8125rem !important;
	font-weight: var(--ph-w-medium) !important;
	line-height: 1.4 !important;
	color: var(--phct-errore) !important;
	margin-top: 7px;
}

html body .wpcf7 form .wpcf7-response-output {
	margin: 24px 0 0 !important;
	padding: 15px 18px !important;
	border: 1px solid var(--phct-hair) !important;
	border-left-width: 2px !important;
	border-radius: 12px !important;
	font-family: var(--ph-text) !important;
	font-size: 0.9375rem !important;
	line-height: 1.55 !important;
	color: var(--ph-grafite) !important;
	background-color: var(--ph-camera) !important;
}

html body .wpcf7 form.sent .wpcf7-response-output {
	border-left-color: var(--ph-blu) !important;
	color: var(--ph-fondo) !important;
}

html body .wpcf7 form.invalid .wpcf7-response-output,
html body .wpcf7 form.unaccepted .wpcf7-response-output,
html body .wpcf7 form.failed .wpcf7-response-output,
html body .wpcf7 form.aborted .wpcf7-response-output {
	border-left-color: var(--phct-errore) !important;
	background-color: var(--ph-bianco) !important;
}

/* -- 23.8 Rete internazionale --------------------------------------------- */

.phct-partner {
	padding: 24px 24px 22px;
}

.phct-marchio {
	display: flex;
	align-items: center;
	height: 46px;
	margin-bottom: 18px;
}

.phct-marchio img {
	max-height: 46px;
	max-width: 160px;
	width: auto;
	height: auto;
	object-fit: contain;
}

html body .phct .phct-partner-h {
	font-family: var(--ph-display) !important;
	font-weight: var(--ph-w-semibold) !important;
	font-size: 1.0625rem !important;
	line-height: 1.35 !important;
	color: var(--ph-fondo) !important;
	margin: 0 0 4px !important;
}

.phct-partner-r {
	display: block;
	font-size: 0.6875rem;
	font-weight: var(--ph-w-semibold);
	line-height: 1.3;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--ph-blu);
	margin-bottom: 14px;
}

.phct-partner address {
	font-style: normal;
	font-size: 0.8125rem;
	line-height: 1.55;
	color: var(--ph-grafite);
	margin: 0 0 12px;
}

.phct-partner .phct-contatti {
	list-style: none;
	margin: 0 0 16px;
	display: grid;
	gap: 5px;
}

.phct-partner .phct-contatti li {
	margin: 0;
	list-style: none;
	font-size: 0.8125rem;
	line-height: 1.5;
}

.phct-visita {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	margin-top: auto;
	padding-top: 14px;
	font-family: var(--ph-display);
	font-weight: var(--ph-w-semibold);
	font-size: 0.8125rem;
	color: var(--ph-blu) !important;
	text-decoration: none !important;
}

.phct-visita svg {
	transition: transform 0.26s cubic-bezier(0.22, 0.61, 0.36, 1);
}

.phct-visita:hover svg {
	transform: translateX(3px);
}

/* Paesi serviti: una riga sola, i separatori sono filetti non punti. */
.phct-paesi {
	display: flex;
	flex-wrap: wrap;
	list-style: none;
	margin: clamp(32px, 3.4vw, 48px) 0 0;
	padding-top: clamp(24px, 2.6vw, 34px);
	border-top: 1px solid var(--phct-hair);
	gap: 10px 0;
}

.phct-paesi li {
	margin: 0;
	list-style: none;
	padding: 0 16px;
	font-size: 0.6875rem;
	font-weight: var(--ph-w-medium);
	line-height: 1.2;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--ph-grafite);
	border-right: 1px solid var(--phct-hair);
}

.phct-paesi li:first-child {
	padding-left: 0;
}

.phct-paesi li:last-child {
	border-right: 0;
	padding-right: 0;
}

/* -- 23.9 FAQ ------------------------------------------------------------- */

.phct-faq {
	max-width: 880px;
}

.phct-faq details {
	border-top: 1px solid var(--phct-hair);
}

.phct-faq details:last-of-type {
	border-bottom: 1px solid var(--phct-hair);
}

.phct-faq summary {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 24px;
	padding: 22px 0;
	cursor: pointer;
	list-style: none;
	font-family: var(--ph-display);
	font-weight: var(--ph-w-semibold);
	font-size: 1.0625rem;
	line-height: 1.45;
	color: var(--ph-fondo);
}

.phct-faq summary::-webkit-details-marker {
	display: none;
}

.phct-faq summary:hover {
	color: var(--ph-blu);
}

.phct-faq summary:focus-visible {
	outline: 2px solid var(--ph-blu);
	outline-offset: 3px;
	border-radius: 6px;
}

.phct-chev {
	flex: 0 0 auto;
	margin-top: 3px;
	color: var(--ph-blu);
	transition: transform 0.28s cubic-bezier(0.22, 0.61, 0.36, 1);
}

.phct-faq details[open] .phct-chev {
	transform: rotate(180deg);
}

.phct-faq details > p {
	font-size: 0.9375rem;
	line-height: 1.7;
	color: var(--ph-grafite);
	margin: 0 0 22px;
	max-width: var(--ph-measure);
	padding-right: 48px;
}


/* -- 23.11 Fascia clienti: carosello su fondo scuro ----------------------

   La fascia stacca dal resto con il Blu Fondo, che il brandbook 03 assegna
   ai fondi scuri. E l'unica pausa cromatica della pagina, e serve: undici
   marchi altrui hanno bisogno di un contenitore che dica "questo pezzo e
   nostro".

   I file dei loghi hanno il fondo bianco opaco, non trasparente. Su un
   fondo scuro non esiste filtro che li renda bianchi senza rendere nero il
   loro fondo: invert li scurirebbe, screen li accenderebbe tutti. La
   soluzione onesta e la pastiglia bianca — che poi e anche quello che fa
   Apple quando mette marchi di terzi su fondo scuro.

   Il nastro contiene l'elenco due volte e trasla del cinquanta per cento:
   arrivato a fine corsa la seconda copia e esattamente dove era la prima e
   il salto non si vede. Il passo e un margine sulle pastiglie e non un gap
   della flexbox, perche il gap aggiungerebbe mezzo spazio in mezzo e il
   cinquanta per cento non cadrebbe piu al punto giusto.
   ------------------------------------------------------------------------- */

.phtrust {
	/* Blu PHAMM, il colore del marchio. E l'unica campitura piena di questo
	   blu su tutta la pagina: il brandbook 03 gli assegna il 10% del peso
	   visivo, e una fascia sola e esattamente quello. */
	background-color: var(--ph-blu);
	padding-top: clamp(44px, 4.4vw, 74px);
	padding-bottom: clamp(44px, 4.4vw, 74px);
}

.phtrust-testa {
	text-align: center;
	margin: 0 auto clamp(30px, 3vw, 44px);
	max-width: 54ch;
}

/* Su Blu PHAMM passano il Bianco (6,74) e l'Azzurro Camera (6,15). L'Azzurro
   PHAMM qui non passerebbe: e troppo vicino al fondo. */
.phtrust-testa .ph-eyebrow {
	color: var(--ph-bianco) !important;
	margin-bottom: 12px;
}

.phtrust-claim {
	font-size: 1.0625rem;
	line-height: 1.65;
	color: var(--ph-camera);
	margin: 0;
}

/* La finestra. Il margine negativo la porta a filo schermo: il nastro deve
   entrare e uscire dal campo, non cominciare dentro il contenitore. */
.phtrust-pista {
	position: relative;
	margin-left: calc(0px - var(--phct-gutter));
	margin-right: calc(0px - var(--phct-gutter));
	overflow: hidden;
	-webkit-mask-image: linear-gradient(90deg, transparent 0, #000 7%, #000 93%, transparent 100%);
	mask-image: linear-gradient(90deg, transparent 0, #000 7%, #000 93%, transparent 100%);
}

.phtrust-nastro {
	display: flex;
	width: max-content;
	margin: 0;
	padding: 0;
	list-style: none;
	animation: phtrust-scorri 52s linear infinite;
}

.phtrust-pista:hover .phtrust-nastro,
.phtrust-pista:focus-within .phtrust-nastro {
	animation-play-state: paused;
}

@keyframes phtrust-scorri {
	from { transform: translateX(0); }
	to { transform: translateX(-50%); }
}

.phtrust-nastro li {
	flex: 0 0 auto;
	margin: 0 14px 0 0;
	padding: 0;
	list-style: none;
}

.phtrust-chip {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 156px;
	height: 86px;
	padding: 12px 16px;
	box-sizing: border-box;
	background-color: var(--ph-bianco);
	border-radius: 12px;
}

.phtrust-chip img {
	display: block;
	width: 100%;
	height: auto;
	filter: grayscale(1);
	opacity: 0.78;
}

/* Chi ha chiesto meno movimento non lo riceve: il nastro si ferma e diventa
   una striscia che si puo scorrere col dito. */
@media (prefers-reduced-motion: reduce) {
	.phtrust-nastro {
		animation: none;
		width: auto;
	}

	.phtrust-pista {
		overflow-x: auto;
		-webkit-mask-image: none;
		mask-image: none;
	}
}

/* -- 23.12 Come procediamo: dalla turbolenza al flusso laminare ---------

   La figura in testa a ogni scheda non e un ornamento. In una camera bianca
   l'aria entra turbolenta e viene resa laminare — lamine parallele che
   scorrono in una direzione sola: e il principio fisico su cui sta in piedi
   tutto il mestiere. Nelle tre figure le linee si distendono sempre prima,
   dalla prima alla terza. Non serve spiegarlo: si vede che qualcosa si mette
   in ordine, ed e esattamente quello che dicono i tre passi.

   Le figure sono generate in build (flusso.py): sinusoidi con ampiezza che
   decade in modo quadratico, un campione per quarto d'onda, 3,2 kB l'una.
   ------------------------------------------------------------------------- */

.phstep-list {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: clamp(16px, 2vw, 26px);
	list-style: none;
	margin: 0;
	counter-reset: phst2;
}

.phstep {
	counter-increment: phst2;
	display: flex;
	flex-direction: column;
	height: 100%;
	margin: 0;
	list-style: none;
	background-color: var(--ph-bianco);
	border: 1px solid var(--phct-hair);
	border-radius: 14px;
	overflow: hidden;
	box-shadow: 0 12px 32px rgba(16, 41, 75, 0.06);
}

.phstep-fig {
	position: relative;
	height: 132px;
	background-color: var(--ph-fondo);
}

.phstep-svg {
	display: block;
	width: 100%;
	height: 100%;
}

/* Il numero sta dentro la figura, in Azzurro PHAMM: 5,12 su Blu Fondo, che
   il brandbook ammette per il testo grande. */
.phstep-num {
	position: absolute;
	left: 20px;
	bottom: 12px;
	font-family: var(--ph-display);
	font-weight: var(--ph-w-bold);
	font-size: 1.75rem;
	line-height: 1;
	letter-spacing: 0.01em;
	color: var(--ph-azzurro);
	font-variant-numeric: tabular-nums;
}

.phstep-num::before {
	content: counter(phst2, decimal-leading-zero);
}

.phstep-body {
	padding: 22px 22px 24px;
}

/* -- Le tre figure: un movimento a testa, sempre transform o opacita ----- */

/* 01 · la lancetta. Ventiquattro secondi per giro, un secondo per ora: non
   lo notera nessuno, ed e giusto cosi. La rotazione e attorno al perno del
   quadrante, quindi l'origine e in coordinate del viewBox e non del
   riquadro della figura. */
@keyframes phv-gira {
	to { transform: rotate(360deg); }
}

.phv-lancetta {
	transform-box: view-box;
	transform-origin: 180px 66px;
	animation: phv-gira 24s linear infinite;
}

/* 02 · la lama che percorre la pianta e torna, con una sosta ai due capi:
   e il gesto di chi misura, non un effetto continuo. */
@keyframes phv-scan {
	0% { transform: translateX(0); }
	44% { transform: translateX(192px); }
	56% { transform: translateX(192px); }
	100% { transform: translateX(0); }
}

.phv-scan {
	transform-box: view-box;
	animation: phv-scan 7.2s cubic-bezier(0.4, 0, 0.4, 1) infinite;
}

/* 03 · le righe di specifica si riempiono in cascata, poi arriva il bollo. */
@keyframes phv-riga {
	0%, 8% { transform: scaleX(0.12); }
	38%, 74% { transform: scaleX(1); }
	100% { transform: scaleX(0.12); }
}

.phv-bar {
	transform-box: fill-box;
	transform-origin: left center;
	animation: phv-riga 5.6s cubic-bezier(0.22, 0.61, 0.36, 1) infinite;
}

.phv-bar-2 { animation-delay: 0.26s; }
.phv-bar-3 { animation-delay: 0.52s; }
.phv-bar-4 { animation-delay: 0.78s; }

@keyframes phv-bollo {
	0%, 42% { opacity: 0; transform: scale(0.8); }
	60%, 84% { opacity: 1; transform: scale(1); }
	100% { opacity: 0; transform: scale(0.8); }
}

.phv-bollo {
	transform-box: fill-box;
	transform-origin: center;
	animation: phv-bollo 5.6s cubic-bezier(0.22, 0.61, 0.36, 1) infinite;
}

html body .phct .phstep-h {
	font-family: var(--ph-display) !important;
	font-weight: var(--ph-w-semibold) !important;
	font-size: 1.125rem !important; /* 18px */
	line-height: 1.35 !important;
	color: var(--ph-fondo) !important;
	margin: 0 0 8px !important;
}

.phstep-t {
	font-size: 0.9375rem;
	line-height: 1.65;
	color: var(--ph-grafite);
	margin: 0;
}

/* -- 23.13 Intestazione centrata ------------------------------------------ */

.phct-head--centro {
	margin-left: auto;
	margin-right: auto;
	text-align: center;
	max-width: 54ch;
}

.phct-head--centro .phct-lede {
	margin-left: auto;
	margin-right: auto;
}

.phct-faq {
	margin-left: auto;
	margin-right: auto;
}

/* -- 23.10 Responsive ----------------------------------------------------- */

@media only screen and (max-width: 1100px) {
	.phct-hero-grid,
	.phct-form-grid {
		grid-template-columns: minmax(0, 1fr);
	}

	.phct-hero-testo {
		padding-top: 0;
	}

	.phct-aside {
		position: static;
	}
}

@media only screen and (max-width: 860px) {
	.phstep-list {
		grid-template-columns: minmax(0, 1fr);
	}

	.phstep-fig {
		height: 104px;
	}

	/* Stessa specificita del selettore base: una media query non ne aggiunge. */
	html body .phct .phct-stats {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.phct-steps--riga {
		grid-template-columns: minmax(0, 1fr);
		gap: 0;
	}

	.phct-title {
		font-size: 2rem !important; /* 32px */
		max-width: none;
	}

	.phct-hero-lede {
		font-size: 1.0625rem;
	}

	.phct-h2 {
		font-size: 1.5rem !important; /* 24px */
	}
}

@media only screen and (max-width: 620px) {
	html body .phct .phct-stats {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 20px 0;
	}

	.phct-stats li:nth-child(3) {
		padding-left: 0;
		border-left: 0;
	}

	.phtrust-chip {
		width: 128px;
		height: 74px;
	}

	html body .ph-form .ph-form__row--half {
		grid-template-columns: minmax(0, 1fr);
		gap: 20px;
	}

	html body .ph-form .ph-form__btn {
		width: 100%;
	}

	.phct-cta .phct-btn {
		width: 100%;
	}

	.phct-paesi li {
		padding: 0 12px;
	}

	.phct-faq summary {
		font-size: 1rem;
		gap: 16px;
	}

	.phct-faq details > p {
		padding-right: 0;
	}
}

@media (prefers-reduced-motion: reduce) {
	.phv-lancetta,
	.phv-scan,
	.phv-bar,
	.phv-bollo {
		animation: none;
	}

	/* Ferme, le figure devono comunque leggersi: le righe restano piene e il
	   bollo visibile. */
	.phv-bar {
		transform: none;
	}

	.phv-bollo {
		opacity: 1;
	}

	.phct-btn,
	a.phct-card,
	.phct-chev,
	.phct-visita svg,
	html body .ph-form .ph-form__btn {
		transition: none;
	}

	.phct-btn:hover,
	a.phct-card:hover,
	html body .ph-form .ph-form__btn:hover {
		transform: none;
	}
}

/* --------------------------------------------------------------------------
   24. MAPPA DELLA RETE
   Resa dallo shortcode [phamm_mappa]. Disegno in parts/pages/europa.svg,
   comportamento in assets/mappa.js.

   Il mare e bianco come la pagina, la terra e Azzurro Camera, i paesi dove
   Phamm e presente sono una velatura di Blu PHAMM al 14% — la stessa
   percentuale che il brandbook 09 assegna ai fondi colorati. Nessuna ombra
   sulla mappa: le ombre stanno sulle schede, che sono oggetti sopra il
   piano, non sul piano stesso.

   Tre forme di pin, tutte dentro la palette, perche la legenda si legga
   anche in bianco e nero: sede piena, partner vuoto con anello, agenzia in
   Azzurro PHAMM. La forma porta l'informazione, il colore la conferma.

   Movimento: solo transform e opacity. La mappa si sposta con una matrice,
   i pin si contro-scalano per restare della stessa misura, l'alone appare
   in opacita. Nient'altro si muove.
   -------------------------------------------------------------------------- */

.phm {
	--phm-hair: rgba(16, 41, 75, 0.12);
	--phm-hair-soft: rgba(16, 41, 75, 0.08);

	position: relative;
	background-color: var(--ph-bianco);
	border: 1px solid var(--phm-hair);
	border-radius: 14px;
	overflow: hidden;
	box-shadow: 0 12px 32px rgba(16, 41, 75, 0.06);
	font-family: var(--ph-text);
}

.phm-grid {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 366px;
}

/* -- 24.1 Il riquadro della mappa ----------------------------------------- */

.phm-viewport {
	position: relative;
	/* Stesse proporzioni del viewBox: cosi il disegno riempie il riquadro
	   esatto e la conversione fra pixel e coordinate resta lineare. */
	aspect-ratio: 1000 / 826;
	background-color: var(--ph-bianco);
	overflow: hidden;
	cursor: grab;
	/* La pagina deve poter scorrere in verticale anche col dito sulla mappa:
	   restare intrappolati dentro un riquadro mentre si scende e il difetto
	   piu comune delle mappe incorporate. */
	touch-action: pan-y;
	-webkit-user-select: none;
	user-select: none;
}

.phm.is-drag .phm-viewport {
	cursor: grabbing;
}

.phm-tela {
	position: absolute;
	inset: 0;
}

.phm-svg,
.phm-pins {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	display: block;
}

/* Il piano dei pin sta sopra la mappa ma non le ruba il puntatore: solo i
   pin lo intercettano. */
.phm-pins {
	pointer-events: none;
}

.phm-terra path {
	fill: var(--ph-camera);
	stroke: var(--ph-bianco);
	stroke-width: 0.8;
	vector-effect: non-scaling-stroke;
}

.phm-attivi path {
	fill: rgba(40, 90, 166, 0.14);
	stroke: rgba(40, 90, 166, 0.38);
	stroke-width: 1;
	vector-effect: non-scaling-stroke;
	transition: fill 0.22s cubic-bezier(0.22, 0.61, 0.36, 1);
}

.phm-attivi path:hover {
	fill: rgba(40, 90, 166, 0.24);
}

/* -- 24.2 I pin ----------------------------------------------------------- */

.phm-pin {
	pointer-events: auto;
	cursor: pointer;
}

.phm-pin:focus {
	outline: none;
}

.phm-tocco {
	fill: transparent;
}

.phm-alone {
	fill: rgba(40, 90, 166, 0.18);
	opacity: 0;
	transition: opacity 0.28s cubic-bezier(0.22, 0.61, 0.36, 1);
}

.phm-pin:hover .phm-alone,
.phm-pin:focus-visible .phm-alone,
.phm-pin.is-on .phm-alone {
	opacity: 1;
}

.phm-punto {
	transform-box: fill-box;
	transform-origin: center;
	transition: transform 0.28s cubic-bezier(0.22, 0.61, 0.36, 1);
}

.phm-pin.is-on .phm-punto {
	transform: scale(1.18);
}

.phm-pin--sede .phm-punto {
	fill: var(--ph-blu);
	stroke: var(--ph-bianco);
	stroke-width: 2.6;
}

.phm-pin--partner .phm-punto {
	fill: var(--ph-bianco);
	stroke: var(--ph-blu);
	stroke-width: 3.2;
}

.phm-pin--agenzia .phm-punto {
	fill: var(--ph-azzurro);
	stroke: var(--ph-bianco);
	stroke-width: 2.4;
}

.phm-pin:focus-visible .phm-punto {
	stroke: var(--ph-fondo);
	stroke-width: 3.4;
}

/* -- 24.3 Legenda, etichetta, strumenti ----------------------------------- */

.phm-legenda {
	position: absolute;
	top: 14px;
	left: 16px;
	display: flex;
	flex-wrap: wrap;
	gap: 6px 16px;
	margin: 0 !important;
	padding: 0 !important;
	list-style: none;
	pointer-events: none;
}

.phm-legenda li {
	display: flex;
	align-items: center;
	gap: 7px;
	margin: 0;
	padding: 0;
	list-style: none;
	font-size: 0.6875rem; /* 11px */
	font-weight: var(--ph-w-medium);
	line-height: 1.2;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--ph-grafite);
}

.phm-seg {
	display: inline-block;
	flex: 0 0 auto;
	width: 10px;
	height: 10px;
	border-radius: 999px;
	box-sizing: border-box;
}

.phm-seg--sede {
	background-color: var(--ph-blu);
}

.phm-seg--partner {
	background-color: var(--ph-bianco);
	border: 2px solid var(--ph-blu);
}

.phm-seg--agenzia {
	background-color: var(--ph-azzurro);
}

.phm-etichetta {
	position: absolute;
	top: 12px;
	right: 14px;
	max-width: 60%;
	margin: 0 !important;
	padding: 8px 14px !important;
	background-color: var(--ph-fondo);
	color: var(--ph-bianco);
	border-radius: 999px;
	font-family: var(--ph-display);
	font-weight: var(--ph-w-semibold);
	font-size: 0.75rem;
	line-height: 1.3;
	letter-spacing: 0.01em;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
	opacity: 0;
	transform: translateY(-6px);
	pointer-events: none;
	transition:
		opacity 0.3s cubic-bezier(0.22, 0.61, 0.36, 1),
		transform 0.3s cubic-bezier(0.22, 0.61, 0.36, 1);
}

.phm.ha-etichetta .phm-etichetta {
	opacity: 1;
	transform: none;
}

.phm-tools {
	position: absolute;
	right: 14px;
	bottom: 14px;
	display: flex;
	flex-direction: column;
	gap: 6px;
}

.phm-tool {
	display: flex !important;
	align-items: center;
	justify-content: center;
	width: 38px;
	height: 38px;
	padding: 0 !important;
	margin: 0 !important;
	background-color: var(--ph-bianco) !important;
	color: var(--ph-fondo) !important;
	border: 1px solid var(--phm-hair) !important;
	border-radius: 11px !important;
	box-shadow: 0 4px 14px rgba(16, 41, 75, 0.10);
	cursor: pointer;
	transition: transform 0.2s cubic-bezier(0.22, 0.61, 0.36, 1);
}

.phm-tool:hover {
	background-color: var(--ph-camera) !important;
	color: var(--ph-blu) !important;
	transform: translateY(-1px);
}

.phm-tool:focus-visible {
	outline: 2px solid var(--ph-blu);
	outline-offset: 2px;
}

.phm-aiuto {
	position: absolute;
	left: 16px;
	bottom: 14px;
	margin: 0 !important;
	padding: 0 !important;
	max-width: calc(100% - 90px);
	font-size: 0.6875rem;
	line-height: 1.45;
	color: var(--ph-grafite);
	pointer-events: none;
}

.phm-aiuto-sm {
	display: none;
}

.phm-aiuto kbd {
	font-family: var(--ph-text);
	font-size: 0.625rem;
	font-weight: var(--ph-w-semibold);
	background-color: var(--ph-camera);
	border: 1px solid var(--phm-hair);
	border-radius: 5px;
	padding: 1px 5px;
	color: var(--ph-fondo);
}

/* -- 24.4 Elenco laterale -------------------------------------------------- */

.phm-panel {
	position: relative;
	background-color: var(--ph-camera);
	border-left: 1px solid var(--phm-hair);
	min-width: 0;
}

/* Assoluto per costruzione: cosi e la mappa a dettare l'altezza del blocco
   e l'elenco scorre al proprio interno invece di allungare tutto. */
.phm-panel-in {
	position: absolute;
	inset: 0;
	overflow-y: auto;
	overscroll-behavior: contain;
	padding: 20px 18px 22px;
}

.phm-gruppo + .phm-gruppo {
	margin-top: 22px;
}

html body .phm .phm-gruppo-h {
	display: flex !important;
	align-items: center;
	gap: 9px;
	font-family: var(--ph-text) !important;
	font-weight: var(--ph-w-semibold) !important;
	font-size: 0.6875rem !important;
	line-height: 1.2 !important;
	letter-spacing: 0.12em !important;
	text-transform: uppercase !important;
	color: var(--ph-grafite) !important;
	margin: 0 0 10px !important;
	padding: 0 !important;
}

.phm-conta {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 20px;
	height: 20px;
	padding: 0 6px;
	border-radius: 999px;
	background-color: var(--ph-bianco);
	border: 1px solid var(--phm-hair);
	font-size: 0.625rem;
	letter-spacing: 0;
	color: var(--ph-fondo);
	font-variant-numeric: tabular-nums;
}

.phm-elenco {
	list-style: none;
	margin: 0 !important;
	padding: 0 !important;
}

.phm-elenco li {
	list-style: none;
	margin: 0 0 8px;
	padding: 0;
}

.phm-scheda {
	background-color: var(--ph-bianco);
	border: 1px solid var(--phm-hair);
	border-radius: 12px;
	overflow: hidden;
}

.phm-scheda.is-open {
	border-color: rgba(40, 90, 166, 0.45);
	box-shadow: 0 8px 22px rgba(16, 41, 75, 0.08);
}

.phm-scheda-testa {
	display: grid !important;
	grid-template-columns: 10px minmax(0, 1fr) 16px;
	align-items: center;
	gap: 11px;
	width: 100%;
	padding: 13px 14px !important;
	margin: 0 !important;
	background: none !important;
	border: 0 !important;
	border-radius: 0 !important;
	text-align: left;
	cursor: pointer;
	color: inherit !important;
}

.phm-scheda-testa:hover {
	background-color: var(--ph-camera) !important;
}

.phm-scheda-testa:focus-visible {
	outline: 2px solid var(--ph-blu);
	outline-offset: -2px;
}

.phm-scheda-tit {
	display: block;
	min-width: 0;
}

.phm-scheda-nome {
	display: block;
	font-family: var(--ph-display);
	font-weight: var(--ph-w-semibold);
	font-size: 0.875rem;
	line-height: 1.3;
	color: var(--ph-fondo);
}

.phm-scheda-ruolo {
	display: block;
	font-family: var(--ph-text);
	font-weight: var(--ph-w-regular);
	font-size: 0.75rem;
	line-height: 1.4;
	color: var(--ph-grafite);
	margin-top: 2px;
	text-transform: none;
	letter-spacing: 0;
}

.phm-scheda-chev {
	color: var(--ph-blu);
	transition: transform 0.28s cubic-bezier(0.22, 0.61, 0.36, 1);
}

.phm-scheda.is-open .phm-scheda-chev {
	transform: rotate(180deg);
}

.phm-scheda-corpo {
	display: none;
	padding: 0 14px 15px 35px;
}

.phm-scheda.is-open .phm-scheda-corpo {
	display: block;
}

/* Il marchio del partner nel corpo della scheda: e la sua identita, quindi
   resta a colori. La monocromia della fascia clienti serve a far leggere
   undici marchi come un insieme; qui il marchio e uno, ed e il soggetto. */
.phm-marchio {
	display: block;
	margin: 0 0 12px;
}

.phm-marchio img {
	display: block;
	width: auto;
	height: auto;
	max-height: 30px;
	max-width: 122px;
	object-fit: contain;
}

.phm-citta {
	font-size: 0.75rem !important;
	font-weight: var(--ph-w-semibold) !important;
	line-height: 1.4 !important;
	color: var(--ph-fondo) !important;
	margin: 0 0 6px !important;
	padding: 0 !important;
}

.phm-scheda-corpo address {
	font-style: normal;
	font-size: 0.75rem;
	line-height: 1.55;
	color: var(--ph-grafite);
	margin: 0 0 10px;
	padding: 0;
}

.phm-contatti {
	list-style: none;
	margin: 0 0 12px !important;
	padding: 0 !important;
	display: grid;
	gap: 3px;
}

.phm-contatti li {
	margin: 0;
	padding: 0;
	list-style: none;
	font-size: 0.75rem;
	line-height: 1.5;
}

.phm-contatti a {
	color: var(--ph-blu);
	text-decoration: none;
	border-bottom: 1px solid rgba(40, 90, 166, 0.3);
}

.phm-contatti a:hover {
	color: var(--ph-fondo);
	border-bottom-color: var(--ph-fondo);
}

.phm-reparti {
	display: flex;
	flex-wrap: wrap;
	gap: 5px;
	list-style: none;
	margin: 0 !important;
	padding: 0 !important;
}

.phm-reparti li {
	margin: 0;
	padding: 4px 9px;
	list-style: none;
	/* Dieci pixel erano sotto la soglia di lettura anche da fermi: questi sono
	   nomi di reparto, non decorazione. */
	font-size: 0.75rem;
	font-weight: var(--ph-w-medium);
	line-height: 1.2;
	letter-spacing: 0.02em;
	color: var(--ph-fondo);
	background-color: var(--ph-camera);
	border-radius: 999px;
}

/* -- 24.5 Responsive ------------------------------------------------------ */

@media only screen and (max-width: 1000px) {
	.phm-grid {
		grid-template-columns: minmax(0, 1fr);
	}

	.phm-panel {
		border-left: 0;
		border-top: 1px solid var(--phm-hair);
	}

	/* Impilata, la lista non deve piu scorrere dentro un riquadro: si legge
	   tutta, e a scorrere e la pagina. */
	.phm-panel-in {
		position: static;
		inset: auto;
		overflow: visible;
		max-height: none;
	}

	.phm-elenco {
		display: grid;
		grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
		gap: 8px;
	}

	.phm-elenco li {
		margin: 0;
	}
}

@media only screen and (max-width: 620px) {
	/* Da telefono non ci sono ne rotellina ne tasto Ctrl: resta l'unica
	   istruzione che serve davvero, su una riga sola. */
	.phm-aiuto-lg {
		display: none;
	}

	.phm-aiuto-sm {
		display: inline;
	}

	.phm-aiuto {
		font-size: 0.625rem;
		max-width: calc(100% - 70px);
		background-color: rgba(255, 255, 255, 0.86);
		border-radius: 8px;
		padding: 4px 8px !important;
	}

	.phm-legenda {
		gap: 4px 12px;
	}

	.phm-etichetta {
		max-width: 52%;
	}
}

@media (prefers-reduced-motion: reduce) {
	.phm-attivi path,
	.phm-alone,
	.phm-punto,
	.phm-tool,
	.phm-scheda-chev,
	.phm-etichetta {
		transition: none;
	}

	.phm-tool:hover {
		transform: none;
	}
}

@media print {
	.phm-tools,
	.phm-aiuto,
	.phm-etichetta {
		display: none !important;
	}

	.phm-panel-in {
		position: static;
		overflow: visible;
	}

	.phm-scheda-corpo {
		display: block !important;
	}
}

/* --------------------------------------------------------------------------
   25. PAGINE SETTORE
   Dieci pagine con la stessa ossatura e contenuti tutti diversi. Il blocco
   nasce con la hero di Aerospaziale e crescera una sezione per volta.

   I nomi stanno sotto .phse come quelli di contatti stanno sotto .phct: le
   due famiglie condividono i token del brandbook (blocco 1) ma non ancora le
   classi. Quando una fascia avra visto tre pagine si promuove, non prima.

   Ritmo del brandbook 03: la hero e bianca, il 70% che tiene insieme il
   sito. L'unico campo di colore e il riquadro della figura, in Blu Fondo:
   e il 5% di superficie, e serve a una cosa sola — un disegno tecnico su
   fondo scuro si legge come un disegno tecnico.

   Contrasti su Blu Fondo (tabella del brandbook 03): Bianco 14,57 AAA,
   Azzurro Camera 12,70 AAA, Azzurro PHAMM 5,12 AA. Il Grigio Aria (2,87) e
   il Blu PHAMM (2,15) su questo fondo non sono testo, e non lo diventano.

   Movimento (brandbook 10): un solo movimento in tutta la schermata, il
   flusso d'aria della figura, e solo transform.
   -------------------------------------------------------------------------- */

.phse {
	/* Stessa formula di header, footer e fasce: il contenuto resta
	   incolonnato col menu a ogni larghezza. */
	--phse-gutter: max(24px, calc((100vw - 1425px) / 2 + var(--nectar-resp-container-padding, 90px)));
	--phse-hair: rgba(16, 41, 75, 0.12);
	--phse-hair-soft: rgba(16, 41, 75, 0.08);

	font-family: var(--ph-text);
	font-size: var(--ph-size-body);
	line-height: var(--ph-lh-body);
	color: var(--ph-grafite);
}

/* Salient assegna padding a p, ul e li come elementi. */
.phse p,
.phse ul,
.phse ol,
.phse li,
.phse h1,
.phse h2,
.phse h3 {
	padding: 0;
}

/* figure e figcaption arrivano dal foglio del browser con margin 1em 40px:
   senza questo azzeramento il riquadro della figura resta 80px piu stretto
   della sua colonna e 34px piu basso, e non si allinea a niente. */
/* Solo il margine: un "padding: 0" qui avrebbe specificita (0,1,1) e
   batterebbe .phse-hero-fig (0,1,0), azzerando il padding del riquadro. */
.phse figure,
.phse figcaption {
	margin: 0;
}

/* -- 25.1 Fasce ----------------------------------------------------------- */

.phse-sec {
	margin-left: calc(50% - 50vw);
	margin-right: calc(50% - 50vw);
	padding: clamp(60px, 6.4vw, 108px) var(--phse-gutter);
}

.phse-inner {
	max-width: 1245px;
	margin: 0 auto;
}

/* -- 25.2 Hero ------------------------------------------------------------ */

/* Testo a sinistra, figura a destra: la stessa impaginazione della hero di
   /contattaci/, cosi chi passa da una pagina all'altra riconosce il primo
   schermo invece di ricominciare a leggerlo. */
.phse-hero {
	background-color: var(--ph-bianco);
	padding-top: clamp(40px, 4.4vw, 72px);
	padding-bottom: clamp(40px, 4.4vw, 68px);
}

.phse-hero-grid {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 545px);
	gap: clamp(32px, 4vw, 68px);
	align-items: stretch;
}

.phse-hero-testo {
	min-width: 0;
	display: flex;
	flex-direction: column;
	align-items: flex-start;
}

/* Briciole: due voci, la seconda e la pagina. Non un componente di
   navigazione — l'eyebrow del brandbook con un separatore dentro. */
.phse-briciole {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px;
	list-style: none;
	margin: 0 0 16px;
	padding: 0;
}

.phse-briciole li {
	margin: 0;
	list-style: none;
	display: flex;
	align-items: center;
	gap: 8px;
}

.phse-briciole li + li::before {
	content: '';
	flex: 0 0 auto;
	width: 4px;
	height: 4px;
	border-radius: 999px;
	background-color: rgba(16, 41, 75, 0.28);
}

/* Peso 500: e quello che il brandbook 04 assegna all'eyebrow, ed e lo stesso
   di .ph-eyebrow nel blocco 1. Non 600. */
.phse-briciole a,
.phse-briciole span {
	font-family: var(--ph-text) !important;
	font-size: var(--ph-size-eyebrow) !important;
	font-weight: var(--ph-w-medium) !important;
	line-height: 1.2 !important;
	letter-spacing: var(--ph-ls-eyebrow) !important;
	text-transform: uppercase;
	text-decoration: none !important;
	color: var(--ph-grigio) !important;
}

.phse-briciole a {
	transition: color 0.26s cubic-bezier(0.22, 0.61, 0.36, 1);
}

.phse-briciole a:hover,
.phse-briciole a:focus-visible {
	color: var(--ph-blu) !important;
}

.phse-briciole [aria-current='page'] {
	color: var(--ph-fondo) !important;
}

/* Blocco 3 di Salient intesta con .row .col h1 (0,2,1) e !important: una
   classe sola perde, e anche html body .phse-title (0,1,2). Due classi
   annidate portano a (0,2,2) e vincono. Vale per ogni titolo di questo
   blocco: mai .phse-x da solo. */
html body .phse .phse-title {
	font-family: var(--ph-display) !important;
	font-weight: var(--ph-w-bold) !important;
	font-size: var(--ph-size-h1) !important;
	line-height: var(--ph-lh-h1) !important;
	letter-spacing: -0.018em !important;
	color: var(--ph-fondo) !important;
	margin: 0 !important;
	max-width: 19ch;
	text-wrap: balance;
}

.phse-hero-lede {
	font-size: 1.1875rem; /* 19px */
	line-height: 1.6;
	color: var(--ph-fondo);
	margin: 18px 0 0;
	text-wrap: pretty;
}

/* I quattro punti non sono vantaggi: ognuno porta una norma o una misura,
   come chiede il brandbook 05. Se un punto non ha un numero, non e un
   punto — e un'opinione, e va scritto altrove. */
.phse-punti {
	list-style: none;
	margin: 26px 0 0;
	padding: 0;
	display: grid;
	gap: 12px;
}

.phse-punti li {
	display: flex;
	align-items: flex-start;
	gap: 11px;
	margin: 0;
	padding: 0;
	list-style: none;
	font-size: 0.9375rem;
	line-height: 1.55;
	color: var(--ph-grafite);
	text-wrap: pretty;
}

.phse-tick {
	flex: 0 0 auto;
	margin-top: 3px;
	color: var(--ph-blu);
}

.phse-punti b {
	font-family: var(--ph-text);
	font-weight: var(--ph-w-semibold);
	color: var(--ph-fondo);
}

/* I bottoni stanno attaccati a cio che li motiva: spinti al fondo della
   colonna restavano sospesi in mezzo al bianco e non si leggevano piu come
   la conseguenza dei quattro punti sopra. */
.phse-cta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 12px;
	margin-top: 0;
	padding-top: 30px;
}

.phse-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 9px;
	min-height: 50px;
	padding: 13px 26px;
	border-radius: 12px;
	font-family: var(--ph-display) !important;
	font-weight: var(--ph-w-bold) !important;
	font-size: 0.9375rem !important;
	line-height: 1.3 !important;
	letter-spacing: 0 !important;
	text-decoration: none !important;
	text-transform: none !important;
	transition:
		transform 0.26s cubic-bezier(0.22, 0.61, 0.36, 1),
		box-shadow 0.26s cubic-bezier(0.22, 0.61, 0.36, 1);
}

.phse-btn--solid {
	background-color: var(--ph-blu) !important;
	color: var(--ph-bianco) !important;
	border: 1px solid var(--ph-blu);
	box-shadow: 0 8px 20px rgba(40, 90, 166, 0.35);
}

.phse-btn--solid:hover,
.phse-btn--solid:focus-visible {
	background-color: var(--ph-fondo) !important;
	border-color: var(--ph-fondo);
	color: var(--ph-bianco) !important;
	transform: translateY(-2px);
	box-shadow: 0 14px 30px rgba(16, 41, 75, 0.24);
}

.phse-btn--ghost {
	background-color: transparent !important;
	color: var(--ph-fondo) !important;
	border: 1px solid rgba(16, 41, 75, 0.22);
}

.phse-btn--ghost:hover,
.phse-btn--ghost:focus-visible {
	background-color: var(--ph-bianco) !important;
	color: var(--ph-fondo) !important;
	transform: translateY(-2px);
	box-shadow: 0 12px 26px rgba(16, 41, 75, 0.10);
}

.phse-btn svg {
	flex: 0 0 auto;
}

/* Le sigle non si spezzano. Dieci pagine di settore sono piene di codici come
   ECSS-Q-ST-70-02C e MIL-STD-1246: mandarne meta a capo su un trattino li
   rende illeggibili e sembrano due norme invece di una. */
.phse-nb {
	white-space: nowrap;
}

/* -- 25.3 Il riquadro della figura ---------------------------------------- */

/* Un disegno tecnico vuole un fondo scuro: le linee sottili su bianco
   sparirebbero. Il riquadro e l'unico campo di colore della hero, e il
   raggio e quello delle schede del brandbook (14). */
.phse-hero-fig {
	position: relative;
	display: flex;
	flex-direction: column;
	min-height: 340px;
	padding: 24px 24px 20px;
	border-radius: 14px;
	background-color: var(--ph-fondo);
	overflow: hidden;
}

/* Qui il motivo laminare d'angolo della scheda modulo di /contattaci/ non ci
   va: quello serviva a dare grana a una scheda bianca vuota, mentre questo
   riquadro contiene gia un disegno fatto di righe. Due tramature nello stesso
   campo si annullano. La grana e il disegno. */

.phse-hero-fig > * {
	position: relative;
	z-index: 1;
}

/* Testa del riquadro: a sinistra cosa e, a destra la lettura. Due righe di
   dodici, non un titolo: il riquadro e uno strumento, non una scheda. */
.phse-fig-testa {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 14px;
	padding-bottom: 12px;
	border-bottom: 1px solid rgba(105, 160, 191, 0.22);
}

.phse-fig-tag {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	font-family: var(--ph-text) !important;
	font-size: var(--ph-size-eyebrow) !important;
	font-weight: var(--ph-w-medium) !important;
	line-height: 1.2 !important;
	letter-spacing: var(--ph-ls-eyebrow) !important;
	text-transform: uppercase;
	color: var(--ph-azzurro);
}

/* Il punto non lampeggia: il brandbook concede un movimento per schermata e
   quello e il flusso. Resta un punto. */
.phse-fig-dot {
	flex: 0 0 auto;
	width: 6px;
	height: 6px;
	border-radius: 999px;
	background-color: var(--ph-azzurro);
}

.phse-fig-val {
	font-family: var(--ph-display);
	font-weight: var(--ph-w-semibold);
	font-size: 0.8125rem;
	line-height: 1.2;
	letter-spacing: 0.01em;
	color: var(--ph-camera);
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
}

.phse-fig-quadro {
	flex: 1 1 auto;
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 0;
	padding: 10px 0 4px;
}

.phse-fig-svg {
	display: block;
	width: 100%;
	height: auto;
	margin: 0 auto;
}

/* Didascalia: la figura dice una cosa, la riga sotto la nomina. */
.phse-fig-nota {
	margin: 0;
	font-size: 0.8125rem;
	line-height: 1.5;
	color: rgba(234, 240, 247, 0.78);
}

/* -- 25.4 Il flusso, l'unico movimento ------------------------------------ */

/* I tratti sono spaziati di 40 unita e il gruppo trasla di 40: il ciclo si
   richiude su se stesso e non si vede la giunzione, quindi non serve nessuna
   dissolvenza. Solo transform, come chiede il brandbook 10. */
@keyframes phse-flusso {
	from { transform: translateY(0); }
	to   { transform: translateY(40px); }
}

.phv-flusso {
	transform-box: view-box;
	animation: phse-flusso 3.6s linear infinite;
	will-change: transform;
}

/* -- 25.5 La riga di specifiche ------------------------------------------- */

/* Quattro dati sotto un filetto, a piena larghezza della hero: una riga di
   specifiche, non quattro titoli. Nessuno dei quattro e un'affermazione
   commerciale — sono due misure, una norma e un tempo di risposta. */
/* ".phse ul" vale (0,1,1) e batterebbe ".phse-stats" (0,1,0), azzerando il
   padding: i numeri finivano incollati al divisore. Serve la doppia classe.
   Stessa trappola del padding della figure, terza volta in questo blocco. */
html body .phse .phse-stats {
	position: relative;
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 18px 0;
	list-style: none;
	margin: clamp(34px, 3.6vw, 54px) 0 0;
	padding-top: clamp(28px, 2.8vw, 36px);
}

/* Il divisore non e un filetto: e il dispositivo di firma del brandbook 09,
   il fascio di linee equidistanti del flusso laminare — passo 12px, tratto
   1px. Assoluto, altrimenti lo pseudo-elemento diventa una cella della
   griglia e sposta le quattro colonne. */
.phse-stats::before {
	content: '';
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	height: 8px;
	background-image: repeating-linear-gradient(
		90deg,
		rgba(16, 41, 75, 0.18) 0,
		rgba(16, 41, 75, 0.18) 1px,
		transparent 1px,
		transparent 12px
	);
	pointer-events: none;
}

.phse-stats li {
	margin: 0;
	list-style: none;
	min-width: 0;
	padding-left: clamp(14px, 1.6vw, 26px);
	border-left: 1px solid var(--phse-hair);
}

.phse-stats li:first-child {
	padding-left: 0;
	border-left: 0;
}

.phse-stats .ph-stat {
	font-size: 1.875rem !important; /* 30px, la misura H2 della scala */
	letter-spacing: -0.015em !important;
	font-variant-numeric: tabular-nums;
	/* Blu Fondo, non Blu PHAMM: l'unico accento della schermata e la CTA. */
	color: var(--ph-fondo);
}

.phse-stats .ph-stat-label {
	font-size: 0.75rem !important;
	line-height: 1.35 !important;
	color: var(--ph-grafite);
	margin-top: 6px;
}

/* -- 25.6 Responsive ------------------------------------------------------ */

@media only screen and (max-width: 1100px) {
	.phse-hero-grid {
		grid-template-columns: minmax(0, 1fr);
	}

	.phse-hero-fig {
		min-height: 0;
	}

	/* A una colonna il riquadro prende tutta la larghezza, ma il disegno non
	   deve crescere con lei: a 700px di lato diventerebbe un poster. Resta
	   alla sua misura, centrato. */
	.phse-fig-svg {
		max-width: 470px;
	}
}

@media only screen and (max-width: 860px) {
	/* Stessa specificita del selettore base: una media query non ne aggiunge. */
	html body .phse .phse-stats {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	html body .phse .phse-title {
		font-size: 2rem !important; /* 32px */
		max-width: none;
	}

	.phse-hero-lede {
		font-size: 1.0625rem;
	}
}

@media only screen and (max-width: 620px) {
	html body .phse .phse-stats {
		gap: 20px 0;
	}

	.phse-stats li:nth-child(3) {
		padding-left: 0;
		border-left: 0;
	}

	.phse-cta .phse-btn {
		width: 100%;
	}

	.phse-hero-fig {
		padding: 20px 20px 16px;
	}

	.phse-fig-testa {
		flex-direction: column;
		align-items: flex-start;
		gap: 6px;
	}
}

@media (prefers-reduced-motion: reduce) {
	/* Ferma, la figura deve comunque leggersi come un flusso: i tratti
	   restano dove sono, che e una posizione valida del ciclo. */
	.phv-flusso {
		animation: none;
	}
}

/* --------------------------------------------------------------------------
   26. PAGINE SETTORE — CORPO
   Le fasce che stanno sotto la hero. Continuano sotto .phse: stessi token,
   stessa gronda, stesse regole di specificita.

   Alternanza dei fondi (brandbook 03, mai due contigue uguali):
     01 hero        Bianco
     02 clienti     Blu PHAMM
     03 classi      Bianco
     04 sfide       Azzurro Camera
     05 budget      Blu Fondo
     06 processo    Bianco
     07 applicaz.   Azzurro Camera
     08 norme       Blu Fondo
     09 FAQ         Azzurro Camera
     10 chiusura    Bianco

   La chiusura e bianca e non grigia perche subito sotto, nel footer, la fascia
   "Rete internazionale" e in Azzurro Camera: due grigi uguali di fila si
   leggono come una fascia sola lunga il doppio.

   Un solo accento per schermata: in ogni fascia il Blu PHAMM sta su una cosa
   sola — l'icona, il numero della classe, il bottone. Mai due.
   -------------------------------------------------------------------------- */

/* Il carosello clienti e gia costruito nel blocco 23 e si riusa qui tale e
   quale. Le sue regole leggono --phct-gutter: gliela passiamo, invece di
   duplicare quattrocento righe per cambiare un prefisso. */
.phse {
	--phct-gutter: var(--phse-gutter);
}

.phse-sec--camera {
	background-color: var(--ph-camera);
}

.phse-sec--fondo {
	background-color: var(--ph-fondo);
}

/* -- 26.1 Intestazione di fascia ------------------------------------------ */

.phse-head {
	max-width: 62ch;
	margin: 0 0 clamp(32px, 3.4vw, 52px);
}

.phse-head--centro {
	max-width: 68ch;
	margin-left: auto;
	margin-right: auto;
	text-align: center;
}

.phse-head .ph-eyebrow {
	margin: 0 0 14px;
}

html body .phse .phse-h2 {
	font-family: var(--ph-display) !important;
	font-weight: var(--ph-w-semibold) !important;
	font-size: var(--ph-size-h2) !important;
	line-height: var(--ph-lh-h2) !important;
	letter-spacing: -0.01em !important;
	color: var(--ph-fondo) !important;
	margin: 0 !important;
	text-wrap: balance;
}

.phse-lede {
	font-size: 1.0625rem;
	line-height: 1.65;
	color: var(--ph-grafite);
	margin: 14px 0 0;
	text-wrap: pretty;
}

/* Su Blu Fondo: Bianco 14,57 AAA per il titolo, Azzurro Camera 12,70 AAA per
   il corpo, Azzurro PHAMM 5,12 AA per l'eyebrow. Grigio Aria e Blu PHAMM su
   questo fondo non sono testo. */
.phse-sec--fondo .ph-eyebrow {
	color: var(--ph-azzurro) !important;
}

html body .phse .phse-sec--fondo .phse-h2 {
	color: var(--ph-bianco) !important;
}

.phse-sec--fondo .phse-lede {
	color: var(--ph-camera);
}

/* -- 26.2 Griglie e schede ------------------------------------------------ */

html body .phse .phse-grid {
	display: grid;
	gap: 20px;
	list-style: none;
	margin: 0;
	padding: 0;
}

.phse-grid--2 { grid-template-columns: repeat(auto-fit, minmax(340px, 1fr)); }
/* 320px: a 1245 di contenitore entrano tre schede, non quattro piu due
   spaiate. Sei elementi vogliono tre colonne. */
.phse-grid--3 { grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); }
.phse-grid--4 { grid-template-columns: repeat(auto-fit, minmax(246px, 1fr)); }

/* display:flex sulla cella, non height:100% sulla scheda. Con una percentuale
   la scheda non contribuisce al calcolo della traccia, la riga viene misurata
   piu bassa del contenuto e le schede sbordano sulla riga successiva: e
   esattamente quello che faceva la griglia delle applicazioni, 62px di
   sovrapposizione. Con flex l'altezza la decide la riga, e la riga il contenuto. */
html body .phse .phse-grid > li {
	display: flex;
	margin: 0;
	list-style: none;
	min-width: 0;
	padding: 0;
}

.phse-card {
	display: flex;
	flex-direction: column;
	flex: 1 1 auto;
	padding: clamp(22px, 2.2vw, 28px);
	border-radius: 14px;
	background-color: var(--ph-camera);
}

/* Su Azzurro Camera la scheda diventa bianca, col bordo e l'ombra di riposo
   del brandbook 09. Su bianco resta una superficie quieta senza bordo: due
   modi di dire la stessa gerarchia, secondo cosa c'e sotto. */
.phse-sec--camera .phse-card {
	background-color: var(--ph-bianco);
	border: 1px solid rgba(16, 41, 75, 0.12);
	box-shadow: 0 12px 32px rgba(16, 41, 75, 0.06);
}

html body .phse .phse-card-h {
	font-family: var(--ph-display) !important;
	font-weight: var(--ph-w-semibold) !important;
	font-size: var(--ph-size-h4) !important;
	line-height: var(--ph-lh-h4) !important;
	letter-spacing: 0 !important;
	color: var(--ph-fondo) !important;
	margin: 0 0 8px !important;
}

html body .phse .phse-card p {
	margin: 0;
	font-size: 0.9375rem;
	line-height: 1.6;
	color: var(--ph-grafite);
	text-wrap: pretty;
}

/* -- 26.3 Schede di classe ------------------------------------------------ */

/* Il numero della classe e il dato, non un ornamento: sta al corpo del
   Display e porta accanto il limite della norma, che e verificabile. */
.phse-classe-testa {
	display: flex;
	align-items: baseline;
	gap: 10px;
	padding-bottom: 14px;
	margin-bottom: 16px;
	border-bottom: 1px solid rgba(16, 41, 75, 0.12);
}

.phse-classe-n {
	font-family: var(--ph-display);
	font-weight: var(--ph-w-extrabold);
	font-size: 1.75rem;
	line-height: 1;
	letter-spacing: -0.02em;
	color: var(--ph-blu);
	font-variant-numeric: tabular-nums;
}

.phse-classe-lim {
	font-size: 0.75rem;
	line-height: 1.35;
	color: var(--ph-grafite);
}

/* In una colonna flex un inline-block viene stirato da align-items: stretch e
   la pill diventa una fascia larga quanto la scheda. */
.phse-card-tag {
	display: inline-block;
	align-self: flex-start;
	margin-top: 16px;
	padding: 5px 12px;
	border-radius: 999px;
	background-color: rgba(40, 90, 166, 0.12);
	font-family: var(--ph-text);
	font-weight: var(--ph-w-medium);
	font-size: 0.75rem;
	line-height: 1.4;
	letter-spacing: 0.02em;
	color: var(--ph-fondo);
}

.phse-card-tag--auto {
	margin-top: auto;
}

/* -- 26.4 Sfide ----------------------------------------------------------- */

/* Nessuna scheda: un'icona, un titolo, tre righe. Il fondo e gia una
   superficie, aggiungerne un'altra sopra sarebbe una superficie di troppo. */
html body .phse .phse-sfide {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
	gap: clamp(28px, 3vw, 44px) clamp(28px, 3vw, 48px);
	list-style: none;
	margin: 0;
	padding: 0;
}

html body .phse .phse-sfide > li {
	margin: 0;
	padding: 0;
	list-style: none;
	min-width: 0;
}

.phse-ico {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	margin-bottom: 16px;
	border-radius: 12px;
	background-color: rgba(40, 90, 166, 0.09);
	color: var(--ph-blu);
}

html body .phse .phse-sfide h3 {
	font-family: var(--ph-display) !important;
	font-weight: var(--ph-w-semibold) !important;
	font-size: var(--ph-size-h4) !important;
	line-height: var(--ph-lh-h4) !important;
	letter-spacing: 0 !important;
	color: var(--ph-fondo) !important;
	margin: 0 0 8px !important;
}

html body .phse .phse-sfide p {
	margin: 0;
	font-size: 0.9375rem;
	line-height: 1.6;
	color: var(--ph-grafite);
	text-wrap: pretty;
}

/* -- 26.5 Fascia del budget di contaminazione ----------------------------- */

.phse-quadro {
	display: grid;
	grid-template-columns: minmax(0, 0.86fr) minmax(0, 1fr);
	gap: clamp(32px, 4vw, 64px);
	align-items: center;
}

.phse-quadro-testo {
	min-width: 0;
}

.phse-quadro-fig {
	min-width: 0;
	padding: 20px 20px 16px;
	border-radius: 14px;
	background-color: rgba(105, 160, 191, 0.07);
}

.phse-quadro-fig .phse-fig-testa {
	border-bottom-color: rgba(105, 160, 191, 0.24);
}

/* Tre letture sotto la figura: il numero in Azzurro Camera (12,70 AAA) e
   l'etichetta in Azzurro PHAMM (5,12 AA). Mai il contrario. */
html body .phse .phse-letture {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 0;
	list-style: none;
	margin: 20px 0 0;
	padding: 0;
}

html body .phse .phse-letture > li {
	margin: 0;
	padding: 0 0 0 clamp(12px, 1.4vw, 20px);
	list-style: none;
	min-width: 0;
	border-left: 1px solid rgba(105, 160, 191, 0.24);
}

html body .phse .phse-letture > li:first-child {
	padding-left: 0;
	border-left: 0;
}

.phse-lettura-v {
	display: block;
	font-family: var(--ph-display);
	font-weight: var(--ph-w-bold);
	font-size: 1.375rem;
	line-height: 1.1;
	letter-spacing: -0.015em;
	color: var(--ph-camera);
	font-variant-numeric: tabular-nums;
}

.phse-lettura-e {
	display: block;
	margin-top: 6px;
	font-size: 0.75rem;
	line-height: 1.35;
	color: var(--ph-azzurro);
}

/* -- 26.6 Percorso in sei passi ------------------------------------------- */

/* I sei passi del brandbook 07: Analizza, Progetta, Produce, Installa,
   Valida, Assiste. Sono quelli, in quell'ordine, con quei nomi. */
html body .phse .phse-passi {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(272px, 1fr));
	gap: clamp(26px, 2.8vw, 40px) clamp(26px, 2.8vw, 44px);
	list-style: none;
	margin: 0;
	padding: 0;
	counter-reset: phse-passo;
}

html body .phse .phse-passi > li {
	position: relative;
	margin: 0;
	padding: 20px 0 0;
	list-style: none;
	min-width: 0;
	counter-increment: phse-passo;
}

/* Il filetto sopra ogni passo e il dispositivo di firma del brandbook 09,
   passo 12px tratto 1px: le stesse linee del divisore delle specifiche. */
.phse-passi > li::before {
	content: '';
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	height: 6px;
	background-image: repeating-linear-gradient(
		90deg,
		rgba(16, 41, 75, 0.20) 0,
		rgba(16, 41, 75, 0.20) 1px,
		transparent 1px,
		transparent 12px
	);
}

.phse-passo-n {
	display: block;
	font-family: var(--ph-display);
	font-weight: var(--ph-w-bold);
	font-size: 0.8125rem;
	line-height: 1.2;
	letter-spacing: 0.06em;
	color: var(--ph-blu);
	font-variant-numeric: tabular-nums;
	margin-bottom: 10px;
}

.phse-passo-n::before {
	content: '0' counter(phse-passo);
}

html body .phse .phse-passi h3 {
	font-family: var(--ph-display) !important;
	font-weight: var(--ph-w-semibold) !important;
	font-size: var(--ph-size-h4) !important;
	line-height: var(--ph-lh-h4) !important;
	letter-spacing: 0 !important;
	color: var(--ph-fondo) !important;
	margin: 0 0 8px !important;
}

html body .phse .phse-passi p {
	margin: 0;
	font-size: 0.9375rem;
	line-height: 1.6;
	color: var(--ph-grafite);
	text-wrap: pretty;
}

/* -- 26.7 Norme ----------------------------------------------------------- */

html body .phse .phse-norme {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	list-style: none;
	margin: 0;
	padding: 0;
}

html body .phse .phse-norme > li {
	margin: 0;
	padding: 9px 16px;
	list-style: none;
	border-radius: 999px;
	/* Fondi colorati come trasparenze dello stesso colore: 12-15% per una
	   pill (brandbook 09). Qui il campo e scuro, quindi la trasparenza e
	   dell'Azzurro PHAMM. */
	background-color: rgba(105, 160, 191, 0.14);
	font-family: var(--ph-text);
	font-weight: var(--ph-w-medium);
	font-size: 0.8125rem;
	line-height: 1.4;
	letter-spacing: 0.01em;
	color: var(--ph-camera);
	white-space: nowrap;
}

/* -- 26.8 FAQ ------------------------------------------------------------- */

.phse-faq {
	max-width: 880px;
	margin: 0 auto;
	border-top: 1px solid rgba(16, 41, 75, 0.12);
}

.phse-faq details {
	border-bottom: 1px solid rgba(16, 41, 75, 0.12);
}

html body .phse .phse-faq summary {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 20px;
	padding: 20px 0;
	cursor: pointer;
	list-style: none;
	font-family: var(--ph-display);
	font-weight: var(--ph-w-semibold);
	font-size: 1.0625rem;
	line-height: 1.45;
	color: var(--ph-fondo);
	transition: color 0.26s cubic-bezier(0.22, 0.61, 0.36, 1);
}

.phse-faq summary::-webkit-details-marker,
.phse-faq summary::marker {
	display: none;
	content: '';
}

.phse-faq summary:hover,
.phse-faq details[open] summary {
	color: var(--ph-blu);
}

.phse-chev {
	flex: 0 0 auto;
	margin-top: 3px;
	color: var(--ph-blu);
	transition: transform 0.3s cubic-bezier(0.22, 0.61, 0.36, 1);
}

.phse-faq details[open] .phse-chev {
	transform: rotate(180deg);
}

html body .phse .phse-faq details > p {
	margin: 0 0 22px;
	padding-right: 42px;
	font-size: 0.9375rem;
	line-height: 1.7;
	color: var(--ph-grafite);
	text-wrap: pretty;
}

/* -- 26.9 Chiusura -------------------------------------------------------- */

.phse-chiusura {
	text-align: center;
}

/* Firma primaria del brandbook 05: corsivo regular, mai bold, mai fra
   virgolette, sempre in chiusura e mai in apertura.
   Sulle pagine settore NON si usa: il footer la porta gia, e a quaranta pixel
   di distanza la stessa frase due volte non e una firma, e un'eco. La regola
   resta qui per le pagine che un footer diverso non lo hanno. */
.phse-firma {
	display: block;
	margin: 22px 0 0;
	font-family: var(--ph-display);
	font-weight: var(--ph-w-regular);
	font-style: italic;
	font-size: var(--ph-size-claim);
	line-height: 1.3;
	color: var(--ph-blu);
}

.phse-chiusura .phse-cta {
	justify-content: center;
	padding-top: 30px;
}

/* -- 26.10 Responsive ----------------------------------------------------- */

@media only screen and (max-width: 980px) {
	.phse-quadro {
		grid-template-columns: minmax(0, 1fr);
	}
}

@media only screen and (max-width: 860px) {
	html body .phse .phse-h2 {
		font-size: 1.5rem !important; /* 24px */
	}

	.phse-firma {
		font-size: 1.375rem;
	}
}

@media only screen and (max-width: 620px) {
	html body .phse .phse-letture {
		grid-template-columns: minmax(0, 1fr);
		gap: 16px;
	}

	html body .phse .phse-letture > li {
		padding-left: 0;
		border-left: 0;
	}

	html body .phse .phse-faq summary {
		font-size: 1rem;
		gap: 14px;
	}

	html body .phse .phse-faq details > p {
		padding-right: 0;
	}

	.phse-chiusura .phse-btn {
		width: 100%;
	}
}

/* -- 26.11 Il movimento della fascia budget -------------------------------- */

/* Le quattro quote si riempiono in sequenza, si tengono, ricominciano. E il
   movimento unico di quella schermata, e solo transform. */
@keyframes phse-quota {
	0%, 6%   { transform: scaleY(0); }
	34%, 78% { transform: scaleY(1); }
	100%     { transform: scaleY(0); }
}

.phv-quota {
	transform-box: fill-box;
	transform-origin: bottom;
	animation: phse-quota 6.4s cubic-bezier(0.22, 0.61, 0.36, 1) infinite;
}

.phv-quota-2 { animation-delay: 0.14s; }
.phv-quota-3 { animation-delay: 0.28s; }
.phv-quota-4 { animation-delay: 0.42s; }

@media (prefers-reduced-motion: reduce) {
	/* Ferme, le quote devono comunque leggersi come un conto pieno. */
	.phv-quota {
		animation: none;
		transform: none;
	}
}

/* -- 26.12 Le figure delle sfide ------------------------------------------ */

/* Sei figure, una per sfida, ognuna la sua. Al posto della piastrella con
   l'icona: un piccolo strumento bianco che dice la cosa che il testo dice.
   Su fondo chiaro la palette si ribalta — il Blu PHAMM porta cio che si
   muove, le sue trasparenze cio che sta fermo. */
.phse-sfida-fig {
	margin: 0 0 18px;
	padding: 10px 14px;
	border-radius: 12px;
	background-color: var(--ph-bianco);
	border: 1px solid rgba(16, 41, 75, 0.10);
	overflow: hidden;
}

.phse-sfida-svg {
	display: block;
	width: 100%;
	max-width: 320px;
	height: auto;
	margin: 0 auto;
}

/* Le figure sono su Azzurro Camera: la scheda bianca sopra e la superficie
   che le stacca. Su bianco (se un giorno la fascia cambiasse) diventerebbero
   Azzurro Camera, per non avere bianco su bianco. */
.phse-sec:not(.phse-sec--camera) .phse-sfida-fig {
	background-color: var(--ph-camera);
	border-color: rgba(16, 41, 75, 0.08);
}

/* -- I sei movimenti. Lenti, e solo transform e opacity ------------------- */

/* 1 — le molecole scendono e il film cresce */
@keyframes phv-mol {
	0%        { transform: translateY(0); opacity: 0; }
	12%       { opacity: 1; }
	62%, 100% { transform: translateY(44px); opacity: 0; }
}

@keyframes phv-film {
	0%, 8%   { transform: scaleY(0.14); }
	72%, 92% { transform: scaleY(1); }
	100%     { transform: scaleY(0.14); }
}

.phv-mol {
	animation: phv-mol 5.2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}

.phv-mol-2 { animation-delay: 0.5s; }
.phv-mol-3 { animation-delay: 1s; }
.phv-mol-4 { animation-delay: 1.5s; }
.phv-mol-5 { animation-delay: 2s; }
.phv-mol-6 { animation-delay: 2.5s; }

.phv-film {
	transform-box: fill-box;
	transform-origin: bottom;
	animation: phv-film 5.2s cubic-bezier(0.22, 0.61, 0.36, 1) infinite;
}

/* 2 — le particelle arrivano e restano sul medium */
@keyframes phv-part {
	0%        { transform: translateX(0); opacity: 0; }
	14%       { opacity: 1; }
	68%       { transform: translateX(62px); opacity: 1; }
	84%, 100% { transform: translateX(62px); opacity: 0; }
}

.phv-part {
	animation: phv-part 4.6s cubic-bezier(0.3, 0, 0.7, 1) infinite;
}

.phv-part-2 { animation-delay: 0.42s; }
.phv-part-3 { animation-delay: 0.84s; }
.phv-part-4 { animation-delay: 1.26s; }

/* 3 — il cursore percorre la banda di tolleranza */
@keyframes phv-cursore {
	0%, 4%    { transform: translateX(0); }
	50%       { transform: translateX(192px); }
	96%, 100% { transform: translateX(0); }
}

.phv-cursore {
	transform-box: fill-box;
	animation: phv-cursore 7.6s cubic-bezier(0.4, 0, 0.4, 1) infinite;
}

/* 4 — la scarica appare, la carica scende a terra */
@keyframes phv-scarica {
	0%, 24%  { opacity: 0; }
	30%, 40% { opacity: 1; }
	48%, 100% { opacity: 0; }
}

@keyframes phv-carica {
	0%, 38%   { transform: translateY(0); opacity: 0; }
	44%       { opacity: 1; }
	78%, 100% { transform: translateY(18px); opacity: 0; }
}

.phv-scarica { animation: phv-scarica 4.8s linear infinite; }

.phv-carica {
	transform-box: fill-box;
	animation: phv-carica 4.8s cubic-bezier(0.3, 0, 0.6, 1) infinite;
}

/* 5 — il carro traversa la campata */
@keyframes phv-carro {
	0%, 6%   { transform: translateX(-58px); }
	46%, 54% { transform: translateX(58px); }
	94%, 100% { transform: translateX(-58px); }
}

.phv-carro {
	transform-box: fill-box;
	animation: phv-carro 9s cubic-bezier(0.45, 0, 0.45, 1) infinite;
}

/* 6 — la riga scorre e il registro si chiude */
@keyframes phv-riga-scan {
	0%, 6%    { transform: translateY(0); }
	26%       { transform: translateY(13px); }
	46%       { transform: translateY(26px); }
	66%, 88%  { transform: translateY(39px); }
	100%      { transform: translateY(0); }
}

@keyframes phv-bollo-r {
	0%, 62%  { opacity: 0; transform: scale(0.86); }
	74%, 92% { opacity: 1; transform: scale(1); }
	100%     { opacity: 0; transform: scale(0.86); }
}

.phv-riga {
	transform-box: fill-box;
	animation: phv-riga-scan 6.8s cubic-bezier(0.22, 0.61, 0.36, 1) infinite;
}

.phv-bollo-r {
	transform-box: fill-box;
	transform-origin: center;
	animation: phv-bollo-r 6.8s cubic-bezier(0.22, 0.61, 0.36, 1) infinite;
}

@media (prefers-reduced-motion: reduce) {
	/* Ferme, le figure devono comunque leggersi: il film pieno, le particelle
	   sul medium, il cursore a inizio banda, il bollo apposto. */
	.phv-mol, .phv-film, .phv-part, .phv-cursore, .phv-scarica,
	.phv-carica, .phv-carro, .phv-riga, .phv-bollo-r {
		animation: none;
		transform: none;
	}

	.phv-mol, .phv-scarica, .phv-carica {
		opacity: 0.55;
	}
}

/* -- 26.13 Linea del tempo del percorso ----------------------------------- */

/* Sei passi su una guida verticale. A sei colonne orizzontali il testo cadeva
   in strisce da ventisei caratteri: illeggibile. Verticale, ogni passo ha il
   titolo a sinistra e la descrizione a destra, sulla misura giusta.

   La guida e il dispositivo di firma del brandbook 09 — linee equidistanti,
   passo 12px, tratto 1px — girato di novanta gradi. Sopra ci scorre un
   segmento in velatura di primario: e l'unico movimento della fascia. */
.phse-linea {
	position: relative;
	padding-left: 40px;
}

.phse-linea-guida {
	position: absolute;
	top: 10px;
	bottom: 10px;
	left: 6px;
	width: 12px;
	overflow: hidden;
}

.phse-linea-guida::before {
	content: '';
	position: absolute;
	top: 0;
	bottom: 0;
	left: 5px;
	width: 2px;
	background-image: repeating-linear-gradient(
		180deg,
		rgba(16, 41, 75, 0.26) 0,
		rgba(16, 41, 75, 0.26) 1px,
		transparent 1px,
		transparent 12px
	);
}

.phse-linea-corsa {
	position: absolute;
	left: 4px;
	top: 0;
	width: 4px;
	height: 24%;
	border-radius: 999px;
	background-image: linear-gradient(
		180deg,
		rgba(40, 90, 166, 0) 0,
		rgba(40, 90, 166, 0.62) 48%,
		rgba(40, 90, 166, 0) 100%
	);
	animation: phse-corsa 12s cubic-bezier(0.45, 0, 0.55, 1) infinite;
}

@keyframes phse-corsa {
	0%   { transform: translateY(-100%); }
	100% { transform: translateY(420%); }
}

html body .phse .phse-linea-passi {
	display: grid;
	gap: clamp(26px, 2.6vw, 38px);
	list-style: none;
	margin: 0;
	padding: 0;
	counter-reset: phse-tappa;
}

html body .phse .phse-linea-passi > li {
	position: relative;
	display: grid;
	grid-template-columns: minmax(0, 216px) minmax(0, 1fr);
	gap: clamp(18px, 2.4vw, 40px);
	align-items: start;
	margin: 0;
	padding: 0;
	list-style: none;
	min-width: 0;
	counter-increment: phse-tappa;
}

/* Il nodo poggia sulla guida, all'altezza della prima riga del titolo. */
.phse-tappa-nodo {
	position: absolute;
	top: 7px;
	left: -40px;
	width: 14px;
	height: 14px;
	border-radius: 999px;
	background-color: var(--ph-bianco);
	border: 2px solid var(--ph-blu);
	box-sizing: border-box;
}

.phse-sec--camera .phse-tappa-nodo {
	background-color: var(--ph-camera);
}

/* Numero e titolo stanno nella prima colonna insieme: tre figli in flusso in
   una griglia a due colonne finiscono su due righe, e la descrizione cadeva
   sotto il numero invece che accanto al titolo. */
.phse-tappa-testa {
	min-width: 0;
}

.phse-tappa-n {
	display: block;
	font-family: var(--ph-display);
	font-weight: var(--ph-w-bold);
	font-size: 0.75rem;
	line-height: 1.2;
	letter-spacing: 0.08em;
	color: var(--ph-blu);
	font-variant-numeric: tabular-nums;
	margin-bottom: 6px;
}

.phse-tappa-n::before {
	content: '0' counter(phse-tappa);
}

html body .phse .phse-linea-passi h3 {
	font-family: var(--ph-display) !important;
	font-weight: var(--ph-w-semibold) !important;
	font-size: var(--ph-size-h3) !important;
	line-height: var(--ph-lh-h3) !important;
	letter-spacing: -0.005em !important;
	color: var(--ph-fondo) !important;
	margin: 0 !important;
}

html body .phse .phse-linea-passi p {
	margin: 0;
	padding-top: 2px;
	font-size: 1rem;
	line-height: 1.65;
	color: var(--ph-grafite);
	text-wrap: pretty;
	max-width: 62ch;
}

/* -- 26.14 Schede applicazione, con il passaggio del mouse ---------------- */

/* Il movimento al passaggio e volutamente sotto soglia: due pixel di alzata,
   un filetto che si accende, la freccia che scivola. Si sente, non si vede.
   Solo transform, opacity e ombra. */
.phse-app-card {
	position: relative;
	display: flex;
	flex-direction: column;
	flex: 1 1 auto;
	padding: clamp(24px, 2.4vw, 30px);
	border-radius: 14px;
	background-color: var(--ph-bianco);
	border: 1px solid rgba(16, 41, 75, 0.12);
	box-shadow: 0 12px 32px rgba(16, 41, 75, 0.06);
	overflow: hidden;
	transition:
		transform 0.32s cubic-bezier(0.22, 0.61, 0.36, 1),
		box-shadow 0.32s cubic-bezier(0.22, 0.61, 0.36, 1);
}

/* Filetto superiore: acceso in Blu PHAMM solo al passaggio. */
.phse-app-card::before {
	content: '';
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	height: 2px;
	background-color: var(--ph-blu);
	opacity: 0;
	transform: scaleX(0.3);
	transform-origin: left center;
	transition:
		opacity 0.32s cubic-bezier(0.22, 0.61, 0.36, 1),
		transform 0.42s cubic-bezier(0.22, 0.61, 0.36, 1);
}

/* Motivo laminare d'angolo al 9%: il dispositivo di firma, appena percepibile. */
.phse-app-card::after {
	content: '';
	position: absolute;
	top: 0;
	right: 0;
	width: 148px;
	height: 104px;
	background-image: repeating-linear-gradient(
		180deg,
		rgba(40, 90, 166, 0.13) 0,
		rgba(40, 90, 166, 0.13) 1px,
		transparent 1px,
		transparent 9px
	);
	-webkit-mask-image: radial-gradient(122% 122% at 100% 0, #000 0, transparent 64%);
	mask-image: radial-gradient(122% 122% at 100% 0, #000 0, transparent 64%);
	opacity: 0;
	transition: opacity 0.42s cubic-bezier(0.22, 0.61, 0.36, 1);
	pointer-events: none;
}

.phse-app-card > * {
	position: relative;
	z-index: 1;
}

.phse-app-card:hover,
.phse-app-card:focus-within {
	transform: translateY(-3px);
	box-shadow: 0 18px 40px rgba(16, 41, 75, 0.11);
}

.phse-app-card:hover::before,
.phse-app-card:focus-within::before {
	opacity: 1;
	transform: scaleX(1);
}

.phse-app-card:hover::after,
.phse-app-card:focus-within::after {
	opacity: 1;
}

.phse-app-testa {
	display: flex;
	align-items: baseline;
	gap: 12px;
	margin-bottom: 12px;
}

.phse-app-n {
	flex: 0 0 auto;
	font-family: var(--ph-display);
	font-weight: var(--ph-w-bold);
	font-size: 0.75rem;
	line-height: 1.6;
	letter-spacing: 0.08em;
	color: var(--ph-blu);
	font-variant-numeric: tabular-nums;
}

html body .phse .phse-app-card h3 {
	font-family: var(--ph-display) !important;
	font-weight: var(--ph-w-semibold) !important;
	font-size: var(--ph-size-h4) !important;
	line-height: var(--ph-lh-h4) !important;
	letter-spacing: 0 !important;
	color: var(--ph-fondo) !important;
	margin: 0 !important;
	transition: color 0.3s cubic-bezier(0.22, 0.61, 0.36, 1);
}

.phse-app-card:hover h3 {
	color: var(--ph-blu) !important;
}

html body .phse .phse-app-card p {
	margin: 0;
	font-size: 0.9375rem;
	line-height: 1.6;
	color: var(--ph-grafite);
	text-wrap: pretty;
}

/* La riga di chiusura con la classe: scivola di tre pixel al passaggio. */
.phse-app-classe {
	display: flex;
	align-items: center;
	gap: 8px;
	margin-top: auto;
	padding-top: 18px;
	font-family: var(--ph-text);
	font-weight: var(--ph-w-semibold);
	font-size: 0.75rem;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--ph-blu);
	transition: transform 0.32s cubic-bezier(0.22, 0.61, 0.36, 1);
}

.phse-app-card:hover .phse-app-classe {
	transform: translateX(3px);
}

@media (prefers-reduced-motion: reduce) {
	.phse-app-card,
	.phse-app-card::before,
	.phse-app-classe,
	.phse-linea-corsa {
		transition: none;
		animation: none;
	}

	.phse-app-card:hover {
		transform: none;
	}
}

/* -- 26.15 Responsive delle nuove fasce ----------------------------------- */

@media only screen and (max-width: 860px) {
	/* Titolo sopra, descrizione sotto: a schermo strétto due colonne
	   lascerebbero al testo meno di trenta caratteri per riga. */
	html body .phse .phse-linea-passi > li {
		grid-template-columns: minmax(0, 1fr);
		gap: 8px;
	}

	.phse-linea {
		padding-left: 30px;
	}

	.phse-tappa-nodo {
		left: -30px;
	}
}

@media only screen and (max-width: 620px) {
	.phse-sfida-fig {
		padding: 8px 10px;
	}
}

/* -- 26.16 Icone delle applicazioni --------------------------------------- */

/* Al posto del numero d'ordine: un'icona media, una per ambito. Brandbook 09 —
   griglia 24, giunzioni arrotondate, mai piene, un colore solo. Il tratto e
   1,7 su 24 disegnato a 30px: reso, pesa i 2px che il brandbook chiede.
   La piastrella e una velatura del primario al 9%, dentro la forbice 7-9%
   prevista per un'area. */
.phse-app-ico {
	display: flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
	align-self: flex-start;
	width: 60px;
	height: 60px;
	margin-bottom: 18px;
	border-radius: 14px;
	background-color: rgba(40, 90, 166, 0.09);
	color: var(--ph-blu);
	transition: background-color 0.32s cubic-bezier(0.22, 0.61, 0.36, 1);
}

.phse-app-card:hover .phse-app-ico,
.phse-app-card:focus-within .phse-app-ico {
	background-color: rgba(40, 90, 166, 0.15);
}

html body .phse .phse-app-card h3 {
	margin: 0 0 10px !important;
}

@media only screen and (max-width: 620px) {
	.phse-app-ico {
		width: 52px;
		height: 52px;
		margin-bottom: 14px;
	}
}

/* -- 26.17 Testa di fascia su Blu PHAMM ----------------------------------- */

/* La fascia clienti riusa .phse-head come tutte le altre, cosi l'eyebrow ha
   la stessa misura di "Classi e requisiti" e il titolo la stessa dell'H2 di
   sezione. Ma su Blu PHAMM i colori di default non tengono: l'eyebrow e Blu
   PHAMM su Blu PHAMM (invisibile) e il titolo e Blu Fondo (2,15 — illeggibile).
   Passano solo il Bianco (6,74) e l'Azzurro Camera (6,15).

   Nota: questo blocco era gia stato scritto una volta e un taglio del file
   l'aveva rimosso insieme alla vecchia coda responsive. Sta in fondo, e
   l'ultima cosa del blocco 26: se un giorno si tronca di nuovo, si perde
   questo e si vede subito. */
.phtrust .ph-eyebrow {
	color: var(--ph-bianco) !important;
}

html body .phse .phtrust .phse-h2 {
	color: var(--ph-bianco) !important;
}

.phtrust .phse-lede {
	color: var(--ph-camera);
}

/* --------------------------------------------------------------------------
   27. PAGINE SETTORE — MOVIMENTI DI ALIMENTARE
   Il blocco 26 resta com'e: la struttura dell'aerospaziale e quella di
   riferimento e non si tocca. Qui stanno solo i movimenti delle figure che
   questa pagina ha in piu, con i loro nomi.

   Regole invariate (brandbook 10): solo transform e opacity, un movimento per
   figura, curva cubic-bezier(.22,.61,.36,1) dove il moto ha un inizio e una
   fine, lineare dove gira, e tutto si ferma con prefers-reduced-motion.
   -------------------------------------------------------------------------- */

/* -- 27.1 Hero: il prodotto che avanza sul nastro ------------------------- */

/* Il passo fra due prodotti e 88 unita e il gruppo trasla di 88: il ciclo si
   richiude e non si vede la giunzione, come per il flusso d'aria. */
@keyframes phse-linea {
	from { transform: translateX(0); }
	to   { transform: translateX(88px); }
}

.phv-linea {
	transform-box: view-box;
	animation: phse-linea 5.2s linear infinite;
	will-change: transform;
}

/* -- 27.2 Quadro: la sonda che percorre le sei zone ---------------------- */

/* Sei zone larghe 66: la sonda si ferma su ognuna, poi torna. Non scorre
   liscia — una sonda legge una zona per volta. */
@keyframes phse-sonda {
	0%, 8%    { transform: translateX(0); }
	14%, 20%  { transform: translateX(66px); }
	26%, 32%  { transform: translateX(132px); }
	38%, 44%  { transform: translateX(198px); }
	50%, 56%  { transform: translateX(264px); }
	62%, 74%  { transform: translateX(330px); }
	86%, 100% { transform: translateX(0); }
}

.phv-sonda {
	transform-box: view-box;
	animation: phse-sonda 11s cubic-bezier(0.22, 0.61, 0.36, 1) infinite;
}

/* -- 27.3 Le sei figure delle sfide -------------------------------------- */

/* 1 — l'aria attraversa la batteria fredda */
@keyframes phv-aria {
	0%        { transform: translateX(0); opacity: 0; }
	12%       { opacity: 1; }
	72%       { transform: translateX(166px); opacity: 1; }
	86%, 100% { transform: translateX(166px); opacity: 0; }
}

.phv-aria {
	animation: phv-aria 5s cubic-bezier(0.35, 0, 0.65, 1) infinite;
}

.phv-aria-2 { animation-delay: 0.4s; }
.phv-aria-3 { animation-delay: 0.8s; }

/* 2 — le colonie sotto la lampada, una dopo l'altra */
@keyframes phv-colonia {
	0%, 10%   { opacity: 1; transform: scale(1); }
	34%, 88%  { opacity: 0; transform: scale(0.7); }
	100%      { opacity: 1; transform: scale(1); }
}

.phv-colonia {
	transform-box: fill-box;
	transform-origin: center;
	animation: phv-colonia 6.4s cubic-bezier(0.22, 0.61, 0.36, 1) infinite;
}

.phv-colonia-2 { animation-delay: 0.24s; }
.phv-colonia-3 { animation-delay: 0.48s; }
.phv-colonia-4 { animation-delay: 0.72s; }
.phv-colonia-5 { animation-delay: 0.96s; }

/* 3 — la particella arriva al muro e si ferma: non passa */
@keyframes phv-blocco {
	0%        { transform: translateX(0); opacity: 0; }
	14%       { opacity: 1; }
	62%       { transform: translateX(68px); opacity: 1; }
	78%, 100% { transform: translateX(68px); opacity: 0; }
}

.phv-blocco {
	transform-box: fill-box;
	animation: phv-blocco 5.4s cubic-bezier(0.3, 0, 0.9, 1) infinite;
}

/* 4 — il carrello passa da un locale all'altro e non torna mai indietro */
@keyframes phv-carrello {
	0%, 8%    { transform: translateX(0); }
	28%, 40%  { transform: translateX(68px); }
	60%, 84%  { transform: translateX(136px); }
	92%, 100% { transform: translateX(0); opacity: 0; }
}

.phv-carrello {
	transform-box: view-box;
	animation: phv-carrello 8.4s cubic-bezier(0.22, 0.61, 0.36, 1) infinite;
}

/* 5 — la goccia scende sulla pendenza e finisce in canaletta */
@keyframes phv-goccia {
	0%        { transform: translate(0, 0); opacity: 0; }
	12%       { opacity: 1; }
	70%       { transform: translate(126px, 14px); opacity: 1; }
	80%, 100% { transform: translate(126px, 20px); opacity: 0; }
}

.phv-goccia {
	transform-box: fill-box;
	animation: phv-goccia 5.6s cubic-bezier(0.4, 0, 0.7, 1) infinite;
}

/* 6 — i sette punti critici si chiudono in sequenza e restano chiusi */
@keyframes phv-ccp {
	0%, 6%    { opacity: 0; transform: scale(0.7); }
	18%, 88%  { opacity: 1; transform: scale(1); }
	100%      { opacity: 0; transform: scale(0.7); }
}

.phv-ccp {
	transform-box: fill-box;
	transform-origin: center;
	animation: phv-ccp 7.2s cubic-bezier(0.22, 0.61, 0.36, 1) infinite;
}

.phv-ccp-2 { animation-delay: 0.18s; }
.phv-ccp-3 { animation-delay: 0.36s; }
.phv-ccp-4 { animation-delay: 0.54s; }
.phv-ccp-5 { animation-delay: 0.72s; }
.phv-ccp-6 { animation-delay: 0.90s; }
.phv-ccp-7 { animation-delay: 1.08s; }

@media (prefers-reduced-motion: reduce) {
	/* Ferme, le figure devono comunque dire la cosa che dicono: l'aria dentro
	   la batteria, le colonie visibili, il carrello nel primo locale, la
	   goccia sulla pendenza, i sette punti chiusi. */
	.phv-linea, .phv-sonda, .phv-aria, .phv-colonia, .phv-blocco,
	.phv-carrello, .phv-goccia, .phv-ccp {
		animation: none;
		transform: none;
	}

	.phv-aria, .phv-blocco, .phv-goccia {
		opacity: 0.55;
	}
}

/* --------------------------------------------------------------------------
   28. PAGINE SETTORE — MOVIMENTI DI AUTOMOTIVE
   Come il blocco 27 per l'alimentare: la struttura del blocco 26 non si tocca,
   qui stanno solo i movimenti che questa pagina ha in piu.

   Solo transform e opacity, un movimento per figura, e tutto si ferma con
   prefers-reduced-motion (brandbook 10).
   -------------------------------------------------------------------------- */

/* -- 28.1 Quadro: il cursore che lega le due tracce ----------------------- */

/* Undici campioni distanti 36: il cursore percorre i 360 che li separano e
   torna. Serve a dire che i due valori sotto il cursore sono lo stesso
   istante, non due istanti vicini. */
@keyframes phse-cursore-q {
	0%, 5%    { transform: translateX(0); }
	50%       { transform: translateX(360px); }
	95%, 100% { transform: translateX(0); }
}

.phv-cursore-q {
	transform-box: fill-box;
	animation: phse-cursore-q 9.6s cubic-bezier(0.4, 0, 0.4, 1) infinite;
}

/* -- 28.2 Le sei figure delle sfide -------------------------------------- */

/* 1 — la particella scende, il flusso la prende e la porta di lato:
   non si posa sulla superficie. E il motivo per cui esiste il downdraft. */
@keyframes phv-overspray {
	0%        { transform: translate(0, 0); opacity: 0; }
	14%       { opacity: 1; }
	56%       { transform: translate(4px, 30px); opacity: 1; }
	86%, 100% { transform: translate(64px, 44px); opacity: 0; }
}

.phv-overspray {
	transform-box: fill-box;
	animation: phv-overspray 5.4s cubic-bezier(0.35, 0, 0.6, 1) infinite;
}

/* 2 — il ventaglio del sensore spazza il campo e torna */
@keyframes phv-scan-a {
	0%, 6%    { transform: rotate(-15deg); }
	50%       { transform: rotate(15deg); }
	94%, 100% { transform: rotate(-15deg); }
}

.phv-scan-a {
	transform-box: view-box;
	transform-origin: 52px 52px;
	animation: phv-scan-a 7.4s cubic-bezier(0.42, 0, 0.42, 1) infinite;
}

/* 3 — la particella metallica entra nel separatore e il corto si apre */
@keyframes phv-metallo {
	0%, 8%    { transform: translateY(0); opacity: 0; }
	16%       { opacity: 1; }
	46%, 88%  { transform: translateY(50px); opacity: 1; }
	100%      { transform: translateY(50px); opacity: 0; }
}

@keyframes phv-corto {
	0%, 46%   { opacity: 0; transform: scale(0.4); }
	58%       { opacity: 0.9; transform: scale(1); }
	76%, 100% { opacity: 0; transform: scale(1.25); }
}

.phv-metallo {
	transform-box: fill-box;
	animation: phv-metallo 6s cubic-bezier(0.3, 0, 0.6, 1) infinite;
}

.phv-corto {
	transform-box: fill-box;
	transform-origin: center;
	animation: phv-corto 6s cubic-bezier(0.22, 0.61, 0.36, 1) infinite;
}

/* 4 — le cariche sulla superficie si neutralizzano una dopo l'altra */
@keyframes phv-carica-a {
	0%, 12%   { opacity: 1; transform: scale(1); }
	40%, 86%  { opacity: 0; transform: scale(0.6); }
	100%      { opacity: 1; transform: scale(1); }
}

.phv-carica-a {
	transform-box: fill-box;
	transform-origin: center;
	animation: phv-carica-a 6.6s cubic-bezier(0.22, 0.61, 0.36, 1) infinite;
}

.phv-carica-a-2 { animation-delay: 0.22s; }
.phv-carica-a-3 { animation-delay: 0.44s; }
.phv-carica-a-4 { animation-delay: 0.66s; }
.phv-carica-a-5 { animation-delay: 0.88s; }

/* 5 — il modulo scende e si inserisce fra i due tratti di linea esistenti */
@keyframes phv-modulo {
	0%, 8%    { transform: translateY(-34px); opacity: 0; }
	22%       { opacity: 1; }
	46%, 88%  { transform: translateY(0); opacity: 1; }
	100%      { transform: translateY(-34px); opacity: 0; }
}

.phv-modulo {
	transform-box: view-box;
	animation: phv-modulo 7.6s cubic-bezier(0.22, 0.61, 0.36, 1) infinite;
}

/* 6 — le celle del codice si accendono in sequenza: il pezzo prende identita */
@keyframes phv-cella {
	0%, 4%    { opacity: 0; transform: scale(0.6); }
	16%, 88%  { opacity: 1; transform: scale(1); }
	100%      { opacity: 0; transform: scale(0.6); }
}

.phv-cella {
	transform-box: fill-box;
	transform-origin: center;
	animation: phv-cella 7.2s cubic-bezier(0.22, 0.61, 0.36, 1) infinite;
}

.phv-cella-2  { animation-delay: 0.09s; }
.phv-cella-3  { animation-delay: 0.18s; }
.phv-cella-4  { animation-delay: 0.27s; }
.phv-cella-5  { animation-delay: 0.36s; }
.phv-cella-6  { animation-delay: 0.45s; }
.phv-cella-7  { animation-delay: 0.54s; }
.phv-cella-8  { animation-delay: 0.63s; }
.phv-cella-9  { animation-delay: 0.72s; }
.phv-cella-10 { animation-delay: 0.81s; }

@media (prefers-reduced-motion: reduce) {
	/* Ferme, le figure devono dire la stessa cosa: la particella in volo, il
	   ventaglio aperto, il metallo nel separatore, le cariche visibili, il
	   modulo in sede, il codice completo. */
	.phv-cursore-q, .phv-overspray, .phv-scan-a, .phv-metallo, .phv-corto,
	.phv-carica-a, .phv-modulo, .phv-cella {
		animation: none;
		transform: none;
	}

	.phv-overspray { opacity: 0.55; }
	.phv-corto { opacity: 0; }
}

/* --------------------------------------------------------------------------
   29. PAGINE SETTORE — MOVIMENTI DI BEVERAGE
   Come i blocchi 27 e 28: la struttura del blocco 26 non si tocca, qui stanno
   solo i movimenti che questa pagina ha in piu.

   Solo transform e opacity, un movimento per figura, tutto si ferma con
   prefers-reduced-motion (brandbook 10).
   -------------------------------------------------------------------------- */

/* -- 29.1 Hero: il flusso dell'isola e le bottiglie ---------------------- */

/* Stesso principio del flusso delle altre pagine: i tratti sono spaziati di 40
   e il gruppo trasla di 40, quindi il ciclo si richiude senza giunzione. Ha un
   nome proprio perche qui dentro l'isola le colonne sono piu marcate. */
@keyframes phse-flusso-b {
	from { transform: translateY(0); }
	to   { transform: translateY(40px); }
}

.phv-flusso-b {
	transform-box: view-box;
	animation: phse-flusso-b 3.6s linear infinite;
	will-change: transform;
}

/* Sei bottiglie spaziate di 64: il gruppo trasla di 64 e ricomincia. */
@keyframes phse-bottiglie {
	from { transform: translateX(0); }
	to   { transform: translateX(64px); }
}

.phv-bottiglie {
	transform-box: view-box;
	animation: phse-bottiglie 3.2s linear infinite;
	will-change: transform;
}

/* -- 29.2 Quadro: i prelievi scorrono nel tempo -------------------------- */

/* I campioni sono distanti 33: il gruppo scorre di 33 e ricomincia, cosi il
   flusso dei prelievi non ha inizio ne fine visibili. */
@keyframes phse-prelievi {
	from { transform: translateX(0); }
	to   { transform: translateX(-33px); }
}

.phv-prelievi {
	transform-box: view-box;
	animation: phse-prelievi 2.8s linear infinite;
}

/* -- 29.3 Le sei figure delle sfide -------------------------------------- */

/* 1 — i prelievi entrano da destra e restano sotto le soglie */
@keyframes phse-prelievi-s {
	from { transform: translateX(0); }
	to   { transform: translateX(-26px); }
}

.phv-prelievi-s {
	transform-box: view-box;
	animation: phse-prelievi-s 2.4s linear infinite;
}

/* 2 — la sfera di lavaggio: due serie di getti che si alternano */
@keyframes phv-getto {
	0%, 44%   { opacity: 1; }
	50%, 94%  { opacity: 0; }
	100%      { opacity: 1; }
}

.phv-getto {
	animation: phv-getto 2.6s steps(1, end) infinite;
}

.phv-getto-b {
	animation-delay: 1.3s;
}

/* 3 — il calore sale dalla macchina e la mandata lo porta via */
@keyframes phv-calore {
	0%        { transform: translateY(8px); opacity: 0; }
	22%       { opacity: 1; }
	78%, 100% { transform: translateY(-30px); opacity: 0; }
}

.phv-calore {
	transform-box: fill-box;
	animation: phv-calore 4.4s cubic-bezier(0.35, 0, 0.7, 1) infinite;
}

.phv-calore-2 { animation-delay: 0.32s; }
.phv-calore-3 { animation-delay: 0.64s; }
.phv-calore-4 { animation-delay: 0.96s; }

/* 4 — l'airlock: una porta per volta, mai due aperte insieme. E il
   principio dell'interblocco, ed e tutto quello che la figura deve dire. */
@keyframes phv-porta-a {
	0%, 8%    { transform: translateY(0); }
	20%, 40%  { transform: translateY(-54px); }
	52%, 100% { transform: translateY(0); }
}

@keyframes phv-porta-b {
	0%, 56%   { transform: translateY(0); }
	68%, 88%  { transform: translateY(-54px); }
	100%      { transform: translateY(0); }
}

.phv-porta {
	transform-box: fill-box;
}

.phv-porta-a { animation: phv-porta-a 7.2s cubic-bezier(0.22, 0.61, 0.36, 1) infinite; }
.phv-porta-b { animation: phv-porta-b 7.2s cubic-bezier(0.22, 0.61, 0.36, 1) infinite; }

/* 5 — il pannello di accesso si apre sul cardine e si richiude */
@keyframes phv-pannello {
	0%, 10%   { transform: rotateY(0deg); }
	40%, 66%  { transform: rotateY(-62deg); }
	92%, 100% { transform: rotateY(0deg); }
}

.phv-pannello {
	transform-box: view-box;
	transform-origin: 116px 66px;
	animation: phv-pannello 7.8s cubic-bezier(0.22, 0.61, 0.36, 1) infinite;
}

/* 6 — la carta scorre sotto la penna, che resta dov'e */
@keyframes phv-carta {
	from { transform: translateX(0); }
	to   { transform: translateX(-36px); }
}

.phv-carta {
	transform-box: view-box;
	animation: phv-carta 3.4s linear infinite;
}

@media (prefers-reduced-motion: reduce) {
	/* Ferme, le figure devono dire la stessa cosa: le colonne d'aria e le
	   bottiglie in posizione, i prelievi sotto le soglie, i getti visibili,
	   il calore che sale, le porte chiuse, il pannello in sede, la traccia
	   sulla carta. */
	.phv-flusso-b, .phv-bottiglie, .phv-prelievi, .phv-prelievi-s,
	.phv-getto, .phv-calore, .phv-porta, .phv-pannello, .phv-carta {
		animation: none;
		transform: none;
	}

	.phv-getto-b { opacity: 0; }
	.phv-calore { opacity: 0.6; }
}

/* --------------------------------------------------------------------------
   30. PAGINE SETTORE — MOVIMENTI DI ELETTRONICO
   La struttura del blocco 26 non si tocca: qui stanno solo i movimenti che
   questa pagina ha in piu. Solo transform e opacity, un movimento per figura,
   tutto si ferma con prefers-reduced-motion (brandbook 10).
   -------------------------------------------------------------------------- */

/* -- 30.1 Hero: il flusso e la testa di posizionamento ------------------- */

@keyframes phse-flusso-e {
	from { transform: translateY(0); }
	to   { transform: translateY(40px); }
}

.phv-flusso-e {
	transform-box: view-box;
	animation: phse-flusso-e 3.6s linear infinite;
	will-change: transform;
}

/* La testa percorre il portale e si ferma sui punti di posa: non scivola
   liscia, perche una pick-and-place non scivola liscia. */
@keyframes phse-testa {
	0%, 6%    { transform: translateX(0); }
	22%, 30%  { transform: translateX(50px); }
	46%, 54%  { transform: translateX(100px); }
	70%, 78%  { transform: translateX(150px); }
	94%, 100% { transform: translateX(0); }
}

.phv-testa {
	transform-box: view-box;
	animation: phse-testa 9.4s cubic-bezier(0.3, 0, 0.3, 1) infinite;
}

/* -- 30.2 Quadro: il livello misurato resta nella banda ----------------- */

/* Si muove appena, e sempre dentro la banda: e questo il messaggio. Un
   movimento ampio suggerirebbe un ambiente che non tiene. */
@keyframes phse-livello {
	0%, 100% { transform: translateY(0); }
	28%      { transform: translateY(-9px); }
	62%      { transform: translateY(6px); }
}

.phv-livello {
	transform-box: view-box;
	animation: phse-livello 8.6s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}

/* -- 30.3 Le sei figure delle sfide ------------------------------------- */

/* 1 — la particella cade fra due pad, e il ponte si chiude */
@keyframes phv-part-e {
	0%, 6%    { transform: translateY(0); opacity: 0; }
	14%       { opacity: 1; }
	44%, 86%  { transform: translateY(44px); opacity: 1; }
	100%      { transform: translateY(44px); opacity: 0; }
}

@keyframes phv-ponte {
	0%, 46%   { opacity: 0; transform: scaleY(0.2); }
	58%, 86%  { opacity: 1; transform: scaleY(1); }
	100%      { opacity: 0; transform: scaleY(0.2); }
}

.phv-part-e {
	transform-box: fill-box;
	animation: phv-part-e 5.8s cubic-bezier(0.3, 0, 0.6, 1) infinite;
}

.phv-ponte {
	transform-box: fill-box;
	transform-origin: bottom;
	animation: phv-ponte 5.8s cubic-bezier(0.22, 0.61, 0.36, 1) infinite;
}

/* 2 — le tre cariche scendono e si scaricano nello stesso punto */
@keyframes phv-scarico {
	0%        { transform: translate(0, 0); opacity: 0; }
	12%       { opacity: 1; }
	46%       { transform: translate(0, 14px); opacity: 1; }
	72%, 100% { transform: translate(0, 48px); opacity: 0; }
}

.phv-scarico {
	transform-box: fill-box;
	animation: phv-scarico 5.2s cubic-bezier(0.35, 0, 0.65, 1) infinite;
}

.phv-scarico-2 { animation-delay: 0.34s; }
.phv-scarico-3 { animation-delay: 0.68s; }

/* 3 — il fumo della saldatura sale e la cappa lo prende */
@keyframes phv-fumo {
	0%        { transform: translateY(10px); opacity: 0; }
	22%       { opacity: 1; }
	76%, 100% { transform: translateY(-26px); opacity: 0; }
}

.phv-fumo {
	transform-box: fill-box;
	animation: phv-fumo 4.2s cubic-bezier(0.35, 0, 0.7, 1) infinite;
}

.phv-fumo-2 { animation-delay: 0.3s; }
.phv-fumo-3 { animation-delay: 0.6s; }

/* 4 — il floor life si consuma da destra: quando finisce, si cuoce */
@keyframes phv-vita {
	0%, 8%    { opacity: 1; transform: scaleX(1); }
	46%, 90%  { opacity: 0; transform: scaleX(0.2); }
	100%      { opacity: 1; transform: scaleX(1); }
}

.phv-vita {
	transform-box: fill-box;
	transform-origin: right center;
	animation: phv-vita 8s cubic-bezier(0.22, 0.61, 0.36, 1) infinite;
}

.phv-vita-8 { animation-delay: 0s; }
.phv-vita-7 { animation-delay: 0.24s; }
.phv-vita-6 { animation-delay: 0.48s; }
.phv-vita-5 { animation-delay: 0.72s; }
.phv-vita-4 { animation-delay: 0.96s; }
.phv-vita-3 { animation-delay: 1.20s; }
.phv-vita-2 { animation-delay: 1.44s; }
.phv-vita-1 { animation-delay: 1.68s; }

/* 5 — il pezzo percorre il profilo di rifusione, zona per zona */
@keyframes phv-forno {
	0%, 4%    { transform: translate(0, 0); }
	22%       { transform: translate(30px, -22px); }
	38%       { transform: translate(70px, -28px); }
	54%       { transform: translate(100px, -54px); }
	64%       { transform: translate(126px, -50px); }
	80%       { transform: translate(154px, -22px); }
	94%, 100% { transform: translate(190px, -2px); }
}

.phv-forno {
	transform-box: fill-box;
	animation: phv-forno 9.8s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}

/* 6 — le bande dello spettro si alzano: la resa cromatica e piena */
@keyframes phv-banda {
	0%, 6%    { transform: scaleY(0.12); }
	34%, 88%  { transform: scaleY(1); }
	100%      { transform: scaleY(0.12); }
}

.phv-banda {
	transform-box: fill-box;
	transform-origin: bottom;
	animation: phv-banda 6.6s cubic-bezier(0.22, 0.61, 0.36, 1) infinite;
}

.phv-banda-2 { animation-delay: 0.08s; }
.phv-banda-3 { animation-delay: 0.16s; }
.phv-banda-4 { animation-delay: 0.24s; }
.phv-banda-5 { animation-delay: 0.32s; }
.phv-banda-6 { animation-delay: 0.40s; }
.phv-banda-7 { animation-delay: 0.48s; }
.phv-banda-8 { animation-delay: 0.56s; }
.phv-banda-9 { animation-delay: 0.64s; }

@media (prefers-reduced-motion: reduce) {
	/* Ferme, le figure devono dire la stessa cosa: il livello nella banda, la
	   particella sui pad, le cariche in discesa, il fumo nella cappa, il floor
	   life pieno, il pezzo a inizio profilo, lo spettro completo. */
	.phv-flusso-e, .phv-testa, .phv-livello, .phv-part-e, .phv-ponte,
	.phv-scarico, .phv-fumo, .phv-vita, .phv-forno, .phv-banda {
		animation: none;
		transform: none;
	}

	.phv-ponte { opacity: 0; }
	.phv-part-e, .phv-scarico, .phv-fumo { opacity: 0.55; }
}

/* --------------------------------------------------------------------------
   31. PAGINE SETTORE — MOVIMENTI DI FARMACEUTICO
   La struttura del blocco 26 non si tocca. Solo transform e opacity, un
   movimento per figura, tutto si ferma con prefers-reduced-motion.
   -------------------------------------------------------------------------- */

/* -- 31.1 Hero: il flusso dentro l'isolatore e le fiale ------------------ */

@keyframes phse-flusso-f {
	from { transform: translateY(0); }
	to   { transform: translateY(40px); }
}

.phv-flusso-f {
	transform-box: view-box;
	animation: phse-flusso-f 3.6s linear infinite;
	will-change: transform;
}

/* Sette fiale spaziate di 32: il gruppo trasla di 32 e ricomincia. */
@keyframes phse-fiale {
	from { transform: translateX(0); }
	to   { transform: translateX(32px); }
}

.phv-fiale {
	transform-box: view-box;
	animation: phse-fiale 3.4s linear infinite;
}

/* -- 31.2 Quadro: le frecce escono dall'interno verso l'esterno --------- */

/* L'ordine conta: parte quella della Classe A, poi B, poi C, poi D. La
   cascata non e un equilibrio, e una direzione. */
@keyframes phse-uscita {
	0%, 6%    { opacity: 0; transform: translateY(6px); }
	18%, 44%  { opacity: 1; transform: translateY(0); }
	62%, 100% { opacity: 0; transform: translateY(-6px); }
}

.phv-uscita {
	transform-box: view-box;
	animation: phse-uscita 6.8s cubic-bezier(0.22, 0.61, 0.36, 1) infinite;
}

.phv-uscita-1 { animation-delay: 0s; }
.phv-uscita-2 { animation-delay: 0.42s; }
.phv-uscita-3 { animation-delay: 0.84s; }
.phv-uscita-4 { animation-delay: 1.26s; }

/* -- 31.3 Le sei figure delle sfide ------------------------------------- */

/* 1 — la CCS gira: analisi, barriera, monitoraggio, riesame, e si ricomincia */
@keyframes phv-giro {
	0%, 4%    { transform: translate(0, 0); }
	22%, 26%  { transform: translate(108px, 0); }
	44%, 48%  { transform: translate(108px, 44px); }
	66%, 70%  { transform: translate(0, 44px); }
	92%, 100% { transform: translate(0, 0); }
}

.phv-giro {
	transform-box: view-box;
	animation: phv-giro 9.6s cubic-bezier(0.3, 0, 0.3, 1) infinite;
}

/* 2 — il VHP riempie l'isolatore, decontamina, e si scarica */
@keyframes phv-vhp {
	0%, 8%    { opacity: 0; }
	26%, 62%  { opacity: 1; }
	84%, 100% { opacity: 0; }
}

.phv-vhp {
	animation: phv-vhp 7.4s cubic-bezier(0.22, 0.61, 0.36, 1) infinite;
}

/* 3 — at rest la stanza e quieta, in operation il particolato compare:
   sono due stati dello stesso locale, e hanno due limiti diversi. */
@keyframes phv-stato-a {
	0%, 100% { opacity: 0.32; }
}

@keyframes phv-stato-b {
	0%, 14%   { opacity: 0; transform: scale(0.5); }
	34%, 78%  { opacity: 1; transform: scale(1); }
	96%, 100% { opacity: 0; transform: scale(0.5); }
}

.phv-stato {
	transform-box: fill-box;
	transform-origin: center;
}

.phv-stato-a { animation: phv-stato-a 6s linear infinite; }
.phv-stato-b { animation: phv-stato-b 6s cubic-bezier(0.22, 0.61, 0.36, 1) infinite; }

.phv-stato-b:nth-of-type(5) { animation-delay: 0.12s; }
.phv-stato-b:nth-of-type(6) { animation-delay: 0.24s; }
.phv-stato-b:nth-of-type(7) { animation-delay: 0.36s; }
.phv-stato-b:nth-of-type(8) { animation-delay: 0.48s; }
.phv-stato-b:nth-of-type(9) { animation-delay: 0.60s; }

/* 4 — i filetti di fumo scendono e girano attorno all'ostacolo: e proprio
   quel giro che lo smoke study serve a vedere. */
@keyframes phv-filetti {
	from { transform: translateY(0); opacity: 1; }
	to   { transform: translateY(4px); opacity: 0.55; }
}

.phv-filetti {
	transform-box: view-box;
	animation: phv-filetti 2.4s ease-in-out infinite alternate;
}

/* 5 — tre percorsi, tre andature, e non si incrociano mai */
@keyframes phv-percorso {
	0%        { transform: translateX(0); opacity: 0; }
	10%       { opacity: 1; }
	84%       { transform: translateX(188px); opacity: 1; }
	94%, 100% { transform: translateX(188px); opacity: 0; }
}

.phv-percorso {
	transform-box: fill-box;
	animation: phv-percorso 6.4s cubic-bezier(0.35, 0, 0.65, 1) infinite;
}

.phv-percorso-2 { animation-delay: 0.7s; animation-duration: 7.2s; }
.phv-percorso-3 { animation-delay: 1.4s; animation-duration: 8s; }

/* 6 — i record si aggiungono in coda e non si riscrivono mai */
@keyframes phv-record {
	0%, 6%    { opacity: 0; transform: scaleX(0.1); }
	20%, 88%  { opacity: 1; transform: scaleX(1); }
	100%      { opacity: 0; transform: scaleX(0.1); }
}

.phv-record {
	transform-box: fill-box;
	transform-origin: left center;
	animation: phv-record 7.6s cubic-bezier(0.22, 0.61, 0.36, 1) infinite;
}

.phv-record-2 { animation-delay: 0.34s; }
.phv-record-3 { animation-delay: 0.68s; }
.phv-record-4 { animation-delay: 1.02s; }

@media (prefers-reduced-motion: reduce) {
	/* Ferme, le figure devono dire la stessa cosa: il flusso e le fiale in
	   posizione, le frecce visibili, il ciclo al primo nodo, l'isolatore
	   decontaminato, i due stati distinti, i filetti fermi, i percorsi in
	   partenza, i record scritti. */
	.phv-flusso-f, .phv-fiale, .phv-uscita, .phv-giro, .phv-vhp,
	.phv-stato, .phv-filetti, .phv-percorso, .phv-record {
		animation: none;
		transform: none;
	}

	.phv-vhp { opacity: 0.5; }
	.phv-stato-a { opacity: 0.32; }
	.phv-percorso { opacity: 0.6; }
}

/* --------------------------------------------------------------------------
   32. PAGINE SETTORE — MOVIMENTI DI FIBRE COMPOSITE
   La struttura del blocco 26 non si tocca. Solo transform e opacity, un
   movimento per figura, tutto si ferma con prefers-reduced-motion.
   -------------------------------------------------------------------------- */

/* -- 32.1 Hero: il flusso e lo strato che si posa ------------------------ */

@keyframes phse-flusso-fb {
	from { transform: translateY(0); }
	to   { transform: translateY(40px); }
}

.phv-flusso-fb {
	transform-box: view-box;
	animation: phse-flusso-fb 3.6s linear infinite;
	will-change: transform;
}

/* Lo strato scende sullo stampo, si appoggia e resta li un momento prima di
   ricominciare: e il tempo del lay-up, non quello di una caduta. */
@keyframes phse-posa {
	0%        { transform: translateY(-46px); opacity: 0; }
	14%       { opacity: 1; }
	58%, 84%  { transform: translateY(0); opacity: 1; }
	100%      { transform: translateY(0); opacity: 0; }
}

.phv-posa {
	transform-box: view-box;
	animation: phse-posa 7.2s cubic-bezier(0.22, 0.61, 0.36, 1) infinite;
}

/* -- 32.2 Quadro: la particella entra e apre la delaminazione ------------ */

/* La trama non si muove: un tessuto sta fermo. Si muove il difetto, che e
   l'argomento del quadro. */
@keyframes phse-difetto {
	0%, 6%    { transform: translateY(-26px); opacity: 0; }
	18%       { opacity: 1; }
	44%, 82%  { transform: translateY(0); opacity: 1; }
	100%      { transform: translateY(0); opacity: 0; }
}

.phv-difetto {
	transform-box: view-box;
	animation: phse-difetto 8.4s cubic-bezier(0.3, 0, 0.4, 1) infinite;
}

@keyframes phse-delam {
	0%, 44%   { opacity: 0; }
	58%, 82%  { opacity: 1; }
	100%      { opacity: 0; }
}

.phv-delam {
	animation: phse-delam 8.4s cubic-bezier(0.22, 0.61, 0.36, 1) infinite;
}

/* -- 32.3 Le sei figure delle sfide -------------------------------------- */

/* 1 — la particella scende ma non arriva sul banco: il flusso la porta alla
   ripresa, ed e per questo che il flusso sta sopra il lay-up */
@keyframes phv-devia {
	0%        { transform: translate(0, 0); opacity: 0; }
	12%       { opacity: 1; }
	54%       { transform: translate(-14px, 30px); opacity: 1; }
	86%, 100% { transform: translate(-86px, 52px); opacity: 0; }
}

.phv-devia {
	transform-box: fill-box;
	animation: phv-devia 6.2s cubic-bezier(0.35, 0, 0.65, 1) infinite;
}

/* 2 — lo strato si conforma allo stampo: e questo che il tack vuol dire */
@keyframes phv-drappo {
	0%, 8%    { transform: translateY(-16px); opacity: 0; }
	22%       { opacity: 1; }
	62%, 88%  { transform: translateY(0); opacity: 1; }
	100%      { transform: translateY(0); opacity: 0; }
}

.phv-drappo {
	transform-box: view-box;
	animation: phv-drappo 6.6s cubic-bezier(0.22, 0.61, 0.36, 1) infinite;
}

/* 3 — due frecce, una per verso, alternate: si toglie umidita e si aggiunge,
   e il punto e che servono tutte e due */
@keyframes phv-igro-a {
	0%, 6%    { transform: translateX(-8px); opacity: 0; }
	20%, 40%  { transform: translateX(0); opacity: 1; }
	54%, 100% { transform: translateX(6px); opacity: 0; }
}

@keyframes phv-igro-b {
	0%, 50%   { transform: translateX(8px); opacity: 0; }
	64%, 84%  { transform: translateX(0); opacity: 1; }
	96%, 100% { transform: translateX(-6px); opacity: 0; }
}

.phv-igro { transform-box: view-box; }
.phv-igro-a { animation: phv-igro-a 6.8s cubic-bezier(0.22, 0.61, 0.36, 1) infinite; }
.phv-igro-b { animation: phv-igro-b 6.8s cubic-bezier(0.22, 0.61, 0.36, 1) infinite; }

/* 4 — il carrello porta lo stampo verso il portone e torna a prenderne un
   altro: e il motivo per cui la sala ha quelle dimensioni */
@keyframes phv-carro {
	0%, 8%    { transform: translateX(0); }
	46%, 62%  { transform: translateX(112px); }
	96%, 100% { transform: translateX(0); }
}

.phv-carro {
	transform-box: view-box;
	animation: phv-carro 10.4s cubic-bezier(0.4, 0, 0.4, 1) infinite;
}

/* 5 — i vapori salgono e la cappa li prende prima che si spandano */
@keyframes phv-vapore {
	0%        { transform: translateY(6px); opacity: 0; }
	26%       { opacity: 1; }
	78%, 100% { transform: translateY(-26px); opacity: 0; }
}

.phv-vapore {
	transform-box: fill-box;
	animation: phv-vapore 4.4s cubic-bezier(0.35, 0, 0.7, 1) infinite;
}

.phv-vapore-2 { animation-delay: 0.36s; }
.phv-vapore-3 { animation-delay: 0.72s; }

/* 6 — il cursore percorre il ciclo: rampa, sosta, discesa. E l'unica figura
   del sito con un asse dei tempi vero, e si muove come si legge un grafico. */
@keyframes phv-ciclo {
	0%, 4%    { transform: translateX(0); opacity: 1; }
	92%       { transform: translateX(184px); opacity: 1; }
	97%, 100% { transform: translateX(184px); opacity: 0; }
}

.phv-ciclo {
	transform-box: view-box;
	animation: phv-ciclo 9.2s linear infinite;
}

@media (prefers-reduced-motion: reduce) {
	/* Ferme, le figure devono dire la stessa cosa: lo strato posato, la
	   particella dentro il laminato con la delaminazione aperta, la particella
	   deviata a meta corsa, lo strato conformato, le frecce a segno, il
	   carrello in partenza, i vapori nella cappa, il cursore a inizio ciclo. */
	.phv-flusso-fb, .phv-posa, .phv-difetto, .phv-delam, .phv-devia,
	.phv-drappo, .phv-igro, .phv-carro, .phv-vapore, .phv-ciclo {
		animation: none;
		transform: none;
	}

	.phv-devia, .phv-vapore { opacity: 0.55; }
}

/* --------------------------------------------------------------------------
   33. PAGINE SETTORE — MOVIMENTI DI MECCANICA
   La struttura del blocco 26 non si tocca. Solo transform e opacity, un
   movimento per figura, tutto si ferma con prefers-reduced-motion.
   -------------------------------------------------------------------------- */

/* -- 33.1 Hero: il flusso nei due locali --------------------------------- */

@keyframes phse-flusso-mc {
	from { transform: translateY(0); }
	to   { transform: translateY(40px); }
}

.phv-flusso-mc {
	transform-box: view-box;
	animation: phse-flusso-mc 3.6s linear infinite;
	will-change: transform;
}

/* -- 33.2 Quadro: il tastatore percorre la superficie -------------------- */

/* Si muove solo in X, e la superficie sotto e piana davvero: cosi il movimento
   non promette una precisione che il disegno non ha. Una pausa a fine corsa,
   poi il ritorno rapido: e il ciclo di una scansione, non un pendolo. */
@keyframes phse-tastatore {
	0%, 4%    { transform: translateX(0); }
	78%, 90%  { transform: translateX(392px); }
	100%      { transform: translateX(0); }
}

.phv-tastatore,
.phv-cursore-m {
	transform-box: view-box;
	animation: phse-tastatore 10.4s cubic-bezier(0.45, 0, 0.55, 1) infinite;
}

/* -- 33.3 Le sei figure delle sfide -------------------------------------- */

/* 1 — il pezzo cresce fra due riferimenti che non si muovono. L'origine e a
   sinistra perche il pezzo e in battuta: cresce da una parte sola. */
@keyframes phv-dilata {
	0%, 10%   { transform: scaleX(1); }
	48%, 62%  { transform: scaleX(1.06); }
	96%, 100% { transform: scaleX(1); }
}

.phv-dilata {
	transform-box: fill-box;
	transform-origin: left center;
	animation: phv-dilata 7.4s cubic-bezier(0.4, 0, 0.5, 1) infinite;
}

/* 2 — l'onda risale il terreno e sotto le molle si spegne: e tutto quello
   che l'isolamento vibrazionale deve fare */
@keyframes phv-onda {
	0%        { transform: translateX(0); opacity: 0; }
	18%       { opacity: 1; }
	62%       { transform: translateX(72px); opacity: 0.7; }
	88%, 100% { transform: translateX(104px); opacity: 0; }
}

.phv-onda {
	transform-box: view-box;
	animation: phv-onda 5.6s cubic-bezier(0.3, 0, 0.6, 1) infinite;
}

/* 3 — i trucioli partono dal tagliente e finiscono nella bocchetta */
@keyframes phv-truciolo {
	0%        { transform: translate(0, 0) rotate(0deg); opacity: 0; }
	16%       { opacity: 1; }
	72%, 100% { transform: translate(30px, -14px) rotate(52deg); opacity: 0; }
}

.phv-truciolo {
	transform-box: fill-box;
	animation: phv-truciolo 3.8s cubic-bezier(0.25, 0, 0.6, 1) infinite;
}

.phv-truciolo-2 { animation-delay: 0.42s; }
.phv-truciolo-3 { animation-delay: 0.84s; }

/* 4 — sette misure una dopo l'altra, e cadono tutte nella stessa finestra:
   ripetibile vuol dire questo, non "giusta" */
@keyframes phv-ripeti {
	0%, 4%    { opacity: 0; transform: scale(0.4); }
	12%, 84%  { opacity: 1; transform: scale(1); }
	96%, 100% { opacity: 0; transform: scale(0.4); }
}

.phv-ripeti {
	transform-box: fill-box;
	transform-origin: center;
	animation: phv-ripeti 8.4s cubic-bezier(0.22, 0.61, 0.36, 1) infinite;
}

.phv-ripeti-2 { animation-delay: 0.34s; }
.phv-ripeti-3 { animation-delay: 0.68s; }
.phv-ripeti-4 { animation-delay: 1.02s; }
.phv-ripeti-5 { animation-delay: 1.36s; }
.phv-ripeti-6 { animation-delay: 1.70s; }
.phv-ripeti-7 { animation-delay: 2.04s; }

/* 5 — la velatura si posa sull'ottica e se ne va: e quello che l'umidita
   controllata evita di far succedere */
@keyframes phv-appanna {
	0%, 12%   { opacity: 0; }
	38%, 56%  { opacity: 1; }
	84%, 100% { opacity: 0; }
}

.phv-appanna {
	animation: phv-appanna 7s cubic-bezier(0.22, 0.61, 0.36, 1) infinite;
}

/* 6 — il servizio corre nel cunicolo e sale alla macchina da un passaggio
   che resta a tenuta */
@keyframes phv-servizio {
	0%, 4%    { transform: translateX(0); opacity: 1; }
	68%, 78%  { transform: translateX(78px); opacity: 1; }
	90%, 100% { transform: translateX(78px); opacity: 0; }
}

.phv-servizio {
	transform-box: fill-box;
	animation: phv-servizio 6.8s cubic-bezier(0.4, 0, 0.5, 1) infinite;
}

@media (prefers-reduced-motion: reduce) {
	/* Ferme, le figure devono dire la stessa cosa: il tastatore a inizio
	   corsa, il pezzo alla quota nominale, l'onda gia spenta, i trucioli in
	   volo, le misure tutte visibili nella finestra, l'ottica pulita, il
	   servizio in cammino. */
	.phv-flusso-mc, .phv-tastatore, .phv-cursore-m, .phv-dilata, .phv-onda,
	.phv-truciolo, .phv-ripeti, .phv-appanna, .phv-servizio {
		animation: none;
		transform: none;
	}

	.phv-onda, .phv-truciolo { opacity: 0.5; }
	.phv-appanna { opacity: 0; }
}

/* --------------------------------------------------------------------------
   34. PAGINE SETTORE — MOVIMENTI DI MEDICALE
   La struttura del blocco 26 non si tocca. Solo transform e opacity, un
   movimento per figura, tutto si ferma con prefers-reduced-motion.
   -------------------------------------------------------------------------- */

/* -- 34.1 Hero: il flusso sotto la cappa e il piatto che salda ----------- */

@keyframes phse-flusso-md {
	from { transform: translateY(0); }
	to   { transform: translateY(40px); }
}

.phv-flusso-md {
	transform-box: view-box;
	animation: phse-flusso-md 3.6s linear infinite;
	will-change: transform;
}

/* Il piatto scende, resta giu il tempo della saldatura e risale: e quel
   momento a chiudere la barriera sterile, e da li in poi la classe della
   stanza non protegge piu niente. */
@keyframes phse-piatto {
	0%, 10%   { transform: translateY(0); }
	34%, 62%  { transform: translateY(36px); }
	88%, 100% { transform: translateY(0); }
}

.phv-piatto {
	transform-box: view-box;
	animation: phse-piatto 6.4s cubic-bezier(0.4, 0, 0.4, 1) infinite;
}

/* -- 34.2 Quadro: il dispositivo percorre la catena ---------------------- */

/* Si ferma su ogni anello: la catena non e un nastro che scorre, e una
   sequenza di stati, e ognuno ha la sua classe. */
@keyframes phse-viaggio {
	0%, 8%    { transform: translateX(0); opacity: 1; }
	22%, 34%  { transform: translateX(108px); }
	48%, 60%  { transform: translateX(216px); }
	74%, 92%  { transform: translateX(321px); opacity: 1; }
	100%      { transform: translateX(321px); opacity: 0; }
}

.phv-viaggio {
	transform-box: view-box;
	animation: phse-viaggio 9.6s cubic-bezier(0.35, 0, 0.35, 1) infinite;
}

/* -- 34.3 Le sei figure delle sfide -------------------------------------- */

/* 1 — nell'angolo vivo la particella si ferma e resta; sullo sguscio scende
   e se ne va. E tutta qui la ragione del raccordo arrotondato. */
@keyframes phv-annida {
	0%, 8%    { transform: translateY(-38px); opacity: 0; }
	20%       { opacity: 1; }
	46%, 100% { transform: translateY(0); opacity: 1; }
}

@keyframes phv-scivola {
	0%, 6%    { transform: translate(0, 0); opacity: 0; }
	18%       { opacity: 1; }
	52%       { transform: translate(4px, 34px); opacity: 1; }
	84%, 100% { transform: translate(58px, 44px); opacity: 0; }
}

.phv-annida,
.phv-scivola {
	transform-box: fill-box;
	animation: phv-annida 6.8s cubic-bezier(0.3, 0, 0.5, 1) infinite;
}

.phv-scivola {
	animation-name: phv-scivola;
	animation-timing-function: cubic-bezier(0.3, 0, 0.6, 1);
}

/* 2 — i grani passano nel condotto e le due tacche si alzano: la soglia da
   0,5 conta tutto, quella da 5 solo i grossi */
@keyframes phv-grano {
	0%        { transform: translateY(-26px); opacity: 0; }
	18%       { opacity: 1; }
	72%, 100% { transform: translateY(30px); opacity: 0; }
}

.phv-grano {
	transform-box: fill-box;
	animation: phv-grano 4.2s cubic-bezier(0.35, 0, 0.65, 1) infinite;
}

.phv-grano-2 { animation-delay: 0.5s; }
.phv-grano-3 { animation-delay: 1.1s; }

@keyframes phv-tacca {
	0%, 10%   { transform: scaleX(0.08); }
	52%, 88%  { transform: scaleX(1); }
	100%      { transform: scaleX(0.08); }
}

.phv-tacca {
	transform-box: fill-box;
	transform-origin: left center;
	animation: phv-tacca 4.2s cubic-bezier(0.22, 0.61, 0.36, 1) infinite;
}

.phv-tacca-2 { animation-duration: 8.4s; }

/* 3 — il perossido passa sopra il pannello e se ne va: la superficie e la
   stessa di prima, ed e questo che «compatibile con il VHP» vuol dire */
@keyframes phv-vhp-m {
	0%, 8%    { transform: translateX(-26px); opacity: 0; }
	24%, 62%  { transform: translateX(0); opacity: 1; }
	88%, 100% { transform: translateX(26px); opacity: 0; }
}

.phv-vhp-m {
	transform-box: fill-box;
	animation: phv-vhp-m 7.2s cubic-bezier(0.22, 0.61, 0.36, 1) infinite;
}

/* 4 — il codice lascia il dispositivo e finisce nel registro, dove resta */
@keyframes phv-udi {
	0%, 10%   { transform: translate(0, 0); opacity: 0; }
	22%       { opacity: 1; }
	62%, 84%  { transform: translate(70px, -12px); opacity: 1; }
	100%      { transform: translate(70px, -12px); opacity: 0; }
}

.phv-udi {
	transform-box: view-box;
	animation: phv-udi 7.6s cubic-bezier(0.22, 0.61, 0.36, 1) infinite;
}

/* 5 — il pezzo scende sul cordolo e resta li: la colla prende solo dentro
   la sua finestra di temperatura e umidita */
@keyframes phv-incolla {
	0%, 12%   { transform: translateY(0); }
	46%, 88%  { transform: translateY(20px); }
	100%      { transform: translateY(0); }
}

.phv-incolla {
	transform-box: view-box;
	animation: phv-incolla 6.6s cubic-bezier(0.4, 0, 0.4, 1) infinite;
}

/* 6 — tre cornici si posano sulla stessa sala, una dopo l'altra: MDR, FDA e
   ISO 13485 non chiedono tre stanze, chiedono che quella li vada bene per
   tutte e tre */
@keyframes phv-cornice {
	0%, 6%    { transform: scale(1.14); opacity: 0; }
	26%, 78%  { transform: scale(1); opacity: 1; }
	96%, 100% { transform: scale(1.14); opacity: 0; }
}

.phv-cornice {
	transform-box: fill-box;
	transform-origin: center;
	animation: phv-cornice 7.8s cubic-bezier(0.22, 0.61, 0.36, 1) infinite;
}

.phv-cornice-2 { animation-delay: 0.45s; }
.phv-cornice-3 { animation-delay: 0.90s; }

@media (prefers-reduced-motion: reduce) {
	/* Ferme, le figure devono dire la stessa cosa: il piatto alzato, il
	   dispositivo al primo anello, la particella nell'angolo, le tacche
	   contate, il perossido sul pannello, il codice nel registro, il pezzo
	   incollato, le tre cornici a posto. */
	.phv-flusso-md, .phv-piatto, .phv-viaggio, .phv-annida, .phv-scivola,
	.phv-grano, .phv-tacca, .phv-vhp-m, .phv-udi, .phv-incolla, .phv-cornice {
		animation: none;
		transform: none;
	}

	.phv-scivola, .phv-grano { opacity: 0.5; }
	.phv-vhp-m { opacity: 0.6; }
}

/* --------------------------------------------------------------------------
   35. PAGINE SETTORE — MOVIMENTI DI SEMICONDUTTORI
   La struttura del blocco 26 non si tocca. Solo transform e opacity, un
   movimento per figura, tutto si ferma con prefers-reduced-motion.
   -------------------------------------------------------------------------- */

/* -- 35.1 Hero: il flusso su tutta la pianta ----------------------------- */

@keyframes phse-flusso-sm {
	from { transform: translateY(0); }
	to   { transform: translateY(40px); }
}

.phv-flusso-sm {
	transform-box: view-box;
	animation: phse-flusso-sm 3.6s linear infinite;
	will-change: transform;
}

/* -- 35.2 Quadro: la particella cade e il die si perde ------------------- */

/* Cade una particella sola, e basta quella. Il die non lampeggia: si perde e
   resta perso fino al giro dopo — un difetto non si accende e si spegne. */
@keyframes phse-granello {
	0%, 6%    { transform: translateY(-64px); opacity: 0; }
	16%       { opacity: 1; }
	40%, 88%  { transform: translateY(0); opacity: 1; }
	100%      { transform: translateY(0); opacity: 0; }
}

.phv-granello {
	transform-box: view-box;
	animation: phse-granello 9.2s cubic-bezier(0.3, 0, 0.4, 1) infinite;
}

@keyframes phse-perso {
	0%, 38%   { opacity: 0; }
	52%, 88%  { opacity: 1; }
	100%      { opacity: 0; }
}

.phv-perso {
	animation: phse-perso 9.2s cubic-bezier(0.22, 0.61, 0.36, 1) infinite;
}

/* -- 35.3 Le sei figure delle sfide -------------------------------------- */

/* 1 — i grani arrivano sul pacco filtrante e li si fermano. A destra non
   esce niente, ed e questo che 99,9995 % a 0,12 micrometri vuol dire. */
@keyframes phv-entra {
	0%        { transform: translateX(-14px); opacity: 0; }
	18%       { opacity: 1; }
	62%, 74%  { transform: translateX(68px); opacity: 1; }
	86%, 100% { transform: translateX(68px); opacity: 0; }
}

.phv-entra {
	transform-box: fill-box;
	animation: phv-entra 5.4s cubic-bezier(0.35, 0, 0.7, 1) infinite;
}

.phv-entra-2 { animation-delay: 0.4s; }
.phv-entra-3 { animation-delay: 0.8s; }
.phv-entra-4 { animation-delay: 1.2s; }

/* 2 — la copia fuori registro si sovrappone e poi rientra: e quello che
   succede all'immagine quando la sala si sposta di un decimo di grado */
@keyframes phv-registro {
	0%, 8%    { transform: translate(3px, 0); opacity: 1; }
	54%, 82%  { transform: translate(0, 0); opacity: 0; }
	96%, 100% { transform: translate(3px, 0); opacity: 1; }
}

.phv-registro {
	transform-box: view-box;
	animation: phv-registro 6.4s cubic-bezier(0.22, 0.61, 0.36, 1) infinite;
}

/* 3 — qui si muove il terreno, non la macchina: e l'opposto della figura
   delle molle in meccanica, e dice l'isolamento attivo */
@keyframes phv-suolo {
	0%, 100% { transform: translateX(0); }
	26%      { transform: translateX(5px); }
	62%      { transform: translateX(-4px); }
}

.phv-suolo {
	transform-box: view-box;
	animation: phv-suolo 4.8s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}

/* 4 — le molecole attraversano dove un filtro per particelle non le
   fermerebbe, e si fermano sul letto chimisorbente */
@keyframes phv-molecola {
	0%        { transform: translateX(0); opacity: 0; }
	20%       { opacity: 1; }
	66%, 78%  { transform: translateX(74px); opacity: 1; }
	90%, 100% { transform: translateX(74px); opacity: 0; }
}

.phv-molecola {
	transform-box: fill-box;
	animation: phv-molecola 6s cubic-bezier(0.35, 0, 0.7, 1) infinite;
}

.phv-molecola-2 { animation-delay: 0.55s; }
.phv-molecola-3 { animation-delay: 1.1s; }

/* 5 — ogni carica scende alla stessa terra, una dopo l'altra */
@keyframes phv-carica-s {
	0%, 6%    { transform: translate(0, 0); opacity: 0; }
	16%       { opacity: 1; }
	58%       { transform: translate(0, 14px); opacity: 1; }
	84%, 100% { transform: translate(0, 34px); opacity: 0; }
}

.phv-carica-s {
	transform-box: fill-box;
	animation: phv-carica-s 5.6s cubic-bezier(0.35, 0, 0.65, 1) infinite;
}

.phv-carica-s-2 { animation-delay: 0.42s; }
.phv-carica-s-3 { animation-delay: 0.84s; }

/* 6 — il gas percorre la tubazione fino all'analizzatore: la purezza si
   dichiara al punto d'uso, non alla bombola */
@keyframes phv-gas {
	0%, 4%    { transform: translateX(0); opacity: 1; }
	80%, 90%  { transform: translateX(166px); opacity: 1; }
	100%      { transform: translateX(166px); opacity: 0; }
}

.phv-gas {
	transform-box: fill-box;
	animation: phv-gas 7.4s cubic-bezier(0.4, 0, 0.5, 1) infinite;
}

@media (prefers-reduced-motion: reduce) {
	/* Ferme, le figure devono dire la stessa cosa: il die perso con la sua
	   particella sopra, i grani fermi sul filtro, l'immagine a registro, il
	   terreno alla quota zero, le molecole in cammino, le cariche a terra,
	   il gas in linea. */
	.phv-flusso-sm, .phv-granello, .phv-perso, .phv-entra, .phv-registro,
	.phv-suolo, .phv-molecola, .phv-carica-s, .phv-gas {
		animation: none;
		transform: none;
	}

	.phv-perso { opacity: 1; }
	.phv-registro { opacity: 0; }
	.phv-entra, .phv-molecola, .phv-carica-s { opacity: 0.55; }
}

/* --------------------------------------------------------------------------
   36. PAGINA INDICE DEI SETTORI
   Un solo componente nuovo — il grigliato delle dieci schede cliccabili — piu
   i due movimenti delle sue figure. La struttura del blocco 26 non si tocca:
   tutto il resto della pagina usa i componenti che gia esistono.
   -------------------------------------------------------------------------- */

/* -- 36.1 Il grigliato delle dieci schede -------------------------------- */

/* Dieci schede: cinque per riga stanno in due righe piene, due per riga in
   cinque. Il tre non si usa mai, perche lascerebbe una scheda orfana. */
html body .phse .phse-settori {
	display: grid;
	grid-template-columns: repeat(5, minmax(0, 1fr));
	gap: 18px;
	margin: clamp(30px, 3vw, 44px) 0 0;
	padding: 0;
	list-style: none;
}

html body .phse .phse-settori > li {
	display: flex;
	margin: 0;
	padding: 0;
	list-style: none;
	min-width: 0;
}

/* Tutta la scheda e il link: il bersaglio e la scheda, non il titolo. */
.phse-settori-card {
	display: flex;
	flex-direction: column;
	flex: 1 1 auto;
	gap: 12px;
	padding: 20px 18px 16px;
	background: var(--ph-bianco);
	border: 1px solid rgba(16, 41, 75, 0.10);
	border-radius: 14px;
	text-decoration: none;
	color: inherit;
	transition: transform 260ms cubic-bezier(0.22, 0.61, 0.36, 1),
	            border-color 260ms cubic-bezier(0.22, 0.61, 0.36, 1),
	            box-shadow 260ms cubic-bezier(0.22, 0.61, 0.36, 1);
}

.phse-settori-ico {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 48px;
	height: 48px;
	flex: 0 0 48px;
	border-radius: 12px;
	background: rgba(40, 90, 166, 0.09);
	color: var(--ph-blu);
	transition: background-color 260ms cubic-bezier(0.22, 0.61, 0.36, 1);
}

.phse-settori-ico svg {
	display: block;
	width: 26px;
	height: 26px;
}

html body .phse .phse-settori-card h3 {
	margin: 0;
	font-family: var(--ph-display), sans-serif;
	font-size: 1.0625rem !important;
	line-height: 1.28 !important;
	font-weight: 600 !important;
	letter-spacing: -0.01em;
	color: var(--ph-fondo) !important;
}

.phse-settori-card p {
	margin: -4px 0 0;
	font-size: 0.875rem;
	line-height: 1.5;
	color: var(--ph-grigio);
}

/* La riga in fondo si appoggia al bordo inferiore anche quando i testi sopra
   hanno altezze diverse: e l'unico modo perche le dieci schede si allineino. */
.phse-settori-piede {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 10px;
	margin-top: auto;
	padding-top: 6px;
	font-family: var(--ph-text), sans-serif;
	font-size: 0.75rem;
	font-weight: 500;
	letter-spacing: 0.02em;
	color: var(--ph-blu);
}

.phse-settori-piede svg {
	flex: 0 0 auto;
	transition: transform 260ms cubic-bezier(0.22, 0.61, 0.36, 1);
}

/* Movimento impercettibile: due pixel di sollevamento, il bordo che prende
   colore, la freccia che accenna. Niente di piu. */
.phse-settori-card:hover,
.phse-settori-card:focus-visible {
	transform: translateY(-2px);
	border-color: rgba(40, 90, 166, 0.26);
	box-shadow: 0 10px 26px rgba(16, 41, 75, 0.08);
}

.phse-settori-card:hover .phse-settori-ico,
.phse-settori-card:focus-visible .phse-settori-ico {
	background: rgba(40, 90, 166, 0.15);
}

.phse-settori-card:hover .phse-settori-piede svg,
.phse-settori-card:focus-visible .phse-settori-piede svg {
	transform: translateX(3px);
}

.phse-settori-card:focus-visible {
	outline: 2px solid var(--ph-blu);
	outline-offset: 3px;
}

@media (max-width: 1199px) {
	html body .phse .phse-settori {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (max-width: 599px) {
	html body .phse .phse-settori {
		grid-template-columns: minmax(0, 1fr);
		gap: 14px;
	}
}

/* -- 36.2 I due movimenti delle figure dell'indice ----------------------- */

@keyframes phse-flusso-ix {
	from { transform: translateY(0); }
	to   { transform: translateY(40px); }
}

.phv-flusso-ix {
	transform-box: view-box;
	animation: phse-flusso-ix 3.6s linear infinite;
	will-change: transform;
}

/* I gradini salgono uno dopo l'altro, dalla classe 1 alla 9: e l'unico modo
   di far sentire che ogni gradino vale dieci volte il precedente. */
@keyframes phse-gradino {
	0%, 4%    { transform: scaleY(0.04); opacity: 0; }
	14%, 84%  { transform: scaleY(1); opacity: 1; }
	96%, 100% { transform: scaleY(0.04); opacity: 0; }
}

.phv-gradino {
	transform-box: fill-box;
	transform-origin: bottom;
	animation: phse-gradino 9.6s cubic-bezier(0.22, 0.61, 0.36, 1) infinite;
}

.phv-gradino-2 { animation-delay: 0.16s; }
.phv-gradino-3 { animation-delay: 0.32s; }
.phv-gradino-4 { animation-delay: 0.48s; }
.phv-gradino-5 { animation-delay: 0.64s; }
.phv-gradino-6 { animation-delay: 0.80s; }
.phv-gradino-7 { animation-delay: 0.96s; }
.phv-gradino-8 { animation-delay: 1.12s; }
.phv-gradino-9 { animation-delay: 1.28s; }

@media (prefers-reduced-motion: reduce) {
	.phv-flusso-ix, .phv-gradino {
		animation: none;
		transform: none;
	}

	.phse-settori-card,
	.phse-settori-ico,
	.phse-settori-piede svg {
		transition: none;
	}
}

/* --------------------------------------------------------------------------
   37. IL PERCORSO IN SEI PASSI — VERSIONE ORIZZONTALE
   Sostituisce la timeline verticale del blocco 26.13, che resta nel foglio ma
   non viene piu richiamata da nessuna pagina: il markup e cambiato da
   .phse-linea a .phse-perc, cosi le due non possono interferire.

   Sei celle in riga, un binario che le attraversa e un nodo per passo. Il
   binario e disegnato in due meta — una a sinistra del nodo, una a destra —
   perche quando la griglia va a capo bisogna spegnere il tratto che uscirebbe
   dalla riga, e con un tratto solo non si potrebbe.
   -------------------------------------------------------------------------- */

.phse-perc {
	--phpa-gap: 20px;
	display: grid;
	grid-template-columns: repeat(6, minmax(0, 1fr));
	gap: 30px var(--phpa-gap);
	margin: clamp(32px, 3.2vw, 48px) 0 0;
	padding: 0;
	list-style: none;
}

html body .phse .phse-perc > li {
	display: flex;
	flex-direction: column;
	gap: 12px;
	margin: 0;
	padding: 0;
	list-style: none;
	min-width: 0;
}

/* -- la visual --------------------------------------------------------- */

.phse-perc-fig {
	display: flex;
	align-items: center;
	justify-content: center;
	margin: 0;
	padding: 10px 8px;
	background: var(--ph-camera);
	border-radius: 14px;
	transition: transform 320ms cubic-bezier(0.22, 0.61, 0.36, 1),
		box-shadow 320ms cubic-bezier(0.22, 0.61, 0.36, 1);
	will-change: transform;
}

.phse-perc > li:hover .phse-perc-fig {
	transform: translateY(-3px);
	box-shadow: 0 10px 24px rgba(16, 41, 75, 0.08);
}

/* Il tetto e a 260 e non a 180: sotto le sei colonne la cella si allarga, e un
   disegno fermo a 180 dentro una cella da 340 sembra un francobollo. */
.phse-perc-svg {
	display: block;
	width: 100%;
	height: auto;
	max-width: 260px;
}

/* -- il binario e il nodo ---------------------------------------------- */

.phse-perc-rail {
	position: relative;
	height: 14px;
	margin: 2px 0 0;
}

/* mezzo binario a sinistra del nodo, mezzo a destra: escono nel gutter di
   meta passo per ciascuno, cosi due celle vicine si saldano senza giunzione */
.phse-perc-rail::before,
.phse-perc-rail::after {
	content: '';
	position: absolute;
	top: 50%;
	height: 1px;
	background: rgba(16, 41, 75, 0.14);
}

.phse-perc-rail::before {
	left: calc(var(--phpa-gap) / -2 - 1px);
	right: 50%;
}

.phse-perc-rail::after {
	left: 50%;
	right: calc(var(--phpa-gap) / -2 - 1px);
}

.phse-perc-nodo {
	position: absolute;
	top: 50%;
	left: 50%;
	width: 12px;
	height: 12px;
	margin: -6px 0 0 -6px;
	border-radius: 999px;
	background: var(--ph-bianco);
	border: 2px solid var(--ph-blu);
	box-shadow: 0 0 0 4px var(--ph-bianco);
	transition: transform 320ms cubic-bezier(0.22, 0.61, 0.36, 1);
}

.phse-perc > li:hover .phse-perc-nodo {
	transform: scale(1.22);
}

/* L'onda: un anello si allarga e sfuma su un nodo dopo l'altro, da sinistra a
   destra. E il solo movimento che lega i sei riquadri fra loro — dentro
   ciascuno il movimento racconta il passo, qui racconta che c'e un ordine. */
.phse-perc-nodo::after {
	content: '';
	position: absolute;
	top: -2px;
	left: -2px;
	right: -2px;
	bottom: -2px;
	border-radius: 999px;
	border: 1px solid var(--ph-blu);
	animation: phv-onda 7.2s cubic-bezier(0.22, 0.61, 0.36, 1) infinite;
}

.phse-perc > li:nth-child(2) .phse-perc-nodo::after { animation-delay: 0.42s; }
.phse-perc > li:nth-child(3) .phse-perc-nodo::after { animation-delay: 0.84s; }
.phse-perc > li:nth-child(4) .phse-perc-nodo::after { animation-delay: 1.26s; }
.phse-perc > li:nth-child(5) .phse-perc-nodo::after { animation-delay: 1.68s; }
.phse-perc > li:nth-child(6) .phse-perc-nodo::after { animation-delay: 2.1s; }

@keyframes phv-onda {
	0%       { transform: scale(1); opacity: 0.5; }
	26%, 100% { transform: scale(2.5); opacity: 0; }
}

/* Primo di riga: niente binario a sinistra. Ultimo: niente a destra.
   A ogni soglia si riaccende la coppia precedente e si spegne la nuova, con
   selettori della stessa forma: cosi decide l'ordine, non la specificita.
   Con forme diverse `li:nth-child(3n)` batteva `li` e a una colonna sola il
   tratto restava acceso. */
.phse-perc > li:nth-child(6n + 1) .phse-perc-rail::before,
.phse-perc > li:nth-child(6n) .phse-perc-rail::after {
	display: none;
}

/* -- testo -------------------------------------------------------------- */

.phse-perc-testa {
	display: flex;
	align-items: baseline;
	gap: 9px;
}

.phse-perc-n {
	font-family: var(--ph-text), sans-serif;
	font-size: 0.6875rem;
	font-weight: 500;
	letter-spacing: 0.14em;
	color: var(--ph-blu);
	font-variant-numeric: tabular-nums;
}

html body .phse .phse-perc h3 {
	margin: 0;
	font-family: var(--ph-display), sans-serif;
	font-size: 1.125rem !important;
	line-height: 1.25 !important;
	font-weight: 600 !important;
	letter-spacing: -0.01em;
	color: var(--ph-fondo) !important;
}

.phse-perc p {
	margin: -4px 0 0;
	font-size: 0.875rem;
	line-height: 1.55;
	color: var(--ph-grafite);
}

/* -- responsivo: 6 · 3 · 2 · 1, mai un passo orfano --------------------- */

@media (max-width: 1199px) {
	.phse-perc { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.phse-perc > li:nth-child(6n + 1) .phse-perc-rail::before,
	.phse-perc > li:nth-child(6n) .phse-perc-rail::after { display: block; }
	.phse-perc > li:nth-child(3n + 1) .phse-perc-rail::before,
	.phse-perc > li:nth-child(3n) .phse-perc-rail::after { display: none; }
}

@media (max-width: 859px) {
	.phse-perc { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.phse-perc > li:nth-child(3n + 1) .phse-perc-rail::before,
	.phse-perc > li:nth-child(3n) .phse-perc-rail::after { display: block; }
	.phse-perc > li:nth-child(2n + 1) .phse-perc-rail::before,
	.phse-perc > li:nth-child(2n) .phse-perc-rail::after { display: none; }
}

@media (max-width: 599px) {
	.phse-perc {
		grid-template-columns: minmax(0, 1fr);
		gap: 26px;
	}
	.phse-perc > li:nth-child(n) .phse-perc-rail::before,
	.phse-perc > li:nth-child(n) .phse-perc-rail::after { display: none; }
	.phse-perc-rail { height: 12px; }
}

/* --------------------------------------------------------------------------
   37.2 I sei movimenti. Leggeri: la fascia ne ha gia sei in contemporanea,
   quindi ognuno deve essere piccolo e lento.
   -------------------------------------------------------------------------- */

/* 01 — il rilievo attraversa la pianta da un capo all'altro */
@keyframes phv-rileva {
	0%, 6%    { transform: translateX(0); opacity: 0; }
	16%       { opacity: 1; }
	78%       { transform: translateX(112px); opacity: 1; }
	92%, 100% { transform: translateX(112px); opacity: 0; }
}

.phv-rileva {
	transform-box: view-box;
	animation: phv-rileva 7.4s cubic-bezier(0.4, 0, 0.5, 1) infinite;
}

/* 02 — i filetti scorrono di un passo esatto e ricominciano: nessuna
   giunzione visibile, quindi nessuna dissolvenza da nascondere */
@keyframes phv-simula {
	from { transform: translateY(0); }
	to   { transform: translateY(18px); }
}

.phv-simula {
	transform-box: view-box;
	animation: phv-simula 2.6s linear infinite;
}

/* 03 — il pannello esce dalla stazione, corre sui rulli, e ne arriva un altro */
@keyframes phv-pannello {
	0%, 8%    { transform: translateX(0); opacity: 0; }
	20%       { opacity: 1; }
	62%, 84%  { transform: translateX(38px); opacity: 1; }
	100%      { transform: translateX(38px); opacity: 0; }
}

.phv-pannello {
	transform-box: view-box;
	animation: phv-pannello 6.8s cubic-bezier(0.35, 0, 0.4, 1) infinite;
}

/* 04 — il pannello cala al suo posto contro il montante e resta */
@keyframes phv-posa-p {
	0%, 10%   { transform: translateY(-30px); opacity: 0; }
	26%       { opacity: 1; }
	62%, 88%  { transform: translateY(0); opacity: 1; }
	100%      { transform: translateY(-30px); opacity: 0; }
}

.phv-posa-p {
	transform-box: view-box;
	animation: phv-posa-p 7.2s cubic-bezier(0.22, 0.61, 0.36, 1) infinite;
}

/* 05 — i punti di prelievo si accendono uno dopo l'altro: una griglia, non
   un punto solo */
@keyframes phv-prelievo {
	0%, 4%    { opacity: 0; transform: scale(0.3); }
	14%, 74%  { opacity: 1; transform: scale(1); }
	90%, 100% { opacity: 0; transform: scale(0.3); }
}

.phv-prelievo {
	transform-box: fill-box;
	transform-origin: center;
	animation: phv-prelievo 8s cubic-bezier(0.22, 0.61, 0.36, 1) infinite;
}

.phv-prelievo-2 { animation-delay: 0.4s; }
.phv-prelievo-3 { animation-delay: 0.8s; }
.phv-prelievo-4 { animation-delay: 1.2s; }
.phv-prelievo-5 { animation-delay: 1.6s; }

/* 06 — il marcatore percorre il ciclo della ricertificazione. Il centro
   dell'arco sta a 124,44 nel riquadro 180x92: da qui le due percentuali. */
@keyframes phv-ciclo {
	from { transform: rotate(0deg); }
	to   { transform: rotate(360deg); }
}

.phv-ciclo {
	transform-box: view-box;
	transform-origin: 68.889% 47.826%;
	animation: phv-ciclo 9s cubic-bezier(0.55, 0, 0.45, 1) infinite;
}

@media (prefers-reduced-motion: reduce) {
	/* Ferme: il rilievo a inizio corsa, i filetti in posizione, il pannello
	   dentro la stazione, il pannello da posare in alto sul tiro, tutti i punti
	   di prelievo accesi, il marcatore in cima al ciclo. */
	.phv-rileva, .phv-simula, .phv-pannello, .phv-posa-p, .phv-prelievo,
	.phv-ciclo, .phse-perc-nodo::after {
		animation: none;
		transform: none;
		opacity: 1;
	}

	.phse-perc-nodo::after { opacity: 0; }

	.phse-perc-fig,
	.phse-perc-nodo {
		transition: none;
	}
}

/* --------------------------------------------------------------------------
   38. SFIDE — VERSIONE A SCHEDE (prova su /settori/automotive/)
   Si attiva solo con la classe in piu `phse-sfide--v2` sulla lista: le altre
   nove pagine continuano a usare il blocco 26.4 senza accorgersene.

   Cosa cambia, e perche. Nella versione 26.4 il disegno stava in una
   piastrella bianca e il testo era appoggiato direttamente sull'Azzurro
   Camera: due superfici diverse per due parti della stessa cosa, e le sei
   voci non avevano un bordo che le tenesse insieme. Qui la scheda e una sola
   superficie bianca che contiene tutto, e il disegno e una fascia a tutta
   larghezza in testa — la piastrella dentro il riquadro diventa il riquadro.
   -------------------------------------------------------------------------- */

html body .phse .phse-sfide--v2 {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 20px;
	margin: clamp(32px, 3.2vw, 48px) 0 0;
	padding: 0;
	list-style: none;
}

html body .phse .phse-sfide--v2 > li {
	display: flex;
	flex-direction: column;
	margin: 0;
	padding: 0;
	list-style: none;
	min-width: 0;
	background: var(--ph-bianco);
	border: 1px solid rgba(16, 41, 75, 0.09);
	border-radius: 14px;
	overflow: hidden;
	transition: transform 320ms cubic-bezier(0.22, 0.61, 0.36, 1),
		border-color 320ms cubic-bezier(0.22, 0.61, 0.36, 1),
		box-shadow 320ms cubic-bezier(0.22, 0.61, 0.36, 1);
}

html body .phse .phse-sfide--v2 > li:hover {
	transform: translateY(-4px);
	border-color: rgba(40, 90, 166, 0.24);
	box-shadow: 0 14px 34px rgba(16, 41, 75, 0.09);
}

/* -- la fascia del disegno --------------------------------------------- */

/* La fascia e bianca come il resto della scheda, non Azzurro Camera: la
   fascia sta gia su Azzurro Camera, e una piastrella dello stesso colore del
   fondo sparisce — la scheda sembrerebbe cominciare dal titolo, col disegno
   appoggiato sopra nel vuoto. Una superficie sola, e un filo che divide.

   Altezza fissa: se il disegno galleggiasse le sei schede avrebbero il titolo
   a sei quote diverse, ed e la prima cosa che si vede. */
html body .phse .phse-sfide--v2 .phse-sfida-fig {
	box-sizing: border-box;
	display: flex;
	align-items: center;
	justify-content: center;
	height: 176px;
	margin: 0;
	padding: 16px 20px;
	background-color: transparent;
	border: 0;
	border-bottom: 1px solid rgba(16, 41, 75, 0.08);
	border-radius: 0;
	overflow: hidden;
	transition: border-color 320ms cubic-bezier(0.22, 0.61, 0.36, 1);
}

html body .phse .phse-sfide--v2 > li:hover .phse-sfida-fig {
	border-bottom-color: rgba(40, 90, 166, 0.18);
}

html body .phse .phse-sfide--v2 .phse-sfida-svg {
	max-width: 320px;
	transition: transform 420ms cubic-bezier(0.22, 0.61, 0.36, 1);
}

html body .phse .phse-sfide--v2 > li:hover .phse-sfida-svg {
	transform: scale(1.035);
}

/* -- il corpo ----------------------------------------------------------- */

html body .phse .phse-sfide--v2 h3 {
	margin: 20px 22px 8px !important;
	font-family: var(--ph-display), sans-serif !important;
	font-size: var(--ph-size-h4) !important;
	line-height: var(--ph-lh-h4) !important;
	font-weight: var(--ph-w-semibold) !important;
	letter-spacing: -0.005em !important;
	color: var(--ph-fondo) !important;
}

html body .phse .phse-sfide--v2 p {
	margin: 0 22px 24px;
	font-size: 0.9375rem;
	line-height: 1.6;
	color: var(--ph-grafite);
	text-wrap: pretty;
}

/* -- responsivo: 3 · 2 · 1 --------------------------------------------- */

@media (max-width: 1199px) {
	html body .phse .phse-sfide--v2 {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (max-width: 699px) {
	html body .phse .phse-sfide--v2 {
		grid-template-columns: minmax(0, 1fr);
	}

	/* A una colonna la scheda e larga il doppio: se il disegno restasse a 320
	   sarebbe un francobollo in mezzo a due margini da 130. */
	html body .phse .phse-sfide--v2 .phse-sfida-fig {
		height: 200px;
	}

	html body .phse .phse-sfide--v2 .phse-sfida-svg {
		max-width: 360px;
	}
}

@media (prefers-reduced-motion: reduce) {
	html body .phse .phse-sfide--v2 > li,
	html body .phse .phse-sfide--v2 .phse-sfida-svg {
		transition: none;
	}

	html body .phse .phse-sfide--v2 > li:hover {
		transform: none;
	}

	html body .phse .phse-sfide--v2 > li:hover .phse-sfida-svg {
		transform: none;
	}
}

/* --------------------------------------------------------------------------
   39. /prodotti/camere-bianche/
   Prima pagina prodotto sulla struttura di riferimento. Il corpo (fasce,
   schede, classi, percorso, norme, FAQ) e tutto ereditato dai blocchi 25-38:
   qui stanno solo i movimenti delle nove figure nuove. La fascia delle
   applicazioni riusa le dieci schede cliccabili della pagina indice
   (blocco 36): stesse schede, stesse icone, stessi testi.
   -------------------------------------------------------------------------- */

/* -- 39.1 I movimenti ---------------------------------------------------- */

/* Hero — il flusso scende di un passo esatto e ricomincia: il periodo
   coincide con la traslazione, quindi il ciclo non ha giunzione. */
@keyframes phv-cb-flusso {
	from { transform: translateY(0); }
	to   { transform: translateY(40px); }
}

.phv-cb-flusso {
	transform-box: view-box;
	animation: phv-cb-flusso 3.6s linear infinite;
}

/* Quadro — a sinistra il laminare scende, passo 32 */
@keyframes phv-cb-lam {
	from { transform: translateY(0); }
	to   { transform: translateY(32px); }
}

.phv-cb-lam {
	transform-box: view-box;
	animation: phv-cb-lam 3s linear infinite;
}

/* Quadro — a destra l'aria gira invece di scendere. Tre marcatori su tre
   orbite diverse: se girassero insieme sembrerebbe un ingranaggio. */
@keyframes phv-cb-vortice {
	from { transform: rotate(0deg); }
	to   { transform: rotate(360deg); }
}

.phv-cb-vortice {
	transform-box: view-box;
	animation: phv-cb-vortice 9s linear infinite;
}

.phv-cb-vortice-2 { animation-duration: 12s; animation-direction: reverse; }
.phv-cb-vortice-3 { animation-duration: 7.4s; }

/* 1 — la classe si accende dove il processo la porta */
@keyframes phv-cb-classe {
	0%, 10%   { opacity: 0; transform: translateY(6px); }
	26%, 82%  { opacity: 1; transform: translateY(0); }
	96%, 100% { opacity: 0; transform: translateY(6px); }
}

.phv-cb-classe {
	transform-box: view-box;
	animation: phv-cb-classe 6.4s cubic-bezier(0.22, 0.61, 0.36, 1) infinite;
}

/* 2 — dove il soffitto non copre, la particella resta e basta */
@keyframes phv-cb-resta {
	0%, 100% { transform: translate(0, 0); }
	28%      { transform: translate(6px, -5px); }
	54%      { transform: translate(-5px, 4px); }
	78%      { transform: translate(4px, 5px); }
}

.phv-cb-resta {
	transform-box: view-box;
	animation: phv-cb-resta 7.6s ease-in-out infinite;
}

/* 3 — l'aria scende di gradino in gradino, sempre nello stesso verso */
@keyframes phv-cb-cascata {
	0%, 8%    { transform: translateX(14px); opacity: 0; }
	22%       { opacity: 1; }
	58%, 84%  { transform: translateX(0); opacity: 1; }
	100%      { transform: translateX(-14px); opacity: 0; }
}

.phv-cb-cascata {
	transform-box: view-box;
	animation: phv-cb-cascata 6.2s cubic-bezier(0.3, 0, 0.5, 1) infinite;
}

/* 4 — la spazzola percorre lo sguscio senza incontrare spigoli */
@keyframes phv-cb-spazzola {
	0%, 8%    { transform: translate(0, -14px); opacity: 0; }
	20%       { opacity: 1; }
	66%, 82%  { transform: translate(38px, 0); opacity: 1; }
	100%      { transform: translate(38px, 0); opacity: 0; }
}

.phv-cb-spazzola {
	transform-box: view-box;
	animation: phv-cb-spazzola 6.6s cubic-bezier(0.35, 0, 0.4, 1) infinite;
}

/* 5 — il marcatore corre sulla curva del monitoraggio */
@keyframes phv-cb-sonda {
	0%, 6%    { transform: translate(-120px, 18px); opacity: 0; }
	14%       { opacity: 1; }
	50%       { transform: translate(0, 0); }
	86%       { transform: translate(72px, -6px); opacity: 1; }
	100%      { transform: translate(72px, -6px); opacity: 0; }
}

.phv-cb-sonda {
	transform-box: view-box;
	animation: phv-cb-sonda 7.8s cubic-bezier(0.4, 0, 0.5, 1) infinite;
}

/* 6 — IQ, poi OQ, poi PQ: in quest'ordine, mai insieme */
@keyframes phv-cb-spunta {
	0%, 6%    { opacity: 0; transform: scale(0.5); }
	18%, 78%  { opacity: 1; transform: scale(1); }
	92%, 100% { opacity: 0; transform: scale(0.5); }
}

.phv-cb-spunta {
	transform-box: fill-box;
	transform-origin: center;
	animation: phv-cb-spunta 7.2s cubic-bezier(0.22, 0.61, 0.36, 1) infinite;
}

.phv-cb-spunta-2 { animation-delay: 0.7s; }
.phv-cb-spunta-3 { animation-delay: 1.4s; }

@media (prefers-reduced-motion: reduce) {
	.phv-cb-flusso, .phv-cb-lam, .phv-cb-vortice, .phv-cb-classe, .phv-cb-resta,
	.phv-cb-cascata, .phv-cb-spazzola, .phv-cb-sonda, .phv-cb-spunta {
		animation: none;
		transform: none;
		opacity: 1;
	}
}

/* --------------------------------------------------------------------------
   40. GALLERIA FOTOGRAFICA
   Un carosello che si scorre con il dito, con la rotellina orizzontale o con
   due frecce. Lo scorrimento e nativo — `overflow-x` piu `scroll-snap` — non
   una libreria: senza JavaScript le foto restano tutte raggiungibili, e le
   frecce compaiono solo quando c'e chi le fa funzionare.

   La lastra successiva si affaccia sempre di qualche decina di pixel. E il
   solo modo onesto di dire "ce n'e dell'altro" senza scriverlo.
   -------------------------------------------------------------------------- */

.phgal {
	--phgal-gap: 16px;
	--phgal-slide: min(74%, 840px);
}

/* -- 40.1 La testa, con le frecce a destra ------------------------------- */

html body .phse .phse-head.phgal-testa {
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: 28px;
	max-width: none;
}

.phgal-testo {
	max-width: 62ch;
}

.phgal-nav {
	display: flex;
	gap: 10px;
	flex: 0 0 auto;
	padding-bottom: 4px;
}

.phgal-nav[hidden] {
	display: none;
}

/* Salient impone `border-radius: 4px` a tutti i <button>: senza la guardia le
   due frecce diventano quadratini con gli angoli smussati. I punti invece si
   salvano da soli — 4px su un elemento alto 8 e gia meta altezza, cioe una
   pastiglia perfetta — ma la guardia la mettiamo lo stesso: la prossima volta
   che qualcuno cambia l'altezza non deve scoprire il difetto in produzione. */
html body .phse .phgal-btn,
html body .phse .phgal-punto {
	border-radius: 999px !important;
}

html body .phse .phgal-btn {
	background-color: var(--ph-bianco) !important;
	border: 1px solid rgba(16, 41, 75, 0.12) !important;
	box-shadow: none;
}

html body .phse .phgal-btn:hover:not(:disabled) {
	border-color: rgba(40, 90, 166, 0.28) !important;
	box-shadow: 0 8px 20px rgba(16, 41, 75, 0.10);
}

.phgal-btn {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 42px;
	height: 42px;
	padding: 0;
	border: 1px solid rgba(16, 41, 75, 0.12);
	border-radius: 999px;
	background: var(--ph-bianco);
	color: var(--ph-blu);
	cursor: pointer;
	transition: transform 260ms cubic-bezier(0.22, 0.61, 0.36, 1),
		border-color 260ms cubic-bezier(0.22, 0.61, 0.36, 1),
		box-shadow 260ms cubic-bezier(0.22, 0.61, 0.36, 1),
		opacity 260ms linear;
}

.phgal-btn:hover:not(:disabled) {
	transform: translateY(-2px);
	border-color: rgba(40, 90, 166, 0.28);
	box-shadow: 0 8px 20px rgba(16, 41, 75, 0.10);
}

.phgal-btn:focus-visible {
	outline: 2px solid var(--ph-blu);
	outline-offset: 3px;
}

/* Disabilitato e non nascosto: un comando che sparisce sposta quello accanto,
   e chi sta cliccando si ritrova sotto il dito un bottone diverso. */
.phgal-btn:disabled {
	opacity: 0.32;
	cursor: default;
}

.phgal-btn svg {
	display: block;
	width: 19px;
	height: 19px;
}

/* -- 40.2 La pista ------------------------------------------------------- */

.phgal-pista {
	display: flex;
	gap: var(--phgal-gap);
	margin: 0;
	padding: 0 0 2px;
	list-style: none;
	overflow-x: auto;
	overscroll-behavior-x: contain;
	scroll-snap-type: x mandatory;
	scroll-behavior: smooth;
	scrollbar-width: none;
	-ms-overflow-style: none;
}

.phgal-pista::-webkit-scrollbar {
	display: none;
}

.phgal-pista:focus-visible {
	outline: 2px solid var(--ph-blu);
	outline-offset: 6px;
	border-radius: 16px;
}

html body .phse .phgal-pista > li {
	flex: 0 0 var(--phgal-slide);
	margin: 0;
	padding: 0;
	list-style: none;
	scroll-snap-align: start;
	min-width: 0;
}

.phgal-slide figure {
	margin: 0;
}

/* Il riquadro 2:1 e quello nativo di sette foto su nove: cosi la maggioranza
   si vede intera e solo due vengono ritagliate. Il ritaglio guarda un po'
   verso l'alto, perche in una camera bianca il soffitto e meta del progetto. */
.phgal-slide img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 2 / 1;
	object-fit: cover;
	object-position: 50% 38%;
	border-radius: 14px;
	background-color: rgba(16, 41, 75, 0.06);
}

html body .phse .phgal-slide figcaption {
	margin: 14px 2px 0;
	font-family: var(--ph-text), sans-serif;
	font-size: 0.9375rem;
	line-height: 1.55;
	color: var(--ph-grafite);
	text-wrap: pretty;
}

/* -- 40.3 I punti -------------------------------------------------------- */

.phgal-punti {
	display: flex;
	justify-content: center;
	gap: 8px;
	margin: 22px 0 0;
	padding: 0;
	list-style: none;
}

.phgal-punti[hidden] {
	display: none;
}

html body .phse .phgal-punti > li {
	margin: 0;
	padding: 0;
	list-style: none;
}

.phgal-punto {
	display: block;
	width: 8px;
	height: 8px;
	padding: 0;
	border: 0;
	border-radius: 999px;
	background: rgba(16, 41, 75, 0.20);
	cursor: pointer;
	transition: width 320ms cubic-bezier(0.22, 0.61, 0.36, 1),
		background-color 320ms cubic-bezier(0.22, 0.61, 0.36, 1);
}

.phgal-punto:hover {
	background: rgba(40, 90, 166, 0.42);
}

.phgal-punto:focus-visible {
	outline: 2px solid var(--ph-blu);
	outline-offset: 3px;
}

/* La lastra in cui ci si trova non si distingue per colore ma per lunghezza:
   il punto diventa un trattino. Si legge anche in bianco e nero. */
.phgal-punto[aria-current="true"] {
	width: 26px;
	background: var(--ph-blu);
}

/* -- 40.4 Responsivo ----------------------------------------------------- */

@media (max-width: 999px) {
	html body .phse .phse-head.phgal-testa {
		display: block;
	}

	.phgal-nav {
		margin-top: 20px;
		padding-bottom: 0;
	}

	.phgal {
		--phgal-slide: 84%;
	}
}

@media (max-width: 599px) {
	.phgal {
		--phgal-slide: 88%;
		--phgal-gap: 12px;
	}

	html body .phse .phgal-slide figcaption {
		font-size: 0.875rem;
	}
}

@media (prefers-reduced-motion: reduce) {
	.phgal-pista {
		scroll-behavior: auto;
	}

	.phgal-btn,
	.phgal-punto {
		transition: none;
	}

	.phgal-btn:hover:not(:disabled) {
		transform: none;
	}
}

/* --------------------------------------------------------------------------
   41. LE DIECI PAGINE PRODOTTO
   Il corpo e tutto ereditato dai blocchi 25-40: qui stanno solo i movimenti
   delle ottanta figure nuove.

   I movimenti sono pochi e condivisi — scendere, salire, correre, entrare,
   ruotare, accendersi — perche il modo di muoversi e grammatica, non
   contenuto. A dover essere diversi sono i disegni: se ogni figura avesse
   anche il suo movimento, ottanta animazioni diverse sulla stessa gamma
   direbbero che non c'e un sistema.

   Solo transform e opacity, curva del brandbook, tutto fermo sotto
   prefers-reduced-motion.
   -------------------------------------------------------------------------- */

/* -- 41.1 Il flusso: trasla di un passo esatto e ricomincia --------------- */

@keyframes phv-pf-flusso {
	from { transform: translateY(0); }
	to   { transform: translateY(40px); }
}

@keyframes phv-pf-flussino {
	from { transform: translateY(0); }
	to   { transform: translateY(20px); }
}

.phv-pf-flusso,
.phv-pf-flussino {
	transform-box: view-box;
}

.phv-pf-flusso { animation: phv-pf-flusso 3.6s linear infinite; }
.phv-pf-flussino { animation: phv-pf-flussino 2.2s linear infinite; }

/* -- 41.2 Salire, scendere, correre, entrare ----------------------------- */

@keyframes phv-pf-sale {
	0%, 8%    { transform: translateY(14px); opacity: 0; }
	24%       { opacity: 1; }
	66%, 86%  { transform: translateY(0); opacity: 1; }
	100%      { transform: translateY(-10px); opacity: 0; }
}

@keyframes phv-pf-sale2 {
	0%, 12%   { transform: translateY(0); }
	52%, 76%  { transform: translateY(-26px); }
	100%      { transform: translateY(0); }
}

@keyframes phv-pf-scende {
	0%, 8%    { transform: translateY(-22px); opacity: 0; }
	22%       { opacity: 1; }
	62%, 86%  { transform: translateY(0); opacity: 1; }
	100%      { transform: translateY(0); opacity: 0; }
}

@keyframes phv-pf-scende2 {
	0%, 6%    { transform: translateY(0); opacity: 0; }
	18%       { opacity: 1; }
	78%       { transform: translateY(52px); opacity: 1; }
	94%, 100% { transform: translateY(52px); opacity: 0; }
}

@keyframes phv-pf-scivola {
	0%, 8%    { transform: translate(0, 0); opacity: 0; }
	22%       { opacity: 1; }
	72%       { transform: translate(26px, 22px); opacity: 1; }
	92%, 100% { transform: translate(34px, 34px); opacity: 0; }
}

@keyframes phv-pf-corre {
	0%, 8%    { transform: translateX(14px); opacity: 0; }
	22%       { opacity: 1; }
	64%, 84%  { transform: translateX(0); opacity: 1; }
	100%      { transform: translateX(-12px); opacity: 0; }
}

@keyframes phv-pf-corre2 {
	0%, 8%    { transform: translateX(-30px); opacity: 0; }
	22%       { opacity: 1; }
	70%, 86%  { transform: translateX(0); opacity: 1; }
	100%      { transform: translateX(16px); opacity: 0; }
}

@keyframes phv-pf-entra {
	0%, 10%   { transform: translateX(34px); opacity: 0; }
	26%       { opacity: 1; }
	64%, 88%  { transform: translateX(0); opacity: 1; }
	100%      { transform: translateX(34px); opacity: 0; }
}

@keyframes phv-pf-entra2 {
	0%, 10%   { transform: translateY(-24px); opacity: 0; }
	26%       { opacity: 1; }
	64%, 88%  { transform: translateY(0); opacity: 1; }
	100%      { transform: translateY(-24px); opacity: 0; }
}

@keyframes phv-pf-entra3 {
	0%, 8%    { transform: translateX(-14px); opacity: 0; }
	22%       { opacity: 1; }
	64%, 84%  { transform: translateX(0); opacity: 1; }
	100%      { transform: translateX(12px); opacity: 0; }
}

@keyframes phv-pf-esce {
	0%, 8%    { transform: translateX(0); opacity: 0; }
	24%       { opacity: 1; }
	72%       { transform: translateX(10px); opacity: 1; }
	92%, 100% { transform: translateX(16px); opacity: 0; }
}

/* La porta che si apre e si richiude: ruota sul cardine, come una porta. */
@keyframes phv-pf-porta {
	0%, 14%   { transform: rotateY(0deg); }
	44%, 70%  { transform: rotateY(-58deg); }
	100%      { transform: rotateY(0deg); }
}

@keyframes phv-pf-ascensore {
	0%, 12%   { transform: translateY(0); }
	52%, 76%  { transform: translateY(-40px); }
	100%      { transform: translateY(0); }
}

.phv-pf-sale, .phv-pf-sale2, .phv-pf-scende, .phv-pf-scende2, .phv-pf-scivola,
.phv-pf-corre, .phv-pf-corre2, .phv-pf-entra, .phv-pf-entra2, .phv-pf-entra3,
.phv-pf-esce, .phv-pf-porta, .phv-pf-ascensore, .phv-pf-getto, .phv-pf-vaga,
.phv-pf-riempi, .phv-pf-riempi2, .phv-pf-giro {
	transform-box: view-box;
}

.phv-pf-sale { animation: phv-pf-sale 6.4s cubic-bezier(0.22, 0.61, 0.36, 1) infinite; }
.phv-pf-sale2 { animation: phv-pf-sale2 6.8s cubic-bezier(0.22, 0.61, 0.36, 1) infinite; }
.phv-pf-scende { animation: phv-pf-scende 6.6s cubic-bezier(0.22, 0.61, 0.36, 1) infinite; }
.phv-pf-scende2 { animation: phv-pf-scende2 7.2s cubic-bezier(0.4, 0, 0.6, 1) infinite; }
.phv-pf-scivola { animation: phv-pf-scivola 7s cubic-bezier(0.4, 0, 0.6, 1) infinite; }
.phv-pf-corre { animation: phv-pf-corre 6.2s cubic-bezier(0.22, 0.61, 0.36, 1) infinite; }
.phv-pf-corre2 { animation: phv-pf-corre2 6.6s cubic-bezier(0.35, 0, 0.4, 1) infinite; }
.phv-pf-entra { animation: phv-pf-entra 7s cubic-bezier(0.22, 0.61, 0.36, 1) infinite; }
.phv-pf-entra2 { animation: phv-pf-entra2 6.8s cubic-bezier(0.22, 0.61, 0.36, 1) infinite; }
.phv-pf-entra3 { animation: phv-pf-entra3 6.2s cubic-bezier(0.22, 0.61, 0.36, 1) infinite; }
.phv-pf-esce { animation: phv-pf-esce 6.4s cubic-bezier(0.3, 0, 0.5, 1) infinite; }
.phv-pf-ascensore { animation: phv-pf-ascensore 7.4s cubic-bezier(0.22, 0.61, 0.36, 1) infinite; }

/* La porta ruota sul proprio cardine: l'origine sta sul bordo sinistro. */
.phv-pf-porta {
	transform-origin: 20% 50%;
	animation: phv-pf-porta 7.2s cubic-bezier(0.22, 0.61, 0.36, 1) infinite;
}

/* -- 41.3 Getti, giri, riempimenti --------------------------------------- */

@keyframes phv-pf-getto {
	0%, 100% { opacity: 0.28; transform: scale(1); }
	40%      { opacity: 1; transform: scale(1.03); }
}

@keyframes phv-pf-vaga {
	0%, 100% { transform: translate(0, 0); }
	26%      { transform: translate(7px, -6px); }
	54%      { transform: translate(-6px, 5px); }
	80%      { transform: translate(5px, 6px); }
}

@keyframes phv-pf-riempi {
	0%, 6%    { transform: scaleX(0); opacity: 1; }
	72%, 88%  { transform: scaleX(1); opacity: 1; }
	100%      { transform: scaleX(1); opacity: 0; }
}

@keyframes phv-pf-riempi2 {
	0%, 6%    { transform: scaleX(0.14); }
	76%, 92%  { transform: scaleX(1); }
	100%      { transform: scaleX(0.14); }
}

@keyframes phv-pf-giro {
	0%, 8%    { opacity: 0; }
	26%, 78%  { opacity: 1; }
	96%, 100% { opacity: 0; }
}

@keyframes phv-pf-ruota {
	from { transform: rotate(0deg); }
	to   { transform: rotate(360deg); }
}

@keyframes phv-pf-lancetta {
	0%, 10%   { transform: rotate(-56deg); }
	60%, 84%  { transform: rotate(52deg); }
	100%      { transform: rotate(-56deg); }
}

@keyframes phv-pf-batte {
	0%, 100% { transform: scale(1); opacity: 0.42; }
	46%      { transform: scale(1.06); opacity: 1; }
}

@keyframes phv-pf-acc {
	0%, 6%    { opacity: 0; transform: scale(0.55); }
	18%, 76%  { opacity: 1; transform: scale(1); }
	92%, 100% { opacity: 0; transform: scale(0.55); }
}

.phv-pf-getto { animation: phv-pf-getto 2.6s ease-in-out infinite; }
.phv-pf-vaga { animation: phv-pf-vaga 8s ease-in-out infinite; }
.phv-pf-giro { animation: phv-pf-giro 6.8s cubic-bezier(0.22, 0.61, 0.36, 1) infinite; }

/* Il riempimento cresce da sinistra: l'origine sul bordo, se no si allarga
   dal centro e sembra un respiro invece di un avanzamento. */
.phv-pf-riempi,
.phv-pf-riempi2 {
	transform-origin: 0% 50%;
}

.phv-pf-riempi { animation: phv-pf-riempi 7.6s cubic-bezier(0.3, 0, 0.5, 1) infinite; }
.phv-pf-riempi2 { animation: phv-pf-riempi2 7.2s cubic-bezier(0.3, 0, 0.5, 1) infinite; }

.phv-pf-ruota {
	transform-box: view-box;
	animation: phv-pf-ruota 3.4s linear infinite;
}

.phv-pf-lancetta {
	transform-box: view-box;
	animation: phv-pf-lancetta 7.4s cubic-bezier(0.22, 0.61, 0.36, 1) infinite;
}

.phv-pf-batte {
	transform-box: fill-box;
	transform-origin: center;
	animation: phv-pf-batte 3.2s ease-in-out infinite;
}

.phv-pf-acc {
	transform-box: fill-box;
	transform-origin: center;
	animation: phv-pf-acc 6.8s cubic-bezier(0.22, 0.61, 0.36, 1) infinite;
}

.phv-pf-acc-2 { animation-delay: 0.42s; }
.phv-pf-acc-3 { animation-delay: 0.84s; }
.phv-pf-acc-4 { animation-delay: 1.26s; }
.phv-pf-acc-5 { animation-delay: 1.68s; }
.phv-pf-acc-6 { animation-delay: 2.1s; }

@media (prefers-reduced-motion: reduce) {
	[class*="phv-pf-"] {
		animation: none !important;
		transform: none !important;
		opacity: 1 !important;
	}
}

/* ==========================================================================
   42. PAGINE ISTITUZIONALI — home, azienda, servizi, prodotti
   Le pagine indice hanno lo stesso scheletro delle pagine settore e prodotto.
   Serve pero una cosa che li non serviva: griglie di schede-link con un numero
   di elementi diverso da dieci. `.phse-settori` e cablata a cinque colonne
   perche i settori sono esattamente dieci; qui le schede sono tre, quattro o
   otto e il numero di colonne va dichiarato, altrimenti l'ultima riga resta
   spaiata.
   La scheda in se non cambia di una virgola: `.phse-settori-card` e la stessa,
   e cosi chi arriva dall'indice settori riconosce l'oggetto.
   ========================================================================== */

/* -- 42.1 Griglie a numero dichiarato ------------------------------------- */

html body .phse .phse-schede {
	grid-template-columns: repeat(4, minmax(0, 1fr));
}

html body .phse .phse-schede--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
html body .phse .phse-schede--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }

/* Otto schede: quattro per riga in due righe piene. Sotto i 1100 diventano
   due e restano piene; il tre non si usa mai perche lascerebbe due orfane. */
html body .phse .phse-schede--8 { grid-template-columns: repeat(4, minmax(0, 1fr)); }

/* Undici schede: quattro per riga, l'ultima riga di tre. Undici e un numero
   scomodo e non esiste una griglia che lo chiuda: fra un buco a destra
   sull'ultima riga e una riga di due orfane, il buco si nota meno. */
html body .phse .phse-schede--11 { grid-template-columns: repeat(4, minmax(0, 1fr)); }

/* Dieci schede: cinque per riga in due righe piene. Il quattro lascerebbe
   due orfane in fondo, e la fascia dei prodotti e proprio quella in cui si
   conta. */
html body .phse .phse-schede--10 { grid-template-columns: repeat(5, minmax(0, 1fr)); }

@media (max-width: 1180px) {
	html body .phse .phse-schede--4,
	html body .phse .phse-schede--8,
	html body .phse .phse-schede--10,
	html body .phse .phse-schede--11 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 900px) {
	html body .phse .phse-schede--3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 600px) {
	html body .phse .phse-schede--3,
	html body .phse .phse-schede--4,
	html body .phse .phse-schede--8,
	html body .phse .phse-schede--10,
	html body .phse .phse-schede--11 { grid-template-columns: minmax(0, 1fr); }
}

/* -- 42.2 Sei schede numerate in tre colonne ------------------------------ */

/* Le fasi di un servizio sono sei: tre colonne per due righe piene.
   `--3` esiste gia con auto-fit a 320px, che a contenitore pieno da tre
   colonne: la riusiamo dichiarandola, non duplicandola. */

/* -- 42.3 La riga dei recapiti ------------------------------------------- */

/* Su chi-siamo e contatti la coppia di sedi va letta come due schede pari,
   non come due paragrafi di lunghezza diversa. */
html body .phse .phse-sedi {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 20px;
	margin: clamp(28px, 3vw, 40px) 0 0;
	padding: 0;
	list-style: none;
}

html body .phse .phse-sedi > li {
	background: var(--ph-bianco);
	border: 1px solid rgba(16, 41, 75, .09);
	border-radius: 14px;
	margin: 0;
	padding: clamp(20px, 2vw, 26px);
	list-style: none;
	min-width: 0;
}

html body .phse .phse-sedi h3 {
	font-family: var(--ph-display);
	font-size: 1.05rem;
	font-weight: 600;
	letter-spacing: -.01em;
	margin: 0 0 6px;
	color: var(--ph-fondo);
}

html body .phse .phse-sedi p {
	margin: 0 0 4px;
	color: var(--ph-grigio);
	font-size: .95rem;
	line-height: 1.55;
}

html body .phse .phse-sedi a {
	color: var(--ph-blu);
	text-decoration: none;
	border-bottom: 1px solid rgba(40, 90, 166, .28);
}

html body .phse .phse-sedi a:hover { border-bottom-color: var(--ph-blu); }

@media (max-width: 700px) {
	html body .phse .phse-sedi { grid-template-columns: minmax(0, 1fr); }
}

/* ==========================================================================
   43. IL PULSANTE «CONTATTACI» NELL'HEADER
   L'ultima voce del menu non e una voce: e la chiamata all'azione. Diventa
   quindi lo stesso oggetto dei pulsanti pieni del corpo — stesso blu, stesso
   raggio, stessa curva — solo in taglia da header.

   Il bersaglio e l'href, non la classe: la voce di menu puo essere ricreata
   in bacheca e perdere le classi, ma finche punta a /contattaci/ resta un
   pulsante. Cosi non serve toccare il menu per ottenere l'effetto.

   Due cose vanno spente esplicitamente, perche Salient le stampa sempre:
   il sottolineato animato (`.menu-title-text::after`) e il colore ereditato
   dallo stato corrente.
   ========================================================================== */

/* -- 43.1 Il pulsante nel menu principale --------------------------------- */

html body #header-outer #top nav > ul > li > a:is([href*="/contattaci"],[href*="/en/contact-us"],[href*="/es/contacto"],[href*="/fr/contact"]) {
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
	min-height: 42px;
	margin-left: 14px;
	padding: 0 22px !important;
	border-radius: 12px;
	background-color: var(--ph-blu) !important;
	color: var(--ph-bianco) !important;
	border: 1px solid var(--ph-blu);
	box-shadow: 0 6px 16px rgba(40, 90, 166, 0.28);
	transition: background-color 260ms cubic-bezier(0.22, 0.61, 0.36, 1),
	            border-color 260ms cubic-bezier(0.22, 0.61, 0.36, 1),
	            transform 260ms cubic-bezier(0.22, 0.61, 0.36, 1),
	            box-shadow 260ms cubic-bezier(0.22, 0.61, 0.36, 1);
}

html body #header-outer #top nav > ul > li > a:is([href*="/contattaci"],[href*="/en/contact-us"],[href*="/es/contacto"],[href*="/fr/contact"]) .menu-title-text {
	color: var(--ph-bianco) !important;
	font-family: var(--ph-display) !important;
	font-weight: var(--ph-w-bold) !important;
	font-size: 0.9375rem !important;
	letter-spacing: 0 !important;
}

/* Il sottolineato animato di Salient non ha senso dentro un pulsante pieno */
html body #header-outer #top nav > ul > li > a:is([href*="/contattaci"],[href*="/en/contact-us"],[href*="/es/contacto"],[href*="/fr/contact"]) .menu-title-text::after,
html body #header-outer[data-lhe="animated_underline"] #top nav > ul > li > a:is([href*="/contattaci"],[href*="/en/contact-us"],[href*="/es/contacto"],[href*="/fr/contact"]) .menu-title-text::after {
	display: none !important;
	background: none !important;
}

html body #header-outer #top nav > ul > li > a:is([href*="/contattaci"],[href*="/en/contact-us"],[href*="/es/contacto"],[href*="/fr/contact"]):hover,
html body #header-outer #top nav > ul > li > a:is([href*="/contattaci"],[href*="/en/contact-us"],[href*="/es/contacto"],[href*="/fr/contact"]):focus-visible,
html body #header-outer #top nav > ul > li.current-menu-item > a:is([href*="/contattaci"],[href*="/en/contact-us"],[href*="/es/contacto"],[href*="/fr/contact"]) {
	background-color: var(--ph-fondo) !important;
	border-color: var(--ph-fondo);
	color: var(--ph-bianco) !important;
	transform: translateY(-2px);
	box-shadow: 0 12px 24px rgba(16, 41, 75, 0.24);
}

html body #header-outer #top nav > ul > li.current-menu-item > a:is([href*="/contattaci"],[href*="/en/contact-us"],[href*="/es/contacto"],[href*="/fr/contact"]) {
	/* la pagina corrente non «salta»: cambia solo colore */
	transform: none;
}

html body #header-outer #top nav > ul > li > a:is([href*="/contattaci"],[href*="/en/contact-us"],[href*="/es/contacto"],[href*="/fr/contact"]):hover .menu-title-text,
html body #header-outer #top nav > ul > li.current-menu-item > a:is([href*="/contattaci"],[href*="/en/contact-us"],[href*="/es/contacto"],[href*="/fr/contact"]) .menu-title-text {
	color: var(--ph-bianco) !important;
}

/* -- 43.2 Lo stesso pulsante nel menu mobile ------------------------------ */

/* Nel menu mobile le voci sono in colonna: il pulsante prende tutta la
   larghezza, altrimenti resta un francobollo in mezzo a una lista. */
html body #header-outer #mobile-menu .menu-items-wrap > ul > li > a:is([href*="/contattaci"],[href*="/en/contact-us"],[href*="/es/contacto"],[href*="/fr/contact"]),
html body #slide-out-widget-area a:is([href*="/contattaci"],[href*="/en/contact-us"],[href*="/es/contacto"],[href*="/fr/contact"]) {
	display: flex !important;
	align-items: center;
	justify-content: center;
	min-height: 46px;
	margin: 12px 0 0;
	padding: 0 22px !important;
	border-radius: 12px;
	background-color: var(--ph-blu) !important;
	color: var(--ph-bianco) !important;
	font-family: var(--ph-display) !important;
	font-weight: var(--ph-w-bold) !important;
}

html body #header-outer #mobile-menu .menu-items-wrap > ul > li > a:is([href*="/contattaci"],[href*="/en/contact-us"],[href*="/es/contacto"],[href*="/fr/contact"]) .menu-title-text,
html body #slide-out-widget-area a:is([href*="/contattaci"],[href*="/en/contact-us"],[href*="/es/contacto"],[href*="/fr/contact"]) .menu-title-text {
	color: var(--ph-bianco) !important;
}

html body #header-outer #mobile-menu .menu-items-wrap > ul > li > a:is([href*="/contattaci"],[href*="/en/contact-us"],[href*="/es/contacto"],[href*="/fr/contact"]) .menu-title-text::after,
html body #slide-out-widget-area a:is([href*="/contattaci"],[href*="/en/contact-us"],[href*="/es/contacto"],[href*="/fr/contact"]) .menu-title-text::after {
	display: none !important;
}

@media (prefers-reduced-motion: reduce) {
	html body #header-outer #top nav > ul > li > a:is([href*="/contattaci"],[href*="/en/contact-us"],[href*="/es/contacto"],[href*="/fr/contact"]) {
		transition: background-color 260ms linear, border-color 260ms linear;
	}
	html body #header-outer #top nav > ul > li > a:is([href*="/contattaci"],[href*="/en/contact-us"],[href*="/es/contacto"],[href*="/fr/contact"]):hover,
	html body #header-outer #top nav > ul > li > a:is([href*="/contattaci"],[href*="/en/contact-us"],[href*="/es/contacto"],[href*="/fr/contact"]):focus-visible {
		transform: none;
	}
}

/* -- 43.3 Il giallo: la richiesta del cliente del 4 settembre 2026 -------- */

/* «mettere il pulsante Contattaci piu in evidenza, ad esempio con un colore
   giallo». Il giallo si ricava con lo stesso metodo del verde della fascia:
   si tiene la tinta pura dell'asse giallo (H 90 in CIELCh) e si porta il
   croma al massimo che l'sRGB consente a quella luminosita. Viene #FFD300.

   Qui pero un vincolo si ribalta, e va detto: il giallo esiste solo ad alta
   luminosita — L* 86 — quindi il testo bianco sopra farebbe 1,44:1 e non
   passerebbe nessuna soglia. Il testo va scuro. Su Blu Fondo il rapporto e
   10,13:1, il piu alto di tutti i pulsanti del sito: il pulsante diventa
   anche il piu leggibile, non solo il piu visibile.

   L'ombra resta gialla e bassa: un giallo saturo che proietta grigio
   sporca, e la testata e bianca. */

:root,
html body {
	--ph-giallo: #FFD300;         /* Giallo azione — tinta 90°, croma massimo a L* 86 */
	--ph-giallo-scuro: #EBC304;   /* stato premuto e hover */
	--ph-giallo-ombra: rgba(255, 211, 0, 0.34);
}

html body #header-outer #top nav > ul > li > a:is([href*="/contattaci"],[href*="/en/contact-us"],[href*="/es/contacto"],[href*="/fr/contact"]),
html body #header-outer #mobile-menu .menu-items-wrap > ul > li > a:is([href*="/contattaci"],[href*="/en/contact-us"],[href*="/es/contacto"],[href*="/fr/contact"]),
html body #slide-out-widget-area a:is([href*="/contattaci"],[href*="/en/contact-us"],[href*="/es/contacto"],[href*="/fr/contact"]) {
	background-color: var(--ph-giallo) !important;
	border-color: var(--ph-giallo) !important;
	color: var(--ph-fondo) !important;
}

html body #header-outer #top nav > ul > li > a:is([href*="/contattaci"],[href*="/en/contact-us"],[href*="/es/contacto"],[href*="/fr/contact"]) {
	box-shadow: 0 2px 10px var(--ph-giallo-ombra) !important;
}

html body #header-outer #top nav > ul > li > a:is([href*="/contattaci"],[href*="/en/contact-us"],[href*="/es/contacto"],[href*="/fr/contact"]) .menu-title-text,
html body #header-outer #mobile-menu .menu-items-wrap > ul > li > a:is([href*="/contattaci"],[href*="/en/contact-us"],[href*="/es/contacto"],[href*="/fr/contact"]) .menu-title-text,
html body #slide-out-widget-area a:is([href*="/contattaci"],[href*="/en/contact-us"],[href*="/es/contacto"],[href*="/fr/contact"]) .menu-title-text {
	color: var(--ph-fondo) !important;
}

html body #header-outer #top nav > ul > li > a:is([href*="/contattaci"],[href*="/en/contact-us"],[href*="/es/contacto"],[href*="/fr/contact"]):hover,
html body #header-outer #top nav > ul > li > a:is([href*="/contattaci"],[href*="/en/contact-us"],[href*="/es/contacto"],[href*="/fr/contact"]):focus-visible,
html body #header-outer #top nav > ul > li.current-menu-item > a:is([href*="/contattaci"],[href*="/en/contact-us"],[href*="/es/contacto"],[href*="/fr/contact"]),
html body #header-outer #mobile-menu .menu-items-wrap > ul > li > a:is([href*="/contattaci"],[href*="/en/contact-us"],[href*="/es/contacto"],[href*="/fr/contact"]):hover,
html body #slide-out-widget-area a:is([href*="/contattaci"],[href*="/en/contact-us"],[href*="/es/contacto"],[href*="/fr/contact"]):hover {
	background-color: var(--ph-giallo-scuro) !important;
	border-color: var(--ph-giallo-scuro) !important;
	color: var(--ph-fondo) !important;
}

html body #header-outer #top nav > ul > li > a:is([href*="/contattaci"],[href*="/en/contact-us"],[href*="/es/contacto"],[href*="/fr/contact"]):hover .menu-title-text,
html body #header-outer #top nav > ul > li > a:is([href*="/contattaci"],[href*="/en/contact-us"],[href*="/es/contacto"],[href*="/fr/contact"]):focus-visible .menu-title-text,
html body #header-outer #top nav > ul > li.current-menu-item > a:is([href*="/contattaci"],[href*="/en/contact-us"],[href*="/es/contacto"],[href*="/fr/contact"]) .menu-title-text,
html body #header-outer #mobile-menu .menu-items-wrap > ul > li > a:is([href*="/contattaci"],[href*="/en/contact-us"],[href*="/es/contacto"],[href*="/fr/contact"]):hover .menu-title-text,
html body #slide-out-widget-area a:is([href*="/contattaci"],[href*="/en/contact-us"],[href*="/es/contacto"],[href*="/fr/contact"]):hover .menu-title-text {
	color: var(--ph-fondo) !important;
}


/* ==========================================================================
   44. LE DUE FASCE MEDIA — rassegna stampa e video
   Stanno subito sotto la trust bar, dove chi e appena arrivato cerca una
   prova. Sono la stessa impaginazione: una lastra a sinistra (immagine o
   video) e poco testo a destra, allineati sul centro.

   Regole tenute strette:
   * niente cornici doppie: la lastra ha un bordo capello e un'ombra bassa,
     il testo non ha contenitore;
   * il video NON carica YouTube finche non lo si chiede. Prima c'e solo una
     copertina e un tasto; l'iframe arriva al primo clic, su dominio
     youtube-nocookie. Un embed che parte da solo mette cookie di terze parti
     su ogni visita e pesa mezzo megabyte prima ancora di essere guardato.
   ========================================================================== */

/* -- 44.1 L'impaginazione comune ------------------------------------------ */

html body .phse .phse-media {
	display: grid;
	grid-template-columns: minmax(0, 1.08fr) minmax(0, 1fr);
	gap: clamp(28px, 4vw, 60px);
	align-items: center;
	margin: clamp(30px, 4vw, 48px) 0 0;
	padding: 0;
}

html body .phse .phse-media-lastra {
	position: relative;
	margin: 0;
	border-radius: 16px;
	overflow: hidden;
	background-color: var(--ph-fondo);
	border: 1px solid rgba(16, 41, 75, 0.10);
	box-shadow: 0 18px 44px rgba(16, 41, 75, 0.13);
}

html body .phse .phse-media-lastra img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 16 / 9;
	object-fit: cover;
}

/* Un ritaglio di giornale non si ritaglia una seconda volta: niente formato
   imposto, niente `cover`. O si legge tutto, o non serve a niente. */
html body .phse .phse-media-lastra--doc {
	background-color: var(--ph-bianco);
}

html body .phse .phse-media-lastra--doc img {
	/* il formato vero del ritaglio, non `auto`: con `auto` il riquadro resta
	   alto zero finche l'immagine non e arrivata, e con loading=lazy
	   un riquadro alto zero puo non arrivare mai. */
	aspect-ratio: 2 / 1;
	object-fit: contain;
}

html body .phse .phse-media-testo {
	min-width: 0;
	margin: 0;
	padding: 0;
	border: 0;
}

/* La testata: non un logo, un'etichetta. Il trattino la aggancia al testo. */
html body .phse .phse-media-fonte {
	display: inline-flex;
	align-items: center;
	gap: 12px;
	font-family: var(--ph-display);
	font-size: 0.8125rem;
	font-weight: var(--ph-w-bold);
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--ph-blu);
}

html body .phse .phse-media-fonte::before {
	content: '';
	width: 26px;
	height: 2px;
	border-radius: 2px;
	background-color: var(--ph-blu);
}

html body .phse .phse-media-testo h3 {
	font-family: var(--ph-display);
	font-size: clamp(1.35rem, 2.1vw, 1.9rem);
	font-weight: var(--ph-w-bold);
	line-height: 1.22;
	letter-spacing: -0.018em;
	color: var(--ph-fondo);
	margin: 16px 0 0;
}

html body .phse .phse-media-testo p {
	color: var(--ph-grigio);
	font-size: 1.0125rem;
	line-height: 1.62;
	margin: 16px 0 0;
	max-width: 54ch;
}

html body .phse .phse-media-firma {
	display: flex;
	flex-direction: column;
	gap: 2px;
	margin: 24px 0 0;
	padding-left: 16px;
	border-left: 2px solid rgba(40, 90, 166, 0.32);
}

html body .phse .phse-media-nome {
	font-family: var(--ph-display);
	font-weight: var(--ph-w-semibold);
	color: var(--ph-fondo);
}

html body .phse .phse-media-ruolo {
	color: var(--ph-grigio);
	font-size: 0.9rem;
}

/* -- 44.2 Il video: copertina, tasto, e l'iframe solo su richiesta -------- */

html body .phse .phvid {
	position: relative;
	display: block;
	width: 100%;
	padding: 0;
	border: 0;
	background: none;
	cursor: pointer;
	aspect-ratio: 16 / 9;
	border-radius: 0 !important;
	overflow: hidden;
	-webkit-appearance: none;
	appearance: none;
}

html body .phse .phvid img {
	aspect-ratio: 16 / 9;
	transition: transform 640ms cubic-bezier(0.22, 0.61, 0.36, 1);
}

/* Una velatura scura sotto il tasto: il triangolo bianco deve reggere anche
   su una copertina chiara. */
html body .phse .phvid::after {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgba(16, 41, 75, 0.06) 0%, rgba(16, 41, 75, 0.34) 100%);
	transition: opacity 400ms cubic-bezier(0.22, 0.61, 0.36, 1);
	pointer-events: none;
}

html body .phse .phvid-tasto {
	position: absolute;
	top: 50%;
	left: 50%;
	z-index: 2;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 78px;
	height: 78px;
	margin: -39px 0 0 -39px;
	border-radius: 999px !important;
	background-color: rgba(255, 255, 255, 0.94);
	box-shadow: 0 10px 30px rgba(16, 41, 75, 0.28);
	transition: transform 320ms cubic-bezier(0.22, 0.61, 0.36, 1),
	            background-color 320ms cubic-bezier(0.22, 0.61, 0.36, 1);
	pointer-events: none;
}

html body .phse .phvid-tasto svg {
	display: block;
	margin-left: 4px;
	color: var(--ph-blu);
}

html body .phse .phvid:hover img { transform: scale(1.035); }
html body .phse .phvid:hover .phvid-tasto,
html body .phse .phvid:focus-visible .phvid-tasto {
	transform: scale(1.08);
	background-color: var(--ph-bianco);
}

html body .phse .phvid:focus-visible {
	outline: 3px solid var(--ph-blu);
	outline-offset: 3px;
}

/* La durata, in basso a destra: dice quanto costa guardarlo. */
html body .phse .phvid-durata {
	position: absolute;
	right: 14px;
	bottom: 14px;
	z-index: 2;
	padding: 5px 11px;
	border-radius: 999px;
	background-color: rgba(16, 41, 75, 0.72);
	color: var(--ph-bianco);
	font-family: var(--ph-display);
	font-size: 0.75rem;
	font-weight: var(--ph-w-semibold);
	letter-spacing: 0.02em;
	pointer-events: none;
}

/* Quando l'iframe entra, la copertina sparisce e resta solo il video. */
html body .phse .phse-media-lastra iframe {
	display: block;
	width: 100%;
	height: 100%;
	aspect-ratio: 16 / 9;
	border: 0;
}

/* -- 44.3 Scalini ---------------------------------------------------------- */

@media (max-width: 980px) {
	html body .phse .phse-media {
		grid-template-columns: minmax(0, 1fr);
		gap: clamp(24px, 4vw, 34px);
	}
	html body .phse .phse-media-testo p { max-width: none; }
}

@media (max-width: 600px) {
	html body .phse .phvid-tasto {
		width: 62px;
		height: 62px;
		margin: -31px 0 0 -31px;
	}
}

@media (prefers-reduced-motion: reduce) {
	html body .phse .phvid img,
	html body .phse .phvid-tasto { transition: none; }
	html body .phse .phvid:hover img { transform: none; }
}

/* ==========================================================================
   45. HERO A TUTTA PAGINA DELLA HOME
   Quattro lastre fotografiche che si dissolvono l'una nell'altra, con il testo
   fermo a sinistra e i comandi in basso.

   Due vincoli hanno deciso il disegno.

   1. Le fotografie disponibili sono quasi tutte 960px di larghezza. Su uno
      schermo grande verrebbero ingrandite e si vedrebbero morbide. Per questo
      la foto non e il soggetto ma l'atmosfera: sopra ci sta un velo Blu Fondo
      fitto, e cio che si legge sono la tipografia e il gradiente. La morbidezza
      diventa una scelta invece di un difetto.
   2. Il brandbook ammette solo transform e opacity. La dissolvenza e opacity,
      il lento avvicinamento della foto e una scala. Niente altro si muove.

   Il carosello parte da solo ma si ferma al passaggio del mouse, quando prende
   il fuoco da tastiera, quando esce dallo schermo e quando il sistema chiede
   meno animazioni. C'e anche un tasto di pausa: un contenuto che si muove da
   solo senza modo di fermarlo e un problema di accessibilita, non uno stile.
   ========================================================================== */

/* -- 45.1 La lastra ------------------------------------------------------- */

html body .phse .phhero {
	position: relative;
	display: flex;
	align-items: flex-end;
	min-height: min(82vh, 760px);
	padding: 0;
	overflow: hidden;
	background-color: var(--ph-fondo);
	isolation: isolate;
}

html body .phse .phhero-pista {
	position: absolute;
	inset: 0;
	margin: 0;
	padding: 0;
	list-style: none;
	z-index: 0;
}

html body .phse .phhero-lastra {
	position: absolute;
	inset: 0;
	margin: 0;
	opacity: 0;
	transition: opacity 900ms cubic-bezier(0.4, 0, 0.2, 1);
	will-change: opacity;
}

html body .phse .phhero-lastra.is-attiva { opacity: 1; }

html body .phse .phhero-lastra img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: 50% 46%;
	/* la foto parte gia leggermente ingrandita: cosi la scala successiva non
	   scopre mai i bordi */
	transform: scale(1.04);
	filter: saturate(0.86);
	will-change: transform;
}

/* Il lento avvicinamento: dura quanto la lastra resta in scena. */
html body .phse .phhero-lastra.is-attiva img {
	animation: phhero-avvicina 4s linear forwards;
}

@keyframes phhero-avvicina {
	from { transform: scale(1.04); }
	to   { transform: scale(1.12); }
}

/* Il velo. Due strati: uno orizzontale che protegge la colonna del testo,
   uno verticale che stacca i comandi dal fondo della foto. */
html body .phse .phhero-lastra::after {
	content: '';
	position: absolute;
	inset: 0;
	background:
		linear-gradient(180deg, rgba(16, 41, 75, 0.34) 0%, rgba(16, 41, 75, 0) 34%,
		                        rgba(16, 41, 75, 0.52) 100%),
		linear-gradient(90deg, rgba(16, 41, 75, 0.90) 0%, rgba(16, 41, 75, 0.74) 42%,
		                       rgba(16, 41, 75, 0.36) 76%, rgba(16, 41, 75, 0.18) 100%);
}

/* -- 45.2 Il testo -------------------------------------------------------- */

html body .phse .phhero-corpo {
	position: relative;
	z-index: 2;
	width: 100%;
	/* Il corpo della hero e anche un .phse-inner, che porta con se max-width
	   1245 e margini automatici. Sommato al gutter qui sotto, il rientro si
	   contava due volte: la fascia era gia centrata nei suoi 1245px e poi ci
	   aggiungeva altri 97,5px di padding, cosi il titolo partiva 97px piu a
	   destra del logo e di tutte le altre fasce della pagina.
	   Togliendo il tetto, il gutter fa il suo mestiere una volta sola: e
	   siccome 100vw - 2*gutter vale esattamente 1245, la colonna resta larga
	   quanto le altre e comincia dove comincia il logo. */
	max-width: none;
	padding: clamp(64px, 8vw, 120px) var(--phse-gutter) clamp(28px, 3vw, 40px);
}

html body .phse .phhero-testi {
	position: relative;
	max-width: 760px;
	min-height: clamp(268px, 26vw, 320px);
}

html body .phse .phhero-testo {
	position: absolute;
	inset: auto auto 0 0;
	width: 100%;
	opacity: 0;
	visibility: hidden;
	transform: translateY(14px);
	transition: opacity 620ms cubic-bezier(0.22, 0.61, 0.36, 1),
	            transform 620ms cubic-bezier(0.22, 0.61, 0.36, 1),
	            visibility 0s linear 620ms;
	pointer-events: none;
}

html body .phse .phhero-testo.is-attiva {
	opacity: 1;
	visibility: visible;
	transform: translateY(0);
	transition-delay: 180ms, 180ms, 0s;
	pointer-events: auto;
}

html body .phse .phhero-occhiello {
	display: inline-flex;
	align-items: center;
	gap: 12px;
	font-family: var(--ph-display);
	font-size: var(--ph-size-eyebrow);
	font-weight: var(--ph-w-bold);
	letter-spacing: var(--ph-ls-eyebrow);
	text-transform: uppercase;
	color: var(--ph-azzurro);
}

html body .phse .phhero-occhiello::before {
	content: '';
	width: 28px;
	height: 2px;
	border-radius: 2px;
	background-color: var(--ph-azzurro);
}

html body .phse .phhero-titolo {
	font-family: var(--ph-display) !important;
	font-size: clamp(2.25rem, 4.6vw, 4rem) !important;
	font-weight: var(--ph-w-bold) !important;
	line-height: 1.06 !important;
	letter-spacing: var(--ph-ls-display) !important;
	color: var(--ph-bianco) !important;
	margin: clamp(14px, 1.6vw, 22px) 0 0 !important;
	text-wrap: balance;
}

html body .phse .phhero-lede {
	font-size: clamp(1.0625rem, 1.35vw, 1.25rem);
	line-height: 1.58;
	color: rgba(255, 255, 255, 0.80);
	margin: clamp(14px, 1.4vw, 20px) 0 0;
	max-width: 56ch;
	text-wrap: pretty;
}

html body .phse .phhero-cta {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	margin: clamp(22px, 2.4vw, 32px) 0 0;
}

/* Il pulsante fantasma su fondo scuro non puo essere quello del corpo:
   li e scuro su bianco, qui deve essere bianco su scuro. */
html body .phse .phhero-cta .phse-btn--ghost {
	background-color: rgba(255, 255, 255, 0.06) !important;
	color: var(--ph-bianco) !important;
	border-color: rgba(255, 255, 255, 0.34);
}

html body .phse .phhero-cta .phse-btn--ghost:hover,
html body .phse .phhero-cta .phse-btn--ghost:focus-visible {
	background-color: rgba(255, 255, 255, 0.14) !important;
	border-color: rgba(255, 255, 255, 0.62);
	color: var(--ph-bianco) !important;
}

/* -- 45.3 I comandi ------------------------------------------------------- */

html body .phse .phhero-comandi {
	display: flex;
	align-items: center;
	gap: clamp(14px, 1.6vw, 22px);
	margin: clamp(26px, 3vw, 40px) 0 0;
}

html body .phse .phhero-punti {
	display: flex;
	align-items: center;
	gap: 10px;
	margin: 0;
	padding: 0;
	list-style: none;
}

html body .phse .phhero-punti > li { margin: 0; padding: 0; list-style: none; }

/* Ogni comando e una barra sottile che si riempie: dice quale lastra e in
   scena e quanto le resta. */
html body .phse .phhero-punto {
	position: relative;
	display: block;
	width: clamp(38px, 5vw, 62px);
	height: 3px;
	padding: 0;
	border: 0;
	border-radius: 999px !important;
	background-color: rgba(255, 255, 255, 0.26);
	cursor: pointer;
	overflow: hidden;
	transition: background-color 300ms cubic-bezier(0.22, 0.61, 0.36, 1);
	-webkit-appearance: none;
	appearance: none;
}

/* l'area cliccabile e piu alta della barra: 3px non si prendono col dito */
html body .phse .phhero-punto::before {
	content: '';
	position: absolute;
	inset: -14px 0;
}

html body .phse .phhero-punto:hover { background-color: rgba(255, 255, 255, 0.46); }

html body .phse .phhero-punto:focus-visible {
	outline: 2px solid var(--ph-bianco);
	outline-offset: 6px;
}

html body .phse .phhero-punto .phhero-riempi {
	position: absolute;
	inset: 0;
	border-radius: 999px;
	background-color: var(--ph-bianco);
	transform: scaleX(0);
	transform-origin: 0 50%;
}

html body .phse .phhero-punto[aria-current="true"] .phhero-riempi {
	animation: phhero-riempi 4s linear forwards;
}

/* in pausa il riempimento si ferma dov'e, non riparte da capo */
html body .phse .phhero.is-ferma .phhero-punto[aria-current="true"] .phhero-riempi {
	animation-play-state: paused;
}

@keyframes phhero-riempi {
	from { transform: scaleX(0); }
	to   { transform: scaleX(1); }
}

html body .phse .phhero-pausa {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 34px;
	height: 34px;
	padding: 0;
	border: 1px solid rgba(255, 255, 255, 0.28);
	border-radius: 999px !important;
	background-color: rgba(255, 255, 255, 0.06);
	color: var(--ph-bianco);
	cursor: pointer;
	transition: background-color 300ms cubic-bezier(0.22, 0.61, 0.36, 1),
	            border-color 300ms cubic-bezier(0.22, 0.61, 0.36, 1);
	-webkit-appearance: none;
	appearance: none;
}

html body .phse .phhero-pausa:hover {
	background-color: rgba(255, 255, 255, 0.16);
	border-color: rgba(255, 255, 255, 0.5);
}

html body .phse .phhero-pausa:focus-visible {
	outline: 2px solid var(--ph-bianco);
	outline-offset: 3px;
}

html body .phse .phhero-pausa svg { display: block; }
html body .phse .phhero-pausa .phhero-play { display: none; }
html body .phse .phhero-pausa[aria-pressed="true"] .phhero-play { display: block; }
html body .phse .phhero-pausa[aria-pressed="true"] .phhero-stop { display: none; }

/* -- 45.4 Scalini ---------------------------------------------------------- */

@media (max-width: 900px) {
	html body .phse .phhero {
		min-height: min(76vh, 640px);
	}
	html body .phse .phhero-lastra img { object-position: 50% 42%; }
	/* in verticale il velo orizzontale non serve: il testo sta sopra tutto */
	html body .phse .phhero-lastra::after {
		background:
			linear-gradient(180deg, rgba(16, 41, 75, 0.62) 0%, rgba(16, 41, 75, 0.72) 46%,
			                        rgba(16, 41, 75, 0.90) 100%);
	}
	html body .phse .phhero-testi { min-height: clamp(320px, 62vw, 420px); }
}

@media (max-width: 560px) {
	html body .phse .phhero-cta { flex-direction: column; align-items: stretch; }
	html body .phse .phhero-cta .phse-btn { width: 100%; }
}

@media (prefers-reduced-motion: reduce) {
	html body .phse .phhero-lastra { transition: opacity 1ms linear; }
	html body .phse .phhero-lastra.is-attiva img { animation: none; transform: scale(1.04); }
	html body .phse .phhero-testo { transition: opacity 1ms linear; transform: none; }
	html body .phse .phhero-testo.is-attiva { transform: none; }
	html body .phse .phhero-punto[aria-current="true"] .phhero-riempi {
		animation: none;
		transform: scaleX(1);
	}
}

/* ==========================================================================
   46. LE DIECI SCHEDE DEI SETTORI CON LA SCENA
   Sono le stesse dieci destinazioni dell'indice /settori/, ma qui la scheda
   porta sopra una scena disegnata invece dell'icona da 24px: la home e il
   posto in cui uno decide se questo lavoro c'entra con il suo, e dieci icone
   lineari non bastano a farglielo capire.

   L'anatomia e quella delle schede sfide del blocco 38 — fascia figura
   trasparente con un capello sotto, poi il testo — con una differenza: qui
   tutta la scheda e un link, quindi hover e fuoco devono comportarsi da
   comando e non da decorazione.

   Cinque colonne per due righe: dieci schede non lasciano orfani, e la
   figura da 240x104 entra esatta nella colonna.
   ========================================================================== */

html body .phse .phse-settv {
	display: grid;
	grid-template-columns: repeat(5, minmax(0, 1fr));
	gap: 18px;
	margin: clamp(30px, 3vw, 44px) 0 0;
	padding: 0;
	list-style: none;
}

html body .phse .phse-settv > li {
	display: flex;
	margin: 0;
	padding: 0;
	list-style: none;
	min-width: 0;
}

html body .phse .phse-settv-card {
	display: flex;
	flex-direction: column;
	width: 100%;
	background-color: var(--ph-bianco);
	border: 1px solid rgba(16, 41, 75, 0.09);
	border-radius: 14px;
	overflow: hidden;
	text-decoration: none !important;
	transition: transform 320ms cubic-bezier(0.22, 0.61, 0.36, 1),
	            border-color 320ms cubic-bezier(0.22, 0.61, 0.36, 1),
	            box-shadow 320ms cubic-bezier(0.22, 0.61, 0.36, 1);
}

html body .phse .phse-settv-card:hover,
html body .phse .phse-settv-card:focus-visible {
	transform: translateY(-4px);
	border-color: rgba(40, 90, 166, 0.24);
	box-shadow: 0 14px 34px rgba(16, 41, 75, 0.09);
}

html body .phse .phse-settv-card:focus-visible {
	outline: 2px solid var(--ph-blu);
	outline-offset: 3px;
}

/* La fascia della figura resta TRASPARENTE: la scheda e bianca, e un riquadro
   bianco dentro una scheda bianca sparisce. Serve solo il capello sotto. */
html body .phse .phse-settv-fig {
	box-sizing: border-box;
	display: flex;
	align-items: center;
	justify-content: center;
	margin: 0;
	padding: 14px 12px 10px;
	background-color: transparent;
	border: 0;
	border-bottom: 1px solid rgba(16, 41, 75, 0.08);
}

html body .phse .phse-settv-fig svg {
	display: block;
	width: 100%;
	height: auto;
}

html body .phse .phse-settv-corpo {
	display: flex;
	flex-direction: column;
	flex: 1 1 auto;
	padding: 16px 18px 16px;
}

html body .phse .phse-settv-card h3 {
	font-family: var(--ph-display) !important;
	font-size: 1.0625rem !important;
	font-weight: var(--ph-w-bold) !important;
	line-height: 1.25 !important;
	letter-spacing: -0.012em !important;
	color: var(--ph-fondo) !important;
	margin: 0 !important;
}

html body .phse .phse-settv-card p {
	color: var(--ph-grigio);
	font-size: 0.9rem;
	line-height: 1.5;
	margin: 8px 0 0;
}

html body .phse .phse-settv-piede {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 10px;
	margin: auto 0 0;
	padding: 12px 0 0;
	font-family: var(--ph-display);
	font-size: 0.8125rem;
	font-weight: var(--ph-w-semibold);
	color: var(--ph-blu);
}

html body .phse .phse-settv-piede svg {
	flex: 0 0 auto;
	transition: transform 320ms cubic-bezier(0.22, 0.61, 0.36, 1);
}

html body .phse .phse-settv-card:hover .phse-settv-piede svg {
	transform: translateX(4px);
}

/* -- 46.1 Scalini ---------------------------------------------------------- */

/* Sotto i 1180 cinque colonne stringono la figura sotto i 180px e la scena
   non si legge piu: si scende a tre, poi a due. Dieci non e divisibile per
   tre, ma su due righe piene piu una da uno l'orfano sta in fondo e si nota
   meno di una figura illeggibile. */
@media (max-width: 1180px) {
	html body .phse .phse-settv { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (max-width: 860px) {
	html body .phse .phse-settv { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 560px) {
	html body .phse .phse-settv { grid-template-columns: minmax(0, 1fr); }
	html body .phse .phse-settv-fig { padding: 16px 16px 12px; }
}

@media (prefers-reduced-motion: reduce) {
	html body .phse .phse-settv-card,
	html body .phse .phse-settv-piede svg { transition: none; }
	html body .phse .phse-settv-card:hover { transform: none; }
	html body .phse .phse-settv-card:hover .phse-settv-piede svg { transform: none; }
}

/*                                                                           
   47. IL PANNELLO PRODOTTI — QUATTRO VOCI, E UN SECONDO PANNELLO

   La struttura richiesta dal cliente il 4 settembre 2026 e questa e solo
   questa:

       Camere bianche (cleanroom)
       Hardwall Cleanroom
       Softwall Cleanroom
       Attrezzature e componenti   >   [ le otto voci su due colonne ]

   Sostituisce il pannello a due gruppi affiancati: le tre cleanroom non sono
   piu figlie di Camere bianche, sono tre voci pari fra loro. Il quarto
   elemento non e una voce come le altre, e una porta: apre a destra un
   secondo pannello con le otto apparecchiature.

   Il terzo livello torna a essere quello che Salient sa gia fare — una
   tendina laterale al passaggio — quindi qui non si tocca la meccanica di
   apertura, solo la forma: posizione, griglia a due colonne, e la stessa
   carta del primo pannello.

   Solo da 1000px in su. Sotto, il menu e la lista a scomparsa di Salient e un
   pannello non c'entra nulla.
                                                                              */

@media only screen and (min-width: 1000px) {

/* -- 47.1 Il primo pannello: una colonna, quattro voci ---------------------- */

html body #header-outer .sf-menu > li.ph-menu-prodotti > ul.sub-menu {
	display: block !important;
	width: 296px !important;
	min-width: 0 !important;
	max-width: calc(100vw - 40px) !important;
	/* Il pannello e piu largo della voce che lo apre: si centra su di essa con
	   left+margin e non con transform, perche il transform e gia la leva con
	   cui Salient lo nasconde (translateY(-9999px)). */
	left: 50% !important;
	margin-left: -148px !important;
	padding: 10px !important;
	border-radius: 14px !important;
	box-shadow: 0 12px 32px rgba(16, 41, 75, .10) !important;
	/* il secondo pannello esce dal primo: nessun taglio */
	overflow: visible !important;
}

html body #header-outer .sf-menu > li.ph-menu-prodotti > ul.sub-menu > li {
	display: block !important;
	width: 100% !important;
		/* Salient fa galleggiare a destra le voci dei sottomenu quando il menu
		   sta nella meta destra della barra: senza questo le quattro voci si
		   stringono sul testo e si allineano a destra, che non e il disegno. */
		float: none !important;
	min-width: 0 !important;
	margin: 0 !important;
	padding: 0 !important;
	background-color: transparent !important;
	position: relative;
}

/* -- 47.2 La voce che apre il secondo pannello ----------------------------- */

/* Un chevron a destra, e basta: la freccia dice che si continua, il colore
   non serve. Sedici pixel dal bordo, allineato al centro ottico del testo. */
html body #header-outer .sf-menu > li.ph-menu-prodotti > ul > li.menu-item-has-children > a {
	position: relative;
	padding-right: 34px !important;
}

html body #header-outer .sf-menu > li.ph-menu-prodotti > ul > li.menu-item-has-children > a::after {
	content: "";
	position: absolute;
	right: 15px;
	top: 50%;
	width: 6px;
	height: 6px;
	margin-top: -3px;
	border-right: 1.5px solid currentColor;
	border-bottom: 1.5px solid currentColor;
	transform: rotate(-45deg);
	opacity: .42;
	transition: opacity .18s ease, transform .18s ease;
}

html body #header-outer .sf-menu > li.ph-menu-prodotti > ul > li.menu-item-has-children:hover > a::after,
html body #header-outer .sf-menu > li.ph-menu-prodotti > ul > li.menu-item-has-children.sfHover > a::after {
	opacity: 1;
	transform: rotate(-45deg) translate(1px, 1px);
}

/* Salient nasconde la freccia nativa del terzo livello: la nostra la
   sostituisce, due frecce sulla stessa voce sono un errore. */
html body #header-outer .sf-menu > li.ph-menu-prodotti > ul > li > a .sf-sub-indicator {
	display: none !important;
}

/* -- 47.3 Il secondo pannello: otto voci su due colonne -------------------- */

html body #header-outer .sf-menu > li.ph-menu-prodotti > ul > li > ul.sub-menu {
	display: grid !important;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	align-items: start;
	gap: 0 14px;
	width: 476px !important;
	min-width: 0 !important;
	max-width: calc(100vw - 40px) !important;
	/* Appeso al fianco del primo pannello, con dieci pixel d'aria: si legge
	   come un secondo foglio, non come un menu dentro un menu. Si apre a
	   sinistra perche la voce Prodotti sta nella meta destra della barra: a
	   destra i 476px del pannello uscirebbero dalla finestra su qualunque
	   schermo, il contenitore e centrato e il menu no. */
	left: auto !important;
	right: 100% !important;
	top: -10px !important;
	margin: 0 10px 0 0 !important;
	padding: 10px !important;
	border-radius: 14px !important;
	background-color: #fff !important;
	box-shadow: 0 12px 32px rgba(16, 41, 75, .10) !important;
}

html body #header-outer .sf-menu > li.ph-menu-prodotti > ul > li > ul.sub-menu > li {
	display: block !important;
	width: auto !important;
	min-width: 0 !important;
	margin: 0 !important;
	padding: 0 !important;
	background-color: transparent !important;
}

/* -- 47.4 Apertura del secondo pannello ------------------------------------ */

/* Chiuso di suo: il primo pannello ha quattro voci, non dodici. Si apre solo
   quando il puntatore e sulla quarta, o quando ci arriva la tastiera. */
html body #header-outer .sf-menu > li.ph-menu-prodotti > ul > li > ul.sub-menu {
	opacity: 0 !important;
	visibility: hidden !important;
	pointer-events: none;
	transform: translateX(6px) !important;
	transition: opacity .18s ease, transform .18s ease, visibility 0s linear .18s;
}

html body #header-outer .sf-menu > li.ph-menu-prodotti > ul > li:hover > ul.sub-menu,
html body #header-outer .sf-menu > li.ph-menu-prodotti > ul > li.sfHover > ul.sub-menu,
html body #header-outer .sf-menu > li.ph-menu-prodotti > ul > li:focus-within > ul.sub-menu {
	opacity: 1 !important;
	visibility: visible !important;
	pointer-events: auto;
	transform: none !important;
	transition: opacity .18s ease, transform .18s ease;
}

@media (prefers-reduced-motion: reduce) {
	html body #header-outer .sf-menu > li.ph-menu-prodotti > ul > li > ul.sub-menu {
		transform: none !important;
		transition: opacity .12s linear;
	}
}

}

/* ==========================================================================
   48. LA GALLERIA SU FONDO SCURO E I TITOLI DI GRUPPO

   Due cose che nascono insieme sulla home e che altrove non servono.

   48.A — La galleria della fascia 03b sta su Blu Fondo. Il carosello del
   blocco 40 e disegnato per fondo chiaro: frecce bianche con bordo scuro,
   didascalie in Grafite, punti in blu trasparente. Su Blu Fondo sparirebbe
   tutto. Qui si ribalta la tavolozza senza toccare il blocco 40, cosi le due
   gallerie chiare gia pubblicate (camere bianche, assistenza, validazione)
   restano quelle che sono.

   Le foto di camere bianche sono quasi tutte bianche: su fondo scuro si
   staccano invece di sciogliersi nella pagina. E il motivo per cui la fascia
   e scura, non un capriccio cromatico.

   48.B — I titoli di gruppo della fascia 07: la stessa divisione del menu
   Prodotti — camere bianche e attrezzature — con la stessa forma tipografica
   dei titoli di colonna della tendina, cosi chi ha appena visto il menu
   riconosce il taglio senza rileggerlo.
   ========================================================================== */

/* -- 48.A.1 Le didascalie -------------------------------------------------- */

html body .phse .phse-sec--fondo .phgal-slide figcaption {
	color: rgba(234, 240, 247, 0.76);
}

/* -- 48.A.2 Le frecce ------------------------------------------------------ */

/* Vetro, non bianco pieno: un pulsante bianco su Blu Fondo pesa piu della
   foto che serve a sfogliare. */
html body .phse .phse-sec--fondo .phgal-btn {
	background-color: rgba(255, 255, 255, 0.10) !important;
	border: 1px solid rgba(255, 255, 255, 0.26) !important;
	color: var(--ph-bianco);
}

html body .phse .phse-sec--fondo .phgal-btn:hover:not(:disabled) {
	background-color: rgba(255, 255, 255, 0.18) !important;
	border-color: rgba(255, 255, 255, 0.44) !important;
	box-shadow: none;
}

html body .phse .phse-sec--fondo .phgal-btn:focus-visible {
	outline: 2px solid var(--ph-bianco);
	outline-offset: 3px;
}

html body .phse .phse-sec--fondo .phgal-btn:disabled {
	opacity: 0.28;
}

/* -- 48.A.3 I punti -------------------------------------------------------- */

html body .phse .phse-sec--fondo .phgal-punto {
	background: rgba(255, 255, 255, 0.26);
}

html body .phse .phse-sec--fondo .phgal-punto:hover {
	background: rgba(255, 255, 255, 0.52);
}

html body .phse .phse-sec--fondo .phgal-punto[aria-current="true"] {
	background: var(--ph-bianco);
}

html body .phse .phse-sec--fondo .phgal-punto:focus-visible {
	outline: 2px solid var(--ph-bianco);
	outline-offset: 3px;
}

html body .phse .phse-sec--fondo .phgal-pista:focus-visible {
	outline: 2px solid var(--ph-bianco);
}

/* -- 48.A.4 La lastra ------------------------------------------------------ */

/* Il posto della foto prima che arrivi: schiarito, non scurito. Un rettangolo
   nero su fondo blu sembra un buco nella pagina. */
html body .phse .phse-sec--fondo .phgal-slide img {
	background-color: rgba(255, 255, 255, 0.06);
}

/* La fascia della galleria respira un po' meno in alto: sopra c'e gia il
   bianco della 03, e due arie piene di fila allontanano le due sezioni. */
html body .phse .phse-sec--gal .phgal-testa {
	margin-bottom: clamp(22px, 2.4vw, 32px);
}

/* -- 48.B I titoli di gruppo della fascia 07 ------------------------------- */

/* Non sono etichette: sono le due pagine di famiglia, le stesse che nel menu
   fanno da titolo di colonna. Un maiuscoletto da 11px non lo clicca nessuno,
   quindi qui il titolo prende corpo, colore da link e una freccina — i tre
   segnali che insieme dicono "di qua si va da qualche parte". */
html body .phse .phse-gruppo {
	display: flex;
	align-items: center;
	gap: 16px;
	margin: clamp(30px, 3.2vw, 42px) 0 18px;
}

html body .phse .phse-gruppo:first-of-type {
	margin-top: 0;
}

html body .phse a.phse-gruppo-link {
	display: inline-flex;
	align-items: center;
	gap: 9px;
	flex: 0 0 auto;
	font-family: var(--ph-display) !important;
	font-size: 1.1875rem !important;
	font-weight: var(--ph-w-bold) !important;
	line-height: 1.25 !important;
	letter-spacing: -0.012em !important;
	color: var(--ph-blu) !important;
	text-decoration: none !important;
	border-bottom: 2px solid transparent;
	padding-bottom: 2px;
	transition: color 300ms cubic-bezier(0.22, 0.61, 0.36, 1),
	            border-color 300ms cubic-bezier(0.22, 0.61, 0.36, 1);
}

html body .phse a.phse-gruppo-link svg {
	flex: 0 0 auto;
	width: 17px;
	height: 17px;
	transition: transform 300ms cubic-bezier(0.22, 0.61, 0.36, 1);
}

html body .phse a.phse-gruppo-link:hover,
html body .phse a.phse-gruppo-link:focus-visible {
	color: var(--ph-fondo) !important;
	border-bottom-color: var(--ph-fondo);
}

html body .phse a.phse-gruppo-link:hover svg,
html body .phse a.phse-gruppo-link:focus-visible svg {
	transform: translateX(4px);
}

html body .phse a.phse-gruppo-link:focus-visible {
	outline: 2px solid var(--ph-blu);
	outline-offset: 4px;
	border-radius: 4px;
}

/* Il filo che continua dopo il titolo: dice dove arriva il gruppo senza
   incorniciare niente. Sta sull'h3 e non sul link, cosi non si sottolinea
   mezza pagina al passaggio del mouse. */
html body .phse .phse-gruppo::after {
	content: '';
	flex: 1 1 auto;
	height: 1px;
	background-color: rgba(40, 90, 166, 0.20);
}

@media (max-width: 599px) {
	html body .phse .phse-gruppo {
		gap: 12px;
		margin-bottom: 14px;
	}

	html body .phse a.phse-gruppo-link {
		font-size: 1.0625rem !important;
	}
}

@media (prefers-reduced-motion: reduce) {
	html body .phse a.phse-gruppo-link,
	html body .phse a.phse-gruppo-link svg { transition: none; }
	html body .phse a.phse-gruppo-link:hover svg { transform: none; }
}

/* ==========================================================================
   49. IL VERDE DELL'AZIONE — "Richiedi un sopralluogo" nella fascia in testa

   Il brandbook v1.0 non ha un verde. Quindi non se ne inventa uno a occhio:
   lo si deriva dal Blu PHAMM, e si scrive qui come lo si e derivato, perche
   la prossima volta che serve un colore fuori palette si rifaccia lo stesso
   conto invece di aprire il selettore.

   #285AA6 in CIELCh vale L* 38,8 · C* 47,0 · H 283°. Il verde qui sotto ha
   **la stessa luminosita** e una saturazione appena piu bassa (C* 40: a 47 il
   verde esce dal gamut sRGB e si spegne da solo), con la sola tinta ruotata
   a 158°. Conseguenze pratiche, tutte verificate:

   * su fondo chiaro pesa quanto il blu, quindi non sbilancia la testata;
   * il testo bianco sopra fa **6,78:1** contro i 6,77:1 del blu — stesso
     rapporto, stessa classe;
   * accanto al Blu PHAMM non litiga: e lo stesso colore visto da un'altra
     angolazione della ruota, non un secondo colore di marca.

   Dove si usa: **soltanto qui**, sull'unica riga della fascia che chiede di
   essere chiamati. Il pulsante Contattaci in header resta Blu PHAMM, e cosi
   ogni altro CTA del sito. Un colore che marca una sola azione funziona
   finche resta raro: messo su tutti i pulsanti pieni smetterebbe di dire
   qualcosa.
   ========================================================================== */

:root,
html body {
	--ph-verde: #006942;         /* Verde azione — L* del Blu PHAMM, tinta 158° */
	--ph-verde-scuro: #005532;   /* stato premuto e hover */
	--ph-verde-ombra: rgba(0, 105, 66, 0.26);
}

/* Da link a pastiglia. Nella fascia c'erano tre link uguali — telefono, mail
   e sopralluogo — e il terzo e l'unico che porta a un modulo: adesso si vede
   che e un comando e non un altro recapito. */
html body .phs .phs-cta {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	margin-left: 14px;
	padding: 7px 15px !important;
	font-family: var(--ph-display) !important;
	font-weight: var(--ph-w-bold) !important;
	font-size: 0.8125rem !important;
	line-height: 1.3 !important;
	letter-spacing: 0 !important;
	color: var(--ph-bianco) !important;
	background-color: var(--ph-verde) !important;
	border: 0 !important;
	border-radius: 999px !important;
	box-shadow: 0 6px 16px var(--ph-verde-ombra);
	text-decoration: none !important;
	white-space: nowrap;
	transition: background-color 300ms cubic-bezier(0.22, 0.61, 0.36, 1),
		box-shadow 300ms cubic-bezier(0.22, 0.61, 0.36, 1);
}

/* Sottolineare un testo bianco dentro una pastiglia piena non si legge: qui
   l'hover e il colore che scende di un gradino, piu la freccina che scorre. */
html body .phs .phs-cta:hover,
html body .phs .phs-cta:focus-visible {
	background-color: var(--ph-verde-scuro) !important;
	color: var(--ph-bianco) !important;
	text-decoration: none !important;
	box-shadow: 0 8px 20px var(--ph-verde-ombra);
}

html body .phs .phs-cta:focus-visible {
	outline: 2px solid var(--ph-verde);
	outline-offset: 3px;
	border-radius: 999px;
}

html body .phs .phs-cta .phs-chev {
	color: var(--ph-bianco) !important;
}

/* La fascia si accorcia prima di andare a capo: sotto i 480 la pastiglia
   perde un po' di fianchi ma resta pastiglia. */
@media only screen and (max-width: 480px) {
	html body .phs .phs-cta {
		margin-left: 8px;
		padding: 6px 12px !important;
	}
}

@media (prefers-reduced-motion: reduce) {
	html body .phs .phs-cta {
		transition: none;
	}
}

/* ==========================================================================
   50. IL MODULO PIU PROMINENTE

   L'impaginazione resta quella che era e che funzionava: una riga, due
   colonne, testo a sinistra e modulo a destra, su fondo bianco. Cambia solo
   il peso della colonna destra — perche su questa pagina la cosa da fare e
   scrivere, non leggere.

   Tre leve, nessuna delle quali sposta niente d'altro:

   1. la colonna del modulo passa da 545 a 620px e il divario si stringe: il
      modulo prende spazio dal vuoto fra le due colonne, non dal testo;
   2. i campi salgono da 46 a 54px di altezza e prendono un fondo proprio,
      cosi si vedono come caselle da riempire e non come righe di testo;
   3. il pulsante di invio va a tutta larghezza: e la conclusione della
      colonna, non un bottoncino in un angolo.

   Il campo in cui si sta scrivendo e l'unico acceso della scheda: la vasca
   diventa bianca al fuoco. E il dettaglio che fa sembrare curato un modulo,
   piu di qualunque ombra.
   ========================================================================== */

/* -- 50.1 La colonna del modulo pesa di piu ------------------------------- */

html body .phct .phct-hero--v2 .phct-hero-grid {
	grid-template-columns: minmax(0, 1fr) minmax(0, 620px);
	gap: clamp(28px, 3.2vw, 56px);
}

/* -- 50.2 La scheda ------------------------------------------------------- */

html body .phct .phct-form-card--prom {
	padding: clamp(26px, 2.9vw, 40px);
	border-radius: 20px;
	box-shadow:
		0 30px 70px rgba(16, 41, 75, 0.13),
		0 4px 14px rgba(16, 41, 75, 0.05);
}

/* Il motivo a righe nell'angolo era tarato su una scheda piu stretta: su
   questa cade sopra la testa del modulo e si legge come un difetto di stampa
   invece che come una decorazione. */
html body .phct .phct-form-card--prom::after {
	display: none;
}

html body .phct .phct-form-card--prom .phct-form-testa {
	margin-bottom: clamp(22px, 2.4vw, 30px);
	padding-bottom: clamp(20px, 2.2vw, 26px);
	border-bottom: 1px solid rgba(16, 41, 75, 0.08);
}

/* -- 50.3 I campi, un gradino piu grandi ---------------------------------- */

html body .phct .phct-form-card--prom .ph-form .ph-form__row {
	margin-bottom: 18px;
}

html body .phct .phct-form-card--prom .ph-form .ph-form__row--half {
	gap: 18px;
}

html body .phct .phct-form-card--prom .ph-form .ph-form__input,
html body .phct .phct-form-card--prom .ph-form .ph-form__select,
html body .phct .phct-form-card--prom .ph-form .ph-form__textarea {
	min-height: 54px;
	padding: 15px 17px !important;
	/* La casella e una vasca chiara dentro una scheda bianca: senza un fondo
	   proprio si distingue solo per il filo del bordo, che a un metro di
	   distanza non si vede. */
	background-color: #F5F8FC !important;
	border-color: rgba(16, 41, 75, 0.10) !important;
	border-radius: 12px !important;
}

html body .phct .phct-form-card--prom .ph-form .ph-form__input:hover,
html body .phct .phct-form-card--prom .ph-form .ph-form__select:hover,
html body .phct .phct-form-card--prom .ph-form .ph-form__textarea:hover {
	background-color: #F0F5FB !important;
	border-color: rgba(16, 41, 75, 0.18) !important;
}

html body .phct .phct-form-card--prom .ph-form .ph-form__input:focus,
html body .phct .phct-form-card--prom .ph-form .ph-form__select:focus,
html body .phct .phct-form-card--prom .ph-form .ph-form__textarea:focus {
	background-color: var(--ph-bianco) !important;
	border-color: var(--ph-blu) !important;
	box-shadow: 0 0 0 4px rgba(40, 90, 166, 0.14) !important;
}

html body .phct .phct-form-card--prom .ph-form .ph-form__textarea {
	min-height: 140px;
}

html body .phct .phct-form-card--prom .ph-form .ph-form__label {
	font-size: 0.8125rem !important;
	margin-bottom: 9px !important;
}

html body .phct .phct-form-card--prom .ph-form ::placeholder {
	color: rgba(95, 112, 133, 0.72);
	opacity: 1;
}

/* -- 50.4 L'invio --------------------------------------------------------- */

html body .phct .phct-form-card--prom .ph-form .ph-form__row--submit {
	position: relative;
	margin-top: clamp(22px, 2.6vw, 30px);
	display: block;
}

/* La rotellina di CF7 e sempre nel flusso — da ferma e solo invisibile, non
   assente — e in una riga flex si prendeva una quarantina di pixel: il
   pulsante finiva piu corto dei campi sopra, di quel tanto che si nota senza
   capire perche. Fuori dal flusso, torna a filo. */
html body .phct .phct-form-card--prom .ph-form .wpcf7-spinner {
	position: absolute;
	right: 18px;
	top: 50%;
	transform: translateY(-50%);
	margin: 0;
}

html body .phct .phct-form-card--prom .ph-form .ph-form__btn {
	display: flex !important;
	width: 100%;
	min-height: 58px;
	padding: 16px 32px !important;
	font-size: 1rem !important;
	border-radius: 14px !important;
	box-shadow: 0 10px 26px rgba(40, 90, 166, 0.28) !important;
}

/* -- 50.5 Scalini --------------------------------------------------------- */

/* Sotto i 1100 la colonna sinistra si stringerebbe sotto le 40 battute: prima
   di arrivarci il modulo scende sotto, come faceva gia. */
@media (max-width: 1100px) {
	html body .phct .phct-hero--v2 .phct-hero-grid {
		grid-template-columns: minmax(0, 1fr);
	}

	html body .phct .phct-form-card--prom {
		max-width: 680px;
		margin-left: auto;
		margin-right: auto;
	}
}

@media (max-width: 620px) {
	html body .phct .phct-form-card--prom {
		border-radius: 18px;
		box-shadow: 0 16px 40px rgba(16, 41, 75, 0.10);
	}

	html body .phct .phct-form-card--prom .ph-form .ph-form__row--half {
		grid-template-columns: minmax(0, 1fr);
	}
}

@media (prefers-reduced-motion: reduce) {
	html body .phct .phct-form-card--prom .ph-form .ph-form__btn:hover {
		transform: none;
	}
}

/* ==========================================================================
   51. L'INTESTAZIONE DELLA PAGINA NEWS

   /news/ attaccava direttamente con la griglia dei post: nessun titolo,
   nessun h1, nessuna riga che dicesse di che cosa si tratta. Chi arrivava da
   una ricerca vedeva dodici copertine e doveva dedurlo da solo.

   Qui la fascia introduttiva usa lo stesso vocabolario delle altre pagine —
   occhiello, titolo, sottotitolo, spunte — perche non e una pagina a parte:
   e la stessa casa vista da un'altra stanza.

   **Fondo bianco, non Azzurro Camera.** Sopra c'e gia la fascia in testa, che
   e Azzurro Camera: due azzurri di fila si leggerebbero come uno solo. La
   separazione dalla griglia degli articoli la fa un capello, come sulle due
   fasce bianche contigue di /contattaci/.
   ========================================================================== */

/* `.posts-container` di Salient e un contenitore flex: un blocco figlio non
   prende la larghezza del contenitore ma quella del proprio contenuto, e
   l'intestazione usciva 245px piu stretta della griglia sotto. `flex: 0 0 100%`
   la rimette a tutta riga; gli 8px di fianco sono la stessa grondaia che hanno
   gli articoli, cosi il capello finisce esattamente sul bordo della prima
   copertina invece che otto pixel piu in la. */
html body .phnews {
	flex: 0 0 100%;
	box-sizing: border-box;
	width: 100%;
	max-width: 100%;
	padding: 0 8px;
	margin-bottom: clamp(30px, 3.2vw, 48px);
}

html body .phnews .phnews-intro {
	/* La fascia non e a tutta pagina: l'hook di Salient la deposita dentro il
	   contenitore del blog, e un margine negativo calcolato sul viewport
	   uscirebbe storto rispetto alla griglia dei post sotto. */
	margin: 0;
	padding: clamp(40px, 4.4vw, 72px) 0 clamp(34px, 3.6vw, 56px);
	background-color: transparent;
	border-bottom: 1px solid rgba(16, 41, 75, 0.10);
}

html body .phnews .phnews-testa {
	margin: 0 auto;
	max-width: 46rem;
}

html body .phnews h1.phnews-h1 {
	margin: 14px 0 0 !important;
	max-width: none;
	text-wrap: balance;
}

html body .phnews .phse-lede {
	margin: 18px auto 0;
	max-width: 40rem;
}

/* -- 51.1 Le tre spunte ---------------------------------------------------- */

html body .phnews .phnews-punti {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 16px 30px;
	max-width: 1000px;
	margin: clamp(28px, 3vw, 40px) auto 0 !important;
	padding: 0 !important;
	list-style: none;
}

html body .phnews .phnews-punti > li {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	margin: 0 !important;
	padding: 0 !important;
	list-style: none;
	font-family: var(--ph-text);
	font-size: 0.9375rem;
	line-height: 1.55;
	color: var(--ph-grigio);
}

html body .phnews .phnews-punti > li b {
	display: block;
	font-family: var(--ph-display);
	font-weight: var(--ph-w-semibold);
	color: var(--ph-fondo);
}

html body .phnews .phnews-tick {
	flex: 0 0 auto;
	margin-top: 2px;
	color: var(--ph-blu);
}

/* -- 51.2 Scalini ---------------------------------------------------------- */

@media (max-width: 900px) {
	html body .phnews .phnews-punti {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (max-width: 560px) {
	html body .phnews .phnews-punti {
		grid-template-columns: minmax(0, 1fr);
	}
}

/* --------------------------------------------------------------------------
   22. STAMPA
   Ultimo blocco del foglio, e deve restarlo: le regole di stampa devono
   vincere su tutto quello che viene prima.

   Su carta cade tutto quello che serve a navigare — header fisso, fascia
   informativa, footer, pulsanti flottanti, banner cookie — e resta il
   contenuto. Il colore diventa nero: il Blu Fondo su una stampante a getto
   costa inchiostro e non aggiunge nulla a un foglio in bianco e nero.

   Nota per chi rigenera il foglio: questo blocco arriva da
   css/22-print.css. In una versione precedente le regole di stampa erano
   incorporate nel file e una rigenerazione le ha perse, perche lo script
   troncava il foglio a monte del punto in cui si trovavano. Tenendole in un
   file a se e riaccodandole per ultime il problema non puo ripresentarsi.
   -------------------------------------------------------------------------- */

@media print {
	@page {
		margin: 16mm 14mm;
	}

	html,
	body {
		background: #FFFFFF !important;
		color: #000000 !important;
	}

	body {
		font-family: 'Instrument Sans', -apple-system, sans-serif !important;
		font-size: 10.5pt !important;
		line-height: 1.5 !important;
	}

	/* Cornice di navigazione: non serve su carta. */
	#header-outer,
	#header-space,
	#header-secondary-outer,
	.phs,
	.phf,
	.phfab,
	.phcc,
	#to-top,
	#slide-out-widget-area,
	#slide-out-widget-area-bg,
	#mobile-menu,
	.nectar-social,
	.sharing-default-minimal {
		display: none !important;
	}

	h1,
	h2,
	h3,
	h4,
	h5,
	h6 {
		font-family: 'DM Sans', -apple-system, sans-serif !important;
		color: #000000 !important;
		break-after: avoid;
		page-break-after: avoid;
	}

	h1 {
		font-size: 20pt !important;
	}

	h2 {
		font-size: 15pt !important;
	}

	h3 {
		font-size: 12.5pt !important;
	}

	p,
	li,
	td,
	th,
	dd,
	dt,
	address {
		color: #000000 !important;
	}

	a {
		color: #000000 !important;
		text-decoration: underline !important;
	}

	table,
	figure,
	blockquote {
		break-inside: avoid;
		page-break-inside: avoid;
	}

	/* Le superfici quiete diventano un filetto: il campo pieno su carta
	   diventa una macchia grigia. */
	.phlegal-note,
	.phlegal-table,
	.phlegal-card {
		background: none !important;
		box-shadow: none !important;
		border: 1px solid #999999 !important;
	}

	.phlegal-table thead th {
		background: none !important;
		border-bottom: 1px solid #666666 !important;
	}
}

/*                                                                           
   57. IL MAPPAMONDO A PUNTI — la rete internazionale, versione 2

   Richiesta del cliente del 4 settembre 2026, alla lettera: un mappamondo al
   posto della sola Europa, perche il mercato LATAM esiste e sulla mappa non
   si vedeva; un disegno e non una topografia, senza confini e senza paesi
   evidenziati; nessuno zoom e nessun trascinamento; e la scheda che si apre
   accanto al proprio punto invece che in fondo alla pagina.

   Il disegno e una griglia di punti sulle terre emerse, righe sfalsate: da
   lontano si legge come una carta, da vicino resta chiaramente un disegno. I
   punti sono un path solo con il tratto tondo — millenovecento cerchi
   costerebbero centoventi kilobyte di DOM, il path ne costa dieci.

   Il grappolo: a scala mondiale Pozzo d'Adda e Milano cadono nello stesso
   pixel. Si mostra un punto solo con il numero dentro, e premendolo i due si
   separano a raggiera. Il numero e piu onesto di due dischi sovrapposti.
                                                                              */

/* Nella versione precedente legenda e didascalia galleggiavano sopra la
   mappa perche la mappa riempiva tutto il riquadro. Qui il riquadro e una
   colonna: didascalia sopra, disegno in mezzo, nota sotto. */
html body .phr .phm-legenda,
html body .phr .phm-aiuto {
	position: static !important;
	left: auto !important;
	right: auto !important;
	top: auto !important;
	bottom: auto !important;
	background: none !important;
	box-shadow: none !important;
	padding: 0 !important;
}

html body .phr .phm-legenda { margin: 0 0 18px; }

html body .phr .phm-aiuto {
	margin: 16px 0 0;
	font-size: .8125rem;
	line-height: 1.5;
	color: var(--ph-grigio);
	max-width: none;
}

html body .phr .phr-viewport {
	position: relative;
	border-radius: 18px;
	background: var(--ph-camera);
	padding: 28px 24px 18px;
	overflow: hidden;
}

html body .phr .phr-tela {
	position: relative;
	width: 100%;
}

html body .phr .phr-mondo {
	display: block;
	width: 100%;
	height: auto;
}

/* Il tratto tondo trasforma ogni sottotracciato di lunghezza zero in un
   punto: e il modo piu economico che l'SVG conosca per disegnare una trama. */
html body .phr .phr-terre {
	stroke: rgba(40, 90, 166, .30);
	stroke-width: 7;
}

/* La copertura LATAM non e una sede e non prende un pin: e un arco sottile e
   una didascalia. Dire «ufficio» dove c'e un mercato sarebbe una bugia. */
html body .phr .phr-arco {
	stroke: rgba(40, 90, 166, .45);
	stroke-width: 3;
	stroke-dasharray: 2 16;
	stroke-linecap: round;
}

html body .phr .phr-latam-p {
	fill: rgba(40, 90, 166, .45);
}

html body .phr .phr-latam-t,
html body .phr .phr-latam-s {
	font-family: var(--ph-text);
	text-anchor: middle;
	fill: var(--ph-grigio);
}

html body .phr .phr-latam-t { font-size: 26px; font-weight: var(--ph-w-semibold); }
html body .phr .phr-latam-s { font-size: 21px; }

html body .phr .phr-pin { cursor: pointer; }

/* Su schermo tattile il bersaglio non arriva mai ai 44px raccomandati: a
   quel punto un punto interattivo e una promessa che il dito non riesce a
   riscuotere. I punti restano, l'interazione passa alle schede qui sotto,
   che sul telefono sono comunque il modo naturale di leggerle. */
@media (hover: none), (pointer: coarse) {
	html body .phr .phr-pin { pointer-events: none; cursor: default; }
	html body .phr .phr-punto { r: 14; }
	html body .phr .phr-pin.is-grappolo .phr-punto { r: 18; }
	html body .phr .phr-conta { font-size: 20px; }
}
html body .phr .phr-pin.is-nascosto { display: none; }

html body .phr .phr-alone {
	fill: rgba(40, 90, 166, .14);
	opacity: 0;
	transition: opacity 200ms ease;
}

/* Il bersaglio del puntatore e piu largo del disco: con il mouse diciotto
   pixel sono pochi, e sbagliare punto costa un clic in piu. */
html body .phr .phr-tocco { fill: transparent; }

html body .phr .phr-punto {
	fill: var(--ph-blu);
	stroke: #fff;
	stroke-width: 3;
	transition: r 180ms ease;
}

html body .phr .phr-pin--partner .phr-punto { fill: #fff; stroke: var(--ph-blu); stroke-width: 5; }
html body .phr .phr-pin--agenzia .phr-punto { fill: var(--ph-azzurro); stroke: #fff; }

html body .phr .phr-pin:hover .phr-alone,
html body .phr .phr-pin:focus-visible .phr-alone,
html body .phr .phr-pin.is-attivo .phr-alone { opacity: 1; }

html body .phr .phr-pin.is-attivo .phr-punto { r: 13; }

/* Il numero compare solo sul grappolo, e allora il disco cresce per farlo
   stare dentro senza toccare i bordi. */
html body .phr .phr-conta {
	display: none;
	font-family: var(--ph-display);
	font-size: 17px;
	font-weight: var(--ph-w-bold);
	text-anchor: middle;
	fill: #fff;
	pointer-events: none;
}

html body .phr .phr-pin.is-grappolo .phr-punto { r: 15; }
html body .phr .phr-pin.is-grappolo .phr-conta { display: block; }

/* La scheda accanto al punto. Il triangolino guarda il pin, e cambia lato
   quando la bolla si ribalta per non uscire dal riquadro. */
html body .phr .phr-bolla {
	position: absolute;
	z-index: 4;
	width: min(340px, calc(100% - 24px));
	max-height: calc(100% - 24px);
	overflow: auto;
	overscroll-behavior: contain;
	padding: 16px 18px 18px;
	border-radius: 14px;
	background: #fff;
	box-shadow: 0 14px 38px rgba(16, 41, 75, .16);
}

html body .phr .phr-bolla::after {
	content: "";
	position: absolute;
	top: 50%;
	margin-top: -7px;
	border: 7px solid transparent;
}

html body .phr .phr-bolla--dx::after { left: -14px; border-right-color: #fff; }
html body .phr .phr-bolla--sx::after { right: -14px; border-left-color: #fff; }

html body .phr .phr-bolla-testa {
	position: relative;
	display: block;
	padding-right: 30px;
	margin-bottom: 12px;
	padding-bottom: 12px;
	border-bottom: 1px solid rgba(40, 90, 166, .12);
}

html body .phr .phr-bolla-nome {
	display: block;
	font-family: var(--ph-display);
	font-size: 1rem;
	font-weight: var(--ph-w-bold);
	color: var(--ph-fondo);
}

html body .phr .phr-bolla-ruolo {
	display: block;
	margin-top: 2px;
	font-size: .8125rem;
	color: var(--ph-grigio);
}

html body .phr .phr-bolla-x {
	position: absolute;
	top: -4px;
	right: -6px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 28px;
	height: 28px;
	margin: 0;
	padding: 0;
	border: 0;
	border-radius: 8px;
	background: transparent;
	color: var(--ph-grigio);
	cursor: pointer;
}

html body .phr .phr-bolla-x:hover { background: var(--ph-camera); color: var(--ph-blu); }

html body .phr .phr-bolla .phm-scheda-corpo {
	display: block !important;
	height: auto !important;
	padding: 0 !important;
	opacity: 1 !important;
	visibility: visible !important;
}

/* Sotto i 900px la scheda non ci sta accanto al punto: 340 di scheda piu
   26 d'aria vogliono almeno 740 di mappa. Sotto quella soglia scende sotto il
   disegno a tutta larghezza, che e meglio di una scheda schiacciata al bordo. */
/* Sul telefono le etichette dei reparti scendevano a dieci pixel e le
   intestazioni di gruppo a undici: sono testo, non decorazione, e vanno
   letti. Dodici e il minimo sotto cui non si scende. */
@media (max-width: 900px) {
	html body .phm .phm-reparti li { font-size: 12px; }
	html body .phm .phm-gruppo-h { font-size: 12px !important; }
	html body .phs .phs-fact { font-size: 12px !important; }
}

@media (max-width: 900px) {
	html body .phr .phr-viewport { padding: 18px 14px 12px; }
	html body .phr .phr-bolla {
		position: static;
		width: auto;
		margin-top: 14px;
		box-shadow: 0 8px 22px rgba(16, 41, 75, .12);
	}
	html body .phr .phr-bolla::after { display: none; }
	html body .phr .phr-latam-t { font-size: 34px; }
	html body .phr .phr-latam-s { display: none; }
}

@media (prefers-reduced-motion: reduce) {
	html body .phr .phr-alone,
	html body .phr .phr-punto { transition: none; }
}

/*                                                                           
   58. GALLERIE CON FOTO DI PRODOTTO IN POSA

   Le foto di catalogo di un passamateriali o di un modulo filtrante sono
   scatti in posa su fondo bianco, verticali o quadrati. Dentro la finestra
   2:1 delle gallerie di sala il taglio a copertura mangia il prodotto e
   lascia il fondo. Qui la finestra diventa 4:3 e l'immagine si contiene
   invece di riempire: il fondo bianco della foto continua nel fondo bianco
   della cornice e il taglio non si vede.
                                                                              */

/* Le foto dei passacarrelli sono banner larghi con la macchina spinta sul
   fianco destro: contenute diventerebbero un rettangolo grigio con un
   oggetto piccolo in un angolo. Si tagliano invece sul lato dove sta la
   macchina, e il formato si stringe a quadrato. */
html body .phse .phgal--destra .phgal-slide img {
	aspect-ratio: 1 / 1;
	object-fit: cover;
	object-position: 86% center;
	background-color: #fff;
}

/* Sul tattile i comandi della galleria devono stare nei 44px raccomandati:
   quarantadue e un bersaglio che si manca, e in una pista che scorre col
   dito le frecce servono soprattutto a chi il dito non lo usa. */
@media (hover: none), (pointer: coarse), (max-width: 720px) {
	html body .phse .phgal-btn { width: 44px; height: 44px; }
}

html body .phse .phgal--posa .phgal-slide img {
	aspect-ratio: 4 / 3;
	object-fit: contain;
	background-color: #fff;
}

/*                                                                           
   59. BERSAGLI DEL DITO

   Verifica del 9 settembre: sul telefono i comandi della fascia in testa e i
   pallini di paginazione stavano fra i venti e i ventinove pixel, contro i
   quarantaquattro raccomandati. Il disegno non cambia: cresce solo l'area
   che il dito puo colpire, con l'area cliccabile portata fuori dal pallino
   tramite uno pseudo-elemento. Il pallino resta piccolo, il bersaglio no.
                                                                              */

/* La finestra stretta conta quanto il dito: su un desktop ridotto i comandi
   sono gli stessi, e restano piccoli. Le due condizioni valgono insieme. */
@media (hover: none), (pointer: coarse), (max-width: 720px) {

	html body .phs .phs-link,
	html body .phs .phs-cta {
		min-height: 44px;
		display: inline-flex;
		align-items: center;
	}

	/* Il pallino ritaglia quello che gli esce fuori: senza questo lo
	   pseudo-elemento che allarga il bersaglio verrebbe tagliato via. */
	html body .phse .phhero-punto,
	html body .phse .phgal-punto,
	html body .phm .phgal-punto {
		position: relative;
		overflow: visible !important;
	}

	html body .phse .phhero-punto::after,
	html body .phse .phgal-punto::after,
	html body .phm .phgal-punto::after {
		content: "";
		position: absolute;
		top: 50%;
		left: 50%;
		width: 44px;
		height: 44px;
		transform: translate(-50%, -50%);
	}

	html body .phse .phgal-punti,
	html body .phse .phhero-punti {
		gap: 14px;
	}
}


/* ============================================================
   60. BERSAGLI DEL DITO - SECONDA PASSATA
   Il controllo a 386 px su tutte le pagine ha trovato altri
   comandi sotto i 44 px e altre etichette a undici. Valgono le
   stesse due condizioni del blocco 59: se il puntatore e un dito,
   o se lo schermo e stretto. Dove ingrandire il comando
   sposterebbe il disegno - il tasto pausa dell hero, il titolo di
   gruppo che e anche un rimando - si allarga soltanto l area
   sensibile con uno pseudo-elemento: il segno resta della misura
   di prima. Il bottone dei cookie nella riga legale resta com e:
   e un link dentro una riga di testo e deve leggersi come quelli
   che gli stanno accanto.
   ============================================================ */
@media (hover: none), (pointer: coarse), (max-width: 720px) {

	/* Il recapito nel piede si ferma a 43 px: manca un pixel. */
	html body .phf .phf-reach-item { min-height: 44px; }

	/* Titolo di gruppo che porta alla pagina: resta dov e, cresce il bersaglio. */
	html body .phse a.phse-gruppo-link { position: relative; }
	html body .phse a.phse-gruppo-link::after {
		content: ""; position: absolute; left: 0; right: 0; top: 50%;
		height: 44px; transform: translateY( -50% );
	}

	/* Il tasto pausa e un cerchio da 34 px e tale rimane. */
	html body .phse .phhero-pausa { position: relative; overflow: visible !important; }
	html body .phse .phhero-pausa::after {
		content: ""; position: absolute; top: 50%; left: 50%;
		width: 44px; height: 44px; transform: translate( -50%, -50% );
	}
}

/* Etichette e numeri di passo stanno a undici: sono testo da
   leggere, non decorazione. Dodici e il minimo sotto cui non si
   scende, come per i titoli di gruppo della mappa. */
@media (max-width: 900px) {
	html body .phf .phf-reach-label { font-size: 12px !important; }
	html body .phct-k { font-size: 12px; }
	html body .phse .phse-perc-n { font-size: 12px; }
	html body .phm-legenda li { font-size: 12px; }
	html body .phct-paesi li { font-size: 12px; }
}


/* ============================================================
   61. DODICI A TUTTE LE LARGHEZZE
   Il blocco 60 portava a dodici le etichette solo sotto i 900 px.
   Il quinto controllo le ha trovate a undici sullo schermo largo:
   la soglia vale ovunque, non solo sul telefono.
   ============================================================ */
html body .phs .phs-fact { font-size: 12px !important; }
html body .phse .phse-perc-n { font-size: 12px; }
html body .phf .phf-reach-label { font-size: 12px !important; }
html body .phct-k { font-size: 12px; }
html body .phm-legenda li { font-size: 12px; }
html body .phct-paesi li { font-size: 12px; }
html body .phm .phm-gruppo-h { font-size: 12px !important; }


/* ============================================================
62. LA MAPPA DELLA RETE, VERSIONE 3.2 — chiara, in branding
Richiesta del cliente del 10 settembre 2026: i loghi dei partner
non si vedevano e le schede non si aprivano; poi, a valle della
prima proposta: stesso impianto di prima (mappa a sinistra,
elenco con i loghi a destra), scritte sobrie, animazione appena
percettibile, tono premium.

Il disegno sta su fondo chiaro: i punti del mondo sono Blu PHAMM in
velatura, i tre mercati serviti sono gli stessi punti accesi in
Blu PHAMM pieno con un'etichetta piccola e spaziata. Le sedi sono
gialle — l'unico accento — partner e agenzie nella coppia
bianco/azzurro. Nel pannello a destra ogni scheda porta il logo
in testa e si apre a fisarmonica; pin e scheda si rispondono.

Movimento: dissolvenze lente e una pulsazione lenta sulle sedi.
Solo transform e opacity; tutto fermo con prefers-reduced-motion.
============================================================ */

html body .phm.phw {
	--phw-fondo: #10294B;
	--phw-blu: #285AA6;
	--phw-azzurro: #69A0BF;
	--phw-chiaro: #9CC5E8;
	--phw-giallo: #FFD300;
	--phw-ease: cubic-bezier(0.22, 0.61, 0.36, 1);
	/* A tutta larghezza, come le fasce .phs: il mappamondo si vede intero
	   e cresce di un terzo rispetto alla colonna. Nessuna ombra: il rilievo
	   lo danno il bianco pieno sul fondo Azzurro Camera e due filetti. */
	width: 100%;
	max-width: 100%;
	margin: 0;
	border: 1px solid rgba(16, 41, 75, 0.12);
	border-radius: 18px;
	box-shadow: none;
	background: #FFFFFF;
}

/* Stessa griglia del blocco 24: mappa a sinistra, elenco a destra. */
html body .phm.phw { --phw-gutter: 24px; }
html body .phm.phw .phm-grid { grid-template-columns: minmax(0, 1fr) 340px; }

/* -- 62.1 Il riquadro scuro ---------------------------------- */

html body .phw .phw-viewport {
	position: relative;
	display: flex;
	flex-direction: column;
	justify-content: center;
	min-height: 100%;
	padding: 26px 28px 24px 28px;
	background: #FFFFFF;
	color: #10294B;
	overflow: hidden;
}

html body .phw .phw-testa {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 8px 20px;
	margin-bottom: 12px;
}

html body .phw .phm-legenda {
	position: static !important;
	display: flex;
	flex-wrap: wrap;
	gap: 6px 16px;
	margin: 0 !important;
	padding: 0 !important;
	pointer-events: none;
}

html body .phw .phm-legenda li {
	color: #313840;
	font-size: 12px;
	letter-spacing: 0.12em;
}

html body .phw .phm-seg--sede { background: var(--phw-giallo); border: 2px solid #10294B; box-shadow: 0 0 0 1px rgba(255, 211, 0, 0.6); }
html body .phw .phm-seg--partner { background: #FFFFFF; border: 2px solid var(--phw-blu); }
html body .phw .phm-seg--agenzia { background: var(--phw-azzurro); border: 2px solid #FFFFFF; }
html body .phw .phm-seg--mercato {
	width: 12px; height: 12px;
	background: radial-gradient(circle, var(--phw-blu) 0 35%, rgba(40, 90, 166, 0.22) 36% 100%);
	border: 0;
}

html body .phw .phm-aiuto {
	position: static !important;
	margin: 0 !important;
	padding: 0 !important;
	max-width: none;
	font-size: 12px;
	line-height: 1.5;
	color: #5F7085;
	pointer-events: none;
	background: none !important;
}

html body .phw .phm-aiuto-sm { display: none; }

html body .phw .phw-tela { position: relative; width: 100%; }
html body .phw .phw-fondo { display: none; }

html body .phw .phw-mondo {
	display: block;
	width: 100%;
	height: auto;
	overflow: visible;
}

/* -- 62.2 Il mondo a punti ------------------------------------ */

html body .phw .phw-terre {
	stroke: rgba(40, 90, 166, 0.34);
	stroke-width: 4.8;
	opacity: 0;
	transition: opacity 1.6s var(--phw-ease);
}

html body .phw.is-pronta .phw-terre,
html body .phw:not(.has-js) .phw-terre { opacity: 1; }

html body .phw .phw-mercato {
	opacity: 0;
	transition: opacity 1.4s var(--phw-ease);
	transition-delay: calc(0.4s + var(--phw-i, 0) * 0.2s);
}

html body .phw.is-pronta .phw-mercato,
html body .phw:not(.has-js) .phw-mercato { opacity: 1; }

html body .phw .phw-alone-mercato {
	fill: rgba(40, 90, 166, 0.035);
	stroke: rgba(40, 90, 166, 0.18);
	stroke-width: 1.5;
	stroke-dasharray: 5 9;
	stroke-linecap: round;
}

html body .phw .phw-terre-acc {
	stroke: var(--phw-blu);
	stroke-width: 5;
	opacity: 0.95;
}

/* Etichette: piccole, spaziate, senza contorno pesante. */
html body .phw .phw-etichetta {
	font-family: var(--ph-display);
	font-weight: var(--ph-w-semibold);
	font-size: 30px;
	letter-spacing: -0.005em;
	text-transform: none;
	fill: #10294B;
	paint-order: stroke;
	stroke: rgba(255, 255, 255, 0.92);
	stroke-width: 8;
	stroke-linejoin: round;
}

html body .phw .phw-etichetta-s { display: none; }

/* La rotta verso il LATAM: un tratteggio fermo, appena visibile. */
html body .phw .phw-rotta {
	stroke: rgba(40, 90, 166, 0.55);
	stroke-width: 2.5;
	stroke-dasharray: 3 14;
	stroke-linecap: round;
	opacity: 0;
	transition: opacity 1.4s var(--phw-ease) 1s;
}

html body .phw.is-pronta .phw-rotta,
html body .phw:not(.has-js) .phw-rotta { opacity: 1; }

/* -- 62.3 I pin ---------------------------------------------- */

html body .phw .phw-pin { cursor: pointer; outline: none; }
html body .phw .phw-pin.is-nascosto { display: none; }

html body .phw .phw-pin-in {
	transform-box: fill-box;
	transform-origin: center;
	transition: opacity 1s var(--phw-ease);
	transition-delay: calc(0.8s + var(--phw-i, 0) * 0.1s);
}

html body .phw.has-js .phw-pin-in { opacity: 0; }
html body .phw.has-js.is-pronta .phw-pin-in { opacity: 1; }

html body .phw .phw-tocco { fill: transparent; }

html body .phw .phw-alone {
	fill: rgba(40, 90, 166, 0.12);
	opacity: 0;
	transition: opacity 0.3s ease;
}

html body .phw .phw-pin:hover .phw-alone,
html body .phw .phw-pin:focus-visible .phw-alone,
html body .phw .phw-pin.is-attivo .phw-alone { opacity: 1; }

html body .phw .phw-punto {
	transform-box: fill-box;
	transform-origin: center;
	transition: transform 0.3s var(--phw-ease);
	fill: var(--phw-azzurro);
	stroke: #FFFFFF;
	stroke-width: 3;
}

html body .phw .phw-pin--sede .phw-punto { fill: var(--phw-giallo); stroke: #10294B; stroke-width: 3.5; }
html body .phw .phw-pin--partner .phw-punto { fill: #FFFFFF; stroke: var(--phw-blu); stroke-width: 4.5; }

html body .phw .phw-pin:hover .phw-punto,
html body .phw .phw-pin.is-attivo .phw-punto { transform: scale(1.18); }

html body .phw .phw-pin:focus-visible .phw-punto { stroke: #10294B; stroke-width: 5; }

/* La pulsazione delle sedi: lenta, leggera, una sola onda. */
html body .phw .phw-onda {
	fill: none;
	stroke: var(--phw-blu);
	stroke-width: 2;
	opacity: 0;
	transform-box: fill-box;
	transform-origin: center;
}

html body .phw .phw-onda--2 { display: none; }

html body .phw.is-pronta .phw-pin--sede .phw-onda,
html body .phw:not(.has-js) .phw-pin--sede .phw-onda {
	animation: phw-onda 4.2s var(--phw-ease) infinite;
	animation-delay: calc(2s + var(--phw-i, 0) * 0.4s);
}

@keyframes phw-onda {
	0%   { transform: scale(1); opacity: 0.35; }
	100% { transform: scale(2.4); opacity: 0; }
}

html body .phw .phw-conta {
	display: none;
	font-family: var(--ph-display);
	font-size: 30px;
	font-weight: var(--ph-w-bold);
	text-anchor: middle;
	fill: #10294B;
	pointer-events: none;
}

/* -- 62.3b La rete in cifre: sotto la mappa, quattro numeri quieti. -- */
html body .phw .phw-cifre {
	display: flex;
	flex-wrap: wrap;
	gap: 10px 40px;
	margin: 14px 0 0 !important;
	padding: 16px 0 0 !important;
	list-style: none !important;
	border-top: 1px solid rgba(16, 41, 75, 0.10);
}
html body .phw .phw-cifre li {
	display: flex;
	align-items: baseline;
	gap: 10px;
	margin: 0 !important;
	padding: 0 !important;
	line-height: 1;
}
html body .phw .phw-cifre li::before { display: none !important; }
html body .phw .phw-cifre strong {
	font-family: var(--ph-display);
	font-weight: var(--ph-w-bold);
	font-size: 28px;
	letter-spacing: -0.02em;
	color: #10294B;
}
html body .phw .phw-cifre span {
	font-size: 12px;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: #5F7085;
}

/* -- 62.4 La bolla accanto al pin ------------------------------ */

html body .phw .phw-bolla {
	position: absolute;
	z-index: 4;
	width: min(320px, calc(100% - 24px));
	max-height: calc(100% - 24px);
	overflow: auto;
	overscroll-behavior: contain;
	padding: 16px 18px 18px;
	border-radius: 14px;
	background: #FFFFFF;
	color: var(--ph-grafite);
	border: 1px solid rgba(16, 41, 75, 0.12);
	box-shadow: none;
	animation: phw-bolla 0.4s var(--phw-ease);
}

@keyframes phw-bolla {
	from { opacity: 0; transform: translateY(4px); }
	to   { opacity: 1; transform: none; }
}

html body .phw .phw-bolla::after {
	content: "";
	position: absolute;
	top: 50%;
	margin-top: -7px;
	border: 7px solid transparent;
}

html body .phw .phw-bolla--dx::after { left: -14px; border-right-color: #FFFFFF; }
html body .phw .phw-bolla--sx::after { right: -14px; border-left-color: #FFFFFF; }

html body .phw .phw-bolla-testa {
	position: relative;
	display: block;
	padding-right: 30px;
	margin-bottom: 12px;
	padding-bottom: 12px;
	border-bottom: 1px solid rgba(40, 90, 166, 0.12);
}

html body .phw .phw-bolla-nome {
	display: block;
	font-family: var(--ph-display);
	font-size: 1rem;
	font-weight: var(--ph-w-semibold);
	color: var(--ph-fondo);
}

html body .phw .phw-bolla-ruolo {
	display: block;
	margin-top: 2px;
	font-size: 0.8125rem;
	color: var(--ph-grigio);
}

html body .phw .phw-bolla-x {
	position: absolute;
	top: -4px;
	right: -6px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 32px;
	height: 32px;
	margin: 0;
	padding: 0;
	border: 0;
	border-radius: 8px;
	background: transparent;
	color: var(--ph-grigio);
	cursor: pointer;
}

html body .phw .phw-bolla-x:hover { background: var(--ph-camera); color: var(--ph-blu); }

html body .phw .phw-bolla .phm-scheda-corpo {
	display: block !important;
	padding: 0 !important;
}

html body .phw .phw-bolla .phm-marchio { display: block; margin: 0 0 12px; }
html body .phw .phw-bolla .phm-marchio img { max-height: 40px; max-width: 150px; }

/* -- 62.5 Il pannello a destra ------------------------------- */

html body .phw .phm-panel {
	border-left: 1px solid rgba(16, 41, 75, 0.10);
	border-top: 0;
	background: var(--ph-camera);
}

/* Come nel blocco 24: e la mappa a dare l'altezza, l'elenco scorre dentro. */
html body .phw .phm-panel-in {
	position: absolute;
	inset: 0;
	overflow-y: auto;
	overscroll-behavior: contain;
	padding: 18px 16px 20px 16px;
}

html body .phw .phm-elenco {
	display: block;
}

html body .phw .phm-elenco li { margin: 0 0 8px; }

html body .phw .phm-conta { font-size: 12px; }

html body .phw .phm-scheda {
	border-radius: 12px;
	transition: border-color 0.3s var(--phw-ease);
}

html body .phw .phm-scheda:hover { border-color: rgba(40, 90, 166, 0.35); }

html body .phw .phm-scheda.is-open {
	border-color: rgba(40, 90, 166, 0.45);
	box-shadow: none;
}

html body .phw .phm-scheda-testa {
	grid-template-columns: 54px minmax(0, 1fr) 16px;
	gap: 12px;
	padding: 11px 12px !important;
	min-height: 60px;
}

/* Il logo sta gia in testa alla scheda. */
html body .phw .phm-scheda-logo {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 54px;
	height: 40px;
	padding: 4px 6px;
	box-sizing: border-box;
	background: #FFFFFF;
	border: 1px solid rgba(16, 41, 75, 0.12);
	border-radius: 8px;
}

html body .phw .phm-scheda-logo img {
	display: block;
	width: auto;
	height: auto;
	max-width: 100%;
	max-height: 100%;
	object-fit: contain;
}

html body .phw .phm-scheda-logo .phm-seg {
	position: absolute;
	right: -5px;
	bottom: -5px;
	width: 11px;
	height: 11px;
	box-shadow: 0 0 0 2px #FFFFFF;
}

html body .phw .phm-scheda-logo .phm-seg--sede { background: var(--phw-giallo); border: 2px solid #10294B; }
html body .phw .phm-scheda-logo .phm-seg--partner { background: #FFFFFF; border: 2px solid var(--phw-blu); }
html body .phw .phm-scheda-logo .phm-seg--agenzia { background: var(--phw-azzurro); border: 2px solid #FFFFFF; }

html body .phw .phm-scheda-citta {
	display: block;
	margin-top: 2px;
	font-size: 12px;
	line-height: 1.4;
	color: var(--ph-grigio);
}

html body .phw .phm-scheda-corpo { padding: 0 12px 14px 78px; }

html body .phw .phm-scheda.is-open .phm-scheda-corpo {
	display: block;
	animation: phw-scheda 0.4s var(--phw-ease);
}

@keyframes phw-scheda {
	from { opacity: 0; }
	to   { opacity: 1; }
}

html body .phw .phm-scheda .phm-scheda-corpo .phm-marchio { display: none; }

html body .phw .phm-citta,
html body .phw .phm-scheda-corpo address,
html body .phw .phm-contatti li,
html body .phw .phm-reparti li { font-size: 12.5px; }

/* -- 62.6 Responsive ------------------------------------------ */

@media (max-width: 1000px) {
	html body .phm.phw .phm-grid { grid-template-columns: minmax(0, 1fr); }
	html body .phw .phw-viewport { padding: 20px 20px 18px; }
	html body .phw .phm-panel-in { padding: 18px 20px 22px; }
	html body .phw .phm-panel { border-left: 0; border-top: 1px solid rgba(16, 41, 75, 0.10); }
	html body .phw .phm-panel-in { position: static; inset: auto; overflow: visible; }
	html body .phw .phm-elenco { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 8px; }
	html body .phw .phm-elenco li { margin: 0; }
}

@media (max-width: 900px) {
	html body .phw .phw-bolla {
		position: static;
		width: auto;
		max-height: none;
		margin-top: 14px;
		border: 1px solid rgba(16, 41, 75, 0.12);
	}
	html body .phw .phw-bolla::after { display: none; }
	html body .phw .phm-scheda-corpo { padding-left: 12px; }
}

@media (max-width: 760px) {
	html body .phw .phw-viewport { padding: 16px 14px 14px; }
	html body .phw .phm-aiuto-lg { display: none; }
	html body .phw .phm-aiuto-sm { display: inline; }
	html body .phw .phw-etichetta { font-size: 40px; }
	html body .phw .phw-punto { r: 15; stroke-width: 3.5; }
	html body .phw .phw-pin--partner .phw-punto { stroke-width: 5; }
	html body .phw .phw-cifre { gap: 8px 22px; }
	html body .phw .phw-cifre strong { font-size: 22px; }
	html body .phw .phw-cifre span { font-size: 11px; }
		html body .phw .phw-onda { r: 17; }
	html body .phw .phw-alone { r: 28; }
	html body .phw .phw-terre, html body .phw .phw-terre-acc { stroke-width: 5.6; }
	html body .phw .phw-rotta { stroke-width: 3.5; }
	html body .phw .phm-panel-in { padding: 16px 14px 20px; }
	html body .phw .phm-elenco { grid-template-columns: 1fr; }
}

@media (prefers-reduced-motion: reduce) {
	html body .phw .phw-terre,
	html body .phw .phw-mercato,
	html body .phw .phw-rotta,
	html body .phw .phw-pin-in,
	html body .phw .phw-punto,
	html body .phw .phm-scheda { transition: none; }
	html body .phw.has-js .phw-pin-in { opacity: 1; }
	html body .phw .phw-onda,
	html body .phw .phw-bolla,
	html body .phw .phm-scheda.is-open .phm-scheda-corpo { animation: none; }
}

/* ============================================================
63. LE ETICHETTE DELLE FIGURE
Le figure di apertura (viewBox 480) portano etichette da 11-14
unita: sul telefono la figura si stringe a 300 px e le etichette
scendono a 8 px. Dodici e il minimo, ovunque: a schermo largo
tutte a 14, sul telefono a 20 unita, che a 300 px fanno 12,5.
============================================================ */
html body .phse .phse-fig-svg text { font-size: 14px; }
@media (max-width: 760px) {
	html body .phse .phse-fig-svg text { font-size: 20px; }
}


/* ============================================================
64. NEWS: LE COPERTINE DEGLI ARTICOLI (INIZIO)
Griglia di /news/ (Salient, auto_meta_overlaid_spaced). Versione 2,
10 settembre: righe da tre tavole uguali, nessun formato "largo";
la foto sta sopra in 4:3 e il testo sotto, su Blu Fondo, cosi
categoria e titolo si leggono sempre, su qualunque foto. Filetto
giallo come unico accento, passe-partout chiaro su tutta la
tavola, hover lento (solo transform e opacity). Solo CSS: per
tornare indietro si toglie questo blocco (INIZIO/FINE) o si
ripristina la bozza "BACKUP style.css 2026-09-10 pre-news".
============================================================ */

/* -- 64.1 Griglia: tre colonne uguali -------------------------- */
body.blog .masonry.auto_meta_overlaid_spaced .posts-container {
	display: grid !important;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 28px;
	height: auto !important;
}

body.blog .masonry.auto_meta_overlaid_spaced .masonry-blog-item {
	width: auto !important;
	max-width: none !important;
	min-width: 0 !important;
	height: auto !important;
	margin: 0 !important;
	padding: 0 !important;
	flex: none !important;
	position: static !important;
	transform: none !important;
}

body.blog .masonry.auto_meta_overlaid_spaced .masonry-blog-item .inner-wrap {
	margin: 0 !important;
	height: 100% !important;
	border-radius: 16px;
	overflow: hidden;
	background-color: #10294B;
	box-shadow: 0 14px 38px rgba(16, 41, 75, 0.12);
	transition: box-shadow 0.6s cubic-bezier(0.22, 0.61, 0.36, 1), transform 0.6s cubic-bezier(0.22, 0.61, 0.36, 1);
}

body.blog .masonry.auto_meta_overlaid_spaced .masonry-blog-item:hover .inner-wrap {
	box-shadow: 0 22px 54px rgba(16, 41, 75, 0.20);
	transform: translateY(-3px);
}

body.blog .masonry.auto_meta_overlaid_spaced .post-content,
body.blog .masonry.auto_meta_overlaid_spaced .content-inner {
	position: relative;
	height: 100% !important;
	min-height: 0 !important;
	padding: 0 !important;
}

/* L'intestazione della pagina (phnews) sta dentro il contenitore dei
   post: nella griglia deve occupare tutta la riga. */
body.blog .masonry.auto_meta_overlaid_spaced .posts-container > .phnews,
body.blog .masonry.auto_meta_overlaid_spaced .posts-container > :not(.masonry-blog-item) {
	grid-column: 1 / -1;
}

body.blog .masonry.auto_meta_overlaid_spaced .content-inner {
	display: flex;
	flex-direction: column;
	background: transparent !important;
}

/* -- 64.2 La foto: sopra, in 4:3, ferma ------------------------- */
body.blog .masonry.auto_meta_overlaid_spaced .post-featured-img {
	position: relative !important;
	inset: auto !important;
	width: 100% !important;
	height: auto !important;
	aspect-ratio: 5 / 3;
	overflow: hidden;
	transform: none !important;
	flex: none;
}

body.blog .masonry.auto_meta_overlaid_spaced .post-featured-img img {
	position: absolute !important;
	inset: 0 !important;
	width: 100% !important;
	height: 100% !important;
	object-fit: cover;
	filter: saturate(0.85) contrast(1.02);
	transform: scale(1.001);
	transition: transform 1.4s cubic-bezier(0.22, 0.61, 0.36, 1);
	will-change: transform;
}

body.blog .masonry.auto_meta_overlaid_spaced .masonry-blog-item:hover .post-featured-img img {
	transform: scale(1.045);
}

/* Il gradiente del tema viene spento; al suo posto un velo che fonde
   la foto nel pannello blu sottostante. */
body.blog .masonry.auto_meta_overlaid_spaced .post-featured-img::after {
	content: "";
	position: absolute !important;
	top: 0 !important;
	right: 0 !important;
	bottom: 0 !important;
	left: 0 !important;
	width: 100% !important;
	height: 100% !important;
	display: block !important;
	opacity: 1 !important;
	pointer-events: none;
	background: linear-gradient(180deg, rgba(16, 41, 75, 0.10) 0%, rgba(16, 41, 75, 0.10) 55%, rgba(16, 41, 75, 0.62) 100%) !important;
}

/* Passe-partout chiaro su tutta la tavola. */
body.blog .masonry.auto_meta_overlaid_spaced .post-content::after {
	content: "";
	position: absolute;
	inset: 10px;
	border: 1px solid rgba(255, 255, 255, 0.16);
	border-radius: 10px;
	pointer-events: none;
	z-index: 3;
}

body.blog .masonry.auto_meta_overlaid_spaced .masonry-blog-item:focus-within .post-content::after { border-color: #FFD300; }

/* -- 64.3 Il pannello del testo: Blu Fondo, sotto la foto -------- */
body.blog .masonry.auto_meta_overlaid_spaced .article-content-wrap {
	position: relative !important;
	inset: auto !important;
	bottom: auto !important;
	width: auto !important;
	flex: 1 1 auto;
	display: flex;
	flex-direction: column;
	padding: 22px 28px 26px !important;
	background: #10294B;
	z-index: 2;
}

body.blog .masonry.auto_meta_overlaid_spaced .meta-category {
	display: flex !important;
	align-items: center;
	gap: 10px;
	margin: 0 0 12px !important;
	position: static !important;
}

body.blog .masonry.auto_meta_overlaid_spaced .meta-category::before {
	content: "";
	display: block;
	width: 22px;
	height: 2px;
	background: #FFD300;
	transition: width 0.6s cubic-bezier(0.22, 0.61, 0.36, 1);
}

body.blog .masonry.auto_meta_overlaid_spaced .masonry-blog-item:hover .meta-category::before { width: 34px; }

body.blog .masonry.auto_meta_overlaid_spaced .meta-category a {
	font-family: var(--ph-text) !important;
	font-weight: var(--ph-w-medium) !important;
	font-size: 12px !important;
	line-height: 1.2 !important;
	letter-spacing: 0.16em !important;
	text-transform: uppercase !important;
	color: rgba(255, 255, 255, 0.92) !important;
	opacity: 1 !important;
	background: none !important;
	padding: 0 !important;
	margin: 0 !important;
}

body.blog .masonry.auto_meta_overlaid_spaced .post-header {
	position: static !important;
	display: flex;
	flex-direction: column;
	flex: 1 1 auto;
	max-width: none !important;
	width: 100% !important;
}

body.blog .masonry.auto_meta_overlaid_spaced .post-header h3.title,
body.blog .masonry.auto_meta_overlaid_spaced .post-header h3.title a {
	font-family: var(--ph-display) !important;
	font-weight: var(--ph-w-semibold) !important;
	font-size: 20px !important;
	line-height: 1.28 !important;
	letter-spacing: -0.01em !important;
	color: #FFFFFF !important;
	text-shadow: none !important;
}

body.blog .masonry.auto_meta_overlaid_spaced .post-header h3.title { margin: 0 0 20px !important; max-width: none; }

/* Rimando in coda al pannello: filetto e dicitura, si accende all'hover. */
body.blog .masonry.auto_meta_overlaid_spaced .post-header::after {
	content: "Leggi l'articolo";
	display: block;
	margin-top: auto;
	padding-top: 14px;
	border-top: 1px solid rgba(255, 255, 255, 0.14);
	font-family: var(--ph-text);
	font-weight: var(--ph-w-medium);
	font-size: 12px;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.55);
	transition: color 0.5s ease, border-color 0.5s ease;
}

body.blog .masonry.auto_meta_overlaid_spaced .masonry-blog-item:hover .post-header::after,
body.blog .masonry.auto_meta_overlaid_spaced .masonry-blog-item:focus-within .post-header::after {
	color: #FFD300;
	border-top-color: rgba(255, 211, 0, 0.5);
}

/* -- 64.4 Responsive ------------------------------------------- */
@media (max-width: 1000px) {
	body.blog .masonry.auto_meta_overlaid_spaced .posts-container { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px; }
}

@media (max-width: 690px) {
	body.blog .masonry.auto_meta_overlaid_spaced .posts-container { grid-template-columns: minmax(0, 1fr); gap: 18px; }
	body.blog .masonry.auto_meta_overlaid_spaced .article-content-wrap { padding: 20px 22px 22px !important; }
}

@media (prefers-reduced-motion: reduce) {
	body.blog .masonry.auto_meta_overlaid_spaced .post-featured-img img,
	body.blog .masonry.auto_meta_overlaid_spaced .masonry-blog-item .inner-wrap,
	body.blog .masonry.auto_meta_overlaid_spaced .meta-category::before,
	body.blog .masonry.auto_meta_overlaid_spaced .post-header::after { transition: none; }
	body.blog .masonry.auto_meta_overlaid_spaced .masonry-blog-item:hover .post-featured-img img { transform: none; }
	body.blog .masonry.auto_meta_overlaid_spaced .masonry-blog-item:hover .inner-wrap { transform: none; }
}
/* 64. NEWS: LE COPERTINE DEGLI ARTICOLI (FINE) */


/* ============================================================
65. IL SINGOLO ARTICOLO, VERSIONE PREMIUM (INIZIO)
Si aggancia alla classe di corpo ph-post messa da functions.php
(sezione 8), che decide su quali articoli vale. Testata a tutta
larghezza con l'immagine in evidenza e un velo Blu Fondo, eyebrow
con filetto giallo, titolo DM Sans a sinistra, data e tempo di
lettura. Corpo su misura da 700 px, capoverso d'apertura piu
grande, titoli con il filetto, indice come scheda quieta. Niente
ombre, niente commenti, niente autore.
============================================================ */

/* -- 65.1 Testata: copertina a tutta larghezza, testo in sovrimpressione
   L'immagine in evidenza riempie la testata (72vh, fra 520 e 720 px); un
   velo Blu Fondo sale dal basso e da sinistra, cosi il testo bianco resta
   leggibile su qualsiasi foto. Eyebrow con filetto giallo, titolo grande,
   data e tempo di lettura: tutto in basso a sinistra, allineato al
   contenitore. L'immagine arriva dallo <style> di functions.php. */
body.ph-post.single-post #page-header-bg[data-post-hs],
body.ph-post #page-header-bg {
	height: clamp(520px, 72vh, 720px) !important;
	min-height: 0 !important;
	display: flex !important;
	align-items: flex-end;
	position: relative;
	background-color: #10294B !important;
	background-size: cover !important;
	background-position: center !important;
	background-repeat: no-repeat;
	padding: 0 0 64px !important;
	margin: 0 !important;
	opacity: 1 !important;
	overflow: hidden;
}

/* Il contenitore esterno riceve da Salient un'altezza fissa via JS (550 px):
   si lascia crescere con la testata, altrimenti taglia titolo e data. */
body.ph-post #page-header-wrap,
body.ph-post.single-post #page-header-wrap {
	height: auto !important;
	min-height: 0 !important;
	overflow: visible !important;
}

body.ph-post #page-header-bg .page-header-bg-image-wrap,
body.ph-post #page-header-bg .page-header-bg-image { display: none !important; }

body.ph-post #page-header-bg::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
	pointer-events: none;
	background:
		linear-gradient(180deg, rgba(16, 41, 75, 0.08) 0%, rgba(16, 41, 75, 0.28) 45%, rgba(16, 41, 75, 0.82) 78%, rgba(16, 41, 75, 0.94) 100%),
		linear-gradient(90deg, rgba(16, 41, 75, 0.45) 0%, rgba(16, 41, 75, 0.10) 55%, rgba(16, 41, 75, 0) 100%);
}

body.ph-post #page-header-bg::after { display: none !important; }

body.ph-post #page-header-bg .container,
body.ph-post #page-header-bg .inner-wrap {
	position: relative;
	z-index: 2;
	text-align: left !important;
	width: 100%;
}

body.ph-post #page-header-bg .container {
	max-width: 720px !important; /* stessa colonna del testo dell'articolo */
	height: auto !important;
	min-height: 0 !important;
	margin: 0 auto !important;
	padding: 0 !important;
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
}

body.ph-post #page-header-bg .inner-wrap {
	max-width: none;
	margin: 0;
	padding: 0 !important;
}

/* Salient centra verticalmente la colonna (top 50% + translateY -50%):
   qui il blocco sta in basso, quindi si azzera. */
body.ph-post #page-header-bg .row,
body.ph-post #page-header-bg .row .col,
body.ph-post #page-header-bg .row .col.span_6 {
	position: static !important;
	top: auto !important;
	bottom: auto !important;
	transform: none !important;
	width: 100% !important;
	margin: 0 !important;
	padding: 0 !important;
	height: auto !important;
	min-height: 0 !important;
}

body.ph-post .row.heading-title .meta-category a,
body.ph-post #page-header-bg .inner-wrap > a[class] {
	display: inline-flex !important;
	align-items: center;
	gap: 12px;
	margin: 0 0 22px !important;
	padding: 0 !important;
	border: 0 !important;
	background: none !important;
	font-family: var(--ph-text) !important;
	font-weight: var(--ph-w-medium) !important;
	font-size: 12px !important;
	line-height: 1.2 !important;
	letter-spacing: 0.18em !important;
	text-transform: uppercase !important;
	color: rgba(255, 255, 255, 0.92) !important;
	opacity: 1 !important;
}

body.ph-post .row.heading-title .meta-category a::before,
body.ph-post #page-header-bg .inner-wrap > a[class]::before {
	content: "";
	display: block;
	width: 26px;
	height: 2px;
	background: #FFD300;
}

body.ph-post.single-post #page-header-bg .inner-wrap h1.entry-title,
body.ph-post .row.heading-title h1.entry-title,
body.ph-post #page-header-bg h1.entry-title {
	margin-left: 0 !important;
	margin-right: 0 !important;
	font-family: var(--ph-display) !important;
	font-weight: var(--ph-w-bold) !important;
	font-size: clamp(2rem, 3.4vw, 3.25rem) !important;
	line-height: 1.08 !important;
	letter-spacing: -0.02em !important;
	color: #FFFFFF !important;
	text-align: left !important;
	width: auto !important;
	max-width: 24ch !important;
	margin: 0 0 22px !important;
	padding: 0 !important;
	text-shadow: none !important;
}

body.ph-post #single-below-header {
	position: static !important;
	transform: none !important;
	width: auto !important;
	left: auto !important;
	display: flex !important;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px 26px;
	margin: 0 !important;
	text-align: left !important;
}

body.ph-post #single-below-header > span {
	margin: 0 !important;
	padding: 0 !important;
	border: 0 !important;
	font-family: var(--ph-text) !important;
	font-weight: var(--ph-w-medium) !important;
	font-size: 12px !important;
	line-height: 1.4 !important;
	letter-spacing: 0.12em !important;
	text-transform: uppercase !important;
	color: rgba(255, 255, 255, 0.78) !important;
}

body.ph-post #single-below-header .meta-author,
body.ph-post #single-below-header .meta-comment-count,
body.ph-post #single-below-header .meta-date.updated { display: none !important; }

body.ph-post #single-below-header .meta-lettura::before {
	content: "";
	display: inline-block;
	width: 3px;
	height: 3px;
	border-radius: 999px;
	background: #FFD300;
	margin: 0 14px 3px 0;
	vertical-align: middle;
}

/* -- 65.1b Testata senza immagine in evidenza
Salient in questo caso non crea #page-header-bg ma una .row.heading-title
nel contenuto: la si rende come fascia Blu Fondo a tutta larghezza, con la
stessa tipografia e la stessa colonna di 720 px. */
body.ph-post .container-wrap { overflow-x: clip; }

body.ph-post .row.heading-title {
	position: relative;
	margin: 0 0 8px !important;
	padding: 112px 0 64px !important;
	text-align: left !important;
	z-index: 1;
}

body.ph-post .row.heading-title::before {
	content: "" !important;
	display: block !important;
	position: absolute;
	top: 0;
	bottom: 0;
	height: 100%;
	left: 50%;
	width: 100vw;
	transform: translateX(-50%);
	background: #10294B;
	background-image: radial-gradient(rgba(255, 255, 255, 0.10) 1px, transparent 1.4px);
	background-size: 22px 22px;
	z-index: -1;
}

body.ph-post .row.heading-title .section-title {
	max-width: 720px !important;
	width: 100% !important;
	margin: 0 auto !important;
	padding: 0 !important;
	float: none !important;
	border: 0 !important;
	text-align: left !important;
}

body.ph-post .row.heading-title .meta-category { display: block !important; margin: 0 !important; padding: 0 !important; line-height: 1; }
body.ph-post .row.heading-title .section-title h1.entry-title { margin: 0 0 22px !important; padding: 0 !important; }
body.ph-post .row.heading-title .section-title #single-below-header { margin: 0 !important; }

@media (max-width: 1000px) {
	body.ph-post .row.heading-title { padding: 88px 0 48px !important; }
}
@media (max-width: 690px) {
	body.ph-post .row.heading-title { padding: 72px 0 36px !important; }
}

/* 34 articoli portano la categoria residua "LU3G" (e uno "Non categorizzato"):
   nell'eyebrow si mostra "Articoli" finche le categorie non vengono riassegnate. */
body.ph-post #page-header-bg .inner-wrap > a.lu3g,
body.ph-post #page-header-bg .inner-wrap > a.non-categorizzato,
body.ph-post .row.heading-title .meta-category a.lu3g,
body.ph-post .row.heading-title .meta-category a.non-categorizzato { font-size: 0 !important; }
body.ph-post #page-header-bg .inner-wrap > a.lu3g::after,
body.ph-post #page-header-bg .inner-wrap > a.non-categorizzato::after,
body.ph-post .row.heading-title .meta-category a.lu3g::after,
body.ph-post .row.heading-title .meta-category a.non-categorizzato::after { content: "Articoli"; font-size: 12px; letter-spacing: 0.18em; }

/* -- 65.2 Corpo ------------------------------------------------ */
body.ph-post .container-wrap { padding-top: 0 !important; }

/* Colonna unica di 720 px, centrata: la stessa della testata (eyebrow, titolo, data). */
body.ph-post .post-area { float: none !important; width: 100% !important; max-width: 720px !important; margin: 0 auto !important; padding: 0 !important; }
body.ph-post .post-area .post-content { max-width: 720px !important; width: 100% !important; margin: 0 auto !important; padding: 0 !important; }
body.ph-post .post-area .content-inner { padding-top: 72px; }
/* Gli articoli piu vecchi portano text-align: justify in linea: si uniforma a sinistra. */
body.ph-post .post-area .content-inner p,
body.ph-post .post-area .content-inner li,
body.ph-post .post-area .content-inner h2,
body.ph-post .post-area .content-inner h3 { text-align: left !important; }

/* Sotto i 1000 px Salient da al contenitore un margine del 6 %: qui si usano
   gli stessi margini della testata (28 px, poi 20 px), cosi testo e titolo
   restano sulla stessa verticale. */
@media (max-width: 1000px) {
	body.ph-post .container.main-content { width: auto !important; max-width: none !important; margin: 0 !important; padding: 0 28px !important; }
}
@media (max-width: 690px) {
	body.ph-post .container.main-content { padding: 0 20px !important; }
}
@media (max-width: 1000px) {
	body.ph-post #page-header-bg .container { max-width: calc(720px + 56px) !important; }
}
@media (max-width: 690px) {
	body.ph-post #page-header-bg .container { max-width: calc(720px + 40px) !important; }
}

body.ph-post .post-area .content-inner p {
	font-family: var(--ph-text) !important;
	font-size: 17.5px !important;
	line-height: 1.72 !important;
	color: var(--ph-grafite) !important;
	margin: 0 0 24px !important;
	padding: 0 !important;
}

/* Il capoverso d'apertura: piu grande, Blu Fondo, come un sommario. */
body.ph-post .post-area .content-inner > p:first-of-type {
	font-size: 21px !important;
	line-height: 1.55 !important;
	color: var(--ph-fondo) !important;
	margin-bottom: 36px !important;
}

body.ph-post .post-area .content-inner h2 {
	position: relative;
	font-family: var(--ph-display) !important;
	font-weight: var(--ph-w-semibold) !important;
	font-size: 30px !important;
	line-height: 1.18 !important;
	letter-spacing: -0.015em !important;
	color: var(--ph-fondo) !important;
	margin: 64px 0 20px !important;
	padding-top: 22px !important;
}

body.ph-post .post-area .content-inner h2::before {
	content: "";
	position: absolute;
	top: 0;
	left: 0;
	width: 28px;
	height: 2px;
	background: #FFD300;
}

body.ph-post .post-area .content-inner h3 {
	font-family: var(--ph-display) !important;
	font-weight: var(--ph-w-semibold) !important;
	font-size: 21px !important;
	line-height: 1.3 !important;
	letter-spacing: -0.01em !important;
	color: var(--ph-fondo) !important;
	margin: 36px 0 12px !important;
}

body.ph-post .post-area .content-inner h2 + h3 { margin-top: 8px !important; }

body.ph-post .post-area .content-inner strong,
body.ph-post .post-area .content-inner b { font-weight: var(--ph-w-semibold); color: var(--ph-fondo); }

body.ph-post .post-area .content-inner a:not(.lwptoc_item a) {
	color: var(--ph-blu);
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 3px;
	text-decoration-color: rgba(40, 90, 166, 0.4);
}

body.ph-post .post-area .content-inner ul,
body.ph-post .post-area .content-inner ol {
	margin: 0 0 26px;
	padding-left: 0;
	list-style: none;
}

body.ph-post .post-area .content-inner ul > li,
body.ph-post .post-area .content-inner ol > li {
	position: relative;
	padding: 0 0 0 26px !important;
	margin: 0 0 10px !important;
	font-size: 17px !important;
	line-height: 1.65 !important;
	color: var(--ph-grafite) !important;
	list-style: none !important;
}

body.ph-post .post-area .content-inner ul > li::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0.75em;
	width: 10px;
	height: 2px;
	background: var(--ph-blu);
}

body.ph-post .post-area .content-inner img {
	border-radius: 14px;
	margin: 8px 0 28px;
}

/* -- 65.3 L'indice (LuckyWP) ----------------------------------- */
body.ph-post .lwptoc {
	margin: 8px 0 44px !important;
}

body.ph-post .lwptoc .lwptoc_i {
	width: 100% !important;
	max-width: none !important;
	box-sizing: border-box;
	padding: 24px 28px 22px !important;
	background: var(--ph-camera) !important;
	border: 1px solid rgba(16, 41, 75, 0.10) !important;
	border-radius: 14px !important;
	box-shadow: none !important;
}

body.ph-post .lwptoc .lwptoc_header { margin: 0 0 14px !important; }

body.ph-post .lwptoc .lwptoc_title {
	font-family: var(--ph-text) !important;
	font-weight: var(--ph-w-medium) !important;
	font-size: 12px !important;
	letter-spacing: 0.16em !important;
	text-transform: uppercase !important;
	color: var(--ph-grigio) !important;
}

body.ph-post .lwptoc .lwptoc_toggle { display: none !important; }

body.ph-post .lwptoc .lwptoc_items { display: block !important; }

body.ph-post .lwptoc .lwptoc_item { margin: 0 0 8px !important; }

body.ph-post .lwptoc .lwptoc_item a {
	font-family: var(--ph-display) !important;
	font-weight: var(--ph-w-medium) !important;
	font-size: 15px !important;
	line-height: 1.4 !important;
	color: var(--ph-fondo) !important;
	text-decoration: none !important;
	border: 0 !important;
}

body.ph-post .lwptoc .lwptoc_item a:hover .lwptoc_item_label { color: var(--ph-blu) !important; text-decoration: underline; text-underline-offset: 3px; }

body.ph-post .lwptoc .lwptoc_item_number {
	color: var(--ph-blu) !important;
	font-variant-numeric: tabular-nums;
	margin-right: 8px;
}

body.ph-post .lwptoc .lwptoc_itemWrap .lwptoc_itemWrap { margin: 6px 0 4px 22px !important; }
body.ph-post .lwptoc .lwptoc_itemWrap .lwptoc_itemWrap .lwptoc_item a { font-family: var(--ph-text) !important; font-size: 14px !important; color: var(--ph-grafite) !important; }

/* -- 65.4 Coda: "Continua a leggere", niente commenti ------------- */
body.ph-post .comments-section,
body.ph-post #comments,
body.ph-post .comment-wrap,
body.ph-post .blog_next_prev_buttons { display: none !important; }

body.ph-post .ph-continua {
	margin: 72px 0 8px;
	padding-top: 28px;
	border-top: 1px solid rgba(16, 41, 75, 0.12);
}

body.ph-post .ph-continua-testa {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 16px;
	margin-bottom: 6px;
}

body.ph-post .ph-continua-eyebrow {
	font-family: var(--ph-text);
	font-weight: var(--ph-w-medium);
	font-size: 12px;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--ph-grigio);
}

body.ph-post .ph-continua-tutti {
	font-family: var(--ph-text);
	font-weight: var(--ph-w-medium);
	font-size: 13px;
	color: var(--ph-blu) !important;
	text-decoration: none !important;
}

body.ph-post .ph-continua-tutti:hover { text-decoration: underline !important; text-underline-offset: 3px; }

body.ph-post .ph-continua-elenco { list-style: none !important; margin: 0 !important; padding: 0 !important; }

body.ph-post .post-area .content-inner .ph-continua-elenco li { list-style: none !important; margin: 0 !important; padding: 0 !important; }

body.ph-post .post-area .content-inner .ph-continua-elenco li::before { display: none !important; }

body.ph-post .ph-continua-elenco a {
	display: grid;
	grid-template-columns: 120px minmax(0, 1fr) auto;
	gap: 18px;
	align-items: baseline;
	padding: 18px 0;
	border-bottom: 1px solid rgba(16, 41, 75, 0.08);
	text-decoration: none !important;
	color: var(--ph-fondo) !important;
}

body.ph-post .ph-continua-elenco li:last-child a { border-bottom: 0; }

body.ph-post .ph-continua-cat {
	font-family: var(--ph-text);
	font-weight: var(--ph-w-medium);
	font-size: 12px;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--ph-blu);
}

body.ph-post .ph-continua-titolo {
	font-family: var(--ph-display);
	font-weight: var(--ph-w-semibold);
	font-size: 17px;
	line-height: 1.35;
	color: var(--ph-fondo);
	transition: color 0.3s ease;
}

body.ph-post .ph-continua-elenco a:hover .ph-continua-titolo { color: var(--ph-blu); }

body.ph-post .ph-continua-data {
	font-family: var(--ph-text);
	font-size: 13px;
	color: var(--ph-grigio);
	white-space: nowrap;
}

/* -- 65.5 Responsive ------------------------------------------- */
@media (max-width: 1000px) {
	body.ph-post.single-post #page-header-bg[data-post-hs] { height: clamp(480px, 64vh, 640px) !important; padding: 0 0 48px !important; }
	body.ph-post #page-header-bg .container { padding: 0 28px !important; }
}

@media (max-width: 690px) {
	body.ph-post.single-post #page-header-bg[data-post-hs] { height: clamp(440px, 60vh, 560px) !important; padding: 0 0 36px !important; }
	body.ph-post #page-header-bg .container { padding: 0 20px !important; }
	body.ph-post #page-header-bg h1.entry-title { font-size: 1.9rem !important; max-width: none !important; }
	body.ph-post .post-area .content-inner { padding-top: 44px; }
	body.ph-post .post-area .content-inner > p:first-of-type { font-size: 19px !important; }
	body.ph-post .post-area .content-inner h2 { font-size: 25px !important; margin-top: 48px !important; }
	body.ph-post .lwptoc .lwptoc_i { padding: 20px 20px 18px !important; }
	body.ph-post .ph-continua-elenco a { grid-template-columns: minmax(0, 1fr); gap: 4px; }
}
/* -- 65.6 Invito finale ai contatti (functions.php §8.2) ----------
   Una scheda Blu Fondo nella stessa colonna del testo: eyebrow con filetto
   giallo, titolo, due righe, pulsante giallo e telefono. Trama a punti
   appena percettibile in alto a destra, come la mappa. Nessuna ombra. */
body.ph-post .post-area .content-inner .ph-cta {
	position: relative;
	overflow: hidden;
	margin: 64px 0 0 !important;
	padding: 48px 48px 46px !important;
	border-radius: 20px;
	background: #10294B;
	color: #FFFFFF;
	isolation: isolate;
}
body.ph-post .post-area .content-inner .ph-cta::before {
	content: "";
	position: absolute;
	top: -40px;
	right: -40px;
	width: 46%;
	height: 120%;
	background-image: radial-gradient(rgba(255, 255, 255, 0.16) 1.2px, transparent 1.7px);
	background-size: 18px 18px;
	-webkit-mask-image: radial-gradient(closest-side, #000 20%, transparent 100%);
	mask-image: radial-gradient(closest-side, #000 20%, transparent 100%);
	pointer-events: none;
	z-index: -1;
}
body.ph-post .post-area .content-inner .ph-cta-in { position: relative; max-width: 520px; }
body.ph-post .post-area .content-inner .ph-cta-eyebrow {
	display: inline-flex;
	align-items: center;
	gap: 12px;
	margin: 0 0 18px;
	font-family: var(--ph-text);
	font-weight: var(--ph-w-medium);
	font-size: 12px;
	line-height: 1.2;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.92);
}
body.ph-post .post-area .content-inner .ph-cta-eyebrow::before {
	content: "";
	display: block;
	width: 26px;
	height: 2px;
	background: #FFD300;
}
body.ph-post .post-area .content-inner .ph-cta-titolo {
	margin: 0 0 16px !important;
	padding: 0 !important;
	border: 0 !important;
	font-family: var(--ph-display) !important;
	font-weight: var(--ph-w-bold) !important;
	font-size: clamp(1.5rem, 2.4vw, 1.875rem) !important;
	line-height: 1.15 !important;
	letter-spacing: -0.02em !important;
	color: #FFFFFF !important;
}
body.ph-post .post-area .content-inner .ph-cta-titolo::before,
body.ph-post .post-area .content-inner .ph-cta-titolo::after { display: none !important; content: none !important; }
body.ph-post .post-area .content-inner .ph-cta-testo {
	margin: 0 0 28px !important;
	font-size: 15.5px !important;
	line-height: 1.6 !important;
	color: rgba(255, 255, 255, 0.78) !important;
}
body.ph-post .post-area .content-inner .ph-cta-azioni {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 14px 28px;
}
body.ph-post .post-area .content-inner .ph-cta-btn {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	padding: 14px 22px 14px 24px;
	border-radius: 999px;
	background: #FFD300;
	color: #10294B !important;
	font-family: var(--ph-text);
	font-weight: var(--ph-w-semibold);
	font-size: 14px;
	letter-spacing: 0.02em;
	text-decoration: none !important;
	border: 0 !important;
	box-shadow: none !important;
	transition: transform 0.25s cubic-bezier(0.22, 0.61, 0.36, 1), background-color 0.25s;
}
body.ph-post .post-area .content-inner .ph-cta-btn:hover { background: #FFDC33; transform: translateY(-1px); }
body.ph-post .post-area .content-inner .ph-cta-btn svg { transition: transform 0.25s cubic-bezier(0.22, 0.61, 0.36, 1); }
body.ph-post .post-area .content-inner .ph-cta-btn:hover svg { transform: translateX(3px); }
body.ph-post .post-area .content-inner .ph-cta-tel {
	font-family: var(--ph-text);
	font-weight: var(--ph-w-medium);
	font-size: 14px;
	letter-spacing: 0.04em;
	color: #FFFFFF !important;
	text-decoration: none !important;
	border-bottom: 1px solid rgba(255, 255, 255, 0.35) !important;
	padding-bottom: 2px;
	transition: border-color 0.25s;
}
body.ph-post .post-area .content-inner .ph-cta-tel:hover { border-bottom-color: #FFD300 !important; }
@media (max-width: 690px) {
	body.ph-post .post-area .content-inner .ph-cta { margin-top: 48px !important; padding: 34px 26px 32px !important; border-radius: 16px; }
	body.ph-post .post-area .content-inner .ph-cta-btn { width: 100%; justify-content: center; }
}

/* 65. IL SINGOLO ARTICOLO, VERSIONE PREMIUM (FINE) */

/* ============================================================
66. "CI HANNO SCELTO", VERSIONE 3 (INIZIO)
Richiesta del 10 settembre 2026: sezione bianca, una sola fila che
scorre. Sovrascrive il blocco 23.11. Fondo bianco con la trama a punti
Blu PHAMM appena percettibile e un filetto in basso; eyebrow Blu PHAMM
con i filetti gialli; titolo Blu Fondo. Le pastiglie sono bianche con un
bordo sottile e, al passaggio, il logo torna a colori e il bordo si
scurisce; la fila si ferma sotto il mouse. Quattordici marchi, ognuno
una volta sola sullo schermo (la fila supera i 2.400 px). Nessuna ombra.
============================================================ */
html body .phse .phtrust,
html body .phtrust {
	position: relative;
	isolation: isolate;
	overflow: hidden;
	background-color: #FFFFFF;
	background-image: none;
	border-bottom: 1px solid rgba(16, 41, 75, 0.08);
	padding-top: clamp(56px, 5.6vw, 92px);
	padding-bottom: clamp(56px, 5.6vw, 92px);
}
html body .phtrust::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background-image: radial-gradient(rgba(40, 90, 166, 0.16) 1.2px, transparent 1.7px);
	background-size: 22px 22px;
	-webkit-mask-image: radial-gradient(ellipse 60% 90% at 50% 100%, #000 0%, transparent 100%);
	mask-image: radial-gradient(ellipse 60% 90% at 50% 100%, #000 0%, transparent 100%);
	pointer-events: none;
}
html body .phtrust::after { display: none; }

html body .phtrust .phse-head { margin-bottom: clamp(32px, 3.4vw, 52px); }
html body .phtrust .ph-eyebrow {
	display: inline-flex !important;
	align-items: center;
	gap: 12px;
	color: #285AA6 !important;
}
html body .phtrust .ph-eyebrow::before,
html body .phtrust .ph-eyebrow::after {
	content: "";
	display: block;
	width: 26px;
	height: 2px;
	background: #FFD300;
}
html body .phse .phtrust .phse-h2 { color: #10294B !important; letter-spacing: -0.02em; }
html body .phtrust .phse-lede { color: #313840; }

/* La pista e la fila. */
html body .phtrust .phtrust-pista {
	margin-left: calc(0px - var(--phct-gutter, 24px));
	margin-right: calc(0px - var(--phct-gutter, 24px));
	overflow: hidden;
	padding: 4px 0;
	-webkit-mask-image: linear-gradient(90deg, transparent 0, #000 8%, #000 92%, transparent 100%);
	mask-image: linear-gradient(90deg, transparent 0, #000 8%, #000 92%, transparent 100%);
}
html body .phtrust .phtrust-nastro {
	display: flex;
	flex-wrap: nowrap;
	width: max-content;
	margin: 0;
	padding: 0;
	animation: phtrust-scorri 64s linear infinite;
	will-change: transform;
}
html body .phtrust .phtrust-pista:hover .phtrust-nastro,
html body .phtrust .phtrust-pista:focus-within .phtrust-nastro { animation-play-state: paused; }
html body .phtrust .phtrust-nastro li { flex: 0 0 auto; margin: 0 16px 0 0; }
html body .phtrust .phtrust-nastro > li[aria-hidden="true"] { display: block; }

html body .phtrust .phtrust-chip {
	width: 168px;
	height: 92px;
	padding: 14px 20px;
	border-radius: 16px;
	background-color: #FFFFFF;
	outline: 1px solid rgba(16, 41, 75, 0.12);
	outline-offset: -1px;
	transition: outline-color 0.35s, transform 0.35s cubic-bezier(0.22, 0.61, 0.36, 1);
}
html body .phtrust .phtrust-chip img {
	filter: grayscale(1);
	opacity: 0.72;
	transition: filter 0.35s cubic-bezier(0.22, 0.61, 0.36, 1), opacity 0.35s;
}
html body .phtrust .phtrust-chip:hover { outline-color: rgba(16, 41, 75, 0.35); transform: translateY(-2px); }
html body .phtrust .phtrust-chip:hover img { filter: none; opacity: 1; }

@media (max-width: 760px) {
	html body .phtrust .phtrust-chip { width: 136px; height: 76px; padding: 10px 14px; border-radius: 12px; }
	html body .phtrust .phtrust-nastro li { margin-right: 12px; }
}
@media (prefers-reduced-motion: reduce) {
	html body .phtrust .phtrust-nastro { animation: none; width: auto; }
	html body .phtrust .phtrust-nastro > li[aria-hidden="true"] { display: none; }
	html body .phtrust .phtrust-pista { overflow-x: auto; -webkit-mask-image: none; mask-image: none; }
	html body .phtrust .phtrust-chip, html body .phtrust .phtrust-chip img { transition: none; }
}
/* -- 66.b Fuori dalla home: stessa fila, ma su Blu PHAMM ---------------
   La home (body.home) resta bianca; nelle altre pagine la fascia torna
   sul gradiente Blu Fondo -> Blu PHAMM, con testo bianco e trama chiara. */
html body:not(.home) .phse .phtrust,
html body:not(.home) .phtrust {
	background-color: #1E4A8F;
	background-image: linear-gradient(135deg, #10294B 0%, #1E4A8F 52%, #285AA6 100%);
	border-bottom: 0;
}
html body:not(.home) .phtrust::before {
	background-image: radial-gradient(rgba(255, 255, 255, 0.13) 1.2px, transparent 1.7px);
	-webkit-mask-image: radial-gradient(ellipse 70% 90% at 50% 100%, #000 0%, transparent 100%);
	mask-image: radial-gradient(ellipse 70% 90% at 50% 100%, #000 0%, transparent 100%);
}
html body:not(.home) .phtrust::after {
	content: "";
	display: block;
	position: absolute;
	left: 50%;
	top: -30%;
	width: 60%;
	height: 90%;
	transform: translateX(-50%);
	z-index: -1;
	background: radial-gradient(closest-side, rgba(255, 255, 255, 0.10), transparent);
	pointer-events: none;
}
html body:not(.home) .phtrust .ph-eyebrow { color: rgba(255, 255, 255, 0.92) !important; }
html body:not(.home) .phse .phtrust .phse-h2 { color: #FFFFFF !important; }
html body:not(.home) .phtrust .phse-lede { color: rgba(255, 255, 255, 0.78); }
html body:not(.home) .phtrust .phtrust-chip { background-color: rgba(255, 255, 255, 0.97); outline-color: rgba(255, 255, 255, 0.55); }
html body:not(.home) .phtrust .phtrust-chip:hover { background-color: #FFFFFF; outline-color: #FFFFFF; }
/* 66. "CI HANNO SCELTO", VERSIONE 3 (FINE) */

/* ============================================================
67. PULSANTE GIALLO E TELEFONO, versione generica
Stesso disegno dell'invito in coda agli articoli (65.6), riusabile
nelle fasce su Blu Fondo: pillola gialla con freccia che scorre al
passaggio, accanto il numero sottolineato. Prima uscita: home,
"I componenti critici escono da qui".
============================================================ */
html body .ph-azioni {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 14px 28px;
	margin-top: 30px;
}
html body .ph-btn-giallo {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	padding: 15px 24px 15px 26px;
	border-radius: 999px;
	background: #FFD300;
	color: #10294B !important;
	font-family: var(--ph-text);
	font-weight: var(--ph-w-semibold);
	font-size: 14px;
	line-height: 1;
	letter-spacing: 0.02em;
	text-decoration: none !important;
	border: 0 !important;
	box-shadow: none !important;
	transition: transform 0.25s cubic-bezier(0.22, 0.61, 0.36, 1), background-color 0.25s;
}
html body .ph-btn-giallo:hover { background: #FFDC33; transform: translateY(-1px); color: #10294B !important; }
html body .ph-btn-giallo svg { flex: 0 0 auto; transition: transform 0.25s cubic-bezier(0.22, 0.61, 0.36, 1); }
html body .ph-btn-giallo:hover svg { transform: translateX(3px); }
html body .ph-btn-giallo:focus-visible { outline: 2px solid #FFFFFF; outline-offset: 3px; }
html body .ph-link-tel {
	font-family: var(--ph-text);
	font-weight: var(--ph-w-medium);
	font-size: 14px;
	letter-spacing: 0.04em;
	color: #FFFFFF !important;
	text-decoration: none !important;
	border-bottom: 1px solid rgba(255, 255, 255, 0.35);
	padding-bottom: 2px;
	transition: border-color 0.25s;
}
html body .ph-link-tel:hover { border-bottom-color: #FFD300; color: #FFFFFF !important; }
/* Link testuale bianco accanto al pulsante giallo (stesso peso del telefono). */
html body .ph-link-bianco {
	font-family: var(--ph-text);
	font-weight: var(--ph-w-semibold);
	font-size: 14px;
	letter-spacing: 0.02em;
	color: #FFFFFF !important;
	text-decoration: none !important;
	border-bottom: 1px solid rgba(255, 255, 255, 0.35);
	padding-bottom: 2px;
	transition: border-color 0.25s;
}
html body .ph-link-bianco:hover { border-bottom-color: #FFD300; color: #FFFFFF !important; }
html body .phgal-testo .ph-azioni { margin-top: 24px; }
@media (max-width: 690px) {
	html body .ph-azioni { margin-top: 24px; }
	html body .ph-btn-giallo { width: 100%; justify-content: center; }
}
/* 67. PULSANTE GIALLO E TELEFONO (FINE) */

/* ============================================================
68. CONTATTACI, "DOVE CI TROVI" VERSIONE 2 (INIZIO)
Richiesta del 10 settembre 2026. Fondo Blu Fondo con la trama a punti
della mappa e un alone; eyebrow con i filetti gialli. Le due sedi sono
schede bianche con un capitello: la sigla del Paese in grande, il ruolo
della sede, un filetto colorato (giallo per la sede principale, Blu
PHAMM per la spagnola). Sotto, citta e ragione sociale, poi indirizzo e
recapiti su due colonne, i reparti come pastiglie e due azioni:
indicazioni stradali e scrivi alla sede. Nessuna ombra; al passaggio la
scheda si solleva di tre pixel.
============================================================ */
html body .phct-sec--sedi {
	position: relative;
	isolation: isolate;
	overflow: hidden;
	background-color: #10294B;
	background-image: linear-gradient(160deg, #10294B 0%, #142F57 60%, #1A3D75 100%);
}
html body .phct-sec--sedi::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background-image: radial-gradient(rgba(255, 255, 255, 0.12) 1.2px, transparent 1.7px);
	background-size: 22px 22px;
	-webkit-mask-image: radial-gradient(ellipse 60% 80% at 85% 20%, #000 0%, transparent 100%);
	mask-image: radial-gradient(ellipse 60% 80% at 85% 20%, #000 0%, transparent 100%);
	pointer-events: none;
}
html body .phct-sec--sedi .phct-head .ph-eyebrow {
	display: inline-flex !important;
	align-items: center;
	gap: 12px;
	color: rgba(255, 255, 255, 0.92) !important;
}
html body .phct-sec--sedi .phct-head .ph-eyebrow::before {
	content: "";
	display: block;
	width: 26px;
	height: 2px;
	background: #FFD300;
}
html body .phct-sec--sedi .phct-grid--2 { gap: 24px; }

html body .phct-sec--sedi .phct-sede {
	position: relative;
	display: flex;
	flex-direction: column;
	padding: 0 !important;
	border-radius: 20px;
	border: 1px solid rgba(255, 255, 255, 0.18);
	background: #FFFFFF;
	overflow: hidden;
	box-shadow: none !important;
	transition: transform 0.35s cubic-bezier(0.22, 0.61, 0.36, 1);
}
html body .phct-sec--sedi .phct-sede:hover { transform: translateY(-3px); }

/* Il capitello: sigla del Paese, ruolo, filetto. */
html body .phct-sec--sedi .phct-sede-paese {
	display: flex;
	align-items: baseline;
	gap: 16px;
	margin: 0 !important;
	padding: 26px 34px 22px !important;
	background: #EAF1F8;
	border-bottom: 3px solid #FFD300;
	font-family: var(--ph-text);
	font-weight: var(--ph-w-medium);
	font-size: 12px !important;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: #5F7085 !important;
}
html body .phct-sec--sedi .phct-sede--es .phct-sede-paese { border-bottom-color: #285AA6; }
html body .phct-sec--sedi .phct-sede-paese::before {
	content: "IT";
	font-family: var(--ph-display);
	font-weight: var(--ph-w-bold);
	font-size: 34px;
	line-height: 1;
	letter-spacing: -0.03em;
	text-transform: none;
	color: #10294B;
}
html body .phct-sec--sedi .phct-sede--es .phct-sede-paese::before { content: "ES"; }

html body .phct-sec--sedi .phct-sede-h {
	margin: 28px 34px 4px !important;
	font-family: var(--ph-display) !important;
	font-weight: var(--ph-w-bold) !important;
	font-size: clamp(1.625rem, 2.2vw, 2rem) !important;
	letter-spacing: -0.02em;
	color: #10294B !important;
}
html body .phct-sec--sedi .phct-sede-rag { margin: 0 34px 22px !important; color: #5F7085; font-size: 15px; }

/* Indirizzo e recapiti su due colonne. */
html body .phct-sec--sedi .phct-addr {
	margin: 0 34px 0 !important;
	padding: 20px 0 0;
	border-top: 1px solid rgba(16, 41, 75, 0.10);
	font-style: normal;
	line-height: 1.65;
	color: #313840;
}
html body .phct-sec--sedi .phct-rows {
	display: grid;
	grid-template-columns: auto auto auto;
	justify-content: space-between;
	gap: 16px 24px;
	margin: 20px 34px 0 !important;
	padding: 20px 0 0 !important;
	border-top: 1px solid rgba(16, 41, 75, 0.10);
	list-style: none !important;
}
html body .phct-sec--sedi .phct-rows li { display: flex; flex-direction: column; gap: 4px; margin: 0 !important; padding: 0 !important; }
html body .phct-sec--sedi .phct-rows li::before { display: none !important; }
html body .phct-sec--sedi .phct-k { font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase; color: #5F7085; }
html body .phct-sec--sedi .phct-v { font-size: 15px; color: #10294B; word-break: break-word; }
html body .phct-sec--sedi .phct-v a { color: #285AA6; text-decoration: none; border-bottom: 1px solid rgba(40, 90, 166, 0.3); }
html body .phct-sec--sedi .phct-v a:hover { border-bottom-color: #285AA6; }

html body .phct-sec--sedi .phct-reparti {
	margin: 22px 34px 0 !important;
	padding: 20px 0 0 !important;
	border-top: 1px solid rgba(16, 41, 75, 0.10);
}
html body .phct-sec--sedi .phct-reparti li { background: #EAF1F8; color: #10294B; }

/* Le azioni in fondo, a spingere. */
html body .phct-sec--sedi .phct-sede-azioni {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 12px 24px;
	margin: auto 0 0 !important;
	padding: 26px 34px 30px;
}
html body .phct-sec--sedi .phct-sede-btn {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 12px 18px 12px 20px;
	border-radius: 999px;
	background: #10294B;
	color: #FFFFFF !important;
	font-family: var(--ph-text);
	font-weight: var(--ph-w-semibold);
	font-size: 13.5px;
	letter-spacing: 0.02em;
	text-decoration: none !important;
	border: 0 !important;
	transition: background-color 0.25s, transform 0.25s cubic-bezier(0.22, 0.61, 0.36, 1);
}
html body .phct-sec--sedi .phct-sede-btn:hover { background: #285AA6; transform: translateY(-1px); }
html body .phct-sec--sedi .phct-sede-link {
	font-family: var(--ph-text);
	font-weight: var(--ph-w-medium);
	font-size: 13.5px;
	color: #10294B !important;
	text-decoration: none !important;
	border-bottom: 1px solid rgba(16, 41, 75, 0.3);
	padding-bottom: 2px;
}
html body .phct-sec--sedi .phct-sede-link:hover { border-bottom-color: #FFD300; }

@media (max-width: 760px) {
	html body .phct-sec--sedi .phct-sede-paese { padding: 20px 22px 18px !important; gap: 12px; }
	html body .phct-sec--sedi .phct-sede-paese::before { font-size: 28px; }
	html body .phct-sec--sedi .phct-sede-h { margin: 22px 22px 4px !important; }
	html body .phct-sec--sedi .phct-sede-rag,
	html body .phct-sec--sedi .phct-addr,
	html body .phct-sec--sedi .phct-rows,
	html body .phct-sec--sedi .phct-reparti { margin-left: 22px !important; margin-right: 22px !important; }
	html body .phct-sec--sedi .phct-rows { grid-template-columns: minmax(0, 1fr); gap: 14px; }
	html body .phct-sec--sedi .phct-sede-azioni { padding: 22px 22px 24px; }
	html body .phct-sec--sedi .phct-sede-btn { width: 100%; justify-content: center; }
}
@media (prefers-reduced-motion: reduce) {
	html body .phct-sec--sedi .phct-sede, html body .phct-sec--sedi .phct-sede-btn { transition: none; }
}
/* 68. CONTATTACI, "DOVE CI TROVI" VERSIONE 2 (FINE) */

/* ============================================================
69. HOME, "LE NORME DI RIFERIMENTO" VERSIONE 2 (INIZIO)
Richiesta del 10 settembre 2026. Da dodici pastiglie a un registro:
dodici schede in griglia (quattro per riga), ognuna con la famiglia in
alto, il codice grande e una riga che dice di cosa tratta la norma.
Fondo Blu Fondo con la trama a punti; schede in vetro scuro con un
filetto; al passaggio il filetto in alto diventa giallo e la scheda si
solleva. Nessuna ombra. Vale dove il markup ha la classe .phnorme.
============================================================ */
html body .phse-sec--fondo:has(.phnorme) {
	position: relative;
	isolation: isolate;
	overflow: hidden;
	background-image: linear-gradient(160deg, #10294B 0%, #142F57 60%, #1A3D75 100%);
}
html body .phse-sec--fondo:has(.phnorme)::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background-image: radial-gradient(rgba(255, 255, 255, 0.12) 1.2px, transparent 1.7px);
	background-size: 22px 22px;
	-webkit-mask-image: radial-gradient(ellipse 55% 80% at 90% 10%, #000 0%, transparent 100%);
	mask-image: radial-gradient(ellipse 55% 80% at 90% 10%, #000 0%, transparent 100%);
	pointer-events: none;
}
html body .phse-sec--fondo:has(.phnorme) .ph-eyebrow {
	display: inline-flex !important;
	align-items: center;
	gap: 12px;
}
html body .phse-sec--fondo:has(.phnorme) .ph-eyebrow::before {
	content: "";
	display: block;
	width: 26px;
	height: 2px;
	background: #FFD300;
}

/* Una sola fila che scorre: dodici schede compatte, la copia nascosta
   chiude l'anello (functions.php §11). Al passaggio si ferma. */
html body .phnorme-pista {
	position: relative;
	overflow: hidden;
	margin: 0 calc(0px - var(--phse-gutter, 24px));
	padding: 6px 0;
	-webkit-mask-image: linear-gradient(90deg, transparent 0, #000 8%, #000 92%, transparent 100%);
	mask-image: linear-gradient(90deg, transparent 0, #000 8%, #000 92%, transparent 100%);
}
html body .phnorme {
	display: flex !important;
	flex-wrap: nowrap;
	gap: 12px;
	width: max-content;
	margin: 0 !important;
	padding: 0 var(--phse-gutter, 24px) !important;
	list-style: none !important;
}
html body .phnorme--anello { animation: phnorme-scorri 70s linear infinite; }
html body .phnorme-pista:hover .phnorme--anello,
html body .phnorme-pista:focus-within .phnorme--anello { animation-play-state: paused; }
@keyframes phnorme-scorri {
	from { transform: translateX(0); }
	to { transform: translateX(-50%); }
}
html body .phnorme li {
	position: relative;
	flex: 0 0 auto;
	width: 272px;
	display: flex;
	flex-direction: column;
	gap: 7px;
	margin: 0 !important;
	padding: 18px 20px 20px !important;
	border-radius: 14px !important;
	white-space: normal !important;
	text-align: left !important;
	min-height: 0 !important;
	height: auto !important;
	border: 1px solid rgba(255, 255, 255, 0.14) !important;
	background: rgba(255, 255, 255, 0.05) !important;
	color: #FFFFFF !important;
	font-size: inherit !important;
	line-height: inherit !important;
	overflow: hidden;
	transition: border-color 0.35s, background-color 0.35s;
}
html body .phnorme li::before {
	content: "";
	position: absolute;
	top: 0;
	left: 20px;
	right: 20px;
	height: 2px;
	background: rgba(255, 255, 255, 0.18);
	transition: background-color 0.35s;
}
html body .phnorme li::after { display: none !important; }
html body .phnorme li:hover { border-color: rgba(255, 255, 255, 0.28) !important; background: rgba(255, 255, 255, 0.08) !important; }
html body .phnorme li:hover::before { background: #FFD300; }

html body .phnorme-fam {
	font-family: var(--ph-text);
	font-weight: var(--ph-w-medium);
	font-size: 10.5px;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.62);
}
html body .phnorme-cod {
	display: block;
	font-family: var(--ph-display);
	font-weight: var(--ph-w-bold);
	font-size: 1.0625rem;
	line-height: 1.2;
	letter-spacing: -0.01em;
	color: #FFFFFF;
}
html body .phnorme-des {
	font-size: 12.5px;
	line-height: 1.45;
	color: rgba(255, 255, 255, 0.72);
}

@media (max-width: 760px) {
	html body .phnorme li { width: 210px; padding: 16px 16px 18px !important; }
	html body .phnorme li::before { left: 16px; right: 16px; }
}
@media (prefers-reduced-motion: reduce) {
	html body .phnorme--anello { animation: none; }
	html body .phnorme-pista { overflow-x: auto; -webkit-mask-image: none; mask-image: none; }
	html body .phnorme li[aria-hidden="true"] { display: none; }
	html body .phnorme li, html body .phnorme li::before { transition: none; }
}
/* -- 69.b Fuori dalla home le voci sono il solo codice della norma (nessuna
   descrizione aggiunta): la scheda si stringe sul testo e lo centra. */
html body .phnorme li:not(:has(.phnorme-cod)) {
	width: auto;
	min-width: 168px;
	justify-content: center;
	align-items: center;
	padding: 22px 26px !important;
	font-family: var(--ph-display) !important;
	font-weight: var(--ph-w-bold) !important;
	font-size: 1.0625rem !important;
	line-height: 1.2 !important;
	letter-spacing: -0.01em;
	white-space: nowrap !important;
	text-align: center !important;
}
@media (max-width: 760px) {
	html body .phnorme li:not(:has(.phnorme-cod)) { min-width: 0; padding: 16px 18px !important; font-size: 0.9375rem !important; }
}
/* 69. HOME, "LE NORME DI RIFERIMENTO" VERSIONE 2 (FINE) */

/* ============================================================
70. HOME, INVITO FINALE "RACCONTATECI" VERSIONE 2 (INIZIO)
Richiesta del 10 settembre 2026. La chiusura della home diventa una
grande scheda Blu Fondo su fondo bianco (stesso linguaggio dell'invito
in coda agli articoli): trama a punti che affiora dagli angoli, alone
di luce, eyebrow con i filetti gialli, titolo bianco, pulsante giallo
e pulsante fantasma bianco, sotto una riga di recapiti. Nessuna ombra.
============================================================ */
/* Versione chiara (richiesta esplicita): scheda Azzurro Camera su fondo
   bianco, testo Blu Fondo, trama a punti Blu PHAMM appena percettibile. */
html body .phse-sec--finale .phse-chiusura {
	position: relative;
	isolation: isolate;
	overflow: hidden;
	max-width: none !important;
	margin: 0 !important;
	padding: clamp(56px, 6vw, 96px) clamp(24px, 6vw, 96px) !important;
	border-radius: 24px;
	border: 1px solid rgba(16, 41, 75, 0.10);
	background-color: #EAF1F8;
	background-image: linear-gradient(160deg, #FFFFFF 0%, #EEF4FA 45%, #E3ECF6 100%);
	color: #10294B;
	text-align: center;
}
html body .phse-sec--finale .phse-chiusura::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background-image: radial-gradient(rgba(40, 90, 166, 0.22) 1.2px, transparent 1.7px);
	background-size: 22px 22px;
	-webkit-mask-image:
		radial-gradient(ellipse 40% 70% at 0% 100%, #000 0%, transparent 100%),
		radial-gradient(ellipse 40% 70% at 100% 0%, #000 0%, transparent 100%);
	mask-image:
		radial-gradient(ellipse 40% 70% at 0% 100%, #000 0%, transparent 100%),
		radial-gradient(ellipse 40% 70% at 100% 0%, #000 0%, transparent 100%);
	pointer-events: none;
}
html body .phse-sec--finale .phse-chiusura .ph-eyebrow {
	display: inline-flex !important;
	align-items: center;
	gap: 12px;
	color: #285AA6 !important;
}
html body .phse-sec--finale .phse-chiusura .ph-eyebrow::before,
html body .phse-sec--finale .phse-chiusura .ph-eyebrow::after {
	content: "";
	display: block;
	width: 26px;
	height: 2px;
	background: #FFD300;
}
html body .phse-sec--finale .phse-chiusura .phse-h2 {
	max-width: 22ch;
	margin-left: auto !important;
	margin-right: auto !important;
	color: #10294B !important;
	letter-spacing: -0.02em;
	margin-bottom: 16px !important;
}
html body .phse-sec--finale .phse-chiusura .phse-lede {
	max-width: 58ch;
	margin: 0 auto !important;
	color: #313840 !important;
}
html body .phse-sec--finale .phfin-azioni {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	align-items: center;
	gap: 14px 16px;
	margin: 32px 0 0 !important;
	padding: 0 !important;
}
html body .phse-sec--finale .ph-btn-giallo { padding: 17px 28px 17px 30px; font-size: 15px; }
html body .phse-sec--finale .phfin-ghost {
	display: inline-flex;
	align-items: center;
	padding: 16px 28px;
	border-radius: 999px;
	border: 1.5px solid rgba(16, 41, 75, 0.35) !important;
	color: #10294B !important;
	font-family: var(--ph-text);
	font-weight: var(--ph-w-semibold);
	font-size: 15px;
	line-height: 1;
	letter-spacing: 0.02em;
	text-decoration: none !important;
	background: transparent;
	transition: border-color 0.25s, background-color 0.25s, transform 0.25s cubic-bezier(0.22, 0.61, 0.36, 1);
}
html body .phse-sec--finale .phfin-ghost:hover { border-color: #10294B !important; background: rgba(16, 41, 75, 0.05); transform: translateY(-1px); }
html body .phse-sec--finale .phfin-recapiti {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 8px 0;
	margin: 36px 0 0 !important;
	padding: 22px 0 0 !important;
	border-top: 1px solid rgba(16, 41, 75, 0.12);
	list-style: none !important;
}
html body .phse-sec--finale .phfin-recapiti li {
	margin: 0 !important;
	padding: 0 18px !important;
	list-style: none !important;
	font-size: 13.5px;
	letter-spacing: 0.02em;
	color: #5F7085;
	border-left: 1px solid rgba(16, 41, 75, 0.14);
}
html body .phse-sec--finale .phfin-recapiti li:first-child { border-left: 0; }
html body .phse-sec--finale .phfin-recapiti li::before { display: none !important; }
html body .phse-sec--finale .phfin-recapiti li::marker { content: none; }
html body .phse-sec--finale .phfin-recapiti a { color: #10294B !important; text-decoration: none !important; border-bottom: 1px solid rgba(16, 41, 75, 0.25); padding-bottom: 1px; }
html body .phse-sec--finale .phfin-recapiti a:hover { border-bottom-color: #FFD300; }
@media (max-width: 690px) {
	html body .phse-sec--finale .phse-chiusura { border-radius: 18px; padding: 48px 22px !important; }
	html body .phse-sec--finale .ph-btn-giallo, html body .phse-sec--finale .phfin-ghost { width: 100%; justify-content: center; }
	html body .phse-sec--finale .phfin-recapiti { flex-direction: column; align-items: center; }
	html body .phse-sec--finale .phfin-recapiti li { border-left: 0; }
}
@media (prefers-reduced-motion: reduce) {
	html body .phse-sec--finale .phfin-ghost { transition: none; }
}
/* 70.1 Correzione: niente cornice. Sezione bianca a tutto schermo, meno
   alta, che stacca dal piede scuro; le FAQ sopra restano Azzurro Camera
   cosi le due fasce non hanno lo stesso fondo. */
html body .phse-sec--finale {
	background: #FFFFFF !important;
	padding-top: clamp(40px, 4.2vw, 64px) !important;
	padding-bottom: clamp(48px, 5vw, 80px) !important;
}
html body .phse-sec--finale .phse-chiusura {
	background: none !important;
	border: 0 !important;
	border-radius: 0 !important;
	padding: 0 !important;
	overflow: visible;
}
html body .phse-sec--finale .phse-chiusura::before,
html body .phse-sec--finale .phse-chiusura::after { display: none !important; }
html body .phse-sec--finale .phfin-recapiti { margin-top: 30px !important; padding-top: 20px !important; max-width: 720px; margin-left: auto !important; margin-right: auto !important; }
/* 70. HOME, INVITO FINALE "RACCONTATECI" VERSIONE 2 (FINE) */

/* 73. Home, norme: testa centrata; le schede scorrono gia a tutta larghezza
   e il testo dentro resta a sinistra. */
html body .phse-sec--fondo:has(.phnorme) .phse-head--centro { text-align: center; margin-left: auto; margin-right: auto; }
html body .phse-sec--fondo:has(.phnorme) .phse-head--centro .phse-h2,
html body .phse-sec--fondo:has(.phnorme) .phse-head--centro .phse-lede { margin-left: auto !important; margin-right: auto !important; }
html body .phse-sec--fondo:has(.phnorme) .ph-eyebrow::after { content: ""; display: block; width: 26px; height: 2px; background: #FFD300; }

/* ============================================================
72. HOME, "TRE SERVIZI" VERSIONE 2 (INIZIO)
Richiesta del 10 settembre 2026: sezione bianca, schede premium in
branding. Testa centrata con i filetti gialli. Ogni scheda: numero di
fase (01, 02, 03: la vita della sala, dal progetto all'esercizio),
icona bianca su tessera Blu Fondo, titolo, testo, e in fondo un pulsante
a pillola con la freccia. Filetto in alto che al passaggio diventa
giallo, scheda che si solleva di tre pixel, bordo che si scurisce. Trama
a punti Blu PHAMM appena percettibile nell'angolo alto. Nessuna ombra.
============================================================ */
html body #modelli { background: #FFFFFF; }
html body #modelli .phse-head--centro { text-align: center; margin-left: auto; margin-right: auto; }
html body #modelli .phse-head--centro .phse-h2,
html body #modelli .phse-head--centro .phse-lede { margin-left: auto !important; margin-right: auto !important; }
html body #modelli .phse-head--centro .ph-eyebrow { display: inline-flex !important; align-items: center; gap: 12px; }
html body #modelli .phse-head--centro .ph-eyebrow::before,
html body #modelli .phse-head--centro .ph-eyebrow::after { content: ""; display: block; width: 26px; height: 2px; background: #FFD300; }

html body #modelli .phse-schede--3 { gap: 22px; counter-reset: phfase; }
html body #modelli .phse-schede--3 > li { counter-increment: phfase; }

html body #modelli .phse-settori-card {
	position: relative;
	isolation: isolate;
	overflow: hidden;
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
	padding: 40px 32px 32px !important;
	border-radius: 20px !important;
	border: 1px solid rgba(16, 41, 75, 0.12) !important;
	background: #FFFFFF !important;
	box-shadow: none !important;
	transition: transform 0.35s cubic-bezier(0.22, 0.61, 0.36, 1), border-color 0.35s;
}
html body #modelli .phse-settori-card::before {
	content: "";
	position: absolute;
	top: 0;
	left: 32px;
	right: 32px;
	height: 2px;
	background: rgba(16, 41, 75, 0.14);
	transition: background-color 0.35s;
}
html body #modelli .phse-settori-card::after {
	content: "";
	position: absolute;
	top: -30px;
	right: -30px;
	width: 46%;
	height: 60%;
	z-index: -1;
	background-image: radial-gradient(rgba(40, 90, 166, 0.20) 1.2px, transparent 1.7px);
	background-size: 18px 18px;
	-webkit-mask-image: radial-gradient(closest-side, #000 10%, transparent 100%);
	mask-image: radial-gradient(closest-side, #000 10%, transparent 100%);
	pointer-events: none;
}
html body #modelli .phse-settori-card:hover { transform: translateY(-3px); border-color: rgba(40, 90, 166, 0.45) !important; }
html body #modelli .phse-settori-card:hover::before { background: #FFD300; }

html body #modelli .phse-settori-ico {
	position: relative;
	width: 64px;
	height: 64px;
	margin: 0 auto 22px;
	border-radius: 18px;
	background: #10294B;
	color: #FFFFFF;
	display: flex;
	align-items: center;
	justify-content: center;
	transition: background-color 0.35s;
}
html body #modelli .phse-settori-ico svg { width: 30px; height: 30px; color: #FFFFFF; stroke: currentColor; }
html body #modelli .phse-settori-card:hover .phse-settori-ico { background: #285AA6; }
html body #modelli .phse-schede--3 .phse-settori-ico::after {
	content: "0" counter(phfase);
	position: absolute;
	top: -12px;
	right: -14px;
	min-width: 30px;
	height: 22px;
	padding: 0 8px;
	border-radius: 999px;
	background: #FFD300;
	color: #10294B;
	font-family: var(--ph-text);
	font-weight: var(--ph-w-semibold);
	font-size: 11px;
	line-height: 22px;
	letter-spacing: 0.12em;
	text-align: center;
}

html body #modelli .phse-settori-card h3 {
	margin: 0 auto 10px !important;
	font-size: 1.25rem !important;
	letter-spacing: -0.01em;
	color: #10294B !important;
	text-align: center;
}
html body #modelli .phse-settori-card p {
	margin: 0 auto 26px !important;
	max-width: 30ch;
	font-size: 15.5px !important;
	line-height: 1.6 !important;
	color: #313840 !important;
	text-align: center;
}
html body #modelli .phse-settori-piede {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	width: auto;
	margin-top: auto;
	padding: 11px 18px 11px 20px;
	border-radius: 999px;
	border: 1.5px solid rgba(16, 41, 75, 0.25);
	color: #10294B !important;
	font-family: var(--ph-text);
	font-weight: var(--ph-w-semibold);
	font-size: 13px;
	letter-spacing: 0.02em;
	transition: border-color 0.3s, background-color 0.3s, color 0.3s;
}
html body #modelli .phse-settori-piede svg { margin-left: 0; width: 15px; height: 15px; transition: transform 0.3s cubic-bezier(0.22, 0.61, 0.36, 1); }
html body #modelli .phse-settori-card:hover .phse-settori-piede { background: #10294B; border-color: #10294B; color: #FFFFFF !important; }
html body #modelli .phse-settori-card:hover .phse-settori-piede svg { transform: translateX(3px); }

@media (max-width: 1000px) {
	html body #modelli .phse-schede--3 { gap: 16px; }
	html body #modelli .phse-settori-card { padding: 34px 24px 28px !important; }
}
@media (prefers-reduced-motion: reduce) {
	html body #modelli .phse-settori-card, html body #modelli .phse-settori-ico, html body #modelli .phse-settori-piede, html body #modelli .phse-settori-piede svg { transition: none; }
}
/* 72. HOME, "TRE SERVIZI" VERSIONE 2 (FINE) */

/* ============================================================
74. HOME, "LA GAMMA" VERSIONE 2 (INIZIO)
Dal mockup approvato il 10 settembre 2026. Sezione Azzurro Camera con
la trama a punti in alto a destra; testa centrata con i filetti gialli.
Le due famiglie sono capitoli: numero in Blu Fondo, titolo-link con la
freccia, filetto fino al contatore. Le tre camere bianche sono schede
grandi (icona bianca su tessera Blu Fondo, pulsante a pillola); le dieci
attrezzature una griglia da cinque, compatta (icona Blu PHAMM su tessera
Azzurro Camera, tag con il puntino giallo). Al passaggio: filetto giallo,
scheda sollevata, tessera accesa. Nessuna ombra.
============================================================ */
html body .phgamma {
	position: relative;
	isolation: isolate;
	overflow: hidden;
}
html body .phgamma::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background-image: radial-gradient(rgba(40, 90, 166, 0.18) 1.2px, transparent 1.7px);
	background-size: 22px 22px;
	-webkit-mask-image: radial-gradient(ellipse 55% 70% at 100% 0%, #000 0%, transparent 100%);
	mask-image: radial-gradient(ellipse 55% 70% at 100% 0%, #000 0%, transparent 100%);
	pointer-events: none;
}
html body .phgamma .phse-head--centro { text-align: center; margin-left: auto; margin-right: auto; }
html body .phgamma .phse-head--centro .phse-h2,
html body .phgamma .phse-head--centro .phse-lede { margin-left: auto !important; margin-right: auto !important; }
html body .phgamma .ph-eyebrow { display: inline-flex !important; align-items: center; gap: 12px; }
html body .phgamma .ph-eyebrow::before,
html body .phgamma .ph-eyebrow::after { content: ""; display: block; width: 26px; height: 2px; background: #FFD300; }

/* Il capitolo. */
html body .phgamma .phgamma-cap {
	display: flex;
	align-items: center;
	gap: 22px;
	margin: 0 0 22px;
}
html body .phgamma .phgamma-dieci { margin-bottom: 0; }
html body .phgamma .phgamma-tre + .phgamma-cap,
html body .phgamma .phgamma-tre ~ .phgamma-cap { margin-top: clamp(44px, 4.6vw, 64px); }
html body .phgamma .phgamma-n {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	height: 30px;
	padding: 0 12px;
	border-radius: 999px;
	background: #10294B;
	color: #FFFFFF;
	font-family: var(--ph-display);
	font-weight: var(--ph-w-semibold);
	font-size: 12px;
	letter-spacing: 0.14em;
}
html body .phgamma .phgamma-cap .phse-gruppo { margin: 0 !important; padding: 0 !important; border: 0 !important; }
html body .phgamma .phgamma-cap .phse-gruppo-link {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	font-family: var(--ph-display);
	font-weight: var(--ph-w-bold);
	font-size: 1.25rem;
	letter-spacing: -0.01em;
	color: #10294B !important;
	text-decoration: none !important;
}
html body .phgamma .phgamma-cap .phse-gruppo-link svg { width: 15px; height: 15px; transition: transform 0.3s cubic-bezier(0.22, 0.61, 0.36, 1); }
html body .phgamma .phgamma-cap .phse-gruppo-link:hover svg { transform: translateX(3px); }
html body .phgamma .phgamma-linea { flex: 1; height: 1px; background: rgba(16, 41, 75, 0.14); }
html body .phgamma .phgamma-conta { font-size: 12px; letter-spacing: 0.14em; text-transform: uppercase; color: #5F7085; white-space: nowrap; }

/* Le schede: base comune. */
html body .phgamma .phgamma-tre,
html body .phgamma .phgamma-dieci { list-style: none; margin: 0; padding: 0; display: grid; }
html body .phgamma .phgamma-tre { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 22px; }
html body .phgamma .phgamma-dieci { grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 16px; }
html body .phgamma .phgamma-tre > li,
html body .phgamma .phgamma-dieci > li { display: flex; margin: 0; }
html body .phgamma .phse-settori-card {
	flex: 1 1 auto;
	position: relative;
	isolation: isolate;
	overflow: hidden;
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	text-align: left;
	background: #FFFFFF !important;
	border: 1px solid rgba(16, 41, 75, 0.12) !important;
	border-radius: 20px !important;
	box-shadow: none !important;
	text-decoration: none !important;
	transition: transform 0.35s cubic-bezier(0.22, 0.61, 0.36, 1), border-color 0.35s;
}
html body .phgamma .phse-settori-card::before {
	content: "";
	position: absolute;
	top: 0;
	left: 32px;
	right: 32px;
	height: 2px;
	background: rgba(16, 41, 75, 0.14);
	transition: background-color 0.35s;
}
html body .phgamma .phse-settori-card:hover { transform: translateY(-3px); border-color: rgba(40, 90, 166, 0.45) !important; }
html body .phgamma .phse-settori-card:hover::before { background: #FFD300; }
html body .phgamma .phse-settori-card h3 { font-family: var(--ph-display) !important; font-weight: var(--ph-w-bold) !important; letter-spacing: -0.01em; color: #10294B !important; text-align: left; }
html body .phgamma .phse-settori-card p { color: #313840 !important; text-align: left; }
html body .phgamma .phse-settori-ico { display: flex; align-items: center; justify-content: center; transition: background-color 0.35s, color 0.35s; }
html body .phgamma .phse-settori-ico svg { stroke: currentColor; }

/* Le tre grandi. */
html body .phgamma .phgamma-tre .phse-settori-card { padding: 36px 32px 30px !important; min-height: 300px; }
html body .phgamma .phgamma-tre .phse-settori-card::after {
	content: "";
	position: absolute;
	top: -30px;
	right: -30px;
	width: 46%;
	height: 60%;
	z-index: -1;
	background-image: radial-gradient(rgba(40, 90, 166, 0.20) 1.2px, transparent 1.7px);
	background-size: 18px 18px;
	-webkit-mask-image: radial-gradient(closest-side, #000 10%, transparent 100%);
	mask-image: radial-gradient(closest-side, #000 10%, transparent 100%);
	pointer-events: none;
}
html body .phgamma .phgamma-tre .phse-settori-ico { width: 64px; height: 64px; border-radius: 18px; background: #10294B; color: #FFFFFF; margin: 0 0 22px; }
html body .phgamma .phgamma-tre .phse-settori-ico svg { width: 30px; height: 30px; }
html body .phgamma .phgamma-tre .phse-settori-card:hover .phse-settori-ico { background: #285AA6; }
html body .phgamma .phgamma-tre .phse-settori-card h3 { font-size: 1.25rem !important; margin: 0 0 10px !important; }
html body .phgamma .phgamma-tre .phse-settori-card p { font-size: 15.5px !important; line-height: 1.6 !important; margin: 0 0 26px !important; max-width: 32ch; }
html body .phgamma .phgamma-tre .phse-settori-piede {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	width: auto;
	align-self: flex-start;
	margin-top: auto;
	padding: 11px 18px 11px 20px;
	border-radius: 999px;
	border: 1.5px solid rgba(16, 41, 75, 0.25);
	color: #10294B !important;
	font-family: var(--ph-text);
	font-weight: var(--ph-w-semibold);
	font-size: 13px;
	letter-spacing: 0.02em;
	transition: border-color 0.3s, background-color 0.3s, color 0.3s;
}
html body .phgamma .phgamma-tre .phse-settori-piede svg { width: 15px; height: 15px; margin-left: 0; transition: transform 0.3s cubic-bezier(0.22, 0.61, 0.36, 1); }
html body .phgamma .phgamma-tre .phse-settori-card:hover .phse-settori-piede { background: #10294B; border-color: #10294B; color: #FFFFFF !important; }
html body .phgamma .phgamma-tre .phse-settori-card:hover .phse-settori-piede svg { transform: translateX(3px); }

/* Le dieci compatte. */
html body .phgamma .phgamma-dieci .phse-settori-card { padding: 24px 22px 22px !important; min-height: 236px; }
html body .phgamma .phgamma-dieci .phse-settori-card::before { left: 22px; right: 22px; }
html body .phgamma .phgamma-dieci .phse-settori-ico { width: 48px; height: 48px; border-radius: 14px; background: #EAF0F7; color: #285AA6; margin: 0 0 18px; }
html body .phgamma .phgamma-dieci .phse-settori-ico svg { width: 24px; height: 24px; }
html body .phgamma .phgamma-dieci .phse-settori-card:hover .phse-settori-ico { background: #10294B; color: #FFFFFF; }
html body .phgamma .phgamma-dieci .phse-settori-card h3 { font-size: 1.0625rem !important; margin: 0 0 8px !important; }
html body .phgamma .phgamma-dieci .phse-settori-card p { font-size: 13.5px !important; line-height: 1.5 !important; margin: 0 0 18px !important; }
html body .phgamma .phgamma-dieci .phse-settori-piede {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	width: auto;
	margin-top: auto;
	padding: 0;
	border: 0;
	font-family: var(--ph-text);
	font-weight: var(--ph-w-semibold);
	font-size: 11.5px;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: #285AA6 !important;
}
html body .phgamma .phgamma-dieci .phse-settori-piede::before { content: ""; width: 6px; height: 6px; border-radius: 999px; background: #FFD300; }
html body .phgamma .phgamma-dieci .phse-settori-piede svg { width: 13px; height: 13px; margin-left: 0; transition: transform 0.3s cubic-bezier(0.22, 0.61, 0.36, 1); }
html body .phgamma .phgamma-dieci .phse-settori-card:hover .phse-settori-piede svg { transform: translateX(3px); }

@media (max-width: 1000px) {
	html body .phgamma .phgamma-tre { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
	html body .phgamma .phgamma-dieci { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
	html body .phgamma .phgamma-tre .phse-settori-card { min-height: 0; }
}
@media (max-width: 690px) {
	html body .phgamma .phgamma-tre { grid-template-columns: minmax(0, 1fr); }
	html body .phgamma .phgamma-dieci { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
	html body .phgamma .phgamma-dieci .phse-settori-card { padding: 18px 16px 16px !important; min-height: 0; }
	html body .phgamma .phgamma-dieci .phse-settori-card p { display: none; }
	html body .phgamma .phgamma-cap { flex-wrap: wrap; gap: 12px; }
	html body .phgamma .phgamma-linea { flex-basis: 100%; order: 9; }
}
@media (prefers-reduced-motion: reduce) {
	html body .phgamma .phse-settori-card, html body .phgamma .phse-settori-ico, html body .phgamma .phse-settori-piede, html body .phgamma .phse-settori-piede svg, html body .phgamma .phse-gruppo-link svg { transition: none; }
}
/* 74. HOME, "LA GAMMA" VERSIONE 2 (FINE) */

/* ============================================================
77. AZIENDA, "COSA ESCE DALLO STABILIMENTO" VERSIONE 2 (INIZIO)
Richiesta del 10 settembre 2026: sezione chiara, centrata, meno testo.
Testa centrata con i filetti gialli; sei schede bianche con il disegno
tecnico su un campo Azzurro Camera con la trama a punti, titolo e una
riga centrati, link "Scopri" alla pagina prodotto. Al passaggio il
filetto in alto diventa giallo, la scheda si solleva, il disegno si
accende. Nessuna ombra.
============================================================ */
html body .phaz-gamma { position: relative; isolation: isolate; overflow: hidden; }
html body .phaz-gamma::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background-image: radial-gradient(rgba(40, 90, 166, 0.18) 1.2px, transparent 1.7px);
	background-size: 22px 22px;
	-webkit-mask-image: radial-gradient(ellipse 55% 70% at 0% 0%, #000 0%, transparent 100%);
	mask-image: radial-gradient(ellipse 55% 70% at 0% 0%, #000 0%, transparent 100%);
	pointer-events: none;
}
html body .phaz-gamma .phse-head--centro { text-align: center; margin-left: auto; margin-right: auto; }
html body .phaz-gamma .phse-head--centro .phse-h2,
html body .phaz-gamma .phse-head--centro .phse-lede { margin-left: auto !important; margin-right: auto !important; }
html body .phaz-gamma .ph-eyebrow { display: inline-flex !important; align-items: center; gap: 12px; }
html body .phaz-gamma .ph-eyebrow::before,
html body .phaz-gamma .ph-eyebrow::after { content: ""; display: block; width: 26px; height: 2px; background: #FFD300; }

html body .phaz-gamma .phse-sfide { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 22px; list-style: none; margin: 0; padding: 0; }
html body .phaz-gamma .phse-sfide > li {
	position: relative;
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
	margin: 0 !important;
	padding: 0 0 30px !important;
	background: #FFFFFF !important;
	border: 1px solid rgba(16, 41, 75, 0.12) !important;
	border-radius: 20px !important;
	overflow: hidden;
	box-shadow: none !important;
	transition: transform 0.35s cubic-bezier(0.22, 0.61, 0.36, 1), border-color 0.35s;
}
html body .phaz-gamma .phse-sfide > li::before {
	content: "";
	position: absolute;
	top: 0;
	left: 32px;
	right: 32px;
	height: 2px;
	background: rgba(16, 41, 75, 0.14);
	transition: background-color 0.35s;
	z-index: 1;
}
html body .phaz-gamma .phse-sfide > li:hover { transform: translateY(-3px); border-color: rgba(40, 90, 166, 0.45) !important; }
html body .phaz-gamma .phse-sfide > li:hover::before { background: #FFD300; }
html body .phaz-gamma .phse-sfida-fig {
	position: relative;
	width: 100%;
	margin: 0 0 24px !important;
	padding: 28px 24px !important;
	background: #EAF0F7;
	background-image: radial-gradient(rgba(40, 90, 166, 0.16) 1.2px, transparent 1.7px);
	background-size: 18px 18px;
	border-bottom: 1px solid rgba(16, 41, 75, 0.08);
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 168px;
	transition: background-color 0.35s;
}
html body .phaz-gamma .phse-sfide > li:hover .phse-sfida-fig { background-color: #E3ECF6; }
html body .phaz-gamma .phse-sfida-fig svg { max-width: 220px; width: 100%; height: auto; transition: transform 0.35s cubic-bezier(0.22, 0.61, 0.36, 1); }
html body .phaz-gamma .phse-sfide > li:hover .phse-sfida-fig svg { transform: scale(1.04); }
html body .phaz-gamma .phse-sfide h3 {
	margin: 0 28px 8px !important;
	font-family: var(--ph-display) !important;
	font-weight: var(--ph-w-bold) !important;
	font-size: 1.1875rem !important;
	letter-spacing: -0.01em;
	color: #10294B !important;
	text-align: center;
}
html body .phaz-gamma .phse-sfide p {
	margin: 0 28px 18px !important;
	font-size: 15px !important;
	line-height: 1.55 !important;
	color: #313840 !important;
	text-align: center;
	max-width: 30ch;
}
html body .phaz-gamma .phaz-link {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	margin-top: auto;
	font-family: var(--ph-text);
	font-weight: var(--ph-w-semibold);
	font-size: 13px;
	letter-spacing: 0.02em;
	color: #285AA6 !important;
	text-decoration: none !important;
}
html body .phaz-gamma .phaz-link svg { transition: transform 0.3s cubic-bezier(0.22, 0.61, 0.36, 1); }
html body .phaz-gamma .phse-sfide > li:hover .phaz-link svg { transform: translateX(3px); }
html body .phaz-gamma .phaz-link:hover { color: #10294B !important; }
@media (max-width: 1000px) { html body .phaz-gamma .phse-sfide { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; } }
@media (max-width: 690px) { html body .phaz-gamma .phse-sfide { grid-template-columns: minmax(0, 1fr); } html body .phaz-gamma .phse-sfida-fig { min-height: 140px; } }
@media (prefers-reduced-motion: reduce) { html body .phaz-gamma .phse-sfide > li, html body .phaz-gamma .phse-sfida-fig, html body .phaz-gamma .phse-sfida-fig svg, html body .phaz-gamma .phaz-link svg { transition: none; } }
/* -- 77.b Variante numerata (servizi, "Cosa cambia con un partner integrato"):
   sei differenze, sei numeri 01-06 come pastiglia Blu Fondo nell'angolo del
   disegno; testi un po' piu larghi perche le frasi sono piu lunghe. */
html body .phaz-gamma--num .phse-sfide { counter-reset: phdiff; }
html body .phaz-gamma--num .phse-sfide > li { counter-increment: phdiff; }
html body .phaz-gamma--num .phse-sfida-fig::after {
	content: "0" counter(phdiff);
	position: absolute;
	top: 14px;
	left: 16px;
	height: 24px;
	padding: 0 10px;
	border-radius: 999px;
	background: #10294B;
	color: #FFFFFF;
	font-family: var(--ph-text);
	font-weight: var(--ph-w-semibold);
	font-size: 11px;
	line-height: 24px;
	letter-spacing: 0.12em;
}
html body .phaz-gamma--num .phse-sfide p { max-width: 36ch; }
/* 77. AZIENDA, "COSA ESCE DALLO STABILIMENTO" VERSIONE 2 (FINE) */

/* ============================================================
78. AZIENDA, HERO VERSIONE 2 (INIZIO)
Richiesta del 10 settembre 2026: hero chiara, perfettamente simmetrica,
da guardare. Tutto in asse: eyebrow con i filetti gialli, titolo grande,
lede, coppia di pulsanti (giallo + fantasma). Sotto, il quadro della
filiera a tutta larghezza su Blu Fondo con la trama a punti, poi i
quattro punti come schede leggere e i quattro numeri come fascia con i
filetti. Il markup non cambia: .phse-hero-testo passa a display:contents
e i figli si riordinano nel flex. Nessuna ombra.
============================================================ */
html body .phse-hero--az {
	position: relative;
	isolation: isolate;
	overflow: hidden;
	background: #FFFFFF;
	padding-top: clamp(40px, 4.4vw, 64px) !important;
}
html body .phse-hero--az::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background-image: radial-gradient(rgba(40, 90, 166, 0.16) 1.2px, transparent 1.7px);
	background-size: 22px 22px;
	-webkit-mask-image:
		radial-gradient(ellipse 35% 55% at 0% 30%, #000 0%, transparent 100%),
		radial-gradient(ellipse 35% 55% at 100% 30%, #000 0%, transparent 100%);
	mask-image:
		radial-gradient(ellipse 35% 55% at 0% 30%, #000 0%, transparent 100%),
		radial-gradient(ellipse 35% 55% at 100% 30%, #000 0%, transparent 100%);
	pointer-events: none;
}
html body .phse-hero--az .phse-hero-grid {
	display: flex !important;
	flex-direction: column;
	align-items: center;
	gap: 0;
	grid-template-columns: none !important;
}
html body .phse-hero--az .phse-hero-testo { display: contents; }

/* Ordine e allineamento dei figli. */
html body .phse-hero--az .phse-briciole { order: 1; justify-content: center; margin: 0 0 18px !important; }
html body .phse-hero--az .phse-briciole li,
html body .phse-hero--az .phse-briciole span {
	display: inline-flex !important;
	align-items: center;
	gap: 12px;
	font-family: var(--ph-text);
	font-weight: var(--ph-w-medium);
	font-size: 12px;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: #285AA6;
}
html body .phse-hero--az .phse-briciole span::before,
html body .phse-hero--az .phse-briciole span::after { content: ""; display: block; width: 26px; height: 2px; background: #FFD300; }
html body .phse-hero--az .phse-title {
	order: 2;
	max-width: 18ch;
	margin: 0 auto 20px !important;
	text-align: center;
	font-size: clamp(2.25rem, 4.6vw, 4rem) !important;
	line-height: 1.06 !important;
	letter-spacing: -0.025em;
	color: #10294B !important;
}
html body .phse-hero--az .phse-hero-lede {
	order: 3;
	max-width: 62ch;
	margin: 0 auto 30px !important;
	text-align: center;
	font-size: clamp(1.0625rem, 1.3vw, 1.1875rem);
	line-height: 1.65;
	color: #313840;
}
html body .phse-hero--az .phse-cta {
	order: 4;
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 14px 16px;
	margin: 0 0 clamp(40px, 4.4vw, 60px) !important;
}
html body .phse-hero--az .phse-btn--solid {
	display: inline-flex; align-items: center; gap: 10px;
	padding: 17px 28px 17px 30px !important;
	border-radius: 999px !important;
	background: #FFD300 !important;
	color: #10294B !important;
	border: 0 !important;
	box-shadow: none !important;
	font-family: var(--ph-text); font-weight: var(--ph-w-semibold); font-size: 15px; letter-spacing: 0.02em;
	transition: transform 0.25s cubic-bezier(0.22, 0.61, 0.36, 1), background-color 0.25s;
}
html body .phse-hero--az .phse-btn--solid:hover { background: #FFDC33 !important; transform: translateY(-1px); }
html body .phse-hero--az .phse-btn--solid svg { transition: transform 0.25s cubic-bezier(0.22, 0.61, 0.36, 1); }
html body .phse-hero--az .phse-btn--solid:hover svg { transform: translateX(3px); }
html body .phse-hero--az .phse-btn--ghost {
	display: inline-flex; align-items: center; gap: 10px;
	padding: 16px 28px !important;
	border-radius: 999px !important;
	border: 1.5px solid rgba(16, 41, 75, 0.35) !important;
	background: transparent !important;
	color: #10294B !important;
	box-shadow: none !important;
	font-family: var(--ph-text); font-weight: var(--ph-w-semibold); font-size: 15px; letter-spacing: 0.02em;
	transition: border-color 0.25s, background-color 0.25s, transform 0.25s cubic-bezier(0.22, 0.61, 0.36, 1);
}
html body .phse-hero--az .phse-btn--ghost:hover { border-color: #10294B !important; background: rgba(16, 41, 75, 0.05) !important; transform: translateY(-1px); }

/* Il quadro della filiera: a tutta larghezza, Blu Fondo con trama. */
html body .phse-hero--az .phse-hero-fig {
	order: 5;
	position: relative;
	isolation: isolate;
	overflow: hidden;
	width: 100%;
	max-width: 1245px;
	margin: 0 auto clamp(28px, 3vw, 40px) !important;
	padding: 28px 36px 30px !important;
	border-radius: 24px;
	background-color: #10294B;
	background-image: linear-gradient(160deg, #10294B 0%, #142F57 60%, #1A3D75 100%);
	border: 0;
	box-shadow: none !important;
}
html body .phse-hero--az .phse-hero-fig::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background-image: radial-gradient(rgba(255, 255, 255, 0.12) 1.2px, transparent 1.7px);
	background-size: 22px 22px;
	-webkit-mask-image: radial-gradient(ellipse 60% 90% at 50% 100%, #000 0%, transparent 100%);
	mask-image: radial-gradient(ellipse 60% 90% at 50% 100%, #000 0%, transparent 100%);
	pointer-events: none;
}
html body .phse-hero--az .phse-fig-quadro { display: flex; justify-content: center; padding: 24px 0 8px; }
html body .phse-hero--az .phse-fig-quadro svg { width: min(100%, 820px); height: auto; }
html body .phse-hero--az .phse-fig-nota { text-align: center; max-width: 62ch; margin: 8px auto 0 !important; }

/* I quattro punti: schede leggere in fila. */
html body .phse-hero--az .phse-punti {
	order: 6;
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 14px;
	width: 100%;
	max-width: 1245px;
	margin: 0 auto clamp(28px, 3vw, 40px) !important;
	padding: 0 !important;
	list-style: none !important;
}
html body .phse-hero--az .phse-punti li {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 12px;
	margin: 0 !important;
	padding: 22px 20px !important;
	text-align: center;
	background: #EAF0F7;
	border: 1px solid rgba(16, 41, 75, 0.08);
	border-radius: 16px;
	font-size: 14.5px;
	line-height: 1.5;
	color: #313840;
}
html body .phse-hero--az .phse-punti li::before { display: none !important; }
html body .phse-hero--az .phse-punti li svg { width: 22px; height: 22px; color: #285AA6; flex: 0 0 auto; }
html body .phse-hero--az .phse-punti li b { display: block; margin-bottom: 2px; font-family: var(--ph-display); font-weight: var(--ph-w-bold); font-size: 1.0625rem; color: #10294B; }

/* I numeri: una fascia con i filetti. */
html body .phse-hero--az .phse-stats {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	max-width: 1245px;
	margin: 0 auto !important;
	padding: 26px 0 0 !important;
	border-top: 1px solid rgba(16, 41, 75, 0.12);
	list-style: none !important;
}
html body .phse-hero--az .phse-stats li { display: flex; flex-direction: column; align-items: center; gap: 4px; margin: 0 !important; padding: 6px 12px !important; text-align: center; border-left: 1px solid rgba(16, 41, 75, 0.12); }
html body .phse-hero--az .phse-stats li:first-child { border-left: 0; }
html body .phse-hero--az .phse-stats li::before { display: none !important; }
html body .phse-hero--az .ph-stat { font-family: var(--ph-display); font-weight: var(--ph-w-bold); font-size: clamp(1.5rem, 2.2vw, 2rem); letter-spacing: -0.02em; color: #10294B; }
html body .phse-hero--az .ph-stat-label { font-size: 12px; letter-spacing: 0.14em; text-transform: uppercase; color: #5F7085; }

@media (max-width: 1000px) {
	html body .phse-hero--az .phse-punti { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	html body .phse-hero--az .phse-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: 18px; }
	html body .phse-hero--az .phse-stats li:nth-child(3) { border-left: 0; }
}
@media (max-width: 690px) {
	html body .phse-hero--az .phse-hero-fig { padding: 20px 18px 22px !important; border-radius: 18px; }
	html body .phse-hero--az .phse-punti { grid-template-columns: minmax(0, 1fr); gap: 10px; }
	html body .phse-hero--az .phse-btn--solid, html body .phse-hero--az .phse-btn--ghost { width: 100%; justify-content: center; }
	html body .phse-hero--az .phse-title { max-width: none; }
}
@media (prefers-reduced-motion: reduce) {
	html body .phse-hero--az .phse-btn--solid, html body .phse-hero--az .phse-btn--ghost, html body .phse-hero--az .phse-btn--solid svg { transition: none; }
}
/* 78. AZIENDA, HERO VERSIONE 2 (FINE) */




/* 76. Home: teste centrate di "Impianti realizzati", "I settori" e
   "Come lavoriamo". Solo allineamento, nient'altro. */
html body .phse-sec--gal .phgal-testa { flex-direction: column; align-items: center; text-align: center; gap: 18px; }
html body .phse-sec--gal .phgal-testo { max-width: 760px; margin: 0 auto; text-align: center; }
html body .phse-sec--gal .phgal-testo .phse-h2,
html body .phse-sec--gal .phgal-testo .phse-lede { margin-left: auto !important; margin-right: auto !important; }
html body .phse-sec--gal .phgal-testo .ph-azioni { justify-content: center; }
html body .phse-sec--gal .phgal-nav { margin-left: auto; margin-right: auto; }
html body .phse-sec .phse-head--centro { text-align: center; margin-left: auto; margin-right: auto; }
html body .phse-sec .phse-head--centro .phse-h2,
html body .phse-sec .phse-head--centro .phse-lede { margin-left: auto !important; margin-right: auto !important; }

/* 75. Strip sotto la testata: la CTA "Richiedi un sopralluogo" da pulsante
   verde a link testuale Blu PHAMM con il chevron, alla Apple. */
html body .phs .phs-cta,
html body .phs .phs-cta:visited {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 0 !important;
	border: 0 !important;
	border-radius: 0 !important;
	background: transparent !important;
	box-shadow: none !important;
	color: #285AA6 !important;
	font-family: var(--ph-text);
	font-weight: var(--ph-w-semibold);
	font-size: 13px;
	letter-spacing: 0.01em;
	text-decoration: none !important;
	transition: color 0.25s;
}
html body .phs .phs-cta .phs-chev { width: 12px; height: 12px; transition: transform 0.25s cubic-bezier(0.22, 0.61, 0.36, 1); }
html body .phs .phs-cta:hover { color: #10294B !important; background: transparent !important; }
html body .phs .phs-cta:hover .phs-chev { transform: translateX(2px); }
html body .phs .phs-cta:focus-visible { outline: 2px solid #285AA6; outline-offset: 4px; border-radius: 4px !important; }

/* 71. FAQ, site-wide: colonna centrata sotto la testa centrata; domande e
   risposte centrate nella colonna (richiesta del 10 settembre 2026). */
html body .phse-sec .phse-faq summary,
html body .phct-sec .phct-faq summary { justify-content: center !important; text-align: center !important; }
html body .phse-sec .phse-faq details > p,
html body .phct-sec .phct-faq details > p,
html body .phse-sec .phse-faq details > div,
html body .phct-sec .phct-faq details > div { text-align: center !important; padding-left: 0 !important; padding-right: 0 !important; max-width: 64ch; margin-left: auto !important; margin-right: auto !important; }
html body .phct-sec .phct-faq { width: 100% !important; max-width: 840px !important; margin-left: auto !important; margin-right: auto !important; }
html body .phct-sec .phct-faq ~ *, html body .phse-sec .phse-faq ~ .phse-cta { justify-content: center; }
/* 71. FAQ in home: colonna centrata sotto la testa centrata. */
html body .phse-sec .phse-faq {
	width: 100% !important;
	max-width: 840px !important;
	margin-left: auto !important;
	margin-right: auto !important;
}


/* 80 — Titoli di gruppo centrati (La gamma, /prodotti) */
html body .phse-gruppo.phse-gruppo--centro { justify-content: center; text-align: center; }
html body .phse-gruppo.phse-gruppo--centro .phse-gruppo-link { justify-content: center; }
html body .phse-gruppo.phse-gruppo--centro + .phse-schede { margin-left: auto; margin-right: auto; }

/* 80.1 — filetto anche a sinistra: titolo centrato fra due linee */
html body .phse-gruppo.phse-gruppo--centro::before { content: ""; display: block; flex: 1 1 0; height: 1px; background: rgba(40, 90, 166, .2); }
html body .phse-gruppo.phse-gruppo--centro::after { flex: 1 1 0; }


/* 81 — /settori · "La classe giusta" (phset-scelta) e "Dalla prima riga" (phset-mestieri): centrati, simmetrici */
html body .phset-scelta .phse-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px; max-width: 1040px; margin: 0 auto; counter-reset: phsc; }
html body .phset-scelta .phse-grid > li { display: flex; counter-increment: phsc; }
html body .phset-scelta .phse-card { position: relative; flex: 1 1 auto; display: flex; flex-direction: column; align-items: center; text-align: center; padding: 44px 40px 40px; border-radius: 22px; background: #FFFFFF; border: 1px solid rgba(16, 41, 75, .10); box-shadow: none; transition: transform .35s cubic-bezier(.2,.7,.2,1), border-color .35s; }
html body .phset-scelta .phse-card::before { content: "0" counter(phsc); font-family: "DM Sans", system-ui, sans-serif; font-weight: 700; font-size: 13px; letter-spacing: .16em; line-height: 1; color: #285AA6; margin-bottom: 14px; }
html body .phset-scelta .phse-card::after { content: ""; width: 36px; height: 3px; border-radius: 2px; background: #FFD300; margin-bottom: 22px; order: -1; margin-top: -2px; }
html body .phset-scelta .phse-card::before { order: -2; }
html body .phset-scelta .phse-card .phse-card-h { max-width: 22ch; margin: 0 auto 14px; font-size: clamp(20px, 1.6vw, 23px); line-height: 1.25; color: #10294B; }
html body .phset-scelta .phse-card p { max-width: 44ch; margin: 0 auto; color: #5F7085; font-size: 16px; line-height: 1.65; }
html body .phset-scelta .phse-card:hover { transform: translateY(-4px); border-color: #FFD300; }
@media (max-width: 760px) { html body .phset-scelta .phse-grid { grid-template-columns: 1fr; gap: 16px; } html body .phset-scelta .phse-card { padding: 34px 24px 30px; } }

html body .phset-mestieri .phse-grid { counter-reset: phme; gap: 22px; }
html body .phset-mestieri .phse-grid > li { counter-increment: phme; display: flex; }
html body .phset-mestieri .phse-app-card { align-items: center; text-align: center; padding: 40px 30px 34px; border-radius: 22px; box-shadow: none; border: 1px solid rgba(16, 41, 75, .10); transition: transform .35s cubic-bezier(.2,.7,.2,1), border-color .35s; }
html body .phset-mestieri .phse-app-card:hover { transform: translateY(-4px); border-color: #FFD300; }
html body .phset-mestieri .phse-app-ico { position: relative; display: inline-flex; align-items: center; justify-content: center; width: 72px; height: 72px; margin: 0 auto 22px; border-radius: 22px; background: #10294B; color: #FFFFFF; }
html body .phset-mestieri .phse-app-ico svg { width: 32px; height: 32px; }
html body .phset-mestieri .phse-app-ico::after { content: "0" counter(phme); position: absolute; top: -10px; right: -18px; height: 24px; padding: 0 10px; border-radius: 999px; background: #FFD300; color: #10294B; font-family: "DM Sans", system-ui, sans-serif; font-weight: 700; font-size: 11px; letter-spacing: .14em; line-height: 24px; }
html body .phset-mestieri .phse-app-card h3 { margin: 0 auto 12px; font-size: 21px; color: #10294B; }
html body .phset-mestieri .phse-app-card p { max-width: 34ch; margin: 0 auto 20px; color: #5F7085; }
html body .phset-mestieri .phse-app-classe { margin: auto auto 0; justify-content: center; }
@media (max-width: 760px) { html body .phset-mestieri .phse-app-card { padding: 32px 22px 28px; } }



/* 83 — /azienda · Rassegna stampa (phaz-stampa): card bianca centrata, due colonne simmetriche */
html body .phaz-stampa .phse-media { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(28px, 4vw, 56px); align-items: center; max-width: 1120px; margin: 0 auto; padding: clamp(28px, 3.5vw, 48px); border-radius: 28px; background: #FFFFFF; border: 1px solid rgba(16, 41, 75, .08); box-shadow: none; }
html body .phaz-stampa .phse-media-lastra { margin: 0; padding: 0; border-radius: 18px; overflow: hidden; background: #EAF0F7; border: 1px solid rgba(16, 41, 75, .10); box-shadow: none; transform: none; }
html body .phaz-stampa .phse-media-lastra::before, html body .phaz-stampa .phse-media-lastra::after { display: none; }
html body .phaz-stampa .phse-media-lastra img { display: block; width: 100%; height: auto; border: 0; border-radius: 0; box-shadow: none; transition: transform .8s cubic-bezier(.2,.7,.2,1); }
html body .phaz-stampa .phse-media:hover .phse-media-lastra img { transform: scale(1.025); }
html body .phaz-stampa .phse-media-testo { text-align: center; display: flex; flex-direction: column; align-items: center; }
html body .phaz-stampa .phse-media-fonte { display: inline-flex; align-items: center; height: 28px; padding: 0 14px; margin: 0 0 20px; border-radius: 999px; background: #FFD300; color: #10294B; font-family: "DM Sans", system-ui, sans-serif; font-weight: 700; font-size: 11.5px; letter-spacing: .14em; text-transform: uppercase; }
html body .phaz-stampa .phse-media-fonte::before { display: none; }
html body .phaz-stampa .phse-media-testo h3 { margin: 0 0 16px; max-width: 24ch; font-size: clamp(22px, 2vw, 28px); line-height: 1.2; color: #10294B; }
html body .phaz-stampa .phse-media-testo p { margin: 0 0 26px; max-width: 46ch; color: #5F7085; font-size: 16.5px; line-height: 1.65; }
html body .phaz-stampa .phse-media-firma { display: flex; flex-direction: column; align-items: center; gap: 2px; padding: 16px 0 0; border: 0; border-top: 1px solid rgba(16, 41, 75, .12); min-width: 220px; }
html body .phaz-stampa .phse-media-nome { font-family: "DM Sans", system-ui, sans-serif; font-weight: 700; font-size: 16px; color: #10294B; }
html body .phaz-stampa .phse-media-ruolo { font-size: 14px; color: #5F7085; }
@media (max-width: 900px) { html body .phaz-stampa .phse-media { grid-template-columns: 1fr; gap: 24px; padding: 22px; border-radius: 22px; } html body .phaz-stampa .phse-media-testo h3 { max-width: none; } }

/* 83.1 — testo della colonna destra allineato a sinistra */
html body .phaz-stampa .phse-media-testo { text-align: left; align-items: flex-start; }
html body .phaz-stampa .phse-media-testo h3, html body .phaz-stampa .phse-media-testo p { margin-left: 0; margin-right: 0; }
html body .phaz-stampa .phse-media-firma { align-items: flex-start; min-width: 0; align-self: stretch; }
@media (max-width: 900px) { html body .phaz-stampa .phse-media-testo { text-align: left; } }


/* 84 — /contattaci · "Dalla richiesta al preventivo" + "Contatto diretto" unite in una sezione bianca (phct-unita) */
html body .phct-unita { background: #FFFFFF; }
html body .phct-unita .phct-head { text-align: center; margin-left: auto; margin-right: auto; }
html body .phct-unita .phct-head .ph-eyebrow { display: inline-flex; align-items: center; gap: 12px; }
html body .phct-unita .phct-head .ph-eyebrow::before, html body .phct-unita .phct-head .ph-eyebrow::after { content: ""; width: 22px; height: 2px; background: #FFD300; }
html body .phct-unita .phct-head .phct-lede { margin-left: auto; margin-right: auto; max-width: 60ch; }
html body .phct-unita .phstep-list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 22px; max-width: 1180px; margin: 0 auto; }
html body .phct-unita .phstep { display: flex; flex-direction: column; border-radius: 22px; overflow: hidden; border: 1px solid rgba(16, 41, 75, .10); box-shadow: none; transition: transform .35s cubic-bezier(.2,.7,.2,1), border-color .35s; }
html body .phct-unita .phstep:hover { transform: translateY(-4px); border-color: #FFD300; }
html body .phct-unita .phstep-body { text-align: center; padding: 26px 26px 30px; flex: 1 1 auto; }
html body .phct-unita .phstep-h { margin: 0 auto 10px; max-width: 24ch; color: #10294B; }
html body .phct-unita .phstep-t { margin: 0 auto; max-width: 36ch; color: #5F7085; }
html body .phct-unita .phstep-num { left: 50%; transform: translateX(-50%); right: auto; }
html body .phct-unita .phct-ponte { display: flex; align-items: center; gap: 18px; max-width: 1180px; margin: clamp(48px, 6vw, 84px) auto clamp(28px, 4vw, 44px); }
html body .phct-unita .phct-ponte::before, html body .phct-unita .phct-ponte::after { content: ""; flex: 1 1 0; height: 1px; background: rgba(16, 41, 75, .12); }
html body .phct-unita .phct-ponte .phct-head { margin: 0; padding: 0 8px; }
html body .phct-unita .phct-ponte .phct-h2 { font-size: clamp(24px, 2.4vw, 32px); }
html body .phct-unita .phct-grid--3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 22px; max-width: 1180px; margin: 0 auto; }
html body .phct-unita .phct-grid--3 > li { display: flex; }
html body .phct-unita .phct-card { flex: 1 1 auto; display: flex; flex-direction: column; align-items: center; text-align: center; padding: 34px 26px 30px; border-radius: 22px; background: #EAF0F7; border: 0; box-shadow: none; transition: transform .35s cubic-bezier(.2,.7,.2,1); }
html body .phct-unita .phct-card:hover { transform: translateY(-4px); }
html body .phct-unita .phct-ico { display: inline-flex; align-items: center; justify-content: center; width: 60px; height: 60px; margin: 0 auto 16px; border-radius: 18px; background: #10294B; color: #FFFFFF; }
html body .phct-unita .phct-card-h { margin: 0 0 16px; color: #10294B; }
html body .phct-unita .phct-rows { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 12px; width: 100%; }
html body .phct-unita .phct-rows > li { display: flex; flex-direction: column; align-items: center; gap: 2px; }
html body .phct-unita .phct-k { color: #5F7085; font-size: 11.5px; letter-spacing: .14em; }
html body .phct-unita .phct-v, html body .phct-unita .phct-v a { color: #10294B; }
html body .phct-unita .phct-v a { text-decoration-color: rgba(40, 90, 166, .35); }
@media (max-width: 900px) { html body .phct-unita .phstep-list, html body .phct-unita .phct-grid--3 { grid-template-columns: 1fr; max-width: 520px; gap: 16px; } html body .phct-unita .phct-ponte::before, html body .phct-unita .phct-ponte::after { flex: 0 0 24px; } }

/* 84.1 — step come timeline: nodo numerato giallo sul bordo figura/testo, connettori fra le card, figura non più coperta dal numero */
html body .phct-unita .phstep-list { gap: 40px; }
html body .phct-unita .phstep { position: relative; overflow: visible; border-radius: 22px; }
html body .phct-unita .phstep-fig { border-radius: 21px 21px 0 0; overflow: hidden; }
html body .phct-unita .phstep-body { padding-top: 40px; border-radius: 0 0 21px 21px; background: #FFFFFF; }
html body .phct-unita .phstep-num { top: auto; bottom: -22px; left: 50%; right: auto; transform: translateX(-50%); width: 44px; height: 44px; border-radius: 50%; background: #FFD300; color: #10294B; font-family: "DM Sans", system-ui, sans-serif; font-weight: 700; font-size: 14px; letter-spacing: .06em; line-height: 44px; text-align: center; box-shadow: 0 0 0 5px #FFFFFF; z-index: 2; }
html body .phct-unita .phstep-body { position: relative; }
html body .phct-unita .phstep + .phstep .phstep-body::before { content: ""; position: absolute; top: -1px; left: -41px; width: 40px; height: 2px; background: rgba(40, 90, 166, .28); }
html body .phct-unita .phstep + .phstep .phstep-body::after { content: ""; position: absolute; top: -5px; left: -14px; width: 8px; height: 8px; border-right: 2px solid rgba(40, 90, 166, .5); border-bottom: 2px solid rgba(40, 90, 166, .5); transform: rotate(-45deg); }
@media (max-width: 900px) { html body .phct-unita .phstep + .phstep .phstep-body::before, html body .phct-unita .phstep + .phstep .phstep-body::after { display: none; } html body .phct-unita .phstep + .phstep::before { content: ""; position: absolute; top: -40px; left: 50%; width: 2px; height: 40px; background: rgba(40, 90, 166, .28); transform: translateX(-1px); } }

/* 84.2 — il nodo numerato non viene più tagliato dalla figura */
html body .phct-unita .phstep-fig { overflow: visible; }
html body .phct-unita .phstep-fig > svg, html body .phct-unita .phstep-fig > img { clip-path: inset(0 round 21px 21px 0 0); }
html body .phct-unita .phstep-num { overflow: visible; }


/* 85 — /prodotti/camere-bianche · #classi (phiso): scala ISO 8→5 centrata, card snelle, filetto superiore che si intensifica */
html body .phiso .phse-head { text-align: center; margin-left: auto; margin-right: auto; }
html body .phiso .phse-head .phse-lede { margin-left: auto; margin-right: auto; max-width: 64ch; }
html body .phiso .phse-grid--4 { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 20px; max-width: 1200px; margin: 0 auto; }
html body .phiso .phse-grid--4 > li { display: flex; }
html body .phiso .phse-grid--4 .phse-card { flex: 1 1 auto; display: flex; flex-direction: column; align-items: center; text-align: center; padding: 30px 24px 26px; border-radius: 22px; background: #EAF0F7; border: 0; border-top: 4px solid rgba(40, 90, 166, var(--phiso-k, 1)); box-shadow: none; transition: transform .35s cubic-bezier(.2,.7,.2,1); }
html body .phiso .phse-grid--4 .phse-card:hover { transform: translateY(-4px); }
html body .phiso .phse-grid--4 > li:nth-child(1) .phse-card { --phiso-k: .28; }
html body .phiso .phse-grid--4 > li:nth-child(2) .phse-card { --phiso-k: .52; }
html body .phiso .phse-grid--4 > li:nth-child(3) .phse-card { --phiso-k: .76; }
html body .phiso .phse-grid--4 > li:nth-child(4) .phse-card { --phiso-k: 1; }
html body .phiso .phse-grid--4 .phse-classe-testa { display: flex; flex-direction: column; align-items: center; gap: 4px; width: 100%; padding: 0 0 16px; margin: 0 0 16px; border-bottom: 1px solid rgba(16, 41, 75, .12); }
html body .phiso .phse-grid--4 .phse-classe-n { font-family: "DM Sans", system-ui, sans-serif; font-weight: 700; font-size: 40px; line-height: 1; color: #285AA6; letter-spacing: -.02em; }
html body .phiso .phse-grid--4 .phse-classe-lim { font-size: 13px; color: #5F7085; }
html body .phiso .phse-grid--4 .phse-card-h { margin: 0 0 10px; font-size: 18px; line-height: 1.25; color: #10294B; }
html body .phiso .phse-grid--4 .phse-card p { margin: 0 0 18px; max-width: 30ch; font-size: 15px; line-height: 1.6; color: #5F7085; }
html body .phiso .phse-grid--4 .phse-card-tag { margin-top: auto; background: #FFFFFF; color: #10294B; }
html body .phiso .phse-chiusura { max-width: 72ch; margin: 32px auto 0; text-align: center; font-size: 16px; line-height: 1.65; color: #5F7085; }
html body .phiso .phse-grid--2 { max-width: 800px; margin: 0 auto; }
html body .phiso .phse-grid--2 .phse-card { text-align: center; align-items: center; display: flex; flex-direction: column; background: #EAF0F7; border: 0; box-shadow: none; border-radius: 22px; }
html body .phiso .phse-grid--2 .phse-classe-testa { display: flex; flex-direction: column; align-items: center; gap: 4px; width: 100%; padding-bottom: 14px; margin-bottom: 14px; border-bottom: 1px solid rgba(16, 41, 75, .12); }
html body .phiso .phse-grid--2 .phse-classe-n { font-family: "DM Sans", system-ui, sans-serif; font-weight: 700; font-size: 30px; line-height: 1; color: #285AA6; }
html body .phiso .phse-grid--2 .phse-card p { max-width: 34ch; margin-left: auto; margin-right: auto; }
html body .phiso .phse-grid--2 .phse-card-tag { background: #FFFFFF; color: #10294B; }
@media (max-width: 1100px) { html body .phiso .phse-grid--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 600px) { html body .phiso .phse-grid--4, html body .phiso .phse-grid--2 { grid-template-columns: 1fr; } }


/* 86 — /prodotti/camere-bianche · #gmp: gradi A→D (phiso--inv: filetto che si attenua da A a D) e percorso di qualifica compatto */
html body .phiso--inv .phse-grid--4 > li:nth-child(1) .phse-card { --phiso-k: 1; }
html body .phiso--inv .phse-grid--4 > li:nth-child(2) .phse-card { --phiso-k: .76; }
html body .phiso--inv .phse-grid--4 > li:nth-child(3) .phse-card { --phiso-k: .52; }
html body .phiso--inv .phse-grid--4 > li:nth-child(4) .phse-card { --phiso-k: .28; }
html body .phgmp-percorso { list-style: none; display: flex; flex-wrap: wrap; justify-content: center; align-items: flex-start; gap: 14px 0; max-width: 1040px; margin: 28px auto 0; padding: 0; }
html body .phgmp-percorso > li { position: relative; display: flex; flex-direction: column; align-items: center; gap: 8px; width: 150px; padding: 0 22px; text-align: center; }
html body .phgmp-percorso > li + li::before { content: ""; position: absolute; left: -7px; top: 18px; width: 14px; height: 2px; background: rgba(40, 90, 166, .3); }
html body .phgmp-percorso .phgmp-sigla { display: inline-flex; align-items: center; justify-content: center; height: 38px; padding: 0 16px; border-radius: 999px; background: #10294B; color: #FFFFFF; font-family: "DM Sans", system-ui, sans-serif; font-weight: 700; font-size: 13px; letter-spacing: .08em; white-space: nowrap; }
html body .phgmp-percorso > li:last-child .phgmp-sigla { background: #FFD300; color: #10294B; }
html body .phgmp-percorso .phgmp-nome { font-size: 13px; line-height: 1.35; color: #5F7085; }
html body .phiso .phse-chiusura--titolo { margin-top: 40px; font-size: 18px; color: #10294B; }
@media (max-width: 700px) { html body .phgmp-percorso > li { width: 33.33%; padding: 0 8px; } html body .phgmp-percorso > li + li::before { display: none; } }


/* 87 — phiso · griglia a 3 modelli (La gamma nelle pagine attrezzature) */
html body .phiso .phse-grid--3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; max-width: 1100px; margin: 0 auto; }
html body .phiso .phse-grid--3 > li { display: flex; }
html body .phiso .phse-grid--3 .phse-card { flex: 1 1 auto; display: flex; flex-direction: column; align-items: center; text-align: center; padding: 30px 26px 26px; border-radius: 22px; background: #EAF0F7; border: 0; border-top: 4px solid #285AA6; box-shadow: none; transition: transform .35s cubic-bezier(.2,.7,.2,1); }
html body .phiso .phse-grid--3 .phse-card:hover { transform: translateY(-4px); }
html body .phiso .phse-grid--3 .phse-classe-testa { display: flex; flex-direction: column; align-items: center; gap: 4px; width: 100%; padding: 0 0 16px; margin: 0 0 16px; border-bottom: 1px solid rgba(16, 41, 75, .12); }
html body .phiso .phse-grid--3 .phse-classe-n { font-family: "DM Sans", system-ui, sans-serif; font-weight: 700; font-size: 34px; line-height: 1; color: #285AA6; letter-spacing: -.02em; }
html body .phiso .phse-grid--3 .phse-classe-lim { font-size: 13px; color: #5F7085; }
html body .phiso .phse-grid--3 .phse-card-h { margin: 0 0 10px; font-size: 18px; line-height: 1.25; color: #10294B; }
html body .phiso .phse-grid--3 .phse-card p { margin: 0 0 18px; max-width: 34ch; font-size: 15px; line-height: 1.6; color: #5F7085; }
html body .phiso .phse-grid--3 .phse-card-tag { margin-top: auto; background: #FFFFFF; color: #10294B; }
@media (max-width: 900px) { html body .phiso .phse-grid--3 { grid-template-columns: 1fr; max-width: 520px; } }


/* 88 — Home · sezione video (phvideo): facade con poster, play giallo, iframe YouTube solo al click */
html body .phvideo { background: #EAF0F7; }
html body .phvideo .phse-head--centro .phse-lede { max-width: 60ch; }
html body .phvideo-cornice { position: relative; max-width: 1040px; margin: 0 auto; padding: 10px; border-radius: 28px; background: #FFFFFF; border: 1px solid rgba(16, 41, 75, .08); }
html body .phvideo-player { position: relative; aspect-ratio: 16 / 9; border-radius: 20px; overflow: hidden; background: #10294B; }
html body .phvideo-poster { display: block; width: 100%; height: 100%; object-fit: cover; transform: scale(1.02); transition: transform 1.2s cubic-bezier(.2,.7,.2,1); }
html body .phvideo-player:hover .phvideo-poster { transform: scale(1.05); }
html body .phvideo-player::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(16,41,75,0) 55%, rgba(16,41,75,.55)); pointer-events: none; }
html body .phvideo-play { position: absolute; inset: 0; z-index: 2; display: flex; align-items: center; justify-content: center; width: 100%; height: 100%; margin: 0; padding: 0; border: 0; background: transparent; cursor: pointer; }
html body .phvideo-play span { display: inline-flex; align-items: center; justify-content: center; width: 88px; height: 88px; border-radius: 50%; background: #FFD300; color: #10294B; box-shadow: 0 0 0 10px rgba(255, 211, 0, .22); transition: transform .35s cubic-bezier(.2,.7,.2,1), box-shadow .35s; }
html body .phvideo-play:hover span, html body .phvideo-play:focus-visible span { transform: scale(1.08); box-shadow: 0 0 0 16px rgba(255, 211, 0, .18); }
html body .phvideo-play svg { width: 34px; height: 34px; margin-left: 4px; }
html body .phvideo-play:focus-visible { outline: 3px solid #FFD300; outline-offset: -3px; }
html body .phvideo-didascalia { position: absolute; left: 28px; right: 28px; bottom: 22px; z-index: 2; display: flex; align-items: center; justify-content: space-between; gap: 16px; color: #FFFFFF; pointer-events: none; }
html body .phvideo-didascalia strong { font-family: "DM Sans", system-ui, sans-serif; font-weight: 700; font-size: 16px; }
html body .phvideo-didascalia span { font-size: 13px; opacity: .8; }
html body .phvideo-player iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
html body .phvideo-player.phvideo-attivo .phvideo-poster, html body .phvideo-player.phvideo-attivo .phvideo-play, html body .phvideo-player.phvideo-attivo .phvideo-didascalia, html body .phvideo-player.phvideo-attivo::after { display: none; }
html body .phvideo-link { display: flex; justify-content: center; margin: 26px 0 0; }
@media (max-width: 700px) { html body .phvideo-cornice { padding: 6px; border-radius: 20px; } html body .phvideo-player { border-radius: 16px; } html body .phvideo-play span { width: 64px; height: 64px; } html body .phvideo-play svg { width: 26px; height: 26px; } html body .phvideo-didascalia { left: 16px; right: 16px; bottom: 14px; } html body .phvideo-didascalia span { display: none; } }

/* 88.1 — play in basso a sinistra accanto alla didascalia, per non coprire il titolo del fotogramma */
html body .phvideo-play { align-items: flex-end; justify-content: flex-start; padding: 0 0 18px 24px; }
html body .phvideo-play span { width: 72px; height: 72px; }
html body .phvideo-play svg { width: 28px; height: 28px; }
html body .phvideo-didascalia { left: 116px; bottom: 30px; }
@media (max-width: 700px) { html body .phvideo-play { padding: 0 0 12px 14px; } html body .phvideo-play span { width: 52px; height: 52px; } html body .phvideo-play svg { width: 20px; height: 20px; } html body .phvideo-didascalia { left: 78px; bottom: 26px; } }


/* --------------------------------------------------------------------------
   89. GALLERIA DI SCHEDE

   La galleria del blocco 40 e tarata su fotografie 3:2: riquadro 2:1 e
   object-fit cover, che di una foto larga toglie il cielo e va bene cosi.
   I render di catalogo sono un'altra cosa — settantasei su centotrentotto
   sono verticali, mediana 0,98 — e ritagliarli a 2:1 vorrebbe dire tagliare
   la macchina a meta. Qui il riquadro diventa quadrato e l'immagine ci sta
   dentro intera, su una scheda bianca col bordo e l'ombra di riposo del
   brandbook 09: le stesse di .phse-card sulla stessa fascia.

   La lastra si stringe perche un quadrato da 840 px sarebbe alto quanto
   mezza schermata: 420 px lascia vedere tre schede e mezzo su desktop,
   e la successiva che si affaccia resta il modo di dire che ce n'e dell'altro.
   -------------------------------------------------------------------------- */
html body .phse .phgal--scheda { --phgal-slide: min(52%, 420px); }

html body .phse .phgal--scheda .phgal-slide img {
	aspect-ratio: 1 / 1;
	object-fit: contain;
	object-position: 50% 50%;
	padding: 22px;
	background-color: var(--ph-bianco);
	border: 1px solid rgba(16, 41, 75, 0.12);
	box-shadow: 0 12px 32px rgba(16, 41, 75, 0.06);
}

/* Se la fascia fosse bianca la scheda prende Azzurro Camera, come gia fa
   .phse-sfida-fig nel blocco 26: mai bianco su bianco. */
html body .phse .phse-sec:not(.phse-sec--camera) .phgal--scheda .phgal-slide img {
	background-color: var(--ph-camera);
	border-color: rgba(16, 41, 75, 0.08);
	box-shadow: none;
}

@media (max-width: 700px) {
	html body .phse .phgal--scheda { --phgal-slide: min(78%, 360px); }
	html body .phse .phgal--scheda .phgal-slide img { padding: 14px; }
}


/* --------------------------------------------------------------------------
   90. TABELLA DEI MODELLI

   Diciotto codici con quote, portata e potenza. Non e una scheda e non va
   travestita da scheda: e una tabella, e si comporta come tale — filetti
   sottili invece di riquadri, cifre incolonnate, intestazione in Blu Fondo.
   Le quattro famiglie sono righe di gruppo: CF, CF-E, CAS e CBZII restano
   quattro blocchi leggibili invece di diciotto righe di seguito.

   Sotto i 620 px di tabella si scorre in orizzontale invece di mandare a capo
   le quote: 1400 x 700 x 590 spezzato su due righe non e piu una quota.
   -------------------------------------------------------------------------- */
html body .phse .phmod { max-width: 1100px; margin: 44px auto 0; }
html body .phse .phmod-scorri { overflow-x: auto; }
html body .phse .phmod table { width: 100%; min-width: 620px; border-collapse: collapse; font-family: var(--ph-text), sans-serif; font-size: 0.9375rem; line-height: 1.5; color: var(--ph-grafite); }
html body .phse .phmod caption { caption-side: top; text-align: left; padding: 0 0 18px; font-size: 0.9375rem; line-height: 1.6; color: var(--ph-grigio); }
html body .phse .phmod th, html body .phse .phmod td { padding: 11px 18px 11px 0; text-align: left; border-bottom: 1px solid var(--phse-hair-soft); }
html body .phse .phmod thead th { font-weight: var(--ph-w-semibold); color: var(--ph-fondo); border-bottom: 1px solid var(--phse-hair); white-space: nowrap; }
html body .phse .phmod tbody th { padding-top: 24px; font-weight: var(--ph-w-semibold); color: var(--ph-blu); border-bottom: 1px solid var(--phse-hair); }
html body .phse .phmod td { font-variant-numeric: tabular-nums; white-space: nowrap; }
html body .phse .phmod td:first-child { font-weight: var(--ph-w-semibold); color: var(--ph-fondo); }
html body .phse .phmod tbody tr:last-child td { border-bottom: 0; }
html body .phse .phmod-nota { margin: 16px 0 0; font-size: 0.875rem; line-height: 1.6; color: var(--ph-grigio); }


/* -- 90.1 La riga del catalogo -------------------------------------------
   Prima era un pulsante fantasma allineato a sinistra, e non lo vedeva
   nessuno. Adesso chiude la fascia della galleria al centro, dopo un
   filetto che separa le immagini dall'azione: pastiglia piena in Blu
   PHAMM, la stessa del preventivo, perche' scaricare il catalogo e' la
   seconda cosa che chiede chi sta guardando le macchine. In questa fascia
   il Blu PHAMM sta su una cosa sola, come vuole il brandbook 03: i punti
   del carosello sono neutri, l'accento e' il pulsante.

   Sotto, in Grigio Aria, quanto pesa e di che edizione e': si decide prima
   del clic, non dopo. Su telefono la pastiglia prende tutta la larghezza,
   perche' un bersaglio da 56 px e il minimo che si tocca senza sbagliare.
   ------------------------------------------------------------------------- */
html body .phse .phgal-scarica {
	margin: 44px auto 0;
	padding-top: 36px;
	border-top: 1px solid var(--phse-hair-soft);
	text-align: center;
}

html body .phse .phgal-scarica .phse-btn {
	width: auto;
	min-height: 56px;
	padding: 16px 34px;
	font-size: 1rem !important;
}

html body .phse .phgal-peso {
	display: block;
	margin: 14px auto 0;
	font-family: var(--ph-text), sans-serif;
	font-size: 0.875rem;
	line-height: 1.6;
	color: var(--ph-grigio);
}

@media (max-width: 700px) {
	html body .phse .phgal-scarica { margin-top: 34px; padding-top: 30px; }
	html body .phse .phgal-scarica .phse-btn { width: 100%; }
}


/* --------------------------------------------------------------------------
   91. LENTE SULLE IMMAGINI DI GALLERIA

   La lastra e' 420 px su desktop e 267 su telefono: si riconosce la
   macchina, non si legge il dettaglio. Qui si apre in grande, e resta
   su scheda bianca come nella galleria — un render con lo sfondo
   trasparente su fondo scuro perderebbe i bordi e le ombre con cui e'
   stato costruito.

   Il fondo e' Blu Fondo al 92 per cento con una sfocatura leggera: la
   pagina resta riconoscibile dietro, e si capisce di non averla lasciata.
   I tre comandi sono fantasmi bianchi su scuro, gli stessi dell'hero.
   -------------------------------------------------------------------------- */
html body .phse .phgal--lente .phgal-slide img { cursor: zoom-in; }
html body .phse .phgal--lente .phgal-slide img:focus-visible { outline: 2px solid var(--ph-blu); outline-offset: 4px; }

html.phlb-fermo, html.phlb-fermo body { overflow: hidden; }

html body .phlb {
	position: fixed;
	top: 0;
	right: 0;
	bottom: 0;
	left: 0;
	z-index: 999999;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: clamp(14px, 3vh, 34px) clamp(18px, 4vw, 56px);
	background-color: rgba(16, 41, 75, 0.92);
	-webkit-backdrop-filter: blur(6px);
	backdrop-filter: blur(6px);
	opacity: 0;
	visibility: hidden;
	transition: opacity 260ms cubic-bezier(0.22, 0.61, 0.36, 1), visibility 0s linear 260ms;
}

html body .phlb[data-aperta="si"] { opacity: 1; visibility: visible; transition-delay: 0s; }

html body .phlb-pannello {
	position: relative;
	display: flex;
	flex-direction: column;
	max-width: min(1080px, 92vw);
	max-height: 92vh;
	padding: clamp(18px, 2.2vw, 26px);
	background-color: var(--ph-bianco);
	border-radius: 18px;
	box-shadow: 0 40px 90px rgba(16, 41, 75, 0.45);
	transform: translateY(10px) scale(0.98);
	transition: transform 300ms cubic-bezier(0.22, 0.61, 0.36, 1);
}

html body .phlb[data-aperta="si"] .phlb-pannello { transform: none; }

html body .phlb-fig { margin: 0; min-height: 0; }
/* La misura la calcola la lente in assets/galleria.js, dopo aver pesato
   didascalia e contatore: qui si mette solo il tetto di sicurezza per
   l'istante fra il cambio di sorgente e il calcolo. */
html body .phlb-img { display: block; width: auto; height: auto; max-width: 100%; max-height: 78vh; margin: 0 auto; object-fit: contain; border-radius: 10px; }
html body .phlb-did { margin: 16px auto 0; max-width: 62ch; font-family: var(--ph-text), sans-serif; font-size: 0.9375rem; line-height: 1.6; color: var(--ph-grafite); text-align: center; text-wrap: pretty; }
html body .phlb-conta { margin: 8px 0 0; font-family: var(--ph-display), sans-serif; font-size: 0.75rem; font-weight: var(--ph-w-bold); letter-spacing: 0.14em; color: var(--ph-grigio); text-align: center; }

html body .phlb-btn {
	position: absolute;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 48px;
	height: 48px;
	padding: 0;
	color: var(--ph-bianco);
	background-color: rgba(255, 255, 255, 0.10);
	border: 1px solid rgba(255, 255, 255, 0.30);
	border-radius: 999px !important;
	cursor: pointer;
	transition: background-color 220ms cubic-bezier(0.22, 0.61, 0.36, 1), border-color 220ms cubic-bezier(0.22, 0.61, 0.36, 1), opacity 220ms;
}

html body .phlb-btn svg { width: 22px; height: 22px; }
html body .phlb-btn:hover, html body .phlb-btn:focus-visible { background-color: rgba(255, 255, 255, 0.20); border-color: rgba(255, 255, 255, 0.62); }
html body .phlb-btn:focus-visible { outline: 2px solid var(--ph-bianco); outline-offset: 3px; }
html body .phlb-btn[disabled] { opacity: 0.26; cursor: default; }
html body .phlb-chiudi { top: clamp(14px, 3vw, 30px); right: clamp(14px, 3vw, 30px); }
html body .phlb-prec { left: clamp(10px, 2.4vw, 30px); top: 50%; margin-top: -24px; }
html body .phlb-succ { right: clamp(10px, 2.4vw, 30px); top: 50%; margin-top: -24px; }

@media (max-width: 700px) {
	html body .phlb { padding: 14px; }
	html body .phlb-pannello { max-width: 100%; max-height: 78vh; }
	html body .phlb-img { max-height: calc(78vh - 200px); }
	html body .phlb-btn { width: 42px; height: 42px; }
	html body .phlb-prec { left: 14px; top: auto; bottom: 14px; margin-top: 0; }
	html body .phlb-succ { right: 14px; top: auto; bottom: 14px; margin-top: 0; }
}


/* ==========================================================================
   92. WEB REVIEW v3 (23/10/2026) — contatti Italia e Spagna, criterio di scelta
       delle cappe, griglia a otto famiglie, collaboratori sulla mappa. (INIZIO)
   ========================================================================== */

/* 92.1 Coppia di telefoni accanto a "Parlate con un tecnico" */
html body .ph-tel-coppia { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 10px 22px; }
html body .ph-tel-paese { display: inline-block; margin-right: 8px; font-size: 11px; font-weight: 600; letter-spacing: 0.14em; text-transform: uppercase; opacity: 0.62; }
html body .ph-tel-coppia .ph-link-tel { white-space: nowrap; }
html body .phfin-recapiti .ph-tel-paese { margin-right: 6px; opacity: 0.55; }
html body .ph-cta-tel .ph-tel-paese { opacity: 0.6; }
html body .ph-cta-tel + .ph-cta-tel { margin-left: 18px; }

/* 92.2 Contattaci: recapiti per area */
html body .phct-recapiti { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; margin: 26px 0 0; }
html body .phct-recapito { display: flex; flex-direction: column; gap: 8px; padding: 18px 20px; border-radius: 16px; background: var(--ph-camera, #EAF0F7); border: 1px solid rgba(40, 90, 166, 0.10); }
html body .phct-recapito-area { font-size: 11px; font-weight: 600; letter-spacing: 0.14em; text-transform: uppercase; color: var(--ph-blu, #285AA6); padding-bottom: 8px; margin-bottom: 2px; border-bottom: 1px solid rgba(40, 90, 166, 0.14); }
html body .phct-recapito-link { display: inline-flex; align-items: center; gap: 10px; font-size: 15px; font-weight: 500; color: var(--ph-fondo, #10294B) !important; text-decoration: none !important; overflow-wrap: anywhere; transition: color 0.2s; }
html body .phct-recapito-link svg { flex: 0 0 auto; color: var(--ph-blu, #285AA6); }
html body .phct-recapito-link:hover { color: var(--ph-blu, #285AA6) !important; }
@media (max-width: 560px) { html body .phct-recapiti { grid-template-columns: minmax(0, 1fr); } }

/* 92.3 Piede: quattro recapiti su due righe */
html body .phf-reach.phf-reach--aree { display: grid; grid-template-columns: repeat(2, minmax(0, max-content)); gap: 18px 44px; }
@media (max-width: 560px) { html body .phf-reach.phf-reach--aree { grid-template-columns: minmax(0, 1fr); gap: 14px; } }

/* 92.4 Striscia in testa: secondo numero */
html body .phs-paese { margin-right: 6px; font-size: 10px; font-weight: 600; letter-spacing: 0.14em; opacity: 0.6; }

/* 92.5 Azienda, "Cosa esce dallo stabilimento": otto famiglie, 4 + 4 */
@media (min-width: 1100px) { html body .phaz-gamma .phse-sfide.phse-sfide--otto, html body .phse .phse-sfide--v2.phse-sfide--otto { grid-template-columns: repeat(4, minmax(0, 1fr)); } }

/* 92.6 Cappe: il criterio di scelta, tre lavorazioni */
html body .phcrit .phse-head { max-width: 760px; margin-left: auto; margin-right: auto; }
html body .phcrit .phse-lede { color: rgba(255, 255, 255, 0.78); }
html body .phcrit-schede { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; list-style: none; margin: clamp(32px, 3.2vw, 48px) 0 0; padding: 0; counter-reset: none; }
html body .phcrit-scheda { position: relative; display: flex; flex-direction: column; padding: 30px 26px 24px; border-radius: 20px; background: rgba(255, 255, 255, 0.045); border: 1px solid rgba(255, 255, 255, 0.10); transition: border-color 0.3s, transform 0.3s, background-color 0.3s; }
html body .phcrit-scheda::before { content: ""; position: absolute; left: 26px; right: 26px; top: 0; height: 2px; background: linear-gradient(90deg, #69A0BF, rgba(105, 160, 191, 0)); border-radius: 2px; }
html body .phcrit-scheda:hover { transform: translateY(-3px); border-color: rgba(105, 160, 191, 0.45); background: rgba(255, 255, 255, 0.07); }
html body .phcrit-n { font-family: var(--ph-display, inherit); font-size: 34px; line-height: 1; font-weight: 600; color: #69A0BF; margin-bottom: 18px; }
html body .phcrit-k { font-size: 11px; font-weight: 600; letter-spacing: 0.16em; text-transform: uppercase; color: rgba(255, 255, 255, 0.55); }
html body .phcrit-k--sep { margin-top: auto; padding-top: 18px; border-top: 1px solid rgba(255, 255, 255, 0.10); }
html body .phcrit-h { margin: 8px 0 10px; font-size: 21px; line-height: 1.25; color: #FFFFFF !important; }
html body .phcrit-p { margin: 0 0 22px; padding: 0; font-size: 15px; line-height: 1.6; color: rgba(255, 255, 255, 0.72); }
html body .phcrit-prod { list-style: none; margin: 12px 0 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
html body .phcrit-prod li { margin: 0; padding: 0; }
html body .phcrit-prod a { display: flex; align-items: center; gap: 10px; padding: 11px 14px; min-height: 44px; border-radius: 12px; background: rgba(255, 255, 255, 0.06); color: #FFFFFF !important; text-decoration: none !important; transition: background-color 0.25s; }
html body .phcrit-prod a:hover { background: rgba(255, 255, 255, 0.13); }
html body .phcrit-prod b { font-weight: 600; font-size: 15px; }
html body .phcrit-prod span { font-size: 12px; letter-spacing: 0.04em; color: rgba(255, 255, 255, 0.6); }
html body .phcrit-prod svg { margin-left: auto; flex: 0 0 auto; opacity: 0.7; }
html body .phcrit .ph-azioni { justify-content: center; margin-top: clamp(28px, 3vw, 40px); }
@media (max-width: 980px) { html body .phcrit-schede { grid-template-columns: minmax(0, 1fr); max-width: 560px; margin-left: auto; margin-right: auto; } }
@media (prefers-reduced-motion: reduce) { html body .phcrit-scheda { transition: none; } html body .phcrit-scheda:hover { transform: none; } }

/* 92.7 Mappa: i collaboratori */
html body .phm-seg--collaboratore, html body .phw .phm-seg--collaboratore, html body .phw .phm-scheda-logo .phm-seg--collaboratore { background: #69A0BF; border: 2px solid #FFFFFF; box-shadow: 0 0 0 1px #69A0BF; }
html body .phw .phw-pin--collaboratore .phw-punto { fill: #69A0BF; stroke: #FFFFFF; stroke-width: 4; }

html body .phcrit-prod a { display: grid; grid-template-columns: minmax(0, 1fr) auto; column-gap: 12px; row-gap: 2px; align-items: center; }
html body .phcrit-prod a b { grid-column: 1; grid-row: 1; }
html body .phcrit-prod a span { grid-column: 1; grid-row: 2; }
html body .phcrit-prod a svg { grid-column: 2; grid-row: 1 / span 2; margin-left: 0; }

html body .phcrit-schede > li, html body .phcrit-prod > li { list-style: none !important; }
html body .phcrit-schede > li::before, html body .phcrit-prod > li::before { content: none !important; display: none !important; }
html body .phcrit-k--sep { margin-top: 6px; }
@media (min-width: 981px) { html body .phcrit-h { min-height: 2.5em; } }

html body .phw .phw-cifre { display: grid; grid-template-columns: repeat(5, auto); justify-content: space-between; gap: 14px 24px; }
html body .phw .phw-cifre li { flex-direction: column; align-items: flex-start; gap: 4px; }
@media (max-width: 760px) { html body .phw .phw-cifre { grid-template-columns: repeat(3, auto); justify-content: start; gap: 16px 28px; } }

/* logo verticale META: stessa presenza ottica dei loghi orizzontali */
html body .phf-partner-logo[src*="logo-meta-pharmaceutical"] { max-height: 52px !important; height: 52px; width: auto; }

/* 92.8 Contattaci, mappa (Web Review v2): mappa a tutta larghezza, elenco sotto, nessuna area in risalto */
html body .phm.phw .phm-grid { grid-template-columns: minmax(0, 1fr); }
html body .phw .phw-viewport { min-height: 0; }
html body .phw .phw-tela { max-width: 1180px; margin-left: auto; margin-right: auto; }
html body .phw .phm-panel { border-left: 0; border-top: 1px solid rgba(16, 41, 75, 0.10); }
html body .phw .phm-panel-in { position: static; inset: auto; overflow: visible; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px 20px; align-items: start; padding: 22px 24px 26px; }
html body .phw .phm-gruppo { margin: 0; min-width: 0; }
html body .phw .phw-alone-mercato, html body .phw .phw-mercati, html body .phw .phw-rotta { display: none; }
@media (max-width: 1100px) { html body .phw .phm-panel-in { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 640px) { html body .phw .phm-panel-in { grid-template-columns: minmax(0, 1fr); padding: 16px 14px 20px; } }

/* 92.9 nessun testo sotto i 12 px (regola R12) */
html body .ph-tel-paese, html body .phs-paese, html body .phct-recapito-area, html body .phcrit-k { font-size: 12px; }

/* 92.10 Selettore lingua IT / EN nella striscia in testa (WPML) */
html body .phs-lang { display: inline-flex; align-items: center; gap: 2px; }
html body .phs-lang-a { display: inline-flex; align-items: center; justify-content: center; min-width: 30px; min-height: 26px; padding: 0 6px; border-radius: 999px; font-size: 12px; font-weight: 600; letter-spacing: 0.12em; color: inherit !important; opacity: 0.6; text-decoration: none !important; transition: opacity 0.2s, background-color 0.2s; }
html body .phs-lang-a:hover { opacity: 1; }
html body .phs-lang-a.is-attiva { opacity: 1; background: var(--ph-blu, #285AA6); color: #FFFFFF !important; }
@media (hover: none), (pointer: coarse), (max-width: 720px) { html body .phs-lang-a { min-width: 44px; min-height: 44px; } }

html body .phs-facts { flex-shrink: 0; }
html body .phs-lang { margin-left: 4px; }

/* 92.11 Striscia in testa: con due telefoni e il selettore lingua lo spazio non basta sotto i 1400 px */
@media (max-width: 1400px) { html body .phs-facts li:nth-child(n+2) { display: none; } }
@media (max-width: 1180px) { html body .phs-facts { display: none; } }
@media (max-width: 900px) { html body .phs-link--mail, html body .phs-link--mail + .phs-sep, html body .phs-reach .phs-link--mail ~ .phs-sep { display: none; } }

@media (max-width: 900px) { html body .phs .phs-reach .phs-link--mail { display: none !important; } }
@media (max-width: 760px) { html body .phs .phs-reach { flex-wrap: wrap; justify-content: center; row-gap: 2px; column-gap: 10px; width: 100%; } html body .phs .phs-reach .phs-cta { display: none !important; } }

/* 92. (FINE) */

/* 93. Selettore lingua di marca: accanto a Contattaci e nel copyfooter (WPML), controllo segmentato */
html body .ph-lang { --ph-lang-track: color-mix(in srgb, currentColor 9%, transparent); display: inline-flex; align-items: center; gap: 2px; padding: 3px; background: var(--ph-lang-track); border-radius: 999px; line-height: 1; vertical-align: middle; -webkit-backdrop-filter: saturate(180%) blur(12px); backdrop-filter: saturate(180%) blur(12px); }
html body .ph-lang-ico { width: 15px; height: 15px; margin: 0 5px 0 8px; opacity: 0.6; flex: none; }
html body .ph-lang-a { position: relative; display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-width: 38px; min-height: 30px; padding: 0 10px; border-radius: 999px; font-family: var(--ph-display); font-size: 12px; font-weight: 600; letter-spacing: 0.04em; color: inherit !important; text-decoration: none !important; opacity: 0.62; transition: opacity 0.25s ease, background-color 0.3s cubic-bezier(0.25, 0.1, 0.25, 1), box-shadow 0.3s ease, color 0.25s ease; }
html body .ph-lang-a:hover { opacity: 1; }
html body .ph-lang-a:focus-visible { opacity: 1; outline: 2px solid var(--ph-blu, #285AA6); outline-offset: 2px; }
html body .ph-lang-a.is-attiva, html body .ph-lang-a.is-attiva:hover { opacity: 1; background: var(--ph-bianco, #FFFFFF); color: var(--ph-fondo, #10294B) !important; box-shadow: 0 1px 2px rgba(16, 41, 75, 0.14), 0 3px 10px rgba(16, 41, 75, 0.10), inset 0 0 0 0.5px rgba(16, 41, 75, 0.06); }
html body #header-outer .ph-lang-li { display: inline-flex !important; align-items: center; margin-left: 14px !important; padding: 0 !important; }
html body #header-outer .ph-lang-li > .ph-lang { color: var(--ph-grafite, #313840); }
html body #header-outer .ph-lang-li .ph-lang-a { padding: 0 10px !important; line-height: 1 !important; }
html body #header-outer .ph-lang-li .ph-lang-a:after, html body #header-outer .ph-lang-li .ph-lang-a:before { display: none !important; }
html body .ph-lang--footer { margin-top: 18px; }
html body .ph-lang--footer .ph-lang-a { min-height: 36px; padding: 0 14px; }
html body .ph-lang--footer .ph-lang-nome { font-family: var(--ph-text); font-size: 13px; font-weight: 500; letter-spacing: 0; }
@media (hover: none), (pointer: coarse), (max-width: 720px) { html body .ph-lang-a { min-width: 44px; min-height: 44px; } }
@media (max-width: 560px) { html body .ph-lang--footer .ph-lang-nome { display: none; } }
/* Il selettore standard di WPML nel footer e sostituito da quello di marca */
html body .wpml-ls-statics-footer { display: none !important; }
/* 93. (FINE) */
/* 93.1 Mobile: selettore lingua visibile nella barra, accanto al menu */
@media only screen and (max-width: 999px) {
	html body #header-outer .nectar-mobile-only .ph-lang-li { display: inline-flex !important; align-items: center; width: auto !important; height: auto !important; margin: 0 12px 0 0 !important; padding: 0 !important; }
	html body #header-outer .nectar-mobile-only .ph-lang-li > .ph-lang { display: inline-flex !important; color: var(--ph-grafite, #313840); }
	html body #header-outer .nectar-mobile-only .ph-lang-li .ph-lang-a { display: inline-flex !important; min-width: 40px; min-height: 40px; padding: 0 8px !important; font-size: 12px !important; line-height: 1 !important; }
	html body #mobile-menu .ph-lang-li, html body #slide-out-widget-area .ph-lang-li { display: none !important; }
}
@media only screen and (max-width: 900px) {
	html body .phs-reach .phs-link--es + .phs-sep { display: none !important; }
}
/* 93.1 (FINE) */
/* 93.2 Menu tradotti da WPML: la freccia nativa di primo livello non va mostrata, come in italiano */
html body #header-outer .sf-menu > li > a > .sf-sub-indicator { display: none !important; }

/* 93.3 Selettore lingua mobile con quattro lingue: target 44px e niente scroll orizzontale fino a 360px */
@media only screen and (max-width: 480px) {
	html body #header-outer #logo img { max-width: 104px !important; height: auto !important; }
	html body #header-outer .nectar-mobile-only .ph-lang-li { margin-left: 6px !important; }
	html body #header-outer .nectar-mobile-only .ph-lang { padding: 2px !important; gap: 0 !important; }
	html body #header-outer .nectar-mobile-only .ph-lang-li .ph-lang-a { min-width: 44px !important; min-height: 44px !important; padding: 0 !important; font-size: 12px !important; }
}
@media only screen and (max-width: 359px) {
	html body #header-outer #logo img { max-width: 84px !important; }
	html body #header-outer .nectar-mobile-only .ph-lang-li .ph-lang-a { min-width: 40px !important; }
}

/* 93.4 Selettore lingua, rifinitura premium: header piu compatto, footer centrato e leggibile su fondo scuro */
@media (hover: hover) and (pointer: fine) and (min-width: 1000px) {
	html body #header-outer .ph-lang-li > .ph-lang { padding: 2px; gap: 1px; background: rgba(16, 41, 75, 0.055); box-shadow: inset 0 0 0 0.5px rgba(16, 41, 75, 0.10); }
	html body #header-outer .ph-lang-li .ph-lang-a { min-width: 30px; min-height: 26px; padding: 0 8px !important; font-size: 11px; font-weight: 600; letter-spacing: 0.07em; opacity: 0.55; }
	html body #header-outer .ph-lang-li .ph-lang-a:hover { opacity: 0.9; }
	html body #header-outer .ph-lang-li .ph-lang-a.is-attiva { opacity: 1; box-shadow: 0 1px 1px rgba(16, 41, 75, 0.10), 0 2px 8px rgba(16, 41, 75, 0.10), inset 0 0 0 0.5px rgba(16, 41, 75, 0.06); }
	html body #header-outer .ph-lang-li { margin-left: 12px !important; }
}
html body .ph-lang--footer { display: flex; flex: 0 0 auto; width: -moz-fit-content; width: fit-content; max-width: 100%; margin: 28px auto 0 !important; padding: 4px; gap: 2px; background: rgba(255, 255, 255, 0.06); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.10), 0 10px 30px rgba(0, 0, 0, 0.18); color: rgba(255, 255, 255, 0.80); }
html body .ph-lang--footer .ph-lang-ico { color: rgba(255, 255, 255, 0.70); opacity: 1; margin: 0 4px 0 10px; }
html body .ph-lang--footer .ph-lang-a { min-height: 36px; padding: 0 16px; color: rgba(255, 255, 255, 0.80) !important; opacity: 1; font-size: 12px; }
html body .ph-lang--footer .ph-lang-a:hover { color: #FFFFFF !important; background: rgba(255, 255, 255, 0.08); }
html body .ph-lang--footer .ph-lang-a:focus-visible { outline-color: #FFFFFF; }
html body .ph-lang--footer .ph-lang-cod { font-weight: 600; letter-spacing: 0.06em; opacity: 0.62; }
html body .ph-lang--footer .ph-lang-a.is-attiva, html body .ph-lang--footer .ph-lang-a.is-attiva:hover { background: #FFFFFF; color: var(--ph-fondo, #10294B) !important; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.20), 0 4px 14px rgba(0, 0, 0, 0.22); }
html body .ph-lang--footer .ph-lang-a.is-attiva .ph-lang-cod { opacity: 0.55; }
@media (hover: none), (pointer: coarse), (max-width: 720px) { html body .ph-lang--footer .ph-lang-a { min-height: 44px; padding: 0 14px; } }

/* 93.5 Articoli: commenti chiusi, il contatore "No Comments" portava a un #respond inesistente */
html body .meta-comment-count, html body .single .meta-comment-count { display: none !important; }

/* 94. Controllo responsive finale: testo mai sotto 12px, aree di tocco di almeno 44px */
html body sup, html body sub { font-size: max(0.7em, 12px); line-height: 0; }
html body .phct-k, html body .phse .phse-media-fonte, html body .phse-settori-piede { font-size: 12px !important; }
html body .phse .phhero-punto::before { inset: -21px 0 !important; }
html body .phgal-punto { position: relative; }
html body .phgal-punto::before { content: ''; position: absolute; inset: -18px -8px; }
@media (hover: none), (pointer: coarse), (max-width: 720px) {
	html body .phf-prefs { display: inline-flex !important; align-items: center; min-height: 44px; }
}
html body .phnorme-fam, html body .phw-cifre li span { font-size: 12px !important; }
html body .section-title.blog-title .inner-wrap > a { font-size: 12px !important; }

/* 94.1 Header fra 1000 e 1149px: con quattro lingue e le etichette FR/ES il menu usciva dal bordo */
@media only screen and (min-width: 1000px) and (max-width: 1149px) {
	html body #header-outer #top nav > ul.sf-menu > li:not(.ph-lang-li) > a { margin-left: 6px !important; margin-right: 6px !important; font-size: 14px !important; }
	html body #header-outer #top nav > ul > li > a:is([href*="/contattaci"],[href*="/en/contact-us"],[href*="/es/contacto"],[href*="/fr/contact"]) { padding-left: 18px !important; padding-right: 18px !important; }
	html body #header-outer .ph-lang-li { margin-left: 8px !important; }
}
@media only screen and (min-width: 1000px) and (max-width: 1149px) {
	html body #header-outer #top .container { padding-left: 40px !important; padding-right: 40px !important; }
}
/* 94.2 Griglie: un figlio con contenuto largo non deve allargare la colonna oltre lo schermo */
html body .phse-grid > * { min-width: 0; }

/* 94.3 Griglie auto-fit: la colonna minima non supera mai la larghezza disponibile (schermi da 320-360px) */
html body .phlegal-more-grid { grid-template-columns: repeat(auto-fit, minmax(min(210px, 100%), 1fr)); }
html body .phct-grid--3 { grid-template-columns: repeat(auto-fit, minmax(min(280px, 100%), 1fr)); }
html body .phct-grid--2 { grid-template-columns: repeat(auto-fit, minmax(min(340px, 100%), 1fr)); }
html body .phct-grid--4 { grid-template-columns: repeat(auto-fit, minmax(min(258px, 100%), 1fr)); }
html body .phm-elenco { grid-template-columns: repeat(auto-fit, minmax(min(260px, 100%), 1fr)); }
html body .phse-grid--2 { grid-template-columns: repeat(auto-fit, minmax(min(340px, 100%), 1fr)); }
html body .phse-grid--3 { grid-template-columns: repeat(auto-fit, minmax(min(320px, 100%), 1fr)); }
html body .phse-grid--4 { grid-template-columns: repeat(auto-fit, minmax(min(246px, 100%), 1fr)); }
html body .phse .phse-sfide { grid-template-columns: repeat(auto-fit, minmax(min(300px, 100%), 1fr)); }
html body .phse .phse-passi { grid-template-columns: repeat(auto-fit, minmax(min(272px, 100%), 1fr)); }
html body .phw .phm-elenco { grid-template-columns: repeat(auto-fill, minmax(min(280px, 100%), 1fr)); }
html body .phse-fig-val { min-width: 0; overflow-wrap: anywhere; text-align: right; }
@media (max-width: 720px) { html body .phse-fig-testa { flex-wrap: wrap; row-gap: 4px; } html body .phse-fig-val { white-space: normal !important; text-align: left; } }
@media (max-width: 480px) { html body .phw-cifre { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; column-gap: 16px !important; } }
html body .phlegal-doc code { overflow-wrap: anywhere; word-break: break-word; white-space: normal; }
html body .phse-settori-piede { flex-wrap: wrap; white-space: normal !important; min-width: 0; row-gap: 4px; }


/* 95. Lavora con noi: modulo candidatura */
.phlc-form-wrap{max-width:760px;margin:0 auto}
.phlc-form-wrap .phse-lede{margin-bottom:28px}
#candidatura .ph-form__label,#candidatura .ph-form__field--check,#candidatura .ph-form__field--check label{color:#fff!important;opacity:1!important;visibility:visible!important}
#candidatura .ph-form__label{display:block;font-size:14px;margin-bottom:8px}
#candidatura .ph-form__hint{font-weight:400;opacity:.75}
#candidatura .ph-form__row{margin-bottom:18px}
#candidatura .ph-form__field--check a{color:#fff;text-decoration:underline}
#candidatura .ph-form__field--check input[type=checkbox]{width:20px;height:20px;margin-right:10px;vertical-align:middle}
#candidatura .ph-form__field--check .wpcf7-list-item{margin:0;min-height:44px;display:inline-flex;align-items:center}
#candidatura input[type=file]{padding:12px;min-height:44px;width:100%;background:#fff;border-radius:10px;font-size:14px}
#candidatura .wpcf7-response-output{color:#fff;border-radius:10px;font-size:14px}
#candidatura .wpcf7-not-valid-tip{font-size:13px}
