/*
Theme Name: Vision-e GeneratePress Child
Theme URI: https://www.vision-e.it/
Description: Tema minimale per la migrazione di Vision-e da Avada a GeneratePress.
Author: Vision-e
Template: generatepress
Version: 0.1.50
Text Domain: vision-e-gp
*/

:root {
	/* Scala unica di blu: chiaro -> primario -> scuro. I blu stanno sugli
	   sfondi, sui pulsanti e sulle zone colorate; testo e bordi restano sui
	   grigi, cioe' il bianco e il nero del sito. */
	--ve-blue-50: #edf6fe;
	--ve-blue-100: #d8ebfb;
	/* 3,96:1 su bianco: sotto la soglia AA per il testo normale. Solo bordi,
	   icone e decorazioni; su fondo scuro sale a 4,52:1. */
	--ve-blue-300: #5983b0;
	--ve-blue-500: #1f74c0;
	--ve-blue-600: #1e5082;
	--ve-blue-700: #1e5082;
	--ve-slate-900: #1b2733;
	--ve-slate-700: #3e4d5b;
	--ve-slate-600: #5c6770;
	--ve-slate-200: #dfe6ec;
	--ve-slate-100: #eef2f5;
	--ve-white: #ffffff;
	--ve-radius-sm: 0.25rem;
	--ve-radius-md: 0.5rem;
	--ve-radius-lg: 1rem;
	--ve-shadow-sm: 0 1px 2px rgb(11 24 38 / 8%);
	--ve-shadow-md: 0 12px 32px rgb(11 24 38 / 10%);
	--ve-font-base: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
	--ve-font-reading: var(--ve-font-base);
	--ve-shell: 74rem;
	--ve-article: 42.5rem;
	--ve-prose: 65ch;
}

/* Pagina Sviluppo software per automazione industriale OEM. */
.ve-oem-page {
	color: var(--ve-slate-700);
	font-size: 1.0625rem;
	line-height: 1.72;
}

.ve-oem-page .ve-shell {
	width: min(calc(100% - 3rem), var(--ve-shell));
	margin-inline: auto;
}

.ve-oem-page .ve-section {
	padding-block: clamp(4rem, 8vw, 7rem);
}

.ve-oem-page h1,
.ve-oem-page h2 {
	margin-top: 0;
	color: var(--ve-slate-900);
	letter-spacing: -0.035em;
}

.ve-oem-page h1 {
	margin-bottom: 2rem;
	font-size: clamp(2.75rem, 5vw, 4.5rem);
	line-height: 1.02;
}

.ve-oem-page h2 {
	margin-bottom: 1.5rem;
	font-size: clamp(2rem, 3.5vw, 2.5rem);
	line-height: 1.12;
}

.ve-oem-page p,
.ve-oem-page figure,
.ve-oem-page ol,
.ve-oem-page ul {
	margin-top: 0;
}

.ve-oem-hero {
	position: relative;
	overflow: hidden;
	padding-block: clamp(4.5rem, 9vw, 8rem);
	background:
		radial-gradient(circle at 88% 18%, rgba(31, 116, 192, 0.24), transparent 28rem),
		var(--ve-blue-700);
}

.ve-oem-hero__grid,
.ve-oem-white-label__grid,
.ve-oem-contact__grid {
	display: grid;
	grid-template-columns: minmax(0, 1.18fr) minmax(20rem, 0.82fr);
	gap: clamp(3rem, 7vw, 6rem);
	align-items: center;
}

.ve-oem-hero__accent {
	width: 3.5rem;
	height: 0.18rem;
	margin-bottom: 1.5rem;
	background: var(--ve-blue-300);
}

.ve-oem-hero h1 {
	max-width: 16ch;
	color: var(--ve-white);
}

.ve-oem-hero__copy p {
	max-width: var(--ve-prose);
	margin-bottom: 1.25rem;
	color: #d9e5ee;
}

.ve-oem-hero__copy p:last-child {
	margin-bottom: 0;
}

.ve-oem-hero__copy strong {
	color: var(--ve-white);
}

.ve-oem-summary {
	padding: clamp(1.5rem, 3vw, 2.5rem);
	border-top: 0.25rem solid var(--ve-blue-500);
	border-radius: var(--ve-radius-lg);
	background: var(--ve-white);
	box-shadow: var(--ve-shadow-md);
}

.ve-oem-summary h2 {
	margin-bottom: 1.5rem;
	color: var(--ve-blue-700);
	font-size: 1.25rem;
	letter-spacing: 0;
	line-height: 1.3;
}

.ve-oem-summary ul {
	display: grid;
	gap: 1rem;
	margin-bottom: 0;
	padding-left: 1.25rem;
}

.ve-oem-summary li {
	padding-left: 0.25rem;
	color: var(--ve-slate-700);
	font-size: 1rem;
	line-height: 1.55;
}

.ve-oem-summary strong {
	color: var(--ve-slate-900);
}

.ve-oem-map {
	background: var(--ve-white);
}

.ve-oem-map__visual {
	overflow: hidden;
	width: min(100%, 64rem);
	margin: 0 auto;
	border: 1px solid var(--ve-slate-200);
	border-radius: var(--ve-radius-lg);
	background: var(--ve-white);
	box-shadow: var(--ve-shadow-md);
}

.ve-oem-map__visual img {
	display: block;
	width: 100%;
	height: auto;
}

.ve-oem-toc {
	width: min(100%, 64rem);
	margin: 2.5rem auto 0;
}

.ve-oem-toc .ez-toc-container {
	width: 100%;
	margin: 0;
}

.ve-oem-choices {
	background: var(--ve-blue-50);
}

.ve-oem-heading {
	max-width: 58rem;
	margin-bottom: 3rem;
}

.ve-oem-heading--narrow {
	max-width: 52rem;
}

.ve-oem-heading p:last-child {
	margin-bottom: 0;
}

.ve-oem-choice-grid,
.ve-oem-benefit-grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	grid-auto-rows: 1fr;
	gap: 1.5rem;
	margin-bottom: 0;
	padding-left: 0;
	list-style: none;
}

.ve-oem-choice-grid > li,
.ve-oem-benefit-grid > li {
	padding: clamp(1.5rem, 3vw, 2rem);
	border: 1px solid var(--ve-slate-200);
	border-radius: var(--ve-radius-lg);
	background: var(--ve-white);
	box-shadow: var(--ve-shadow-sm);
}

.ve-oem-card__index,
.ve-oem-card__icon {
	display: inline-grid;
	width: 2.75rem;
	height: 2.75rem;
	margin-bottom: 1.5rem;
	place-items: center;
	border-radius: 999px;
	background: var(--ve-blue-50);
	color: var(--ve-blue-700);
	font-size: 0.8rem;
	font-weight: 750;
}

.ve-oem-choice-grid p,
.ve-oem-benefit-grid p {
	margin-bottom: 0;
}

.ve-oem-choice-grid strong,
.ve-oem-benefit-grid strong {
	color: var(--ve-slate-900);
}

.ve-oem-white-label {
	background: var(--ve-blue-700);
}

.ve-oem-white-label__grid {
	align-items: start;
}

.ve-oem-white-label h2 {
	max-width: 16ch;
	margin-bottom: 0;
	color: var(--ve-white);
}

.ve-oem-kicker {
	margin-bottom: 1rem;
	color: #cae7ff;
	font-size: 0.75rem;
	font-weight: 750;
	letter-spacing: 0.11em;
	text-transform: uppercase;
}

.ve-oem-white-label__copy p {
	margin-bottom: 1.25rem;
	color: #e4f0fa;
}

.ve-oem-white-label__copy p:last-child {
	margin-bottom: 0;
}

.ve-oem-benefit-grid > li:last-child {
	grid-column: 1 / -1;
}

.ve-oem-contact {
	background: var(--ve-blue-50);
}

.ve-oem-contact__grid {
	align-items: start;
}

.ve-oem-contact__copy p {
	margin-bottom: 1.25rem;
}

.ve-oem-contact__copy p:last-child {
	margin-bottom: 0;
}

.ve-oem-contact__copy strong {
	color: var(--ve-slate-900);
}

.ve-oem-contact__form {
	min-width: 0;
	padding: 2rem;
	border-radius: var(--ve-radius-lg);
	background: var(--ve-white);
	box-shadow: var(--ve-shadow-md);
}

@media (max-width: 64rem) {
	.ve-oem-page * {
		min-width: 0;
	}

	.ve-oem-hero__grid,
	.ve-oem-white-label__grid,
	.ve-oem-contact__grid {
		grid-template-columns: 1fr;
	}

	.ve-oem-summary {
		max-width: 42rem;
	}
}

@media (max-width: 48rem) {
	.ve-oem-page .ve-shell {
		width: min(calc(100% - 2rem), var(--ve-shell));
	}

	.ve-oem-page h1 {
		font-size: 2.75rem;
	}

	.ve-oem-page h2 {
		font-size: 2rem;
	}

	.ve-oem-summary,
	.ve-oem-choice-grid > li,
	.ve-oem-benefit-grid > li,
	.ve-oem-contact__form {
		padding: 1.5rem;
	}

	.ve-oem-summary h2 {
		font-size: 1.2rem;
	}

	.ve-oem-choice-grid,
	.ve-oem-benefit-grid {
		grid-template-columns: 1fr;
		grid-auto-rows: auto;
	}

	.ve-oem-benefit-grid > li:last-child {
		grid-column: auto;
	}
}

/* Pagina Monitoraggio AI / NEMOS HSP. */
.ve-monitor-page {
	--ve-monitor-copy: 46rem;
	color: var(--ve-slate-700);
	font-size: 1.0625rem;
	line-height: 1.72;
}

.ve-monitor-page .ve-shell {
	width: min(calc(100% - 3rem), var(--ve-shell));
	margin-inline: auto;
}

.ve-monitor-page .ve-section {
	padding-block: clamp(4rem, 8vw, 7rem);
}

.ve-monitor-page h1,
.ve-monitor-page h2 {
	margin-top: 0;
	color: var(--ve-slate-900);
	letter-spacing: -0.035em;
}

.ve-monitor-page h1 {
	max-width: 12ch;
	margin-bottom: 0;
	font-size: clamp(2.75rem, 5vw, 4.5rem);
	line-height: 1.02;
}

.ve-monitor-page h2 {
	margin-bottom: 1.5rem;
	font-size: clamp(2rem, 3.5vw, 2.5rem);
	line-height: 1.12;
}

.ve-monitor-page h3 {
	margin-top: 0;
	margin-bottom: 1rem;
	color: var(--ve-slate-900);
	font-size: clamp(1.35rem, 2vw, 1.6rem);
	line-height: 1.25;
	letter-spacing: -0.02em;
}

.ve-monitor-page p,
.ve-monitor-page ul,
.ve-monitor-page figure {
	margin-top: 0;
}

.ve-monitor-eyebrow,
.ve-monitor-kicker,
.ve-monitor-card-label {
	margin-bottom: 1rem;
	color: var(--ve-blue-600);
	font-size: 0.75rem;
	font-weight: 750;
	letter-spacing: 0.11em;
	text-transform: uppercase;
}

.ve-monitor-hero {
	padding-block: clamp(4rem, 9vw, 7.5rem);
	background: var(--ve-blue-700);
}

.ve-monitor-hero__grid,
.ve-monitor-feature,
.ve-monitor-contact__grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: clamp(3rem, 7vw, 6rem);
	align-items: center;
}

.ve-monitor-hero h1,
.ve-monitor-contact h2 {
	color: var(--ve-white);
}

.ve-monitor-hero__lead {
	padding: clamp(1.5rem, 3vw, 2.5rem);
	border: 1px solid rgba(255, 255, 255, 0.16);
	border-radius: var(--ve-radius-lg);
	background: rgba(255, 255, 255, 0.06);
}

.ve-monitor-hero__lead p,
.ve-monitor-contact p {
	margin-bottom: 0;
	color: #d9e5ee;
}

.ve-monitor-hero__lead p:first-child {
	color: var(--ve-white);
	font-size: clamp(1.2rem, 1.6vw, 1.35rem);
	line-height: 1.5;
}

.ve-monitor-hero__lead p + p {
	margin-top: 1rem;
}

.ve-monitor-video-section,
.ve-monitor-versions {
	background: var(--ve-blue-50);
}

.ve-monitor-video {
	position: relative;
	overflow: hidden;
	width: min(100%, 64rem);
	margin-inline: auto;
	padding-top: 56.25%;
	border: 1px solid var(--ve-slate-200);
	border-radius: var(--ve-radius-lg);
	background: var(--ve-blue-700);
	box-shadow: var(--ve-shadow-md);
}

.ve-monitor-video iframe {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	border: 0;
}

.ve-monitor-narrow {
	max-width: var(--ve-monitor-copy);
}

.ve-monitor-feature {
	margin-top: clamp(3rem, 7vw, 6rem);
}

.ve-monitor-media {
	overflow: hidden;
	margin-bottom: 0;
	border: 1px solid var(--ve-slate-200);
	border-radius: var(--ve-radius-lg);
	background: var(--ve-white);
	box-shadow: var(--ve-shadow-sm);
}

.ve-monitor-media img {
	display: block;
	width: 100%;
	height: auto;
}

.ve-monitor-checks {
	display: grid;
	gap: 0.75rem;
	padding-left: 1.25rem;
}

.ve-monitor-checks li::marker {
	color: var(--ve-blue-600);
}

.ve-monitor-privacy,
.ve-monitor-version-card,
.ve-monitor-energy {
	padding: clamp(1.5rem, 3vw, 2.25rem);
	border: 1px solid var(--ve-slate-200);
	border-radius: var(--ve-radius-lg);
	background: var(--ve-white);
	box-shadow: var(--ve-shadow-sm);
}

.ve-monitor-privacy {
	max-width: 58rem;
	margin: clamp(3rem, 7vw, 6rem) auto 0;
	border-left: 0.25rem solid var(--ve-blue-500);
}

.ve-monitor-privacy p:last-child,
.ve-monitor-version-card p:last-child,
.ve-monitor-energy {
	margin-bottom: 0;
}

.ve-monitor-version-grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	grid-auto-rows: 1fr;
	gap: 1.5rem;
	margin-top: 2.5rem;
}

.ve-monitor-version-card {
	border-top: 0.25rem solid var(--ve-blue-500);
}

.ve-monitor-version-card:nth-child(2) {
	border-top-color: var(--ve-blue-300);
}

.ve-monitor-version-card > p:first-child strong {
	display: block;
	margin-bottom: 1rem;
	color: var(--ve-slate-900);
	font-size: 1.35rem;
	font-weight: 750;
}

.ve-monitor-energy {
	margin-top: 1rem;
	background: var(--ve-blue-700);
	color: var(--ve-white);
}

.ve-monitor-contact {
	background: var(--ve-blue-700);
}

.ve-monitor-contact__grid {
	align-items: start;
}

.ve-monitor-contact__form {
	min-width: 0;
	padding: 2rem;
	border-radius: var(--ve-radius-lg);
	background: var(--ve-white);
	box-shadow: var(--ve-shadow-md);
}

.ve-monitor-funding {
	background: var(--ve-white);
}

.ve-monitor-funding > .ve-shell > p {
	max-width: 58rem;
	margin-inline: auto;
	text-align: center;
}

.ve-monitor-logo-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 2rem;
	align-items: center;
	max-width: 52rem;
	margin: 3rem auto 0;
}

.ve-monitor-logo-grid figure {
	display: grid;
	min-height: 9rem;
	margin-bottom: 0;
	place-items: center;
	padding: 1.5rem;
	border: 1px solid var(--ve-slate-200);
	border-radius: var(--ve-radius-md);
}

.ve-monitor-logo-grid img {
	display: block;
	max-width: 100%;
	max-height: 7rem;
	width: auto;
	height: auto;
}

@media (max-width: 64rem) {
	.ve-monitor-page * {
		min-width: 0;
	}

	.ve-monitor-hero__grid,
	.ve-monitor-feature,
	.ve-monitor-contact__grid {
		grid-template-columns: 1fr;
	}

	.ve-monitor-feature--image-left .ve-monitor-media {
		order: 2;
	}

	.ve-monitor-version-grid {
		grid-template-columns: 1fr;
		grid-auto-rows: auto;
	}
}

@media (max-width: 48rem) {
	.ve-monitor-page .ve-shell {
		width: min(calc(100% - 2rem), var(--ve-shell));
	}

	.ve-monitor-page h1 {
		font-size: 2.75rem;
	}

	.ve-monitor-page h2 {
		font-size: 2rem;
	}

	.ve-monitor-hero__grid,
	.ve-monitor-feature,
	.ve-monitor-contact__grid {
		gap: 2rem;
	}

	.ve-monitor-logo-grid {
		grid-template-columns: 1fr;
		gap: 1rem;
	}
}

html {
	scroll-behavior: smooth;
}

body {
	background: var(--ve-white);
	color: var(--ve-slate-900);
	font-family: var(--ve-font-base);
	font-size: 1rem;
	line-height: 1.65;
}

a {
	color: var(--ve-blue-600);
	text-underline-offset: 0.18em;
}

a:hover {
	color: var(--ve-blue-700);
}

a:focus-visible,
button:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible {
	outline: 0.1875rem solid var(--ve-blue-300);
	outline-offset: 0.1875rem;
}

.site-header {
	position: sticky;
	z-index: 100;
	top: 0;
	border-bottom: 1px solid var(--ve-slate-200);
	background: rgb(255 255 255 / 96%);
	box-shadow: var(--ve-shadow-sm);
}

.inside-header {
	max-width: var(--ve-shell);
	min-height: 5rem;
	padding: 0.75rem 1.5rem;
}

.site-logo img {
	width: auto;
	max-width: 10rem;
	height: auto;
}

.main-navigation,
.main-navigation ul ul {
	background: transparent;
}

.main-navigation .main-nav ul li a {
	min-height: 2.75rem;
	padding-inline: 0.875rem;
	color: var(--ve-slate-900);
	font-size: 0.875rem;
	font-weight: 650;
	line-height: 2.75rem;
}

.main-navigation .main-nav ul li:hover > a,
.main-navigation .main-nav ul li:focus-within > a,
.main-navigation .main-nav ul li[class*="current-menu-"] > a {
	background: transparent;
	color: var(--ve-blue-600);
}

.main-navigation ul ul {
	min-width: 17rem;
	border: 1px solid var(--ve-slate-200);
	border-radius: var(--ve-radius-md);
	background: var(--ve-white);
	box-shadow: var(--ve-shadow-md);
	overflow: hidden;
}

/* Il terzo livello («Strumenti per R&D») si apre a destra del secondo, come
 * vuole GeneratePress. Due pannelli da 17rem occupano 548 px, e fino a circa
 * 1300 px da «Soluzioni» al bordo destro ne restano meno (531 a 991 e a
 * 800 px): il terzo usciva dallo schermo. A sinistra non c'è più spazio (a
 * 800 px uscirebbe di 36 px), quindi si stringe il terzo livello, che ha solo
 * voci brevi: a 15rem resta dentro con 16 px di margine. */
.main-navigation ul ul ul {
	min-width: 15rem;
}

.main-navigation ul ul li a {
	min-height: 0;
	padding: 0.75rem 1rem;
	line-height: 1.4;
}

/* Le regole dinamiche di GeneratePress usano #site-navigation: manteniamo
 * questa stessa specificità per impedire testo bianco su fondo bianco. */
#site-navigation.main-navigation .main-nav ul ul li > a {
	background: var(--ve-white);
	color: var(--ve-slate-900);
}

#site-navigation.main-navigation .main-nav ul ul li:hover > a,
#site-navigation.main-navigation .main-nav ul ul li:focus-within > a,
#site-navigation.main-navigation .main-nav ul ul li[class*="current-menu-"] > a {
	background: var(--ve-blue-50);
	color: var(--ve-blue-700);
}

.main-navigation .main-nav ul li.menu-cta > a {
	margin-left: 0.5rem;
	border-radius: var(--ve-radius-sm);
	background: var(--ve-blue-500);
	color: var(--ve-white);
}

.main-navigation .main-nav ul li.menu-cta:hover > a,
.main-navigation .main-nav ul li.menu-cta:focus-within > a {
	background: var(--ve-blue-700);
	color: var(--ve-white);
}

.menu-toggle {
	min-height: 2.75rem;
	color: var(--ve-slate-900);
}

.main-navigation .menu-toggle,
.main-navigation .menu-toggle:hover,
.main-navigation .menu-toggle:focus {
	background: transparent;
	color: var(--ve-slate-900);
}

/* Viste a tutta larghezza (homepage e archivi di categoria): il contenitore
 * GeneratePress viene azzerato e le sezioni gestiscono da sole `.ve-shell`. */
.vision-e-full-bleed .site.grid-container,
.vision-e-full-bleed .site-content,
.vision-e-full-bleed .content-area,
.vision-e-full-bleed .site-main,
.vision-e-full-bleed .inside-article,
.vision-e-full-bleed .entry-content {
	width: 100%;
	max-width: none;
	margin: 0;
	padding: 0;
}

.ve-home *,
.ve-home *::before,
.ve-home *::after {
	box-sizing: border-box;
}

.ve-home h1,
.ve-home h2,
.ve-home h3 {
	margin-top: 0;
	color: var(--ve-slate-900);
	font-weight: 720;
	letter-spacing: -0.025em;
}

.ve-home h1 {
	max-width: 14ch;
	margin-bottom: 1.5rem;
	font-size: clamp(2.5rem, 5vw, 4.75rem);
	line-height: 1.02;
}

.ve-home h2 {
	margin-bottom: 1rem;
	font-size: clamp(2rem, 3.5vw, 2.5rem);
	line-height: 1.12;
}

.ve-intro__title {
	margin: 0 0 1rem;
	color: var(--ve-slate-900);
	font-size: clamp(2rem, 3.5vw, 2.5rem);
	font-weight: 720;
	letter-spacing: -0.025em;
	line-height: 1.12;
}

.ve-home h3 {
	margin-bottom: 0.5rem;
	font-size: 1.25rem;
	line-height: 1.25;
}

.ve-home p {
	margin-top: 0;
}

.ve-shell {
	width: min(calc(100% - 3rem), var(--ve-shell));
	margin-inline: auto;
}

.ve-section {
	padding-block: clamp(4rem, 8vw, 7rem);
}

.ve-section--soft {
	background: var(--ve-blue-50);
}

.ve-section--dark {
	background: var(--ve-blue-700);
	color: var(--ve-white);
}

.ve-section--dark h2,
.ve-section--dark h3 {
	color: var(--ve-white);
}

.ve-eyebrow {
	margin-bottom: 1rem;
	color: var(--ve-blue-600);
	font-size: 0.75rem;
	font-weight: 750;
	letter-spacing: 0.12em;
	line-height: 1.4;
	text-transform: uppercase;
}

.ve-section--dark .ve-eyebrow,
.ve-hero .ve-eyebrow {
	color: var(--ve-blue-50);
}

.ve-lead {
	max-width: var(--ve-prose);
	color: var(--ve-slate-700);
	font-size: 1.125rem;
	line-height: 1.7;
}

.ve-section--dark .ve-lead {
	color: #cbd6df;
}

/* Pagina controllo qualità manifatturiero. Il markup è nativo e mantiene la
 * stessa gerarchia H1/H2/H3 della versione Fusion, con una scala condivisa. */
.ve-quality-page *,
.ve-quality-page *::before,
.ve-quality-page *::after {
	box-sizing: border-box;
}

.ve-quality-page h1,
.ve-quality-page h2,
.ve-quality-page h3 {
	margin-top: 0;
	color: var(--ve-slate-900);
	font-weight: 720;
	letter-spacing: -0.025em;
}

.ve-quality-page h2 {
	margin-bottom: 1rem;
	font-size: clamp(2rem, 3.5vw, 2.5rem);
	line-height: 1.12;
	text-wrap: balance;
}

.ve-quality-page .ve-section--dark h2,
.ve-quality-page .ve-section--dark h3 {
	color: var(--ve-white);
}

.ve-quality-page p {
	margin-top: 0;
}

.ve-quality-hero {
	padding-block: clamp(4rem, 8vw, 7rem);
	background: var(--ve-blue-700);
	color: var(--ve-white);
}

.ve-quality-hero__grid {
	display: grid;
	grid-template-columns: minmax(0, 1.15fr) minmax(20rem, 0.85fr);
	gap: 4rem;
	align-items: end;
}

.ve-quality-hero__accent {
	width: 4rem;
	height: 0.25rem;
	margin-bottom: 1.5rem;
	background: var(--ve-blue-300);
}

.ve-quality-hero h1 {
	max-width: 18ch;
	margin-bottom: 0;
	color: var(--ve-white);
	font-size: clamp(2.5rem, 5vw, 4.5rem);
	line-height: 1.04;
	text-wrap: balance;
}

.ve-quality-hero__intro {
	padding-left: 1.5rem;
	border-left: 0.25rem solid var(--ve-blue-500);
}

.ve-quality-hero__intro p {
	max-width: var(--ve-prose);
	margin-bottom: 0;
	color: #d9e5ee;
	font-size: 1.125rem;
	line-height: 1.7;
}

.ve-quality-hero__intro strong {
	color: var(--ve-white);
}

.ve-quality-section-heading {
	max-width: 52rem;
	margin-bottom: 3rem;
}

.ve-quality-section-heading .ve-lead {
	margin-bottom: 0;
}

.ve-quality-check-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	grid-auto-rows: 1fr;
	gap: 1.5rem;
}

.ve-quality-check {
	display: flex;
	min-height: 11rem;
	padding: 2rem;
	border: 1px solid var(--ve-slate-200);
	border-top: 0.25rem solid var(--ve-blue-500);
	border-radius: var(--ve-radius-md);
	background: var(--ve-white);
	box-shadow: var(--ve-shadow-sm);
	flex-direction: column;
	justify-content: space-between;
}

.ve-quality-check__icon {
	color: var(--ve-blue-600);
	font-size: 0.75rem;
	font-weight: 750;
	letter-spacing: 0.1em;
}

.ve-quality-check h3 {
	max-width: 16ch;
	margin-bottom: 0;
	font-size: 1.5rem;
	line-height: 1.2;
}

.ve-quality-story {
	display: grid;
	grid-template-columns: minmax(16rem, 0.8fr) minmax(0, 1.2fr);
	gap: 4rem;
	align-items: start;
}

.ve-quality-story__heading {
	position: sticky;
	top: 7.5rem;
}

/* Alcune pagine settore hanno un blocco di testo che nella versione Fusion non
 * aveva alcun titolo di sezione: senza la colonna del titolo resta una colonna
 * sola, centrata sulla misura di lettura. */
.ve-quality-story--solo {
	grid-template-columns: minmax(0, 1fr);
	justify-items: center;
}

.ve-quality-story__copy {
	max-width: var(--ve-prose);
	color: var(--ve-slate-700);
	font-size: 1.0625rem;
	line-height: 1.75;
}

.ve-quality-story__copy p {
	margin-bottom: 1.5rem;
}

.ve-quality-story__copy p:last-child {
	margin-bottom: 0;
}

.ve-quality-story__copy strong {
	color: var(--ve-slate-900);
}

/* Gli elenchi dentro il testo di sezione: la manifatturiero non ne ha, le altre
 * pagine settore sì. Il marcatore prende il blu del tema, il rientro resta
 * dentro la misura di lettura. */
.ve-quality-story__copy ol,
.ve-quality-story__copy ul {
	margin: 0 0 1.5rem;
	padding-left: 1.5rem;
}

.ve-quality-story__copy li {
	margin-bottom: 0.5rem;
}

.ve-quality-story__copy li:last-child {
	margin-bottom: 0;
}

.ve-quality-story__copy li::marker {
	color: var(--ve-blue-600);
	font-weight: 700;
}

/* Sottotitolo dentro il testo di sezione: sta sotto l'H2 della colonna di
 * sinistra, quindi scende di corpo invece di ripeterne la scala. */
.ve-quality-story__copy h3 {
	margin: 2.5rem 0 1rem;
	font-size: 1.375rem;
	line-height: 1.25;
}

.ve-quality-story__copy > h3:first-child {
	margin-top: 0;
}

/* Elenco con la spunta al posto del punto elenco: sostituisce i paragrafi che
 * in Fusion andavano a capo con l'emoji ✅. Il segno lo disegna il CSS, le
 * parole restano quelle. */
.ve-quality-page .ve-quality-check-list {
	margin: 0 0 1.5rem;
	padding-left: 0;
	list-style: none;
}

.ve-quality-page .ve-quality-check-list li {
	position: relative;
	padding-left: 2rem;
}

.ve-quality-page .ve-quality-check-list li::before {
	position: absolute;
	top: 0.4375em;
	left: 0.5rem;
	width: 0.375rem;
	height: 0.6875rem;
	border-right: 0.125rem solid var(--ve-blue-500);
	border-bottom: 0.125rem solid var(--ve-blue-500);
	content: "";
	transform: rotate(45deg);
}

/* Video di un sistema al lavoro, sotto il testo di una sezione, con la
 * didascalia. Parte solo al clic, su youtube-nocookie e dietro al consenso
 * Complianz, come quello di Monitoraggio AI. Complianz lascia l'iframe al suo
 * posto, quindi il 16:9 sta sull'iframe stesso. Oggi lo usa la Biomedicale. */
.ve-quality-video {
	margin-top: clamp(3rem, 6vw, 4.5rem);
	margin-bottom: 0;
}

.ve-quality-video__frame,
.ve-quality-video figcaption {
	width: min(100%, 64rem);
	margin-inline: auto;
}

.ve-quality-video__frame {
	border-radius: var(--ve-radius-lg);
	background: var(--ve-blue-700);
	box-shadow: var(--ve-shadow-md);
	overflow: hidden;
}

.ve-quality-video__frame iframe {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 16 / 9;
	border: 0;
}

.ve-quality-video figcaption {
	margin-top: 1rem;
	color: var(--ve-slate-600);
	font-size: 0.9375rem;
	line-height: 1.6;
}

.ve-quality-benefit-grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 1.5rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.ve-quality-benefit-grid li {
	display: grid;
	grid-template-columns: 2.5rem minmax(0, 1fr);
	gap: 1rem;
	align-items: start;
	padding: 2rem;
	border: 1px solid rgb(255 255 255 / 12%);
	border-radius: var(--ve-radius-md);
	background: var(--ve-blue-700);
}

.ve-quality-benefit-grid li > span {
	display: inline-grid;
	width: 2.5rem;
	height: 2.5rem;
	place-items: center;
	border-radius: 999px;
	background: var(--ve-blue-50);
	color: var(--ve-blue-700);
}

.ve-quality-benefit-grid p {
	margin-bottom: 0;
	color: #cbd6df;
	font-size: 1rem;
	line-height: 1.65;
}

.ve-quality-benefit-grid strong {
	color: var(--ve-white);
	font-weight: 700;
}

/* Con un numero dispari di vantaggi l'ultima card occupa la riga intera invece
 * di lasciare mezza colonna vuota. */
.ve-quality-benefit-grid > li:last-child:nth-child(odd) {
	grid-column: 1 / -1;
}

/* Chiusura discorsiva della fascia scura, dopo la griglia dei vantaggi. */
.ve-quality-benefits__outro {
	max-width: var(--ve-prose);
	margin: 3rem 0 0;
	color: #cbd6df;
	font-size: 1.0625rem;
	line-height: 1.7;
}

.ve-quality-benefits__outro strong {
	color: var(--ve-white);
	font-weight: 700;
}

/* La chiusura può essere un paragrafo solo o un blocco con il suo sottotitolo. */
.ve-quality-benefits__outro h3 {
	margin-bottom: 0.75rem;
	font-size: 1.375rem;
	line-height: 1.25;
}

.ve-quality-benefits__outro p {
	margin-bottom: 1.25rem;
	color: inherit;
	font-size: inherit;
	line-height: inherit;
}

.ve-quality-benefits__outro p:last-child {
	margin-bottom: 0;
}

.ve-quality-benefits__outro a {
	color: var(--ve-blue-50);
}

.ve-quality-benefits__outro a:hover {
	color: var(--ve-white);
}

/* Stessa spunta delle liste, dentro le card dei vantaggi: prende il posto del
 * numero d'ordine quando la versione Fusion elencava con l'emoji ✅. */
.ve-quality-tick {
	display: flex;
	width: 1.75rem;
	height: 1.75rem;
	border-radius: 50%;
	background: rgb(248 181 38 / 16%);
	align-items: center;
	justify-content: center;
}

.ve-quality-tick::before {
	width: 0.4375rem;
	height: 0.75rem;
	margin-top: -0.1875rem;
	border-right: 0.125rem solid var(--ve-blue-300);
	border-bottom: 0.125rem solid var(--ve-blue-300);
	content: "";
	transform: rotate(45deg);
}

.ve-quality-contact {
	background: var(--ve-slate-100);
}

.ve-quality-contact__grid {
	display: grid;
	grid-template-columns: minmax(16rem, 0.75fr) minmax(0, 1.25fr);
	gap: 4rem;
	align-items: start;
}

.ve-quality-contact__copy {
	max-width: 29rem;
	padding-top: 1rem;
}

.ve-quality-contact__copy p {
	color: var(--ve-slate-700);
	font-size: 1.0625rem;
	line-height: 1.7;
}

.ve-quality-contact__copy strong {
	color: var(--ve-slate-900);
}

.ve-quality-contact__form {
	min-width: 0;
	padding: 2rem;
	border: 1px solid var(--ve-slate-200);
	border-radius: var(--ve-radius-lg);
	background: var(--ve-white);
	box-shadow: var(--ve-shadow-md);
}

.ve-hero {
	position: relative;
	isolation: isolate;
	overflow: hidden;
	background: var(--ve-blue-700);
	color: var(--ve-white);
}

.ve-hero::before {
	position: absolute;
	z-index: -1;
	inset: 0;
	background:
		linear-gradient(rgb(255 255 255 / 4%) 1px, transparent 1px),
		linear-gradient(90deg, rgb(255 255 255 / 4%) 1px, transparent 1px),
		radial-gradient(circle at 78% 18%, rgb(31 116 192 / 42%), transparent 30%);
	background-size: 4rem 4rem, 4rem 4rem, auto;
	content: "";
}

.ve-hero__grid {
	display: grid;
	grid-template-columns: minmax(0, 1.05fr) minmax(24rem, 0.95fr);
	gap: clamp(3rem, 7vw, 6rem);
	align-items: center;
	min-height: min(48rem, calc(100vh - 5rem));
	padding-block: clamp(4rem, 8vw, 7rem);
}

.ve-hero h1 {
	color: var(--ve-white);
}

.ve-hero__copy > p:not(.ve-eyebrow) {
	max-width: 39rem;
	color: #cbd6df;
	font-size: 1.125rem;
	line-height: 1.7;
}

.ve-actions {
	display: flex;
	flex-wrap: wrap;
	gap: 1rem;
	align-items: center;
	margin-top: 2rem;
}

.ve-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 3rem;
	padding: 0.75rem 1.25rem;
	border: 2px solid transparent;
	border-radius: var(--ve-radius-sm);
	background: var(--ve-blue-500);
	color: var(--ve-white);
	font-size: 0.9375rem;
	font-weight: 750;
	line-height: 1.2;
	text-decoration: none;
	box-shadow: var(--ve-shadow-sm);
}

.ve-button:hover {
	background: var(--ve-blue-700);
	color: var(--ve-white);
}

.ve-button--secondary {
	border-color: rgb(255 255 255 / 42%);
	background: transparent;
	color: var(--ve-white);
	box-shadow: none;
}

.ve-button--secondary:hover {
	border-color: var(--ve-white);
	background: rgb(255 255 255 / 8%);
	color: var(--ve-white);
}

.ve-hero__visual {
	position: relative;
	margin: 0;
}

.ve-hero__visual::before {
	position: absolute;
	z-index: -1;
	top: -1.5rem;
	right: -1.5rem;
	width: 9rem;
	height: 9rem;
	border: 0.75rem solid var(--ve-blue-300);
	content: "";
}

.ve-hero__visual img {
	display: block;
	width: 100%;
	aspect-ratio: 4 / 3;
	border-radius: var(--ve-radius-lg);
	object-fit: cover;
	box-shadow: 0 2rem 5rem rgb(0 0 0 / 28%);
}

.ve-proof {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 1px;
	border-top: 1px solid rgb(255 255 255 / 14%);
	background: rgb(255 255 255 / 14%);
}

.ve-proof__item {
	padding: 1.5rem;
	background: var(--ve-blue-700);
	text-align: center;
}

.ve-proof__value {
	display: block;
	color: var(--ve-white);
	font-size: 1.375rem;
	font-weight: 750;
	line-height: 1.2;
}

.ve-proof__label {
	display: block;
	margin-top: 0.25rem;
	color: #cbd6df;
	font-size: 0.8125rem;
}

/* Separatore dei due percorsi, subito dopo la hero: una scheda per chi produce
 * e una per chi costruisce macchine. Hanno lo stesso peso, quindi stessa
 * altezza e pulsante allineato in fondo; affiancate solo da 64rem in su. */
.ve-paths__grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 1.5rem;
	margin-top: 3rem;
}

.ve-path {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	padding: 2rem;
	border: 1px solid var(--ve-slate-200);
	border-radius: var(--ve-radius-md);
	background: var(--ve-white);
	box-shadow: var(--ve-shadow-sm);
}

.ve-path__icon {
	margin-bottom: 1.5rem;
}

.ve-home .ve-path h3 {
	margin-bottom: 1rem;
	font-size: 1.5rem;
}

/* Impilate sotto 64rem le schede arrivano a tutta la larghezza del guscio: il
 * testo resta sulla misura di lettura. */
.ve-path > p,
.ve-path__list {
	max-width: var(--ve-prose);
}

.ve-path > p {
	color: var(--ve-slate-700);
	font-size: 1.0625rem;
	line-height: 1.7;
}

.ve-path__list {
	display: grid;
	gap: 0.75rem;
	margin: 0.5rem 0 2rem;
	padding: 0;
	list-style: none;
}

.ve-path__list li {
	position: relative;
	padding-left: 2rem;
	color: var(--ve-slate-700);
	font-size: 1.0625rem;
	line-height: 1.7;
}

/* La stessa spunta degli elenchi delle pagine settore. */
.ve-path__list li::before {
	position: absolute;
	top: 0.4em;
	left: 0.5rem;
	width: 0.375rem;
	height: 0.6875rem;
	border-right: 0.125rem solid var(--ve-blue-500);
	border-bottom: 0.125rem solid var(--ve-blue-500);
	content: "";
	transform: rotate(45deg);
}

.ve-path .ve-button {
	margin-top: auto;
}

.ve-intro {
	display: grid;
	grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr);
	gap: clamp(3rem, 8vw, 7rem);
	align-items: start;
}

/* I limiti del controllo manuale: un elenco di problemi, quindi un trattino
 * neutro invece della spunta dei vantaggi. */
.ve-home .ve-intro__list-lead {
	margin-bottom: 0.75rem;
}

.ve-intro__list {
	display: grid;
	gap: 0.5rem;
	max-width: var(--ve-prose);
	margin: 0 0 1.5rem;
	padding: 0;
	list-style: none;
}

.ve-intro__list li {
	position: relative;
	padding-left: 1.75rem;
	color: var(--ve-slate-700);
	font-size: 1.0625rem;
	line-height: 1.7;
}

.ve-intro__list li::before {
	position: absolute;
	top: 0.8em;
	left: 0.25rem;
	width: 0.75rem;
	height: 0.125rem;
	background: var(--ve-slate-600);
	content: "";
}

.ve-intro a {
	color: var(--ve-blue-600);
	text-decoration: underline;
	text-underline-offset: 0.18em;
}

/* Rimando alla pagina del controllo qualità industriale, fuori dalla risposta
 * breve che apre la sezione. */
.ve-intro__more {
	margin: 0;
	font-size: 1.0625rem;
}

.ve-intro__more a {
	font-weight: 700;
}

.ve-grid {
	display: grid;
	gap: 1.5rem;
}

.ve-grid--three {
	grid-template-columns: repeat(3, minmax(0, 1fr));
}

.ve-benefits {
	margin-top: 3rem;
	grid-auto-rows: 1fr;
	align-items: stretch;
}

.ve-card {
	position: relative;
	display: flex;
	flex-direction: column;
	min-height: 28rem;
	padding: 2rem;
	border: 1px solid var(--ve-slate-200);
	border-radius: var(--ve-radius-md);
	background: var(--ve-white);
	box-shadow: var(--ve-shadow-sm);
}

.ve-card__icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 2rem;
	height: 2rem;
	margin-bottom: 1.5rem;
	border-radius: 999px;
	background: var(--ve-blue-50);
	color: var(--ve-blue-700);
	font-size: 0.75rem;
	font-weight: 750;
}

/* Titolo H3 e descrizione in paragrafo: l'altezza minima del titolo allinea le
 * descrizioni delle card sulla stessa riga. */
.ve-home .ve-card__title {
	min-height: 11.25rem;
	margin-bottom: 0;
	font-size: 2.5rem;
	line-height: 1.12;
}

.ve-home .ve-card__text {
	margin: 0.5rem 0 0;
	color: var(--ve-slate-700);
	font-size: 1.0625rem;
	line-height: 1.7;
}

.ve-sector-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 1rem;
	margin: 3rem 0 0;
	padding: 0;
	list-style: none;
}

.ve-sector-grid a {
	display: flex;
	align-items: center;
	gap: 1rem;
	min-height: 5rem;
	padding: 1rem 1.5rem;
	border: 1px solid var(--ve-slate-200);
	border-radius: var(--ve-radius-md);
	background: var(--ve-white);
	color: var(--ve-slate-900);
	font-weight: 700;
	text-decoration: none;
	box-shadow: var(--ve-shadow-sm);
}

/* Icona · nome · freccia: la freccia resta sul bordo destro. */
.ve-sector-grid a::after {
	margin-left: auto;
	color: var(--ve-blue-500);
	font-size: 1.25rem;
	content: "→";
}

.ve-sector-grid a:hover {
	border-color: var(--ve-blue-500);
	color: var(--ve-blue-700);
	box-shadow: var(--ve-shadow-md);
}

.ve-solutions {
	margin-top: 3rem;
}

.ve-solution {
	display: flex;
	flex-direction: column;
	padding: 2rem;
	border: 1px solid rgb(255 255 255 / 16%);
	border-radius: var(--ve-radius-md);
	background: rgb(255 255 255 / 5%);
}

/* Foto in testa alla scheda, dentro il bordo come le competenze di Chi siamo.
 * 16:9 è il formato di NEMOS, che ha il logo nell'angolo in basso a destra: il
 * 3:2 delle competenze lo taglierebbe. Le altre due perdono solo le fasce in
 * alto e in basso. */
.ve-solution__media {
	margin: 0 0 1.5rem;
	overflow: hidden;
	border-radius: var(--ve-radius-sm);
	aspect-ratio: 16 / 9;
}

.ve-solution__media img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.ve-solution__tag {
	color: var(--ve-blue-50);
	font-size: 0.75rem;
	font-weight: 750;
	letter-spacing: 0.12em;
	line-height: 1.4;
	text-transform: uppercase;
}

.ve-solution h3 {
	margin: 0.75rem 0 1rem;
	font-size: 1.5rem;
}

.ve-solution p {
	color: #cbd6df;
	font-size: 1.0625rem;
	line-height: 1.7;
}

/* Il link scende in fondo: nelle schede affiancate resta sulla stessa riga
 * anche quando un testo è più corto. */
.ve-solution a {
	margin-top: auto;
	color: var(--ve-white);
	font-weight: 700;
}

/* A due colonne la terza scheda resterebbe sola nella seconda riga: prende
 * tutta la riga, con la foto a sinistra e il testo a destra. Lo spazio fra le
 * due colonne interne è quello fra due schede più padding e bordi, così foto e
 * testo cominciano dove cominciano i contenuti delle due schede sopra. */
@media (min-width: 48.0625rem) and (max-width: 64rem) {
	.ve-solutions > .ve-solution:last-child:nth-child(odd) {
		display: grid;
		grid-column: 1 / -1;
		grid-template-columns: repeat(2, minmax(0, 1fr));
		grid-template-rows: auto auto auto 1fr;
		column-gap: calc(5.5rem + 2px);
	}

	.ve-solutions > .ve-solution:last-child:nth-child(odd) .ve-solution__media {
		grid-column: 1;
		grid-row: 1 / -1;
		align-self: start;
		margin: 0;
	}
}

.ve-contact {
	display: grid;
	grid-template-columns: minmax(0, 1.15fr) minmax(18rem, 0.85fr);
	gap: clamp(2rem, 8vw, 7rem);
	align-items: center;
}

.ve-contact__panel {
	padding: 2rem;
	border-radius: var(--ve-radius-lg);
	background: var(--ve-blue-700);
	color: var(--ve-white);
}

.ve-contact__panel a {
	color: var(--ve-white);
	font-size: 1.125rem;
	font-weight: 700;
}

.ve-contact__label {
	margin: 0.75rem 0 0.125rem;
	color: #d9ecfa;
	font-size: 0.75rem;
	font-weight: 750;
	letter-spacing: 0.12em;
	line-height: 1.4;
	text-transform: uppercase;
}

.ve-footer-main {
	padding-block: 3rem;
	background: var(--ve-blue-700);
	color: #cbd6df;
}

.ve-footer-main__grid {
	display: grid;
	grid-template-columns: 1.3fr 1fr 1fr;
	gap: 3rem;
}

.ve-footer-main img {
	width: auto;
	max-width: 11rem;
	height: auto;
	margin-bottom: 1rem;
}

.ve-footer-main__heading {
	margin: 0 0 1rem;
	color: var(--ve-white);
	font-size: 0.75rem;
	font-weight: 750;
	letter-spacing: 0.1em;
	text-transform: uppercase;
}

.ve-footer-main p,
.ve-footer-main ul {
	margin: 0;
	font-size: 0.875rem;
}

.ve-footer-main ul {
	padding: 0;
	list-style: none;
}

.ve-footer-main li + li {
	margin-top: 0.5rem;
}

.ve-footer-main a {
	color: var(--ve-white);
}

.site-info {
	padding-block: 1rem;
	background: var(--ve-blue-700);
	color: #aebdca;
	font-size: 0.75rem;
}

.site-info a {
	color: var(--ve-white);
}

/* Titolo degli articoli: sostituisce la "Page Title Bar" del Layout Avada
 * (sezione 4513), che Fusion renderizza solo con il tema Avada. */
.ve-post-hero {
	background: var(--ve-blue-700);
	color: var(--ve-white);
	text-align: center;
}

.ve-post-hero__inner {
	padding-block: clamp(3rem, 6vw, 5rem);
}

.ve-post-hero .ve-post-hero__title {
	max-width: 52rem;
	margin: 0 auto;
	color: var(--ve-white);
	font-size: clamp(1.75rem, 1.25rem + 2vw, 2.75rem);
	font-weight: 750;
	letter-spacing: -0.01em;
	line-height: 1.2;
	text-wrap: balance;
}

/* Archivi di categoria: testata a tutta larghezza e articoli in card.
 * La struttura è quella nativa di GeneratePress (page-header, article,
 * inside-article), riorganizzata dagli hook in functions.php. */
.vision-e-archive .page-header,
.vision-e-blog .ve-blog-head {
	margin: 0;
	padding-block: clamp(2.5rem, 5vw, 4rem) clamp(2rem, 4vw, 3rem);
	border-bottom: 1px solid var(--ve-blue-100);
	background: var(--ve-blue-50);
}

.vision-e-archive .page-header .ve-eyebrow,
.vision-e-blog .ve-blog-head .ve-eyebrow {
	margin: 0 0 1rem;
}

.vision-e-archive .page-title,
.vision-e-blog .ve-blog-head h1 {
	max-width: 28ch;
	margin: 0 0 1rem;
	color: var(--ve-slate-900);
	font-size: clamp(2rem, 3.5vw, 2.75rem);
	font-weight: 720;
	letter-spacing: -0.025em;
	line-height: 1.1;
	text-wrap: balance;
}

.vision-e-archive .taxonomy-description,
.vision-e-blog .ve-blog-head__intro {
	max-width: var(--ve-prose);
	color: var(--ve-slate-700);
	font-size: 1.125rem;
	line-height: 1.7;
}

.vision-e-archive .taxonomy-description p,
.vision-e-blog .ve-blog-head__intro p {
	margin: 0;
}

.ve-cat-nav {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	margin-top: 1.75rem;
}

.ve-cat-nav a {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	min-height: 2.25rem;
	padding: 0.375rem 0.875rem;
	border: 1px solid var(--ve-slate-200);
	border-radius: 999px;
	background: var(--ve-white);
	color: var(--ve-slate-700);
	font-size: 0.875rem;
	font-weight: 600;
	text-decoration: none;
}

.ve-cat-nav a span {
	color: var(--ve-slate-600);
	font-variant-numeric: tabular-nums;
	font-weight: 500;
}

.ve-cat-nav a:hover {
	border-color: var(--ve-blue-500);
	color: var(--ve-blue-700);
}

.ve-cat-nav a.is-current {
	border-color: var(--ve-blue-500);
	background: var(--ve-blue-500);
	color: var(--ve-white);
}

.ve-cat-nav a.is-current span {
	color: rgb(255 255 255 / 80%);
}

.ve-post-cards {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 18rem), 1fr));
	gap: 2rem;
	padding-block: clamp(2.5rem, 5vw, 4rem) clamp(4rem, 8vw, 6rem);
}

.ve-post-cards > article {
	display: flex;
	flex-direction: column;
	margin: 0;
	overflow: hidden;
	border: 1px solid var(--ve-slate-200);
	border-radius: var(--ve-radius-lg);
	background: var(--ve-white);
	box-shadow: var(--ve-shadow-sm);
	transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
}

.ve-post-cards > article:hover,
.ve-post-cards > article:focus-within {
	border-color: var(--ve-blue-100);
	box-shadow: var(--ve-shadow-md);
	transform: translateY(-3px);
}

.ve-post-cards .inside-article {
	display: flex;
	flex: 1;
	flex-direction: column;
	padding: 0;
}

.ve-post-cards .paging-navigation {
	grid-column: 1 / -1;
}

.ve-post-cards .post-image {
	margin: 0;
}

.ve-post-card__media {
	display: block;
	aspect-ratio: 4 / 3;
	max-width: 100%;
	overflow: hidden;
	background: var(--ve-slate-100);
}

.ve-post-card__media a {
	display: block;
	height: 100%;
}

.ve-post-card__media img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 0.35s ease;
}

.ve-post-cards > article:hover .ve-post-card__media img {
	transform: scale(1.03);
}

/* Segnaposto per gli articoli senza immagine in evidenza: cornice di ispezione
 * sulla stessa griglia dell'hero, con il nome della categoria. */
.ve-post-card__media--placeholder a {
	position: relative;
	display: grid;
	place-items: center;
	isolation: isolate;
	background: var(--ve-blue-700) radial-gradient(circle at 72% 22%, rgb(31 116 192 / 48%), transparent 46%);
}

.ve-post-card__media--placeholder a::before {
	position: absolute;
	z-index: -1;
	inset: 0;
	background:
		linear-gradient(rgb(255 255 255 / 5%) 1px, transparent 1px),
		linear-gradient(90deg, rgb(255 255 255 / 5%) 1px, transparent 1px);
	background-size: 2rem 2rem;
	content: "";
}

.ve-post-card__reticle {
	--ve-reticle-length: 1.25rem;
	--ve-reticle-thickness: 2px;
	position: relative;
	width: 44%;
	aspect-ratio: 4 / 3;
	background:
		linear-gradient(var(--ve-blue-300), var(--ve-blue-300)) left top / var(--ve-reticle-length) var(--ve-reticle-thickness) no-repeat,
		linear-gradient(var(--ve-blue-300), var(--ve-blue-300)) left top / var(--ve-reticle-thickness) var(--ve-reticle-length) no-repeat,
		linear-gradient(var(--ve-blue-300), var(--ve-blue-300)) right top / var(--ve-reticle-length) var(--ve-reticle-thickness) no-repeat,
		linear-gradient(var(--ve-blue-300), var(--ve-blue-300)) right top / var(--ve-reticle-thickness) var(--ve-reticle-length) no-repeat,
		linear-gradient(var(--ve-blue-300), var(--ve-blue-300)) left bottom / var(--ve-reticle-length) var(--ve-reticle-thickness) no-repeat,
		linear-gradient(var(--ve-blue-300), var(--ve-blue-300)) left bottom / var(--ve-reticle-thickness) var(--ve-reticle-length) no-repeat,
		linear-gradient(var(--ve-blue-300), var(--ve-blue-300)) right bottom / var(--ve-reticle-length) var(--ve-reticle-thickness) no-repeat,
		linear-gradient(var(--ve-blue-300), var(--ve-blue-300)) right bottom / var(--ve-reticle-thickness) var(--ve-reticle-length) no-repeat;
}

.ve-post-card__reticle::after {
	position: absolute;
	top: 50%;
	left: 50%;
	width: 0.5rem;
	height: 0.5rem;
	border: 1px solid rgb(255 255 255 / 65%);
	border-radius: 50%;
	transform: translate(-50%, -50%);
	content: "";
}

.ve-post-card__label {
	position: absolute;
	bottom: 0.875rem;
	left: 1rem;
	color: rgb(255 255 255 / 72%);
	font-size: 0.6875rem;
	font-weight: 750;
	letter-spacing: 0.12em;
	text-transform: uppercase;
}

.ve-post-cards .entry-header {
	display: flex;
	flex-direction: column;
	gap: 0.625rem;
	margin: 0;
	padding: 1.375rem 1.5rem 0;
}

.ve-post-cards .entry-meta {
	order: -1;
	margin: 0;
	color: var(--ve-slate-600);
	font-size: 0.8125rem;
	font-variant-numeric: tabular-nums;
	letter-spacing: 0.02em;
	line-height: 1.4;
}

.ve-post-cards .entry-title {
	margin: 0;
	font-size: 1.1875rem;
	font-weight: 720;
	letter-spacing: -0.015em;
	line-height: 1.3;
	text-wrap: balance;
}

.ve-post-cards .entry-title a {
	color: var(--ve-slate-900);
	text-decoration: none;
}

.ve-post-cards .entry-title a:hover {
	color: var(--ve-blue-700);
	text-decoration: underline;
}

.ve-post-cards .entry-summary {
	margin: 0.625rem 0 0;
	padding-inline: 1.5rem;
}

.ve-post-cards .entry-summary p {
	display: -webkit-box;
	margin: 0;
	overflow: hidden;
	color: var(--ve-slate-700);
	font-size: 0.9375rem;
	line-height: 1.6;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 3;
}

.ve-post-card__more {
	align-self: flex-start;
	margin-top: auto;
	padding: 1.125rem 1.5rem 1.5rem;
	color: var(--ve-blue-600);
	font-size: 0.9375rem;
	font-weight: 700;
	text-decoration: none;
}

.ve-post-card__more:hover {
	color: var(--ve-blue-700);
	text-decoration: underline;
}

.ve-post-card__more span {
	display: inline-block;
	margin-left: 0.35rem;
	transition: transform 0.2s ease;
}

.ve-post-cards > article:hover .ve-post-card__more span {
	transform: translateX(3px);
}

/* Pagina Blog: stessa testata degli archivi e una sezione di card per categoria.
 * Il titolo è lungo perché è anche il titolo SEO della pagina: corpo più
 * contenuto e riga di misura maggiore rispetto al nome di una categoria. */
.vision-e-blog .ve-blog-head h1 {
	max-width: 34ch;
	font-size: clamp(1.75rem, 2.8vw, 2.375rem);
	line-height: 1.15;
}

/* L'immagine in evidenza della pagina, che compariva anche nella versione Avada,
 * diventa una fascia contenuta sopra la testata invece di un blocco alto quanto
 * l'originale. */
.vision-e-blog .featured-image.page-header-image {
	width: 100%;
	max-width: none;
	margin: 0;
	padding: 0;
}

.vision-e-blog .featured-image.page-header-image img {
	display: block;
	width: 100%;
	height: clamp(11rem, 26vw, 20rem);
	object-fit: cover;
}

.vision-e-blog .ve-blog-section {
	padding-block: clamp(2.5rem, 5vw, 3.5rem) 0;
}

.vision-e-blog .ve-blog-section:last-child {
	padding-bottom: clamp(4rem, 8vw, 6rem);
}

.vision-e-blog .ve-blog-section h2 {
	margin: 0;
	color: var(--ve-slate-900);
	font-size: clamp(1.5rem, 2.4vw, 2rem);
	font-weight: 720;
	letter-spacing: -0.02em;
	line-height: 1.2;
	text-wrap: balance;
}

/* Qui la griglia sta dentro una sezione che porta già il proprio respiro. */
.vision-e-blog .ve-post-cards {
	padding-block: 1.75rem 0;
}

@media (max-width: 64rem) {
	.ve-home * {
		min-width: 0;
	}

	.ve-quality-page * {
		min-width: 0;
	}

	.ve-quality-hero__grid,
	.ve-quality-story,
	.ve-quality-contact__grid {
		grid-template-columns: 1fr;
	}

	.ve-quality-story__heading {
		position: static;
	}

	.ve-quality-check-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.ve-hero__grid,
	.ve-intro,
	.ve-contact {
		grid-template-columns: 1fr;
	}

	.ve-hero__grid {
		min-height: 0;
	}

	.ve-hero__visual {
		width: min(100%, 44rem);
	}

	.ve-grid--three,
	.ve-sector-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.ve-paths__grid {
		grid-template-columns: 1fr;
	}
}

@media (max-width: 48rem) {
	.inside-header {
		position: relative;
		display: flex;
		flex-wrap: nowrap;
		gap: 1rem;
		align-items: center;
		justify-content: space-between;
		min-height: 4.5rem;
		padding-inline: 1rem;
	}

	.site-logo {
		flex: 0 1 auto;
		margin: 0;
	}

	.site-logo img {
		width: 8.75rem;
		max-width: 100%;
	}

	.main-navigation {
		position: static;
		flex: 0 0 auto;
		width: auto;
		margin-left: auto;
	}

	.main-navigation .menu-toggle {
		display: inline-flex;
		align-items: center;
		justify-content: center;
		width: auto;
		height: 2.75rem;
		min-height: 2.75rem;
		padding: 0.5rem 1rem;
		border: 1px solid var(--ve-slate-200);
		border-radius: var(--ve-radius-sm);
		line-height: 1;
	}

	.main-navigation.toggled .main-nav {
		box-sizing: border-box;
		position: fixed;
		z-index: 99;
		top: 6.375rem;
		right: auto;
		left: 0;
		width: 100%;
		max-height: calc(100dvh - 6.375rem);
		padding: 0.5rem 1rem 1rem;
		border-top: 1px solid var(--ve-slate-200);
		background: var(--ve-white);
		box-shadow: var(--ve-shadow-md);
		overflow-y: auto;
	}

	.main-navigation.toggled .main-nav * {
		box-sizing: border-box;
	}

	.main-navigation .main-nav ul li.menu-cta > a {
		margin: 0;
		border-radius: 0;
	}

	.ve-shell {
		width: min(calc(100% - 2rem), var(--ve-shell));
	}

	.ve-section {
		padding-block: 4rem;
	}

	.ve-hero__grid {
		gap: 3rem;
		padding-block: 3.5rem;
	}

	.ve-hero h1 {
		max-width: 100%;
		font-size: clamp(2.25rem, 10.5vw, 3.25rem);
	}

	.ve-actions {
		display: grid;
		grid-template-columns: 1fr;
	}

	.ve-button {
		width: 100%;
	}

	.ve-proof,
	.ve-grid--three,
	.ve-sector-grid,
	.ve-footer-main__grid {
		grid-template-columns: 1fr;
	}

	.ve-quality-benefit-grid,
	.ve-quality-check-grid {
		grid-template-columns: 1fr;
	}

	.ve-quality-hero__grid,
	.ve-quality-story,
	.ve-quality-contact__grid {
		gap: 3rem;
	}

	.ve-quality-hero h1 {
		max-width: 100%;
		font-size: clamp(2.25rem, 10.5vw, 3.25rem);
	}

	.ve-quality-hero__intro {
		padding-top: 1.5rem;
		padding-left: 0;
		border-top: 0.25rem solid var(--ve-blue-500);
		border-left: 0;
	}

	.ve-quality-section-heading {
		margin-bottom: 2rem;
	}

	.ve-quality-check,
	.ve-quality-benefit-grid li,
	.ve-quality-contact__form {
		padding: 1.5rem;
	}

	.ve-proof__item {
		text-align: left;
	}

	.ve-card,
	.ve-path,
	.ve-solution,
	.ve-contact__panel {
		padding: 1.5rem;
	}

	.ve-benefits {
		grid-auto-rows: auto;
	}

	.ve-card {
		min-height: 0;
	}

	.ve-home .ve-card__title {
		min-height: 0;
		font-size: clamp(2rem, 9vw, 2.5rem);
	}
}

@media (prefers-reduced-motion: reduce) {
	html {
		scroll-behavior: auto;
	}

	.ve-post-cards > article,
	.ve-post-card__media img,
	.ve-post-card__more span {
		transition: none;
	}

	.ve-post-cards > article:hover,
	.ve-post-cards > article:hover .ve-post-card__media img,
	.ve-post-cards > article:hover .ve-post-card__more span {
		transform: none;
	}
}

/* ===================================================================
 * Articoli convertiti — body class `vision-e-article`.
 *
 * Modello di lettura di docs/style.md: il tema decide famiglia, colori e
 * link; qui si decidono solo misura della riga, dimensioni, interlinea e
 * ritmo verticale. Nessuna regola tocca selettori globali, così gli
 * articoli ancora serviti da Fusion restano com'erano.
 * =================================================================== */

/* Colonna di lettura: 42,5 rem (680 px) con margini laterali di 1,5 rem.
 * Vince sull'azzeramento di `.vision-e-full-bleed` perché viene dopo. */
.vision-e-article .ve-post-hero__inner,
.vision-e-article .inside-article {
	width: min(calc(100% - 3rem), var(--ve-article));
	max-width: none;
	margin-inline: auto;
}

/* Il titolo entra nella colonna, allineato a sinistra su fondo bianco: la
 * fascia scura era la Page Title Bar di Avada e rimetteva un contenitore
 * attorno al testo. */
.vision-e-article .ve-post-hero {
	background: var(--ve-white);
	color: var(--ve-slate-900);
	text-align: left;
}

.vision-e-article .ve-post-hero__inner {
	padding-block: clamp(2.5rem, 5vw, 3.5rem) 0;
}

.vision-e-article .ve-post-hero .ve-post-hero__title {
	max-width: none;
	margin: 0;
	color: var(--ve-slate-900);
	font-size: 2.625rem;
	font-weight: 700;
	letter-spacing: -0.011em;
	line-height: 1.24;
	text-wrap: balance;
}

/* Corpo del testo. */
.vision-e-article .entry-content {
	width: 100%;
	padding-block: 1.75rem 4rem;
	color: var(--ve-slate-900);
	font-family: var(--ve-font-reading);
	font-size: 1.25rem;
	line-height: 1.6;
}

.vision-e-article .entry-content p {
	margin: 0 0 2rem;
}

.vision-e-article .entry-content a {
	text-decoration: underline;
}

.vision-e-article .entry-content strong,
.vision-e-article .entry-content b {
	font-weight: 650;
}

/* Gerarchia: lo spazio sta sopra il titolo, che resta attaccato a ciò che
 * introduce. */
.vision-e-article .entry-content h2 {
	margin: 2.5rem 0 0.75rem;
	color: var(--ve-slate-900);
	font-size: 1.5rem;
	font-weight: 600;
	letter-spacing: -0.016em;
	line-height: 1.25;
}

.vision-e-article .entry-content h3 {
	margin: 2rem 0 0.5rem;
	color: var(--ve-slate-900);
	font-size: 1.375rem;
	font-weight: 700;
	line-height: 1.3;
}

.vision-e-article .entry-content ul,
.vision-e-article .entry-content ol {
	margin: 0 0 2rem;
	padding-left: 1.25rem;
}

.vision-e-article .entry-content li {
	margin-bottom: 0.5rem;
}

.vision-e-article .entry-content blockquote {
	margin: 0 0 2rem;
	padding: 0 0 0 1.5rem;
	border-left: 3px solid var(--ve-slate-200);
	background: none;
	font-style: normal;
}

.vision-e-article .entry-content img {
	height: auto;
	max-width: 100%;
}

.vision-e-article .entry-content figcaption {
	margin-top: 0.5rem;
	color: var(--ve-slate-600);
	font-size: 0.875rem;
	line-height: 1.5;
}

/* Immagine in evidenza, stampata da GeneratePress sopra al testo. Diverse sono
 * piccole (quella di `/computer-vision/` è 320 px): si centrano nella colonna
 * invece di allargarle fino a sgranarle. */
.vision-e-article .page-header-image-single {
	margin: 0 0 1.5rem;
	text-align: center;
}

.vision-e-article .page-header-image-single img {
	height: auto;
	max-width: 100%;
}

/* Contenitore prodotto da `convert-post-to-gp.php` per `[fusion_imageframe]`.
 * L'immagine non viene mai ingrandita oltre la propria dimensione naturale: un
 * diagramma da 500 px riempirebbe la colonna solo diventando sfocato. */
.vision-e-article .entry-content .ve-figure {
	margin: 0 0 2rem;
	text-align: center;
}

/* Le immagini inserite dall'editor portano le classi di allineamento di
 * WordPress. In una colonna da 42,5 rem un float lascia accanto all'immagine
 * colonnine di testo di poche parole: a questa larghezza valgono tutte come
 * blocco centrato. */
.vision-e-article .entry-content .alignleft,
.vision-e-article .entry-content .alignright,
.vision-e-article .entry-content .aligncenter,
.vision-e-article .entry-content .alignnone {
	display: block;
	float: none;
	margin: 0 auto 2rem;
}

/* Griglia dei settori: era una fila di colonne Fusion. Le icone si chiamano
 * `..._white_48dp.png` ma il glifo è blu `#1f74c0`, cioè `--ve-blue-500`: stanno
 * sul bianco della colonna senza bisogno di alcuno sfondo, che anzi le
 * nasconderebbe. Le etichette erano heading nel markup Avada: qui sono
 * etichette, e non entrano nella gerarchia dei titoli. */
.vision-e-article .entry-content .ve-icon-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(8.5rem, 1fr));
	gap: 1.5rem 1.25rem;
	margin: 0 0 2rem;
	padding: 0;
	list-style: none;
}

.vision-e-article .entry-content .ve-icon-grid__item {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 0.625rem;
	margin: 0;
	text-align: center;
}

.vision-e-article .entry-content .ve-icon-grid__item img {
	width: 3rem;
	height: 3rem;
}

.vision-e-article .entry-content .ve-icon-grid__label {
	color: var(--ve-slate-900);
	font-size: 1rem;
	font-weight: 600;
	line-height: 1.3;
}

/* Video: rapporto 16:9, nessun bordo. `aspect-ratio` evita il riempimento con
 * padding, che avrebbe richiesto un secondo elemento attorno all'iframe. */
.vision-e-article .entry-content .ve-embed {
	margin: 0 0 2rem;
}

.vision-e-article .entry-content .ve-embed iframe {
	display: block;
	width: 100%;
	max-width: 100%;
	height: auto;
	aspect-ratio: 16 / 9;
	border: 0;
}

/* Indice dei contenuti del plugin Easy Table of Contents. Arriva con
 * `background: #fff; border: 1px solid #ddd`, cioè un riquadro attorno al
 * testo: qui resta un elenco di servizio, separato dal corpo da una riga sola.
 * I selettori portano l'ID perché quelli del plugin lo usano. */
.vision-e-article .entry-content #ez-toc-container {
	width: 100%;
	margin: 0 0 2rem;
	padding: 1.25rem 0 0;
	border: 0;
	border-top: 1px solid var(--ve-slate-200);
	border-radius: 0;
	background: none;
	box-shadow: none;
}

.vision-e-article .entry-content #ez-toc-container .ez-toc-title {
	margin: 0;
	color: var(--ve-slate-600);
	font-size: 0.9375rem;
	font-weight: 600;
	letter-spacing: 0.04em;
	text-transform: uppercase;
}

.vision-e-article .entry-content #ez-toc-container ul {
	margin: 0.75rem 0 0;
	padding: 0;
	list-style: none;
}

.vision-e-article .entry-content #ez-toc-container ul ul {
	margin: 0.375rem 0 0.375rem 1.25rem;
}

.vision-e-article .entry-content #ez-toc-container li {
	margin: 0 0 0.375rem;
	font-size: 1rem;
	line-height: 1.45;
}

.vision-e-article .entry-content #ez-toc-container ul.ez-toc-list a {
	color: var(--ve-slate-700);
	text-decoration: none;
}

.vision-e-article .entry-content #ez-toc-container ul.ez-toc-list a:hover,
.vision-e-article .entry-content #ez-toc-container ul.ez-toc-list a:focus {
	color: var(--ve-blue-600);
	text-decoration: underline;
}

/* Box «In breve»: l'unico riquadro ammesso dentro un articolo. */
.vision-e-article .ve-callout {
	margin: 0 0 2rem;
	padding: 1.5rem 1.75rem;
	border-left: 4px solid var(--ve-blue-500);
	border-radius: var(--ve-radius-md);
	background: var(--ve-blue-50);
}

.vision-e-article .ve-callout h2 {
	margin: 0 0 0.75rem;
	font-size: 1.25rem;
	font-weight: 700;
	letter-spacing: -0.011em;
}

.vision-e-article .ve-callout ul {
	margin: 0;
	font-size: 1.0625rem;
	line-height: 1.55;
}

.vision-e-article .ve-callout li:last-child {
	margin-bottom: 0;
}

/* Tabelle: scorrono dentro la colonna invece di sfondarla. */
.vision-e-article .ve-table {
	overflow-x: auto;
	margin: 0 0 2rem;
}

.vision-e-article .ve-table table {
	width: 100%;
	border: 0;
	border-collapse: collapse;
	font-size: 1rem;
	line-height: 1.45;
}

.vision-e-article .ve-table th,
.vision-e-article .ve-table td {
	padding: 0.75rem 1rem;
	border: 0;
	border-bottom: 1px solid var(--ve-slate-200);
	text-align: left;
	vertical-align: top;
}

.vision-e-article .ve-table th {
	border-bottom-color: var(--ve-slate-600);
	font-weight: 650;
}

.vision-e-article .ve-article-cta {
	margin-top: 0.5rem;
}

/* Data e categorie: contorno dell'articolo, non testo di lettura. */

/* GeneratePress stampa la data di modifica accanto a quella di pubblicazione,
 * e non ha una regola propria per nasconderla: le card degli archivi mostravano
 * due date. Quella di modifica non è informazione editoriale — sugli articoli
 * convertiti cambia a ogni riconversione — quindi resta la sola pubblicazione. */
.vision-e-article .entry-meta .updated:not(.published),
.vision-e-archive .entry-meta .updated:not(.published) {
	display: none;
}

.vision-e-article .entry-header .entry-meta,
.vision-e-article .entry-meta {
	margin: 0;
	color: var(--ve-slate-600);
	font-size: 0.9375rem;
}

.vision-e-article .entry-header {
	margin: 0.75rem 0 0;
}

.vision-e-article footer.entry-meta {
	padding-top: 1.5rem;
	border-top: 1px solid var(--ve-slate-200);
}

.vision-e-article .post-navigation {
	margin-top: 1rem;
}

@media (max-width: 48rem) {
	.vision-e-article .ve-post-hero__inner,
	.vision-e-article .inside-article {
		width: calc(100% - 2.5rem);
	}

	.vision-e-article .ve-post-hero .ve-post-hero__title {
		font-size: 2rem;
		line-height: 1.19;
	}

	.vision-e-article .entry-content {
		font-size: 1.125rem;
		line-height: 1.56;
	}

	.vision-e-article .entry-content p,
	.vision-e-article .entry-content ul,
	.vision-e-article .entry-content ol,
	.vision-e-article .ve-callout,
	.vision-e-article .ve-table {
		margin-bottom: 1.75rem;
	}

	.vision-e-article .entry-content h2 {
		font-size: 1.375rem;
	}

	.vision-e-article .entry-content h3 {
		font-size: 1.25rem;
	}

	.vision-e-article .ve-callout {
		padding: 1.25rem 1.25rem;
	}
}

/* ===================================================================
 * Pagina Sistemi di visione — body class `vision-e-vision-systems-page`.
 * Markup nativo, contenuti e heading invariati rispetto alla pagina Fusion.
 * =================================================================== */

.ve-vision-page *,
.ve-vision-page *::before,
.ve-vision-page *::after {
	box-sizing: border-box;
}

.ve-vision-page h1,
.ve-vision-page h2,
.ve-vision-page h3 {
	margin-top: 0;
	color: var(--ve-slate-900);
	font-weight: 720;
	letter-spacing: -0.025em;
}

.ve-vision-page h2 {
	margin-bottom: 1rem;
	font-size: clamp(2rem, 3.5vw, 2.5rem);
	line-height: 1.12;
	text-wrap: balance;
}

.ve-vision-page h3 {
	margin-bottom: 0.75rem;
	font-size: 1.375rem;
	line-height: 1.25;
	text-wrap: balance;
}

.ve-vision-page p {
	margin-top: 0;
}

.ve-vision-hero {
	position: relative;
	isolation: isolate;
	overflow: hidden;
	padding-block: clamp(4rem, 8vw, 7rem);
	background: var(--ve-blue-700);
	color: var(--ve-white);
}

.ve-vision-hero::before {
	position: absolute;
	z-index: -1;
	inset: 0;
	background:
		linear-gradient(rgb(255 255 255 / 4%) 1px, transparent 1px),
		linear-gradient(90deg, rgb(255 255 255 / 4%) 1px, transparent 1px),
		radial-gradient(circle at 82% 16%, rgb(31 116 192 / 38%), transparent 32%);
	background-size: 4rem 4rem, 4rem 4rem, auto;
	content: "";
}

.ve-vision-hero__grid {
	display: grid;
	grid-template-columns: minmax(0, 1.08fr) minmax(20rem, 0.92fr);
	gap: 4rem;
	align-items: center;
}

.ve-vision-hero__accent {
	width: 4rem;
	height: 0.25rem;
	margin-bottom: 1.5rem;
	background: var(--ve-blue-300);
}

.ve-vision-hero h1 {
	margin-bottom: 2rem;
	color: var(--ve-white);
	font-size: clamp(2.75rem, 5vw, 4.5rem);
	line-height: 1.04;
	text-wrap: balance;
}

.ve-vision-hero__copy p {
	max-width: var(--ve-prose);
	margin-bottom: 1.5rem;
	color: #d9e5ee;
	font-size: 1.0625rem;
	line-height: 1.7;
}

.ve-vision-hero__copy p:last-child {
	margin-bottom: 0;
}

.ve-vision-hero__copy strong {
	color: var(--ve-white);
}

.ve-vision-hero__visual {
	position: relative;
	margin: 0;
}

.ve-vision-hero__visual::before {
	position: absolute;
	z-index: -1;
	right: -1.5rem;
	bottom: -1.5rem;
	width: 8rem;
	height: 8rem;
	border: 0.75rem solid var(--ve-blue-300);
	content: "";
}

.ve-vision-hero__visual img {
	display: block;
	width: 100%;
	/* Nessun aspect-ratio imposto: un riquadro fisso con object-fit: cover
	   ritaglia le immagini panoramiche a una fetta centrale e le ingrandisce.
	   height: auto lascia le proporzioni native, come chiede docs/style.md. */
	height: auto;
	border-radius: var(--ve-radius-lg);
	box-shadow: 0 2rem 5rem rgb(0 0 0 / 28%);
}

.ve-vision-section-heading {
	max-width: 52rem;
	margin-bottom: 3rem;
}

.ve-vision-solutions__grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	grid-auto-rows: 1fr;
	gap: 1.5rem;
}

.ve-vision-solution {
	display: grid;
	grid-template-rows: auto minmax(10rem, auto) 1fr auto;
	gap: 1.5rem;
	padding: 2rem;
	border: 1px solid var(--ve-slate-200);
	border-top: 0.25rem solid var(--ve-blue-500);
	border-radius: var(--ve-radius-md);
	background: var(--ve-white);
	box-shadow: var(--ve-shadow-sm);
}

.ve-vision-solution--smart {
	border-top-color: var(--ve-blue-300);
}

.ve-vision-solution--deep {
	border-top-color: var(--ve-blue-500);
}

.ve-vision-solution__icon {
	color: var(--ve-blue-600);
	font-size: 0.75rem;
	font-weight: 750;
	letter-spacing: 0.1em;
}

.ve-vision-solution--smart .ve-vision-solution__icon {
	color: var(--ve-blue-700);
}

.ve-vision-solution h2 {
	margin-bottom: 0;
	font-size: 1.5rem;
	line-height: 1.2;
}

.ve-vision-solution p {
	margin-bottom: 0;
	color: var(--ve-slate-700);
	line-height: 1.65;
}

.ve-vision-solution > a {
	justify-self: start;
	color: var(--ve-blue-600);
	font-weight: 700;
	text-decoration: none;
}

.ve-vision-solution > a:hover {
	color: var(--ve-blue-700);
	text-decoration: underline;
}

.ve-vision-solution > a span {
	display: inline-block;
	margin-left: 0.375rem;
	transition: transform 0.2s ease;
}

.ve-vision-solution > a:hover span,
.ve-vision-solution > a:focus-visible span {
	transform: translateX(0.25rem);
}

.ve-vision-processes {
	padding-block: 0;
}

.ve-vision-process {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(20rem, 0.9fr);
	gap: 4rem;
	align-items: center;
	padding-block: clamp(4rem, 8vw, 7rem);
	border-bottom: 1px solid var(--ve-slate-200);
}

.ve-vision-process:last-child {
	border-bottom: 0;
}

.ve-vision-process--reverse .ve-vision-process__copy {
	order: 2;
}

.ve-vision-process__copy p {
	max-width: var(--ve-prose);
	margin-bottom: 1.5rem;
	color: var(--ve-slate-700);
	font-size: 1.0625rem;
	line-height: 1.75;
}

.ve-vision-process__copy p:last-child {
	margin-bottom: 0;
}

.ve-vision-process__visual {
	margin: 0;
	padding: 1rem;
	border: 1px solid var(--ve-slate-200);
	border-radius: var(--ve-radius-lg);
	background: var(--ve-white);
	box-shadow: var(--ve-shadow-md);
}

.ve-vision-process__visual img {
	display: block;
	width: 100%;
	height: auto;
	max-height: 32rem;
	border-radius: var(--ve-radius-md);
	object-fit: contain;
}

.ve-vision-results h2,
.ve-vision-results h3 {
	color: var(--ve-white);
}

.ve-vision-results__lead {
	max-width: 58rem;
	margin-bottom: 3rem;
}

.ve-vision-results__lead > p {
	max-width: var(--ve-prose);
	margin-bottom: 1.5rem;
	color: #cbd6df;
	font-size: 1.0625rem;
	line-height: 1.7;
}

.ve-vision-results__lead .ve-vision-results__statement {
	max-width: 44rem;
	color: var(--ve-white);
	font-size: 1.5rem;
	font-weight: 650;
	line-height: 1.4;
}

.ve-vision-results__grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 1.5rem;
}

.ve-vision-results__context,
.ve-vision-challenges {
	padding: 2rem;
	border: 1px solid rgb(255 255 255 / 12%);
	border-radius: var(--ve-radius-md);
	background: var(--ve-blue-700);
}

.ve-vision-results__context p,
.ve-vision-challenges li {
	color: #cbd6df;
	line-height: 1.65;
}

.ve-vision-results__context figure {
	margin: 2rem 0 0;
}

.ve-vision-results__context img {
	display: block;
	width: 100%;
	aspect-ratio: 16 / 9;
	border-radius: var(--ve-radius-md);
	object-fit: cover;
}

.ve-vision-challenges ul {
	display: grid;
	gap: 0.75rem;
	margin: 1.5rem 0 0;
	padding: 0;
	list-style: none;
}

.ve-vision-challenges li {
	position: relative;
	padding-left: 1.5rem;
}

.ve-vision-challenges li::before {
	position: absolute;
	top: 0.6875rem;
	left: 0;
	width: 0.5rem;
	height: 0.5rem;
	background: var(--ve-blue-300);
	content: "";
}

.ve-vision-sectors__grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	grid-auto-rows: 1fr;
	gap: 1.5rem;
}

.ve-vision-sector {
	display: flex;
	min-width: 0;
	overflow: hidden;
	border: 1px solid var(--ve-slate-200);
	border-radius: var(--ve-radius-md);
	background: var(--ve-white);
	box-shadow: var(--ve-shadow-sm);
	flex-direction: column;
}

.ve-vision-sector__visual {
	display: block;
	aspect-ratio: 16 / 9;
	overflow: hidden;
	background: var(--ve-slate-100);
}

.ve-vision-sector__visual img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 0.35s ease;
}

.ve-vision-sector:hover .ve-vision-sector__visual img,
.ve-vision-sector:focus-within .ve-vision-sector__visual img {
	transform: scale(1.03);
}

.ve-vision-sector__copy {
	padding: 2rem;
}

.ve-vision-sector h3 a {
	color: var(--ve-slate-900);
	text-decoration: none;
}

.ve-vision-sector h3 a:hover {
	color: var(--ve-blue-700);
	text-decoration: underline;
}

.ve-vision-sector p,
.ve-vision-sector li {
	color: var(--ve-slate-700);
	font-size: 0.9375rem;
	line-height: 1.6;
}

.ve-vision-sector p,
.ve-vision-sector ul {
	margin: 0;
}

.ve-vision-sector ul {
	padding-left: 1.25rem;
}

.ve-vision-sector li + li {
	margin-top: 0.5rem;
}

.ve-vision-contact {
	background: var(--ve-slate-100);
}

.ve-vision-contact__grid {
	display: grid;
	grid-template-columns: minmax(12rem, 0.6fr) minmax(0, 1.4fr);
	gap: 4rem;
	align-items: start;
}

.ve-vision-contact__grid > h2 {
	position: sticky;
	top: 7.5rem;
}

.ve-vision-contact__form {
	min-width: 0;
	padding: 2rem;
	border: 1px solid var(--ve-slate-200);
	border-radius: var(--ve-radius-lg);
	background: var(--ve-white);
	box-shadow: var(--ve-shadow-md);
}

@media (max-width: 64rem) {
	.ve-vision-page * {
		min-width: 0;
	}

	.ve-vision-hero__grid,
	.ve-vision-process,
	.ve-vision-results__grid,
	.ve-vision-contact__grid {
		grid-template-columns: 1fr;
	}

	.ve-vision-hero__visual {
		max-width: 44rem;
	}

	.ve-vision-solutions__grid {
		grid-template-columns: 1fr;
	}

	.ve-vision-solution {
		grid-template-rows: auto auto 1fr auto;
	}

	.ve-vision-process--reverse .ve-vision-process__copy {
		order: 0;
	}

	.ve-vision-contact__grid > h2 {
		position: static;
	}
}

@media (max-width: 48rem) {
	.ve-vision-page h2 {
		font-size: 2rem;
	}

	.ve-vision-hero h1 {
		font-size: 2.75rem;
	}

	.ve-vision-hero__grid,
	.ve-vision-process,
	.ve-vision-contact__grid {
		gap: 2rem;
	}

	.ve-vision-hero__visual::before {
		display: none;
	}

	.ve-vision-solution,
	.ve-vision-results__context,
	.ve-vision-challenges,
	.ve-vision-sector__copy,
	.ve-vision-contact__form {
		padding: 1.5rem;
	}

	.ve-vision-sectors__grid {
		grid-template-columns: 1fr;
	}
}

@media (prefers-reduced-motion: reduce) {
	.ve-vision-solution > a span,
	.ve-vision-sector__visual img {
		transition: none;
	}
}

/* ===================================================================
 * Pagina Micrometro ottico — body class `vision-e-optical-micrometer-page`.
 * Markup nativo. Dalla 0.1.43 testo e heading sono quelli della riscrittura
 * GEO approvata in AppRedazione: introduzione con H2 prima delle righe, un H3
 * per le righe 01-04, H2 alla riga 05 e nelle due colonne delle applicazioni.
 * =================================================================== */

.ve-micrometer-page *,
.ve-micrometer-page *::before,
.ve-micrometer-page *::after {
	box-sizing: border-box;
}

.ve-micrometer-page h1,
.ve-micrometer-page h2,
.ve-micrometer-page h3 {
	margin-top: 0;
	color: var(--ve-slate-900);
	font-weight: 720;
	letter-spacing: -0.025em;
}

.ve-micrometer-page h2 {
	margin-bottom: 1.5rem;
	font-size: clamp(2rem, 3.5vw, 2.5rem);
	line-height: 1.12;
	text-wrap: balance;
}

.ve-micrometer-page p {
	margin-top: 0;
}

.ve-micrometer-hero {
	position: relative;
	isolation: isolate;
	overflow: hidden;
	padding-block: clamp(4rem, 8vw, 7rem);
	background: var(--ve-blue-700);
	color: var(--ve-white);
}

.ve-micrometer-hero::before {
	position: absolute;
	z-index: -1;
	inset: 0;
	background:
		linear-gradient(rgb(255 255 255 / 4%) 1px, transparent 1px),
		linear-gradient(90deg, rgb(255 255 255 / 4%) 1px, transparent 1px),
		radial-gradient(circle at 84% 18%, rgb(242 174 44 / 24%), transparent 34%);
	background-size: 4rem 4rem, 4rem 4rem, auto;
	content: "";
}

.ve-micrometer-hero__grid {
	display: grid;
	grid-template-columns: minmax(0, 1.12fr) minmax(20rem, 0.88fr);
	gap: 4rem;
	align-items: center;
}

.ve-micrometer-hero__accent {
	width: 4rem;
	height: 0.25rem;
	margin-bottom: 1.5rem;
	background: var(--ve-blue-300);
}

.ve-micrometer-hero h1 {
	margin-bottom: 2rem;
	color: var(--ve-white);
	font-size: clamp(2.75rem, 4.8vw, 4.25rem);
	line-height: 1.04;
	text-wrap: balance;
}

.ve-micrometer-hero__lead {
	max-width: var(--ve-prose);
	margin-bottom: 0;
	color: #d9e5ee;
	font-size: 1.25rem;
	font-weight: 500;
	line-height: 1.55;
}

.ve-micrometer-hero__lead + .ve-micrometer-hero__lead {
	margin-top: 1rem;
	font-size: 1.0625rem;
	font-weight: 400;
}

.ve-micrometer-hero__visual {
	position: relative;
	margin: 0;
}

.ve-micrometer-hero__visual::before {
	position: absolute;
	z-index: -1;
	right: -1.5rem;
	bottom: -1.5rem;
	width: 8rem;
	height: 8rem;
	border: 0.75rem solid var(--ve-blue-300);
	content: "";
}

.ve-micrometer-hero__visual img {
	display: block;
	width: 100%;
	aspect-ratio: 4 / 3;
	border-radius: var(--ve-radius-lg);
	object-fit: cover;
	box-shadow: 0 2rem 5rem rgb(0 0 0 / 28%);
}

.ve-micrometer-components {
	background: var(--ve-white);
}

.ve-micrometer-intro {
	padding-top: clamp(4rem, 7vw, 6rem);
}

.ve-micrometer-intro p,
.ve-micrometer-intro li {
	max-width: var(--ve-prose);
	color: var(--ve-slate-700);
	font-size: 1.0625rem;
	line-height: 1.75;
}

.ve-micrometer-intro p {
	margin-bottom: 1.5rem;
}

.ve-micrometer-intro ul {
	display: grid;
	gap: 0.5rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.ve-micrometer-intro li {
	position: relative;
	padding-left: 1.5rem;
}

.ve-micrometer-intro li::before {
	position: absolute;
	top: 0.75rem;
	left: 0;
	width: 0.5rem;
	height: 0.5rem;
	background: var(--ve-blue-300);
	content: "";
}

.ve-micrometer-intro strong {
	color: var(--ve-slate-900);
}

.ve-micrometer-row {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(20rem, 0.95fr);
	gap: 4rem;
	align-items: center;
	padding-block: clamp(4rem, 7vw, 6rem);
	border-bottom: 1px solid var(--ve-slate-200);
}

.ve-micrometer-row:last-child {
	border-bottom: 0;
}

.ve-micrometer-row__copy {
	min-width: 0;
}

.ve-micrometer-row__index {
	display: inline-grid;
	width: 2.5rem;
	height: 2.5rem;
	margin-bottom: 1.5rem;
	border-radius: 50%;
	background: var(--ve-blue-50);
	color: var(--ve-blue-700);
	font-size: 0.75rem;
	font-weight: 750;
	letter-spacing: 0.08em;
	place-items: center;
}

.ve-micrometer-row__copy p {
	max-width: var(--ve-prose);
	margin-bottom: 1.5rem;
	color: var(--ve-slate-700);
	font-size: 1.0625rem;
	line-height: 1.75;
}

.ve-micrometer-row__copy p:last-child {
	margin-bottom: 0;
}

.ve-micrometer-row__copy strong {
	color: var(--ve-slate-900);
	font-weight: 700;
}

.ve-micrometer-row__copy h3 {
	margin-bottom: 1rem;
	font-size: 1.5rem;
	line-height: 1.25;
}

.ve-micrometer-row__visual {
	margin: 0;
	padding: 1rem;
	border: 1px solid var(--ve-slate-200);
	border-radius: var(--ve-radius-lg);
	background: var(--ve-slate-100);
	box-shadow: var(--ve-shadow-md);
}

.ve-micrometer-row__visual img {
	display: block;
	width: 100%;
	height: auto;
	max-height: 32rem;
	border-radius: var(--ve-radius-md);
	object-fit: contain;
}

.ve-micrometer-applications {
	position: relative;
	isolation: isolate;
	overflow: hidden;
	background: var(--ve-blue-700);
}

.ve-micrometer-applications::before {
	position: absolute;
	z-index: -1;
	top: -12rem;
	right: -10rem;
	width: 32rem;
	height: 32rem;
	border: 4rem solid rgb(31 116 192 / 14%);
	border-radius: 50%;
	content: "";
}

.ve-micrometer-applications h2 {
	color: var(--ve-white);
}

.ve-micrometer-applications__grid {
	display: grid;
	grid-template-columns: minmax(0, 1.18fr) minmax(18rem, 0.82fr);
	gap: 4rem;
	align-items: start;
}

.ve-micrometer-applications__primary > p,
.ve-micrometer-applications__secondary > p,
.ve-micrometer-applications li {
	color: #cbd6df;
	line-height: 1.7;
}

.ve-micrometer-applications__primary > p,
.ve-micrometer-applications__secondary > p {
	margin-bottom: 1.5rem;
}

.ve-micrometer-applications strong {
	color: var(--ve-white);
}

.ve-micrometer-applications ul {
	display: grid;
	gap: 0.75rem;
	margin: 1.5rem 0 2rem;
	padding: 0;
	list-style: none;
}

.ve-micrometer-applications li {
	position: relative;
	padding-left: 1.5rem;
}

.ve-micrometer-applications li::before {
	position: absolute;
	top: 0.6875rem;
	left: 0;
	width: 0.5rem;
	height: 0.5rem;
	background: var(--ve-blue-300);
	content: "";
}

.ve-micrometer-applications__secondary {
	padding: 2rem;
	border: 1px solid rgb(255 255 255 / 12%);
	border-radius: var(--ve-radius-md);
	background: var(--ve-blue-700);
}

.ve-micrometer-applications__secondary > *:last-child,
.ve-micrometer-applications__secondary ul:last-child {
	margin-bottom: 0;
}

.ve-micrometer-applications .ve-micrometer-applications__secondary h2 {
	margin-bottom: 1rem;
	font-size: 1.5rem;
	line-height: 1.25;
}

.ve-micrometer-applications h3 {
	margin: 2rem 0 0.75rem;
	color: var(--ve-white);
	font-size: 1.25rem;
	line-height: 1.3;
}

.ve-micrometer-contact {
	background: var(--ve-slate-100);
}

.ve-micrometer-contact__grid {
	display: grid;
	grid-template-columns: minmax(14rem, 0.7fr) minmax(0, 1.3fr);
	gap: 4rem;
	align-items: start;
}

.ve-micrometer-contact__intro {
	position: sticky;
	top: 7.5rem;
}

.ve-micrometer-contact__intro p {
	max-width: 28rem;
	margin-bottom: 0;
	color: var(--ve-slate-700);
	font-size: 1.0625rem;
	line-height: 1.7;
}

.ve-micrometer-contact__form {
	min-width: 0;
	padding: 2rem;
	border: 1px solid var(--ve-slate-200);
	border-radius: var(--ve-radius-lg);
	background: var(--ve-white);
	box-shadow: var(--ve-shadow-md);
}

@media (max-width: 64rem) {
	.ve-micrometer-page * {
		min-width: 0;
	}

	.ve-micrometer-hero__grid,
	.ve-micrometer-row,
	.ve-micrometer-applications__grid,
	.ve-micrometer-contact__grid {
		grid-template-columns: 1fr;
	}

	.ve-micrometer-hero__visual {
		max-width: 44rem;
	}

	.ve-micrometer-row--reverse .ve-micrometer-row__copy {
		order: 1;
	}

	.ve-micrometer-row--reverse .ve-micrometer-row__visual {
		order: 2;
	}

	.ve-micrometer-contact__intro {
		position: static;
	}
}

@media (max-width: 48rem) {
	.ve-micrometer-page h2 {
		font-size: 2rem;
	}

	.ve-micrometer-hero h1 {
		font-size: 2.5rem;
	}

	.ve-micrometer-hero__lead {
		font-size: 1.125rem;
	}

	.ve-micrometer-row__copy h3 {
		font-size: 1.25rem;
	}

	.ve-micrometer-hero__grid,
	.ve-micrometer-row,
	.ve-micrometer-applications__grid,
	.ve-micrometer-contact__grid {
		gap: 2rem;
	}

	.ve-micrometer-hero__visual::before {
		display: none;
	}

	.ve-micrometer-applications__secondary,
	.ve-micrometer-contact__form {
		padding: 1.5rem;
	}
}

/* ===================================================================
 * Pagina Smart Camera — body class `vision-e-smart-camera-page`.
 * Scala e ritmo della pagina Sistemi di visione, struttura specifica.
 * =================================================================== */

.ve-smart-page *,
.ve-smart-page *::before,
.ve-smart-page *::after {
	box-sizing: border-box;
}

.ve-smart-page h1,
.ve-smart-page h2,
.ve-smart-page h3,
.ve-smart-contact__title {
	margin-top: 0;
	color: var(--ve-slate-900);
	font-weight: 720;
	letter-spacing: -0.025em;
	text-wrap: balance;
}

.ve-smart-page h2,
.ve-smart-contact__title {
	margin-bottom: 1rem;
	font-size: clamp(2rem, 3.5vw, 2.5rem);
	line-height: 1.12;
}

.ve-smart-page h3 {
	margin-bottom: 0.75rem;
	font-size: 1.5rem;
	line-height: 1.25;
}

.ve-smart-page p {
	margin-top: 0;
}

.ve-smart-hero {
	position: relative;
	isolation: isolate;
	overflow: hidden;
	padding-block: clamp(4rem, 8vw, 7rem);
	background: var(--ve-blue-700);
	color: var(--ve-white);
}

.ve-smart-hero::before {
	position: absolute;
	z-index: -1;
	inset: 0;
	background:
		linear-gradient(rgb(255 255 255 / 4%) 1px, transparent 1px),
		linear-gradient(90deg, rgb(255 255 255 / 4%) 1px, transparent 1px),
		radial-gradient(circle at 80% 18%, rgb(31 116 192 / 36%), transparent 34%);
	background-size: 4rem 4rem, 4rem 4rem, auto;
	content: "";
}

.ve-smart-hero__grid {
	display: grid;
	grid-template-columns: minmax(0, 1.08fr) minmax(20rem, 0.92fr);
	gap: 4rem;
	align-items: center;
}

.ve-smart-hero__accent {
	width: 4rem;
	height: 0.25rem;
	margin-bottom: 1.5rem;
	background: var(--ve-blue-300);
}

.ve-smart-hero h1 {
	margin-bottom: 2rem;
	color: var(--ve-white);
	font-size: clamp(2.75rem, 5vw, 4.5rem);
	line-height: 1.04;
}

.ve-smart-hero__copy p {
	max-width: var(--ve-prose);
	margin-bottom: 0;
	color: #d9e5ee;
	font-size: 1.0625rem;
	line-height: 1.7;
}

.ve-smart-hero__copy strong {
	color: var(--ve-white);
}

.ve-smart-hero__benefits {
	padding: 2rem;
	border: 1px solid rgb(255 255 255 / 16%);
	border-radius: var(--ve-radius-lg);
	background: rgb(255 255 255 / 7%);
	box-shadow: 0 2rem 5rem rgb(0 0 0 / 18%);
}

.ve-smart-hero__benefits ul {
	display: grid;
	gap: 1rem;
	margin: 0 0 1.5rem;
	padding: 0;
	list-style: none;
}

.ve-smart-hero__benefits li {
	position: relative;
	padding-left: 2rem;
	color: var(--ve-white);
	font-size: 1.0625rem;
	font-weight: 650;
	line-height: 1.5;
}

.ve-smart-hero__benefits li::before {
	position: absolute;
	top: 0.2rem;
	left: 0;
	display: grid;
	width: 1.25rem;
	height: 1.25rem;
	place-items: center;
	border-radius: 50%;
	background: var(--ve-blue-300);
	color: var(--ve-slate-900);
	content: "✓";
	font-size: 0.75rem;
	font-weight: 800;
}

.ve-smart-hero__benefits p {
	margin-bottom: 0;
	padding-top: 1.5rem;
	border-top: 1px solid rgb(255 255 255 / 16%);
	color: #d9e5ee;
	font-size: 1rem;
	line-height: 1.7;
}

.ve-smart-overview__intro {
	max-width: 52rem;
	margin-bottom: 3rem;
}

.ve-smart-overview__intro p,
.ve-smart-technology__copy p,
.ve-smart-case__intro p,
.ve-smart-case__grid li,
.ve-smart-contact p {
	max-width: var(--ve-prose);
	color: var(--ve-slate-700);
	font-size: 1.0625rem;
	line-height: 1.75;
}

.ve-smart-overview__intro p,
.ve-smart-technology__copy p,
.ve-smart-case__intro p {
	margin-bottom: 1.5rem;
}

.ve-smart-overview__intro p:last-child,
.ve-smart-technology__copy p:last-child,
.ve-smart-case__intro p:last-child {
	margin-bottom: 0;
}

.ve-smart-overview__intro .ve-smart-overview__prompt {
	margin-top: 2rem;
	color: var(--ve-slate-900);
	font-weight: 700;
}

.ve-smart-benefits {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	grid-auto-rows: 1fr;
	gap: 1.5rem;
}

.ve-smart-benefit {
	display: grid;
	grid-template-rows: auto minmax(7.5rem, auto) 1fr;
	gap: 1.25rem;
	padding: 2rem;
	border: 1px solid var(--ve-slate-200);
	border-top: 0.25rem solid var(--ve-blue-500);
	border-radius: var(--ve-radius-md);
	background: var(--ve-white);
	box-shadow: var(--ve-shadow-sm);
}

.ve-smart-benefit:nth-child(2) {
	border-top-color: var(--ve-blue-500);
}

.ve-smart-benefit:nth-child(3) {
	border-top-color: var(--ve-blue-300);
}

.ve-smart-benefit__icon {
	color: var(--ve-blue-600);
	font-size: 0.75rem;
	font-weight: 750;
	letter-spacing: 0.1em;
}

.ve-smart-benefit h3,
.ve-smart-benefit p {
	margin-bottom: 0;
}

.ve-smart-benefit p {
	color: var(--ve-slate-700);
	line-height: 1.65;
}

.ve-smart-technology__grid {
	display: grid;
	grid-template-columns: minmax(0, 0.82fr) minmax(22rem, 1.18fr);
	gap: 4rem;
	align-items: center;
}

.ve-smart-technology__visual {
	margin: 0;
	padding: 2rem;
	border: 1px solid var(--ve-slate-200);
	border-radius: var(--ve-radius-lg);
	background: var(--ve-white);
	box-shadow: var(--ve-shadow-md);
}

.ve-smart-technology__visual img {
	display: block;
	width: 100%;
	height: auto;
	object-fit: contain;
}

.ve-smart-case__heading {
	max-width: 52rem;
	margin-bottom: 2rem;
}

.ve-smart-case__heading h2 {
	margin-bottom: 0.75rem;
}

.ve-smart-case__heading h3 {
	margin-bottom: 0;
	color: var(--ve-blue-600);
	font-size: 1.25rem;
}

.ve-smart-case__intro {
	max-width: 52rem;
	margin-bottom: 3rem;
}

.ve-smart-case__grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 1.5rem;
}

.ve-smart-case__requirements,
.ve-smart-case__delivery {
	padding: 2rem;
	border: 1px solid var(--ve-slate-200);
	border-radius: var(--ve-radius-lg);
	background: var(--ve-blue-50);
}

.ve-smart-case__delivery {
	background: var(--ve-white);
	box-shadow: var(--ve-shadow-sm);
}

.ve-smart-case__label {
	margin-bottom: 1.5rem;
	color: var(--ve-slate-900);
	font-size: 1.125rem;
	font-weight: 700;
	line-height: 1.5;
}

.ve-smart-case__grid ul,
.ve-smart-case__grid ol {
	display: grid;
	gap: 1rem;
	margin: 0;
	padding-left: 1.25rem;
}

.ve-smart-case__grid li {
	padding-left: 0.25rem;
}

.ve-smart-contact {
	background: var(--ve-blue-700);
}

.ve-smart-contact__grid {
	display: grid;
	grid-template-columns: minmax(16rem, 0.65fr) minmax(0, 1.35fr);
	gap: 4rem;
	align-items: start;
}

.ve-smart-contact .ve-smart-contact__title {
	color: var(--ve-white);
}

.ve-smart-contact p {
	color: #d9e5ee;
}

.ve-smart-contact__form {
	min-width: 0;
	padding: 2rem;
	border: 1px solid var(--ve-slate-200);
	border-radius: var(--ve-radius-lg);
	background: var(--ve-white);
	box-shadow: var(--ve-shadow-md);
}

@media (max-width: 64rem) {
	.ve-smart-page * {
		min-width: 0;
	}

	.ve-smart-hero__grid,
	.ve-smart-technology__grid,
	.ve-smart-contact__grid {
		grid-template-columns: 1fr;
	}

	.ve-smart-hero__benefits,
	.ve-smart-technology__visual {
		max-width: 44rem;
	}

	.ve-smart-benefits {
		grid-template-columns: 1fr;
	}

	.ve-smart-benefit {
		grid-template-rows: auto auto 1fr;
	}
}

@media (max-width: 48rem) {
	.ve-smart-page h2,
	.ve-smart-contact__title {
		font-size: 2rem;
	}

	.ve-smart-hero h1 {
		font-size: 2.75rem;
	}

	.ve-smart-hero__grid,
	.ve-smart-technology__grid,
	.ve-smart-contact__grid {
		gap: 2rem;
	}

	.ve-smart-hero__benefits,
	.ve-smart-benefit,
	.ve-smart-technology__visual,
	.ve-smart-case__requirements,
	.ve-smart-case__delivery,
	.ve-smart-contact__form {
		padding: 1.5rem;
	}

	.ve-smart-case__grid {
		grid-template-columns: 1fr;
	}
}

/* ===================================================================
 * Pagina Sistemi di visione industriali — 0.1.24.
 * Body class `vision-e-industrial-vision-systems-page`.
 * =================================================================== */

.ve-industrial-page *,
.ve-industrial-page *::before,
.ve-industrial-page *::after {
	box-sizing: border-box;
}

.ve-industrial-page h1,
.ve-industrial-page h2,
.ve-industrial-page h3 {
	margin-top: 0;
	color: var(--ve-slate-900);
	font-weight: 720;
	letter-spacing: -0.025em;
	text-wrap: balance;
}

.ve-industrial-page h2 {
	margin-bottom: 1.5rem;
	font-size: clamp(2rem, 3.5vw, 2.5rem);
	line-height: 1.12;
}

.ve-industrial-page h3 {
	margin-bottom: 1rem;
	font-size: 1.5rem;
	line-height: 1.25;
}

.ve-industrial-page p {
	margin-top: 0;
}

.ve-industrial-hero {
	position: relative;
	isolation: isolate;
	overflow: hidden;
	padding-block: clamp(4rem, 8vw, 7rem);
	background: var(--ve-blue-700);
}

.ve-industrial-hero::before {
	position: absolute;
	z-index: -1;
	inset: 0;
	background:
		linear-gradient(rgb(255 255 255 / 4%) 1px, transparent 1px),
		linear-gradient(90deg, rgb(255 255 255 / 4%) 1px, transparent 1px),
		radial-gradient(circle at 82% 24%, rgb(31 116 192 / 38%), transparent 35%);
	background-size: 4rem 4rem, 4rem 4rem, auto;
	content: "";
}

.ve-industrial-hero__inner {
	max-width: 60rem;
}

.ve-industrial-eyebrow {
	margin-bottom: 1rem;
	color: var(--ve-blue-50);
	font-size: 0.75rem;
	font-weight: 750;
	letter-spacing: 0.12em;
	line-height: 1.4;
	text-transform: uppercase;
}

.ve-industrial-hero h1 {
	max-width: 16ch;
	margin-bottom: 0;
	color: var(--ve-white);
	font-size: clamp(2.75rem, 5vw, 4.5rem);
	line-height: 1.04;
}

.ve-industrial-intro__grid {
	display: grid;
	grid-template-columns: minmax(0, 1.08fr) minmax(22rem, 0.92fr);
	gap: 4rem;
	align-items: center;
}

.ve-industrial-copy,
.ve-industrial-narrow,
.ve-industrial-limits__heading {
	max-width: 52rem;
}

.ve-industrial-copy p,
.ve-industrial-narrow p,
.ve-industrial-limits__heading p,
.ve-industrial-product__copy p,
.ve-industrial-case p {
	max-width: var(--ve-prose);
	color: var(--ve-slate-700);
	font-size: 1.0625rem;
	line-height: 1.75;
}

.ve-industrial-copy p,
.ve-industrial-narrow p,
.ve-industrial-product__copy p,
.ve-industrial-case p {
	margin-bottom: 1.5rem;
}

.ve-industrial-copy p:last-child,
.ve-industrial-narrow p:last-child,
.ve-industrial-product__copy p:last-child,
.ve-industrial-case p:last-child {
	margin-bottom: 0;
}

.ve-industrial-intro__visual,
.ve-industrial-product__visual,
.ve-industrial-capabilities figure {
	margin: 0;
	padding: 2rem;
	border: 1px solid var(--ve-slate-200);
	border-radius: var(--ve-radius-lg);
	background: var(--ve-white);
	box-shadow: var(--ve-shadow-md);
}

.ve-industrial-intro__visual img,
.ve-industrial-product__visual img,
.ve-industrial-capabilities figure img {
	display: block;
	width: 100%;
	height: auto;
	object-fit: contain;
}

.ve-industrial-summary {
	max-width: 52rem;
	margin-top: 4rem;
	padding: 2rem;
	border-left: 0.25rem solid var(--ve-blue-500);
	border-radius: var(--ve-radius-md);
	background: var(--ve-blue-50);
}

.ve-industrial-summary h2 {
	margin-bottom: 1rem;
	color: var(--ve-blue-700);
	font-size: 1.25rem;
	letter-spacing: -0.01em;
	line-height: 1.35;
}

.ve-industrial-summary p {
	max-width: var(--ve-prose);
	margin-bottom: 1rem;
	color: var(--ve-slate-700);
	font-size: 1rem;
	line-height: 1.7;
}

.ve-industrial-summary p:last-child {
	margin-bottom: 0;
}

.ve-industrial-toc {
	max-width: 52rem;
	margin-top: 2rem;
}

.ve-industrial-toc #ez-toc-container {
	width: 100%;
	margin: 0;
	padding: 1.5rem 0 0;
	border: 0;
	border-top: 1px solid var(--ve-slate-200);
	border-radius: 0;
	background: transparent;
	box-shadow: none;
}

.ve-industrial-limit-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 1.5rem;
	margin: 2rem 0 3rem;
	padding: 0;
	list-style: none;
	counter-reset: ve-industrial-limit;
}

.ve-industrial-limit-grid li {
	position: relative;
	min-height: 9rem;
	padding: 4rem 2rem 2rem;
	border: 1px solid var(--ve-slate-200);
	border-top: 0.25rem solid var(--ve-blue-500);
	border-radius: var(--ve-radius-md);
	background: var(--ve-white);
	box-shadow: var(--ve-shadow-sm);
	color: var(--ve-slate-900);
	font-size: 1.5rem;
	font-weight: 700;
	line-height: 1.25;
	counter-increment: ve-industrial-limit;
}

.ve-industrial-limit-grid li::before {
	position: absolute;
	top: 1.5rem;
	left: 2rem;
	color: var(--ve-blue-600);
	content: "0" counter(ve-industrial-limit);
	font-size: 0.75rem;
	font-weight: 750;
	letter-spacing: 0.1em;
}

.ve-industrial-list-label {
	margin-top: 2rem;
	color: var(--ve-slate-900) !important;
	font-weight: 700;
}

.ve-industrial-feature-list,
.ve-industrial-capabilities > ol {
	display: grid;
	gap: 1rem;
	margin: 1.5rem 0 0;
	padding-left: 1.5rem;
}

.ve-industrial-feature-list > li,
.ve-industrial-capabilities > ol > li {
	padding-left: 0.5rem;
	color: var(--ve-slate-700);
	font-size: 1.0625rem;
	line-height: 1.7;
}

.ve-industrial-feature-list ul {
	display: grid;
	gap: 0.5rem;
	margin-top: 1rem;
	padding-left: 1.5rem;
}

.ve-industrial-automation p {
	color: #d9e5ee;
}

.ve-industrial-page .ve-industrial-automation h2 {
	color: var(--ve-white);
}

.ve-industrial-automation strong {
	color: var(--ve-white);
}

.ve-industrial-product__grid,
.ve-industrial-capabilities {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 4rem;
	align-items: center;
	margin-top: 4rem;
}

.ve-industrial-capabilities {
	align-items: start;
	padding-top: 4rem;
	border-top: 1px solid var(--ve-slate-200);
}

.ve-industrial-capabilities figure {
	margin-top: 2rem;
}

.ve-industrial-capabilities > ol {
	margin-top: 0;
}

.ve-industrial-case-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	grid-auto-rows: 1fr;
	gap: 1.5rem;
	margin-top: 3rem;
}

.ve-industrial-case {
	padding: 2rem;
	border: 1px solid var(--ve-slate-200);
	border-radius: var(--ve-radius-lg);
	background: var(--ve-white);
	box-shadow: var(--ve-shadow-sm);
}

.ve-industrial-case h3 {
	min-height: 5.625rem;
}

.ve-industrial-sector-grid {
	display: grid;
	grid-template-columns: repeat(6, minmax(0, 1fr));
	gap: 1rem;
	margin-top: 3rem;
}

.ve-industrial-sector {
	display: grid;
	min-height: 10rem;
	place-items: center;
	align-content: center;
	gap: 1rem;
	padding: 1.5rem 1rem;
	border: 1px solid var(--ve-slate-200);
	border-radius: var(--ve-radius-md);
	background: var(--ve-blue-500);
	box-shadow: var(--ve-shadow-sm);
	text-align: center;
	text-decoration: none;
}

.ve-industrial-sector:hover,
.ve-industrial-sector:focus-visible {
	background: var(--ve-blue-700);
	color: var(--ve-white);
}

.ve-industrial-sector img {
	width: 3rem;
	height: 3rem;
	object-fit: contain;
}

.ve-industrial-sector h3 {
	margin-bottom: 0;
	color: var(--ve-white);
	font-size: 1rem;
	letter-spacing: 0;
}

@media (max-width: 64rem) {
	.ve-industrial-page * {
		min-width: 0;
	}

	.ve-industrial-intro__grid,
	.ve-industrial-product__grid,
	.ve-industrial-capabilities {
		grid-template-columns: 1fr;
	}

	.ve-industrial-intro__visual,
	.ve-industrial-product__visual,
	.ve-industrial-capabilities > div {
		max-width: 44rem;
	}

	.ve-industrial-case-grid {
		grid-template-columns: 1fr;
		grid-auto-rows: auto;
	}

	.ve-industrial-case h3 {
		min-height: 0;
	}

	.ve-industrial-sector-grid {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

@media (max-width: 48rem) {
	.ve-industrial-page h2 {
		font-size: 2rem;
	}

	.ve-industrial-summary h2 {
		font-size: 1.25rem;
	}

	.ve-industrial-hero h1 {
		font-size: 2.75rem;
	}

	.ve-industrial-intro__grid,
	.ve-industrial-product__grid,
	.ve-industrial-capabilities {
		gap: 2rem;
	}

	.ve-industrial-summary,
	.ve-industrial-intro__visual,
	.ve-industrial-product__visual,
	.ve-industrial-capabilities figure,
	.ve-industrial-case {
		padding: 1.5rem;
	}

	.ve-industrial-limit-grid,
	.ve-industrial-sector-grid {
		grid-template-columns: 1fr;
	}

	.ve-industrial-limit-grid li {
		min-height: 0;
	}
}

/* ===================================================================
 * Pagina DeepInspector — 0.1.25.
 * Body class `vision-e-deepinspector-page`.
 * =================================================================== */

.ve-deep-page *,
.ve-deep-page *::before,
.ve-deep-page *::after {
	box-sizing: border-box;
}

.ve-deep-page h1,
.ve-deep-page h2,
.ve-deep-page h3 {
	margin-top: 0;
	color: var(--ve-slate-900);
	font-weight: 720;
	letter-spacing: -0.025em;
	text-wrap: balance;
}

.ve-deep-page h2 {
	margin-bottom: 1.5rem;
	font-size: clamp(2rem, 3.5vw, 2.5rem);
	line-height: 1.12;
}

.ve-deep-page h3 {
	margin-bottom: 1rem;
	font-size: 1.375rem;
	line-height: 1.3;
}

.ve-deep-page p {
	margin-top: 0;
}

.ve-deep-hero {
	position: relative;
	isolation: isolate;
	overflow: hidden;
	padding-block: clamp(4rem, 8vw, 7rem);
	background: var(--ve-blue-700);
	color: var(--ve-white);
}

.ve-deep-hero::before {
	position: absolute;
	z-index: -1;
	inset: 0;
	background:
		linear-gradient(rgb(255 255 255 / 4%) 1px, transparent 1px),
		linear-gradient(90deg, rgb(255 255 255 / 4%) 1px, transparent 1px),
		radial-gradient(circle at 78% 20%, rgb(31 116 192 / 42%), transparent 36%);
	background-size: 4rem 4rem, 4rem 4rem, auto;
	content: "";
}

.ve-deep-hero__grid {
	display: grid;
	grid-template-columns: minmax(0, 1.1fr) minmax(20rem, 0.9fr);
	gap: 4rem;
	align-items: center;
}

.ve-deep-eyebrow {
	margin-bottom: 1rem;
	color: var(--ve-blue-50);
	font-size: 0.75rem;
	font-weight: 750;
	letter-spacing: 0.12em;
	line-height: 1.4;
	text-transform: uppercase;
}

.ve-deep-hero h1 {
	max-width: 17ch;
	margin-bottom: 0;
	color: var(--ve-white);
	font-size: clamp(2.75rem, 5vw, 4.5rem);
	line-height: 1.04;
}

.ve-deep-hero__lead {
	padding: 2rem;
	border: 1px solid rgb(255 255 255 / 16%);
	border-radius: var(--ve-radius-lg);
	background: rgb(255 255 255 / 7%);
	box-shadow: 0 2rem 5rem rgb(0 0 0 / 18%);
}

.ve-deep-hero__lead p {
	margin-bottom: 1.5rem;
	color: #d9e5ee;
	font-size: 1.0625rem;
	line-height: 1.7;
}

.ve-deep-hero__lead p:last-child {
	margin-bottom: 0;
}

.ve-deep-hero__lead strong {
	color: var(--ve-white);
}

.ve-deep-summary-section {
	padding-bottom: 4rem;
}

.ve-deep-summary {
	max-width: 60rem;
	padding: 2rem;
	border-left: 0.25rem solid var(--ve-blue-500);
	border-radius: var(--ve-radius-md);
	background: var(--ve-blue-50);
}

.ve-deep-summary h2 {
	margin-bottom: 1rem;
	color: var(--ve-blue-700);
	font-size: 1.25rem;
	letter-spacing: -0.01em;
	line-height: 1.35;
}

.ve-deep-summary p,
.ve-deep-summary li,
.ve-deep-copy p,
.ve-deep-narrow p,
.ve-deep-architecture p,
.ve-deep-module p,
.ve-deep-method p,
.ve-deep-case p,
.ve-deep-fit p,
.ve-deep-fit li,
.ve-deep-contact p {
	max-width: var(--ve-prose);
	color: var(--ve-slate-700);
	font-size: 1.0625rem;
	line-height: 1.75;
}

.ve-deep-summary p,
.ve-deep-copy p,
.ve-deep-narrow p,
.ve-deep-architecture p,
.ve-deep-module p,
.ve-deep-method p,
.ve-deep-case p,
.ve-deep-fit p,
.ve-deep-contact p {
	margin-bottom: 1.5rem;
}

.ve-deep-summary p:last-child,
.ve-deep-copy p:last-child,
.ve-deep-narrow p:last-child,
.ve-deep-architecture p:last-child,
.ve-deep-module p:last-child,
.ve-deep-method p:last-child,
.ve-deep-case p:last-child,
.ve-deep-fit p:last-child,
.ve-deep-contact p:last-child {
	margin-bottom: 0;
}

.ve-deep-summary ul,
.ve-deep-fit ul {
	display: grid;
	gap: 0.75rem;
	margin: 1.5rem 0 0;
	padding-left: 1.5rem;
}

.ve-deep-narrow {
	max-width: 52rem;
}

.ve-deep-two-column {
	display: grid;
	grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr);
	gap: 4rem;
	align-items: start;
}

.ve-deep-page .ve-deep-integration h2,
.ve-deep-page .ve-deep-contact h2 {
	color: var(--ve-white);
}

.ve-deep-integration p,
.ve-deep-contact p {
	color: #d9e5ee;
}

.ve-deep-integration strong,
.ve-deep-contact strong {
	color: var(--ve-white);
}

.ve-deep-architecture__grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	grid-auto-rows: 1fr;
	gap: 1.5rem;
}

.ve-deep-architecture article,
.ve-deep-module,
.ve-deep-method__grid article,
.ve-deep-case,
.ve-deep-fit__panel {
	padding: 2rem;
	border: 1px solid var(--ve-slate-200);
	border-radius: var(--ve-radius-lg);
	background: var(--ve-white);
	box-shadow: var(--ve-shadow-sm);
}

.ve-deep-architecture article {
	border-top: 0.25rem solid var(--ve-blue-500);
}

.ve-deep-architecture article:nth-child(2) {
	border-top-color: var(--ve-blue-300);
}

.ve-deep-architecture h2 {
	font-size: 2rem;
}

.ve-deep-table {
	margin-top: 2rem;
	overflow-x: auto;
	border: 1px solid var(--ve-slate-200);
	border-radius: var(--ve-radius-md);
	background: var(--ve-white);
}

.ve-deep-table table {
	width: 100%;
	min-width: 44rem;
	margin: 0;
	border: 0;
	border-collapse: collapse;
}

.ve-deep-table th,
.ve-deep-table td {
	padding: 1rem;
	border: 0;
	border-bottom: 1px solid var(--ve-slate-200);
	color: var(--ve-slate-700);
	font-size: 1rem;
	line-height: 1.6;
	text-align: left;
}

.ve-deep-table th {
	background: var(--ve-blue-700);
	color: var(--ve-white);
	font-size: 0.75rem;
	font-weight: 750;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

.ve-deep-table tbody tr:last-child td {
	border-bottom: 0;
}

.ve-deep-module-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	grid-auto-rows: 1fr;
	gap: 1.5rem;
	margin-top: 3rem;
}

.ve-deep-module h3 {
	min-height: 6.875rem;
}

.ve-deep-method__grid,
.ve-deep-case-grid,
.ve-deep-fit__grid,
.ve-deep-contact__grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 4rem;
	align-items: start;
}

.ve-deep-method__grid,
.ve-deep-case-grid {
	gap: 1.5rem;
	margin-top: 3rem;
}

.ve-deep-case-grid {
	grid-auto-rows: 1fr;
	align-items: stretch;
}

.ve-deep-case__visual {
	margin: 0 0 2rem;
	padding: 1.5rem;
	border: 1px solid var(--ve-slate-200);
	border-radius: var(--ve-radius-md);
	background: var(--ve-white);
}

.ve-deep-case__visual img {
	display: block;
	width: 100%;
	height: auto;
	object-fit: contain;
}

.ve-deep-fit__panel {
	background: var(--ve-blue-50);
}

.ve-deep-fit__panel > p:first-child {
	color: var(--ve-slate-900);
	font-weight: 700;
}

.ve-deep-contact {
	background: var(--ve-blue-700);
}

.ve-deep-contact__form {
	min-width: 0;
	padding: 2rem;
	border: 1px solid var(--ve-slate-200);
	border-radius: var(--ve-radius-lg);
	background: var(--ve-white);
	box-shadow: var(--ve-shadow-md);
}

@media (max-width: 64rem) {
	.ve-deep-page * {
		min-width: 0;
	}

	.ve-deep-hero__grid,
	.ve-deep-two-column,
	.ve-deep-architecture__grid,
	.ve-deep-module-grid,
	.ve-deep-method__grid,
	.ve-deep-case-grid,
	.ve-deep-fit__grid,
	.ve-deep-contact__grid {
		grid-template-columns: 1fr;
	}

	.ve-deep-architecture__grid,
	.ve-deep-module-grid,
	.ve-deep-case-grid {
		grid-auto-rows: auto;
	}

	.ve-deep-module h3 {
		min-height: 0;
	}

	.ve-deep-hero__lead,
	.ve-deep-contact__form {
		max-width: 44rem;
	}
}

@media (max-width: 48rem) {
	.ve-deep-table {
		overflow: visible;
		border: 0;
		background: transparent;
	}

	.ve-deep-table table,
	.ve-deep-table tbody,
	.ve-deep-table tr,
	.ve-deep-table td {
		display: block;
		width: 100%;
		min-width: 0;
	}

	.ve-deep-table thead {
		position: absolute;
		width: 1px;
		height: 1px;
		padding: 0;
		margin: -1px;
		overflow: hidden;
		clip: rect(0, 0, 0, 0);
		white-space: nowrap;
		border: 0;
	}

	.ve-deep-table tr {
		margin-bottom: 1rem;
		border: 1px solid var(--ve-slate-200);
		border-radius: var(--ve-radius-md);
		background: var(--ve-white);
		overflow: hidden;
	}

	.ve-deep-table td,
	.ve-deep-table tbody tr:last-child td {
		padding: 0.875rem 1rem;
		border-bottom: 1px solid var(--ve-slate-200);
		overflow-wrap: anywhere;
	}

	.ve-deep-table td:last-child,
	.ve-deep-table tbody tr:last-child td:last-child {
		border-bottom: 0;
	}

	.ve-deep-table td::before {
		display: block;
		margin-bottom: 0.25rem;
		color: var(--ve-blue-700);
		content: attr(data-label);
		font-size: 0.75rem;
		font-weight: 750;
		letter-spacing: 0.08em;
		text-transform: uppercase;
	}

	.ve-deep-page h2 {
		font-size: 2rem;
	}

	.ve-deep-summary h2 {
		font-size: 1.25rem;
	}

	.ve-deep-hero h1 {
		font-size: 2.75rem;
	}

	.ve-deep-hero__grid,
	.ve-deep-two-column,
	.ve-deep-method__grid,
	.ve-deep-fit__grid,
	.ve-deep-contact__grid {
		gap: 2rem;
	}

	.ve-deep-summary,
	.ve-deep-hero__lead,
	.ve-deep-architecture article,
	.ve-deep-module,
	.ve-deep-method__grid article,
	.ve-deep-case,
	.ve-deep-fit__panel,
	.ve-deep-contact__form {
		padding: 1.5rem;
	}
}

/* Pagina Lavora con noi. */
.ve-careers-page {
	color: var(--ve-slate-700);
	font-size: 1.0625rem;
	line-height: 1.75;
}

.ve-careers-page .ve-shell {
	width: min(calc(100% - 3rem), var(--ve-shell));
	margin-inline: auto;
}

.ve-careers-page .ve-section {
	padding-block: clamp(4rem, 8vw, 7rem);
}

/* Peso di /sistemi-di-visione/: senza, i titoli restavano al peso leggero di
 * GeneratePress. */
.ve-careers-page h1,
.ve-careers-page h2 {
	margin-top: 0;
	color: var(--ve-slate-900);
	font-weight: 720;
	letter-spacing: -0.035em;
}

.ve-careers-page h1 {
	max-width: 14ch;
	margin-bottom: 0;
	font-size: clamp(2.75rem, 5vw, 4.5rem);
	line-height: 1.03;
}

.ve-careers-page h2 {
	margin-bottom: 1.5rem;
	font-size: clamp(2rem, 3.5vw, 2.5rem);
	line-height: 1.12;
}

.ve-careers-page p {
	margin-top: 0;
}

.ve-careers-eyebrow,
.ve-careers-kicker {
	margin-bottom: 1rem;
	color: var(--ve-blue-500);
	font-size: 0.75rem;
	font-weight: 750;
	letter-spacing: 0.11em;
	text-transform: uppercase;
}

.ve-careers-hero,
.ve-careers-contact {
	background: var(--ve-blue-700);
}

.ve-careers-hero {
	padding-block: clamp(4.5rem, 10vw, 8rem);
}

.ve-careers-hero__grid,
.ve-careers-openings__grid,
.ve-careers-contact__grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: clamp(3rem, 8vw, 7rem);
	align-items: start;
}

.ve-careers-hero h1,
.ve-careers-contact h2 {
	color: var(--ve-white);
}

/* Sulle fasce `--ve-blue-700` l'eyebrow in `--ve-blue-500` aveva un contrasto
 * di circa 1,7:1: di fatto invisibile. */
.ve-careers-hero .ve-careers-eyebrow,
.ve-careers-contact .ve-careers-eyebrow {
	color: var(--ve-blue-50);
}

.ve-careers-principle {
	display: grid;
	min-height: 15rem;
	place-items: center;
	padding: 2rem;
	border: 1px solid rgba(255, 255, 255, 0.16);
	border-radius: var(--ve-radius-lg);
	background: linear-gradient(145deg, rgba(42, 157, 244, 0.2), rgba(255, 255, 255, 0.04));
}

.ve-careers-principle p {
	max-width: 12ch;
	margin-bottom: 0;
	color: var(--ve-white);
	font-size: clamp(1.75rem, 3vw, 2.75rem);
	font-weight: 700;
	line-height: 1.12;
	text-align: center;
}

.ve-careers-narrow {
	max-width: 50rem;
}

.ve-careers-lead {
	margin-bottom: 0;
	color: var(--ve-slate-900);
	font-size: clamp(1.25rem, 2vw, 1.5rem);
	line-height: 1.55;
}

.ve-careers-openings {
	background: var(--ve-blue-50);
}

.ve-careers-highlight {
	padding: 1.5rem;
	border-left: 0.25rem solid var(--ve-blue-500);
	border-radius: 0 var(--ve-radius-md) var(--ve-radius-md) 0;
	background: var(--ve-white);
	color: var(--ve-slate-900);
	font-weight: 700;
	box-shadow: var(--ve-shadow-sm);
}

.ve-careers-copy {
	padding: clamp(1.5rem, 3vw, 2.5rem);
	border: 1px solid var(--ve-slate-200);
	border-radius: var(--ve-radius-lg);
	background: var(--ve-white);
	box-shadow: var(--ve-shadow-sm);
}

.ve-careers-copy p:last-child,
.ve-careers-contact__card p:last-child {
	margin-bottom: 0;
}

.ve-careers-contact__card {
	padding: clamp(1.5rem, 3vw, 2.5rem);
	border: 1px solid rgba(255, 255, 255, 0.16);
	border-radius: var(--ve-radius-lg);
	background: rgba(255, 255, 255, 0.06);
}

.ve-careers-contact__card p {
	color: #d9e5ee;
}

.ve-careers-contact__card a {
	color: var(--ve-white);
	font-weight: 750;
	text-underline-offset: 0.2em;
}

@media (max-width: 64rem) {
	.ve-careers-page * {
		min-width: 0;
	}

	.ve-careers-hero__grid,
	.ve-careers-openings__grid,
	.ve-careers-contact__grid {
		grid-template-columns: 1fr;
		gap: 2.5rem;
	}

	.ve-careers-principle {
		min-height: 10rem;
	}
}

@media (max-width: 48rem) {
	.ve-careers-page .ve-shell {
		width: min(calc(100% - 2rem), var(--ve-shell));
	}

	.ve-careers-page h1 {
		font-size: 2.75rem;
	}

	.ve-careers-page h2 {
		font-size: 2rem;
	}
}

/* Pagina indice delle FAQ. Le domande sono un elenco da scorrere in una
   colonna, non card: ogni H2 introduce poche righe di risposta, quindi resta
   piu' piccolo di un H2 di sezione. Fondo chiaro e banda scura vengono da
   .ve-section--soft e .ve-section--dark. */
.ve-faq-page {
	color: var(--ve-slate-700);
	font-size: 1.0625rem;
	line-height: 1.72;
}

.ve-faq-page h1,
.ve-faq-page h2 {
	margin-top: 0;
	color: var(--ve-slate-900);
	font-weight: 720;
}

.ve-faq-page h1 {
	margin-bottom: 1.5rem;
	font-size: clamp(2.75rem, 5vw, 4.5rem);
	line-height: 1.03;
	letter-spacing: -0.035em;
}

.ve-faq-page p {
	margin-top: 0;
}

.ve-faq-narrow {
	max-width: 50rem;
}

.ve-faq-hero .ve-lead {
	margin-bottom: 0;
}

.ve-faq-item {
	padding-block: 2.5rem;
	border-top: 1px solid var(--ve-slate-200);
}

.ve-faq-item:first-child {
	padding-top: 0;
	border-top: 0;
}

.ve-faq-item:last-child {
	padding-bottom: 0;
}

.ve-faq-item h2 {
	margin-bottom: 0.75rem;
	font-size: clamp(1.375rem, 2.2vw, 1.625rem);
	line-height: 1.25;
	letter-spacing: -0.016em;
}

.ve-faq-item p {
	max-width: var(--ve-prose);
	margin-bottom: 1rem;
}

.ve-faq-more {
	color: var(--ve-blue-600);
	font-weight: 700;
	text-decoration: underline;
	text-underline-offset: 0.18em;
}

.ve-faq-contact__grid {
	display: flex;
	flex-wrap: wrap;
	gap: 1.5rem 3rem;
	align-items: center;
	justify-content: space-between;
}

.ve-faq-contact__title {
	margin-bottom: 0;
	color: var(--ve-white);
	font-size: clamp(1.75rem, 3vw, 2.25rem);
	font-weight: 720;
	line-height: 1.15;
	letter-spacing: -0.02em;
}

/* FAQ singole: body class `vision-e-faq-item` insieme a `vision-e-article`,
 * quindi colonna, titolo e corpo sono quelli degli articoli. Qui c'è solo il
 * rimando all'indice, che chiude la risposta al posto del piè di articolo. */
.vision-e-faq-item .entry-content {
	padding-bottom: 0;
}

.ve-faq-back {
	margin: 0 0 4rem;
	padding-top: 1.5rem;
	border-top: 1px solid var(--ve-slate-200);
	font-size: 1.0625rem;
}

.ve-faq-back a {
	color: var(--ve-blue-600);
	font-weight: 700;
	text-decoration: underline;
	text-underline-offset: 0.18em;
}

/* Ricerca e pagina 404 (body class `vision-e-search` e `vision-e-404`): stesso
   guscio, composto da functions.php. Misure delle pagine; i risultati sono un
   elenco in una colonna come l'indice FAQ, i collegamenti per ripartire card
   dello stesso ruolo. I selettori del campo includono `input[type="search"]`
   per vincere sulle regole dei campi di GeneratePress. */
.ve-search-page {
	color: var(--ve-slate-700);
	font-size: 1.0625rem;
	line-height: 1.72;
}

.ve-search-page h1,
.ve-search-page h2 {
	margin-top: 0;
	color: var(--ve-slate-900);
	font-weight: 720;
}

.ve-search-page h1 {
	margin-bottom: 1.5rem;
	font-size: clamp(2.75rem, 5vw, 4.5rem);
	line-height: 1.03;
	letter-spacing: -0.035em;
	overflow-wrap: anywhere;
}

.ve-search-page p {
	margin-top: 0;
}

.ve-search-narrow {
	max-width: 50rem;
}

.ve-search-hero .ve-lead {
	margin-bottom: 2rem;
}

.ve-search-count {
	margin-bottom: 1rem;
	color: var(--ve-slate-600);
	font-size: 0.9375rem;
	font-weight: 700;
}

.ve-search-form {
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem;
	max-width: 40rem;
}

.ve-search-form input[type="search"] {
	flex: 1 1 12rem;
	min-width: 0;
	min-height: 3rem;
	padding: 0.75rem 1rem;
	border: 1px solid var(--ve-slate-600);
	border-radius: var(--ve-radius-sm);
	background: var(--ve-white);
	color: var(--ve-slate-900);
	font-size: 1.0625rem;
	line-height: 1.4;
}

.ve-search-form input[type="search"]:focus {
	border-color: var(--ve-blue-500);
	background: var(--ve-white);
	color: var(--ve-slate-900);
}

.ve-search-form input[type="search"]::placeholder {
	color: var(--ve-slate-600);
	opacity: 1;
}

.ve-search-list,
.ve-search-links {
	margin: 0;
	padding: 0;
	list-style: none;
}

.ve-search-item {
	padding-block: 2rem;
	border-top: 1px solid var(--ve-slate-200);
}

.ve-search-item:first-child {
	padding-top: 0;
	border-top: 0;
}

.ve-search-item:last-child {
	padding-bottom: 0;
}

.ve-search-item__type {
	margin-bottom: 0.375rem;
	color: var(--ve-blue-600);
	font-size: 0.75rem;
	font-weight: 750;
	letter-spacing: 0.12em;
	line-height: 1.4;
	text-transform: uppercase;
}

.ve-search-page .ve-search-item__title {
	margin-bottom: 0.5rem;
	font-size: clamp(1.25rem, 2vw, 1.5rem);
	line-height: 1.25;
	letter-spacing: -0.016em;
}

.ve-search-item__title a {
	color: var(--ve-slate-900);
	text-decoration: none;
}

.ve-search-item__title a:hover {
	color: var(--ve-blue-700);
	text-decoration: underline;
}

.ve-search-page .ve-search-item__summary {
	max-width: var(--ve-prose);
	margin-bottom: 0;
}

.ve-search-pages {
	margin-top: 3rem;
	padding-top: 2rem;
	border-top: 1px solid var(--ve-slate-200);
}

.ve-search-pages ul {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.ve-search-pages li > .page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 2.75rem;
	min-height: 2.75rem;
	padding: 0.5rem 0.875rem;
	border: 1px solid var(--ve-slate-200);
	border-radius: var(--ve-radius-sm);
	color: var(--ve-blue-600);
	font-size: 0.9375rem;
	font-weight: 700;
	text-decoration: none;
}

.ve-search-pages li > a.page-numbers:hover {
	border-color: var(--ve-blue-600);
}

.ve-search-pages li > .page-numbers.current {
	border-color: var(--ve-blue-700);
	background: var(--ve-blue-700);
	color: var(--ve-white);
}

.ve-search-pages li > .page-numbers.dots {
	border-color: transparent;
	color: var(--ve-slate-600);
}

.ve-search-start h2 {
	margin-bottom: 2rem;
	font-size: clamp(2rem, 3.5vw, 2.5rem);
	line-height: 1.12;
	letter-spacing: -0.025em;
}

.ve-search-links {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 15rem), 1fr));
	gap: 1rem;
}

.ve-search-links li {
	padding: 1.5rem;
	border: 1px solid var(--ve-slate-200);
	border-radius: var(--ve-radius-md);
	background: var(--ve-white);
}

.ve-search-links a {
	color: var(--ve-blue-600);
	font-size: 1.125rem;
	font-weight: 720;
	line-height: 1.3;
	text-decoration: underline;
	text-underline-offset: 0.18em;
}

.ve-search-page .ve-search-links p {
	margin: 0.5rem 0 0;
	color: var(--ve-slate-600);
	font-size: 1rem;
	line-height: 1.6;
}

/* Pagina Chi siamo. */
.ve-about-page {
	color: var(--ve-slate-700);
	font-size: 1.0625rem;
	line-height: 1.72;
}

.ve-about-page .ve-shell {
	width: min(calc(100% - 3rem), var(--ve-shell));
	margin-inline: auto;
}

.ve-about-page .ve-section {
	padding-block: clamp(4rem, 8vw, 7rem);
}

.ve-about-page h1,
.ve-about-page h2,
.ve-about-page h3,
.ve-about-page h4 {
	margin-top: 0;
	color: var(--ve-slate-900);
	letter-spacing: -0.03em;
}

.ve-about-page h1 {
	margin-bottom: 1.5rem;
	font-size: clamp(2.75rem, 5vw, 4.5rem);
	line-height: 1.02;
}

.ve-about-page h2 {
	margin-bottom: 1.5rem;
	font-size: clamp(2rem, 3.5vw, 2.5rem);
	line-height: 1.12;
}

.ve-about-page h3 {
	margin-bottom: 1.5rem;
	font-size: clamp(1.75rem, 3vw, 2.25rem);
	line-height: 1.15;
}

.ve-about-page p,
.ve-about-page figure {
	margin-top: 0;
}

.ve-about-eyebrow,
.ve-about-kicker {
	margin-bottom: 1rem;
	color: var(--ve-blue-500);
	font-size: 0.75rem;
	font-weight: 750;
	letter-spacing: 0.11em;
	text-transform: uppercase;
}

.ve-about-hero {
	padding-block: clamp(4.5rem, 10vw, 8rem);
	background: var(--ve-blue-700);
}

.ve-about-hero__grid,
.ve-about-experience__grid,
.ve-about-contact__grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: clamp(3rem, 8vw, 7rem);
	align-items: center;
}

.ve-about-hero h1,
.ve-about-hero a,
.ve-about-contact a {
	color: var(--ve-white);
}

.ve-about-claim {
	max-width: 16ch;
	margin-bottom: 0;
	color: var(--ve-white);
	font-size: clamp(1.65rem, 3vw, 2.6rem);
	font-weight: 650;
	line-height: 1.16;
}

.ve-about-hero__story {
	padding: clamp(1.5rem, 3vw, 2.5rem);
	border: 1px solid rgba(255, 255, 255, 0.16);
	border-radius: var(--ve-radius-lg);
	background: rgba(255, 255, 255, 0.06);
}

.ve-about-hero__story p {
	margin-bottom: 0;
	color: #d9e5ee;
}

.ve-about-logo {
	margin-bottom: 2rem;
}

.ve-about-logo img {
	display: block;
	width: auto;
	max-width: 11rem;
	height: auto;
}

.ve-about-narrow {
	max-width: 52rem;
}

.ve-about-lead {
	color: var(--ve-slate-900);
	font-size: clamp(1.2rem, 2vw, 1.45rem);
	line-height: 1.58;
}

.ve-about-context-grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	grid-auto-rows: 1fr;
	gap: 1.5rem;
	margin-top: 3rem;
}

.ve-about-context-card {
	position: relative;
	display: block;
	padding: 2rem;
	border: 1px solid var(--ve-slate-200);
	border-radius: var(--ve-radius-lg);
	background: var(--ve-white);
	box-shadow: var(--ve-shadow-sm);
	text-decoration: none;
}

.ve-about-context-card:hover,
.ve-about-context-card:focus-visible {
	border-color: var(--ve-blue-500);
	transform: translateY(-2px);
}

.ve-about-context-card__icon {
	display: inline-grid;
	width: 2.5rem;
	height: 2.5rem;
	margin-bottom: 1.25rem;
	place-items: center;
	border-radius: 999px;
	background: var(--ve-blue-50);
	color: var(--ve-blue-700);
	font-size: 0.8rem;
	font-weight: 750;
}

.ve-about-context-card p {
	margin-bottom: 0;
	color: var(--ve-slate-700);
}

.ve-about-context-card strong {
	color: var(--ve-slate-900);
}

.ve-about-experience {
	background: var(--ve-blue-50);
}

.ve-about-experience__grid {
	align-items: start;
}

.ve-about-experience__media {
	overflow: hidden;
	margin-bottom: 0;
	border-radius: var(--ve-radius-lg);
	background: var(--ve-white);
	box-shadow: var(--ve-shadow-md);
}

.ve-about-experience__media img {
	display: block;
	width: 100%;
	height: auto;
}

.ve-about-skills {
	background: var(--ve-blue-700);
}

.ve-about-skills h2,
.ve-about-skills h4,
.ve-about-skills p {
	color: var(--ve-white);
}

.ve-about-skills .ve-about-eyebrow {
	color: #cae7ff;
}

.ve-about-skills-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	grid-auto-rows: 1fr;
	gap: 1.25rem;
	margin-top: 3rem;
}

.ve-about-skill-card {
	padding: 1.75rem;
	border: 1px solid rgba(255, 255, 255, 0.22);
	border-radius: var(--ve-radius-lg);
	background: rgba(10, 34, 55, 0.22);
}

.ve-about-skill-card figure {
	/* Sono fotografie a pieno formato, non icone: il riquadro bianco da 4,5 rem
	   le rimpiccioliva dentro una cornice che non serviva e che sul fondo scuro
	   leggeva come una targhetta. */
	width: 100%;
	margin-bottom: 1.5rem;
	overflow: hidden;
	border-radius: var(--ve-radius-md);
	aspect-ratio: 3 / 2;
}

.ve-about-skill-card img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.ve-about-skill-card h4 {
	margin-bottom: 1rem;
	font-size: 1.35rem;
	line-height: 1.2;
}

.ve-about-skill-card p {
	margin-bottom: 0;
	color: #e4f0fa;
	font-size: 0.96rem;
}

.ve-about-manifesto {
	padding-block: clamp(5rem, 12vw, 10rem);
	background: var(--ve-blue-700);
	text-align: center;
}

.ve-about-manifesto h2 {
	max-width: 22ch;
	margin: 0 auto;
	color: var(--ve-white);
	font-size: clamp(2.25rem, 5vw, 4rem);
}

.ve-about-contact {
	background: var(--ve-blue-700);
}

.ve-about-contact__grid {
	align-items: start;
}

/* Bersaglio di #contatti, dove portano «Richiedi verifica fattibilità», la
 * voce Contatti e la FAQ. Sta sul contenuto e non sulla sezione, così il
 * margine interno della sezione non spinge il form sotto lo schermo; il
 * margine di scorrimento è la testata fissa (105 px a ogni larghezza) più un
 * respiro. Lo misura inspect-browser-layout.ps1 -CheckAnchor. */
#contatti.ve-about-contact__grid {
	scroll-margin-top: calc(6.5625rem + 1.5rem);
}

.ve-about-contact__title {
	margin-bottom: 1rem;
	color: var(--ve-white);
	font-size: clamp(2rem, 3.5vw, 2.5rem);
	font-weight: 750;
	letter-spacing: -0.035em;
	text-transform: none;
}

.ve-about-contact__grid > div:first-child > p:last-child {
	color: #d9e5ee;
}

.ve-about-contact__form {
	min-width: 0;
	padding: 2rem;
	border-radius: var(--ve-radius-lg);
	background: var(--ve-white);
	box-shadow: var(--ve-shadow-md);
}

.ve-about-details {
	background: var(--ve-white);
}

.ve-about-details h3 {
	max-width: 24ch;
}

.ve-about-details-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	grid-auto-rows: 1fr;
	gap: 1.25rem;
	margin-top: 3rem;
}

.ve-about-details-grid a {
	display: grid;
	align-content: start;
	padding: 1.75rem;
	border: 1px solid var(--ve-slate-200);
	border-radius: var(--ve-radius-lg);
	background: var(--ve-blue-50);
	color: var(--ve-slate-900);
	text-decoration: none;
}

.ve-about-details-grid a:hover,
.ve-about-details-grid a:focus-visible {
	border-color: var(--ve-blue-500);
}

.ve-about-details-grid span {
	display: inline-grid;
	width: 2.5rem;
	height: 2.5rem;
	margin-bottom: 1.5rem;
	place-items: center;
	border-radius: 999px;
	background: var(--ve-blue-50);
	color: var(--ve-blue-700);
}

.ve-about-details-grid strong {
	margin-bottom: 0.5rem;
	font-size: 1.25rem;
}

.ve-about-details-grid small {
	color: var(--ve-slate-700);
	font-size: 1rem;
}

@media (max-width: 64rem) {
	.ve-about-page * {
		min-width: 0;
	}

	.ve-about-hero__grid,
	.ve-about-experience__grid,
	.ve-about-contact__grid {
		grid-template-columns: 1fr;
	}

	.ve-about-context-grid,
	.ve-about-skills-grid,
	.ve-about-details-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		grid-auto-rows: auto;
	}
}

@media (max-width: 48rem) {
	.ve-about-page .ve-shell {
		width: min(calc(100% - 2rem), var(--ve-shell));
	}

	.ve-about-page h1 {
		font-size: 2.75rem;
	}

	.ve-about-page h2 {
		font-size: 2rem;
	}

	.ve-about-context-grid,
	.ve-about-skills-grid,
	.ve-about-details-grid {
		grid-template-columns: 1fr;
	}
}

/* ===================================================================
 * Pagina Ispezione visiva — body class `vision-e-visual-inspection-page`.
 * Markup nativo; parole e titoli sono quelli della pagina Fusion, anche dove
 * il testo dice «articolo» (decisione dell'utente del 2026-09-26). Nessun
 * testo aggiunto, quindi niente eyebrow: l'accento della hero è decorativo.
 * =================================================================== */

.ve-inspection-page {
	color: var(--ve-slate-700);
	font-size: 1.0625rem;
	line-height: 1.72;
}

.ve-inspection-page *,
.ve-inspection-page *::before,
.ve-inspection-page *::after {
	box-sizing: border-box;
}

.ve-inspection-page h1,
.ve-inspection-page h2 {
	margin-top: 0;
	color: var(--ve-slate-900);
	font-weight: 720;
	letter-spacing: -0.03em;
	text-wrap: balance;
}

.ve-inspection-page h1 {
	margin-bottom: 2rem;
	font-size: clamp(2.75rem, 5vw, 4.5rem);
	line-height: 1.04;
}

.ve-inspection-page h2 {
	margin-bottom: 1.5rem;
	font-size: clamp(2rem, 3.5vw, 2.5rem);
	line-height: 1.12;
}

.ve-inspection-page p {
	max-width: var(--ve-prose);
	margin-top: 0;
	margin-bottom: 1.5rem;
}

.ve-inspection-page p:last-child {
	margin-bottom: 0;
}

.ve-inspection-page strong {
	color: var(--ve-slate-900);
}

.ve-inspection-lead {
	color: var(--ve-slate-900);
	font-size: clamp(1.1875rem, 1.8vw, 1.375rem);
	line-height: 1.55;
}

/* Hero: la griglia di fondo è quella di /sistemi-di-visione/. */
.ve-inspection-hero {
	position: relative;
	isolation: isolate;
	overflow: hidden;
	padding-block: clamp(4.5rem, 9vw, 8rem);
	background: var(--ve-blue-700);
	color: #d9e5ee;
}

.ve-inspection-hero::before {
	position: absolute;
	z-index: -1;
	inset: 0;
	background:
		linear-gradient(rgb(255 255 255 / 4%) 1px, transparent 1px),
		linear-gradient(90deg, rgb(255 255 255 / 4%) 1px, transparent 1px),
		radial-gradient(circle at 82% 16%, rgb(31 116 192 / 38%), transparent 32%);
	background-size: 4rem 4rem, 4rem 4rem, auto;
	content: "";
}

.ve-inspection-hero__grid {
	display: grid;
	grid-template-columns: minmax(0, 1.15fr) minmax(20rem, 0.85fr);
	gap: clamp(3rem, 7vw, 6rem);
	align-items: center;
}

.ve-inspection-hero__accent {
	width: 4rem;
	height: 0.25rem;
	margin-bottom: 1.5rem;
	background: var(--ve-blue-300);
}

.ve-inspection-page .ve-inspection-hero h1,
.ve-inspection-hero strong,
.ve-inspection-hero .ve-inspection-hero__lead {
	color: var(--ve-white);
}

.ve-inspection-hero__lead {
	font-size: clamp(1.1875rem, 1.8vw, 1.375rem);
	line-height: 1.55;
}

/* Le due domande a chi legge, con la risposta subito sotto. */
.ve-inspection-questions {
	padding: clamp(1.5rem, 3vw, 2.5rem);
	border: 1px solid rgb(255 255 255 / 16%);
	border-radius: var(--ve-radius-lg);
	background: rgb(255 255 255 / 6%);
}

.ve-inspection-page .ve-inspection-question {
	margin-bottom: 1.25rem;
	padding-left: 1.25rem;
	border-left: 0.25rem solid var(--ve-blue-300);
	color: var(--ve-white);
	font-size: clamp(1.25rem, 2vw, 1.5rem);
	font-weight: 700;
	line-height: 1.35;
}

.ve-inspection-page .ve-inspection-question + p:not(.ve-inspection-question) {
	margin-top: 2rem;
}

.ve-inspection-questions__close {
	color: var(--ve-white);
	font-weight: 700;
}

/* Ridurre i costi: l'esempio numerico è un riquadro a sé. */
.ve-inspection-costs__grid,
.ve-inspection-conclusion__grid {
	display: grid;
	grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr);
	gap: clamp(3rem, 7vw, 6rem);
	align-items: start;
}

.ve-inspection-example {
	padding: clamp(1.5rem, 3vw, 2.5rem);
	border: 1px solid var(--ve-slate-200);
	border-top: 0.25rem solid var(--ve-blue-500);
	border-radius: var(--ve-radius-md);
	background: var(--ve-white);
	box-shadow: var(--ve-shadow-md);
}

.ve-inspection-example__result {
	padding-top: 1.5rem;
	border-top: 1px solid var(--ve-slate-200);
	color: var(--ve-slate-900);
	font-size: 1.1875rem;
	font-weight: 700;
	line-height: 1.5;
}

/* Aumentare la competitività: le tre capacità hanno lo stesso ruolo, quindi
 * sono card di pari altezza; su una colonna tornano all'altezza naturale. */
.ve-inspection-narrow {
	max-width: 50rem;
}

.ve-inspection-benefits {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 1.5rem;
	margin: 3rem 0;
	padding: 0;
	list-style: none;
}

.ve-inspection-benefit {
	display: grid;
	align-content: start;
	gap: 1.25rem;
	margin: 0;
	padding: 2rem;
	border: 1px solid var(--ve-slate-200);
	border-radius: var(--ve-radius-md);
	background: var(--ve-white);
	box-shadow: var(--ve-shadow-sm);
	line-height: 1.6;
}

.ve-inspection-customers {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: clamp(2rem, 5vw, 4rem);
	align-items: start;
}

.ve-inspection-customers__key {
	padding: 1.5rem;
	border-left: 0.25rem solid var(--ve-blue-500);
	border-radius: 0 var(--ve-radius-md) var(--ve-radius-md) 0;
	background: var(--ve-white);
	font-size: 1.1875rem;
	line-height: 1.5;
	box-shadow: var(--ve-shadow-sm);
}

/* Contattaci: banda scura, form in una card bianca. */
.ve-inspection-contact {
	background: var(--ve-blue-700);
}

.ve-inspection-contact__grid {
	display: grid;
	grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr);
	gap: 4rem;
	align-items: start;
}

.ve-inspection-page .ve-inspection-contact h2 {
	color: var(--ve-white);
}

.ve-inspection-contact__intro p {
	color: #d9e5ee;
}

.ve-inspection-contact__form {
	min-width: 0;
	padding: 2rem;
	border: 1px solid var(--ve-slate-200);
	border-radius: var(--ve-radius-lg);
	background: var(--ve-white);
	color: var(--ve-slate-700);
	box-shadow: var(--ve-shadow-md);
}

@media (max-width: 64rem) {
	.ve-inspection-page * {
		min-width: 0;
	}

	.ve-inspection-hero__grid,
	.ve-inspection-costs__grid,
	.ve-inspection-conclusion__grid,
	.ve-inspection-benefits,
	.ve-inspection-customers,
	.ve-inspection-contact__grid {
		grid-template-columns: 1fr;
		gap: 2.5rem;
	}

	.ve-inspection-benefits {
		gap: 1rem;
	}

	.ve-inspection-questions,
	.ve-inspection-example,
	.ve-inspection-contact__form {
		max-width: 44rem;
	}
}

@media (max-width: 48rem) {
	.ve-inspection-page h1 {
		font-size: 2.75rem;
	}

	.ve-inspection-page h2 {
		font-size: 2rem;
	}

	.ve-inspection-hero__grid,
	.ve-inspection-costs__grid,
	.ve-inspection-conclusion__grid,
	.ve-inspection-customers,
	.ve-inspection-contact__grid {
		gap: 2rem;
	}

	.ve-inspection-benefit,
	.ve-inspection-contact__form {
		padding: 1.5rem;
	}
}

/* ===================================================================
 * Pagina Controllo qualità industriale — body class
 * `vision-e-industrial-quality-page`. Markup nativo; il testo è quello della
 * baseline con le sole modifiche decise dall'utente (nota redazionale tolta,
 * «Manifatturiero»). Non è della famiglia `ve-quality-`: parla del controllo
 * qualità in generale e rimanda alle sei pagine settore.
 * =================================================================== */

.ve-control-page {
	color: var(--ve-slate-700);
	font-size: 1.0625rem;
	line-height: 1.72;
}

.ve-control-page *,
.ve-control-page *::before,
.ve-control-page *::after {
	box-sizing: border-box;
}

.ve-control-page h1,
.ve-control-page h2,
.ve-control-page h3 {
	margin-top: 0;
	color: var(--ve-slate-900);
	font-weight: 720;
	letter-spacing: -0.025em;
	text-wrap: balance;
}

.ve-control-page h1 {
	margin-bottom: 0;
	font-size: clamp(2.75rem, 5vw, 4.5rem);
	line-height: 1.04;
}

.ve-control-page h2 {
	margin-bottom: 1.5rem;
	font-size: clamp(2rem, 3.5vw, 2.5rem);
	line-height: 1.12;
}

.ve-control-page h3 {
	margin-bottom: 0.75rem;
	font-size: 1.375rem;
	letter-spacing: -0.015em;
	line-height: 1.25;
}

.ve-control-page p {
	max-width: var(--ve-prose);
	margin-top: 0;
	margin-bottom: 1.25rem;
}

.ve-control-page p:last-child {
	margin-bottom: 0;
}

.ve-control-page strong {
	color: var(--ve-slate-900);
}

.ve-control-lead {
	color: var(--ve-slate-900);
	font-size: clamp(1.1875rem, 1.8vw, 1.375rem);
	line-height: 1.55;
}

.ve-control-narrow {
	max-width: 50rem;
}

/* Il nome non va a capo sul trattino («Vision- / e»). */
.ve-control-nowrap {
	white-space: nowrap;
}

/* Hero: titolo e «In breve» affiancati, l'illustrazione sotto a tutta
 * larghezza, perché è panoramica (1380×607). */
.ve-control-hero {
	position: relative;
	isolation: isolate;
	overflow: hidden;
	padding-block: clamp(4.5rem, 9vw, 8rem);
	background: var(--ve-blue-700);
	color: #d9e5ee;
}

.ve-control-hero::before {
	position: absolute;
	z-index: -1;
	inset: 0;
	background:
		linear-gradient(rgb(255 255 255 / 4%) 1px, transparent 1px),
		linear-gradient(90deg, rgb(255 255 255 / 4%) 1px, transparent 1px),
		radial-gradient(circle at 82% 16%, rgb(31 116 192 / 38%), transparent 32%);
	background-size: 4rem 4rem, 4rem 4rem, auto;
	content: "";
}

.ve-control-hero__grid {
	display: grid;
	grid-template-columns: minmax(0, 1.1fr) minmax(20rem, 0.9fr);
	gap: clamp(3rem, 6vw, 5rem);
	align-items: end;
}

.ve-control-hero__accent {
	width: 4rem;
	height: 0.25rem;
	margin-bottom: 1.5rem;
	background: var(--ve-blue-300);
}

.ve-control-page .ve-control-hero h1 {
	color: var(--ve-white);
}

.ve-control-summary {
	padding: clamp(1.5rem, 3vw, 2rem);
	border: 1px solid rgb(255 255 255 / 16%);
	border-left: 0.25rem solid var(--ve-blue-300);
	border-radius: var(--ve-radius-md);
	background: rgb(255 255 255 / 6%);
}

.ve-control-page .ve-control-summary h2 {
	margin-bottom: 1rem;
	color: var(--ve-white);
	font-size: 1.25rem;
	letter-spacing: -0.01em;
	line-height: 1.35;
}

.ve-control-page .ve-control-summary p {
	margin-bottom: 1rem;
	color: #d9e5ee;
	font-size: 1rem;
	line-height: 1.7;
}

.ve-control-page .ve-control-summary p:last-child {
	margin-bottom: 0;
}

.ve-control-hero__visual {
	margin: clamp(3rem, 6vw, 4.5rem) 0 0;
}

.ve-control-hero__visual img {
	display: block;
	width: 100%;
	height: auto;
	border-radius: var(--ve-radius-lg);
	box-shadow: var(--ve-shadow-md);
}

.ve-control-toc {
	max-width: 50rem;
	margin-bottom: clamp(3rem, 6vw, 4.5rem);
}

.ve-control-toc #ez-toc-container {
	width: 100%;
	margin: 0;
	padding: 0 0 1.5rem;
	border: 0;
	border-bottom: 1px solid var(--ve-slate-200);
	border-radius: 0;
	background: transparent;
	box-shadow: none;
}

/* Tabelle: vere tabelle da 48 rem in su, schede con etichetta sotto. */
.ve-control-table {
	margin-top: 2.5rem;
	overflow: hidden;
	border: 1px solid var(--ve-slate-200);
	border-radius: var(--ve-radius-md);
	background: var(--ve-white);
	box-shadow: var(--ve-shadow-sm);
}

.ve-control-table table {
	width: 100%;
	margin: 0;
	border: 0;
	border-collapse: collapse;
}

.ve-control-table th,
.ve-control-table td {
	padding: 1rem 1.25rem;
	border: 0;
	border-bottom: 1px solid var(--ve-slate-200);
	color: var(--ve-slate-700);
	font-size: 1rem;
	line-height: 1.6;
	text-align: left;
	vertical-align: top;
}

.ve-control-table th {
	background: var(--ve-blue-700);
	color: var(--ve-white);
	font-size: 0.75rem;
	font-weight: 750;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

.ve-control-table tbody tr:last-child td {
	border-bottom: 0;
}

.ve-control-table td:first-child {
	color: var(--ve-slate-900);
	font-weight: 700;
}

.ve-control-table--sectors td:first-child {
	width: 12rem;
}

/* Le due modalità: la risposta breve in evidenza, quella lunga accanto. */
.ve-control-modes {
	display: grid;
	grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr);
	gap: clamp(2rem, 5vw, 4rem);
	align-items: start;
	margin-top: clamp(3rem, 6vw, 4.5rem);
}

.ve-control-callout {
	padding: clamp(1.5rem, 3vw, 2rem);
	border-left: 0.25rem solid var(--ve-blue-500);
	border-radius: 0 var(--ve-radius-md) var(--ve-radius-md) 0;
	background: var(--ve-blue-50);
}

.ve-control-callout--wide {
	max-width: 50rem;
	margin-top: clamp(3rem, 6vw, 4.5rem);
}

/* Accanto alla risposta lunga la breve resta in vista, sotto la testata fissa. */
@media (min-width: 64.0625rem) {
	.ve-control-modes > .ve-control-callout {
		position: sticky;
		top: 7.5rem;
	}
}

.ve-control-figure {
	margin: 2rem 0 0;
}

.ve-control-figure img {
	display: block;
	max-width: 100%;
	height: auto;
	border: 1px solid var(--ve-slate-200);
	border-radius: var(--ve-radius-md);
}

.ve-control-figure--framed {
	margin: 0;
	padding: 1rem;
	border: 1px solid var(--ve-slate-200);
	border-radius: var(--ve-radius-lg);
	background: var(--ve-white);
	box-shadow: var(--ve-shadow-sm);
}

.ve-control-figure--framed img {
	width: 100%;
	border: 0;
}

.ve-control-split {
	display: grid;
	grid-template-columns: minmax(0, 1.1fr) minmax(0, 0.9fr);
	gap: clamp(3rem, 6vw, 5rem);
	align-items: center;
}

.ve-control-split--top {
	align-items: start;
}

/* Card dello stesso ruolo: pari altezza quando sono affiancate. */
.ve-control-card-grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 1.5rem;
	margin-top: clamp(3rem, 6vw, 4.5rem);
}

.ve-control-card {
	padding: 2rem;
	border: 1px solid var(--ve-slate-200);
	border-top: 0.25rem solid var(--ve-blue-500);
	border-radius: var(--ve-radius-md);
	background: var(--ve-white);
	box-shadow: var(--ve-shadow-sm);
}

.ve-control-check-list {
	display: grid;
	gap: 0.75rem;
	margin: 1.25rem 0 0;
	padding: 0;
	list-style: none;
}

.ve-control-check-list li {
	position: relative;
	margin: 0;
	padding-left: 2rem;
	line-height: 1.6;
}

.ve-control-check-list li::before {
	position: absolute;
	top: 0.4375em;
	left: 0.5rem;
	width: 0.375rem;
	height: 0.6875rem;
	border-right: 0.125rem solid var(--ve-blue-500);
	border-bottom: 0.125rem solid var(--ve-blue-500);
	content: "";
	transform: rotate(45deg);
}

/* Le attività del progetto sono una sequenza vera: restano numerate. */
.ve-control-steps {
	display: grid;
	gap: 1rem;
	margin: 1.25rem 0 0;
	padding: 0;
	list-style: none;
	counter-reset: ve-control-step;
}

.ve-control-steps li {
	position: relative;
	min-height: 2rem;
	margin: 0;
	padding-left: 3rem;
	line-height: 1.6;
	counter-increment: ve-control-step;
}

.ve-control-steps li::before {
	position: absolute;
	top: -0.1rem;
	left: 0;
	display: grid;
	width: 2rem;
	height: 2rem;
	place-items: center;
	border-radius: 999px;
	background: var(--ve-blue-50);
	color: var(--ve-blue-700);
	content: counter(ve-control-step);
	font-size: 0.875rem;
	font-weight: 750;
}

/* Banda scura: perché Vision-e, poi i sei settori. */
.ve-control-page .ve-section--dark h2,
.ve-control-page .ve-section--dark h3,
.ve-control-page .ve-control-why .ve-control-lead {
	color: var(--ve-white);
}

.ve-control-why p {
	color: #d9e5ee;
}

.ve-control-sector-grid {
	display: grid;
	grid-template-columns: repeat(6, minmax(0, 1fr));
	gap: 1rem;
	margin: clamp(3rem, 6vw, 4.5rem) 0 0;
	padding: 0;
	list-style: none;
}

.ve-control-sector-grid li {
	margin: 0;
}

.ve-control-sector {
	display: grid;
	height: 100%;
	min-height: 9rem;
	place-items: center;
	align-content: center;
	gap: 0.875rem;
	padding: 1.5rem 1rem;
	border: 1px solid rgb(255 255 255 / 16%);
	border-radius: var(--ve-radius-md);
	background: rgb(255 255 255 / 6%);
	color: var(--ve-white);
	text-align: center;
	text-decoration: none;
}

.ve-control-sector:hover,
.ve-control-sector:focus-visible {
	border-color: rgb(255 255 255 / 42%);
	background: rgb(255 255 255 / 14%);
	color: var(--ve-white);
}

/* I PNG dei settori sono azzurri: sulla banda scura diventano bianchi come
 * l'etichetta. */
.ve-control-sector img {
	width: 3rem;
	height: 3rem;
	object-fit: contain;
	filter: brightness(0) invert(1);
}

.ve-control-page .ve-control-sector h3 {
	margin: 0;
	font-size: 1rem;
	letter-spacing: 0;
	line-height: 1.3;
}

@media (max-width: 64rem) {
	.ve-control-page * {
		min-width: 0;
	}

	.ve-control-hero__grid,
	.ve-control-modes,
	.ve-control-split {
		grid-template-columns: 1fr;
		gap: 2.5rem;
	}

	.ve-control-sector-grid {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}

	.ve-control-summary,
	.ve-control-figure--framed {
		max-width: 44rem;
	}
}

@media (max-width: 48rem) {
	.ve-control-page h1 {
		font-size: 2.75rem;
	}

	.ve-control-page h2 {
		font-size: 2rem;
	}

	.ve-control-page .ve-control-summary h2 {
		font-size: 1.25rem;
	}

	.ve-control-hero__grid,
	.ve-control-modes,
	.ve-control-split {
		gap: 2rem;
	}

	.ve-control-card-grid {
		grid-template-columns: 1fr;
	}

	.ve-control-card {
		padding: 1.5rem;
	}

	.ve-control-sector-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.ve-control-table {
		overflow: visible;
		border: 0;
		background: transparent;
		box-shadow: none;
	}

	.ve-control-table table,
	.ve-control-table tbody,
	.ve-control-table tr,
	.ve-control-table td {
		display: block;
		width: 100%;
	}

	/* Nascosta alla vista, non agli screen reader. Senza `nowrap`: con quattro
	 * colonne le intestazioni su una riga sporgerebbero oltre lo schermo. */
	.ve-control-table thead {
		position: absolute;
		width: 1px;
		height: 1px;
		margin: -1px;
		padding: 0;
		overflow: hidden;
		clip: rect(0, 0, 0, 0);
		border: 0;
	}

	.ve-control-table tr {
		margin-bottom: 1rem;
		overflow: hidden;
		border: 1px solid var(--ve-slate-200);
		border-radius: var(--ve-radius-md);
		background: var(--ve-white);
	}

	.ve-control-table td,
	.ve-control-table tbody tr:last-child td {
		padding: 0.875rem 1rem;
		border-bottom: 1px solid var(--ve-slate-200);
		overflow-wrap: anywhere;
	}

	.ve-control-table td:last-child,
	.ve-control-table tbody tr:last-child td:last-child {
		border-bottom: 0;
	}

	.ve-control-table--sectors td:first-child {
		width: 100%;
	}

	.ve-control-table td::before {
		display: block;
		margin-bottom: 0.25rem;
		color: var(--ve-blue-700);
		content: attr(data-label);
		font-size: 0.75rem;
		font-weight: 750;
		letter-spacing: 0.08em;
		text-transform: uppercase;
	}
}

/* --------------------------------------------------------------------------
   Icone delle card
   Sostituiscono la numerazione decorativa: un numero progressivo diceva solo
   «questa e' la terza», mentre l'icona richiama il contenuto della card.
   Restano numerate le due alternative OEM e i cinque componenti del micrometro
   ottico, dove l'ordine e' informazione.
   Set Lucide, licenza ISC: i crediti sono in docs/audit-immagini.md.
   -------------------------------------------------------------------------- */

.ve-card__icon,
.ve-path__icon,
.ve-oem-card__icon,
.ve-about-context-card__icon,
.ve-quality-check__icon,
.ve-smart-benefit__icon,
.ve-vision-solution__icon,
.ve-inspection-benefit__icon,
.ve-sector-grid__icon {
	display: inline-grid;
	width: 2.5rem;
	height: 2.5rem;
	place-items: center;
	border-radius: 999px;
	background: var(--ve-blue-50);
	color: var(--ve-blue-700);
}

.ve-quality-benefit-grid li > span svg,
.ve-about-details-grid span svg,
.ve-card__icon svg,
.ve-path__icon svg,
.ve-oem-card__icon svg,
.ve-about-context-card__icon svg,
.ve-quality-check__icon svg,
.ve-smart-benefit__icon svg,
.ve-vision-solution__icon svg,
.ve-inspection-benefit__icon svg,
.ve-sector-grid__icon svg {
	width: 1.25rem;
	height: 1.25rem;
	stroke-width: 1.75;
}

/* Nel link flessibile l'icona non si stringe sotto i 2,5 rem. */
.ve-sector-grid__icon {
	flex: none;
}

/* --------------------------------------------------------------------------
   Pulsanti sulle bande scure
   Con le bande a --ve-blue-700 un pulsante --ve-blue-500 sopra darebbe 1,7:1:
   sparirebbe. Funzionava solo finche' le bande erano quasi nere. Qui il
   pulsante si inverte: bianco con testo blu scuro, 8,32:1.
   -------------------------------------------------------------------------- */

.ve-section--dark .ve-button:not(.ve-button--secondary),
.ve-hero .ve-button:not(.ve-button--secondary),
.ve-vision-hero .ve-button:not(.ve-button--secondary),
.ve-micrometer-hero .ve-button:not(.ve-button--secondary),
.ve-micrometer-applications .ve-button:not(.ve-button--secondary),
.ve-smart-hero .ve-button:not(.ve-button--secondary),
.ve-smart-contact .ve-button:not(.ve-button--secondary),
.ve-industrial-hero .ve-button:not(.ve-button--secondary),
.ve-deep-hero .ve-button:not(.ve-button--secondary),
.ve-deep-contact .ve-button:not(.ve-button--secondary),
.ve-careers-hero .ve-button:not(.ve-button--secondary),
.ve-careers-contact .ve-button:not(.ve-button--secondary),
.ve-about-hero .ve-button:not(.ve-button--secondary),
.ve-about-manifesto .ve-button:not(.ve-button--secondary),
.ve-about-contact .ve-button:not(.ve-button--secondary),
.ve-oem-white-label .ve-button:not(.ve-button--secondary),
.ve-vision-challenges .ve-button:not(.ve-button--secondary),
.ve-footer-main .ve-button:not(.ve-button--secondary) {
	background: var(--ve-white);
	color: var(--ve-blue-700);
}

.ve-section--dark .ve-button:not(.ve-button--secondary):hover,
.ve-hero .ve-button:not(.ve-button--secondary):hover,
.ve-vision-hero .ve-button:not(.ve-button--secondary):hover,
.ve-micrometer-hero .ve-button:not(.ve-button--secondary):hover,
.ve-micrometer-applications .ve-button:not(.ve-button--secondary):hover,
.ve-smart-hero .ve-button:not(.ve-button--secondary):hover,
.ve-smart-contact .ve-button:not(.ve-button--secondary):hover,
.ve-industrial-hero .ve-button:not(.ve-button--secondary):hover,
.ve-deep-hero .ve-button:not(.ve-button--secondary):hover,
.ve-deep-contact .ve-button:not(.ve-button--secondary):hover,
.ve-careers-hero .ve-button:not(.ve-button--secondary):hover,
.ve-careers-contact .ve-button:not(.ve-button--secondary):hover,
.ve-about-hero .ve-button:not(.ve-button--secondary):hover,
.ve-about-manifesto .ve-button:not(.ve-button--secondary):hover,
.ve-about-contact .ve-button:not(.ve-button--secondary):hover,
.ve-oem-white-label .ve-button:not(.ve-button--secondary):hover,
.ve-vision-challenges .ve-button:not(.ve-button--secondary):hover,
.ve-footer-main .ve-button:not(.ve-button--secondary):hover {
	background: var(--ve-blue-50);
	color: var(--ve-blue-700);
}
