/* ============================================================================
   VIMM Landing — main stylesheet
   ============================================================================ */

:root {
	--vimm-navy: #2d3149;
	--vimm-navy-dark: #232742;
	--vimm-navy-light: #3a3f5c;
	--vimm-magenta: #d6256a;
	--vimm-magenta-hover: #b91d59;
	--vimm-cream: #fbe9e1;
	--vimm-cream-soft: #fdf3ee;
	--vimm-grey-bg: linear-gradient(180deg, #ececec 0%, #ffffff 100%);
	--vimm-text: #1f2230;
	--vimm-text-muted: #5e6275;
	--vimm-text-on-dark: #ffffff;
	--vimm-text-on-dark-muted: rgba(255,255,255,0.78);
	--vimm-card-bg: #ffffff;
	--vimm-card-shadow: 0 8px 30px rgba(0,0,0,0.06);
	--vimm-radius-lg: 16px;
	--vimm-radius-md: 10px;
	--vimm-radius-sm: 6px;
	--vimm-radius-pill: 999px;
	--vimm-container: 1180px;
	--vimm-font: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
}

/* ---- Reset minimo ---- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
	margin: 0;
	font-family: var(--vimm-font);
	font-size: 17px;
	color: var(--vimm-text);
	background: #fff;
	line-height: 1.6;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}
img { max-width: 100%; height: auto; display: block; }
a { color: var(--vimm-magenta); text-decoration: none; }
a:hover { text-decoration: underline; }
button { font-family: inherit; cursor: pointer; }
h1, h2, h3, h4 { margin: 0 0 0.5em; line-height: 1.2; color: inherit; }
p { margin: 0 0 1em; }

.screen-reader-text {
	clip: rect(1px,1px,1px,1px);
	position: absolute !important;
	height: 1px; width: 1px;
	overflow: hidden;
	word-wrap: normal;
}
.screen-reader-text:focus {
	background: #fff;
	clip: auto !important;
	padding: 15px 23px 14px;
	top: 5px; left: 5px;
	z-index: 100000;
}

/* ---- Header — logo centrato ---- */
.vimm-header {
	background: #fff;
	border-bottom: 1px solid rgba(0,0,0,0.04);
	padding: 18px 16px;
}
.vimm-header__inner {
	max-width: var(--vimm-container);
	margin: 0 auto;
	display: flex;
	justify-content: center;
	align-items: center;
	/* Con due loghi (agenzia + gruppo/franchising) restano affiancati e centrati. */
	gap: 28px;
	flex-wrap: wrap;
}
.vimm-logo { display: inline-flex; align-items: center; }
/* Altezza condivisa dai due loghi: allineati sulla stessa riga e mai fuori scala,
   qualunque sia il rapporto d'aspetto (marchio orizzontale vs logo quadrato). */
.vimm-logo__img { max-height: var(--vimm-logo-h, 72px); width: auto; }
.vimm-logo__text {
	font-size: 28px;
	font-weight: 700;
	letter-spacing: -0.01em;
	color: var(--vimm-navy);
}

/* ---- Buttons ---- */
.vimm-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	font-weight: 600;
	font-size: 17px;
	padding: 16px 38px;
	border-radius: var(--vimm-radius-pill);
	border: none;
	transition: background 0.15s ease, transform 0.1s ease;
	text-decoration: none;
	line-height: 1.2;
	cursor: pointer;
}
.vimm-btn:hover { text-decoration: none; transform: translateY(-1px); }
.vimm-btn--primary {
	background: var(--vimm-magenta);
	color: #fff;
}
.vimm-btn--primary:hover { background: var(--vimm-magenta-hover); color: #fff; }

/* ---- Hero: foto della città soffusa dietro, tinta sul colore brand ---- */
.vimm-hero {
	position: relative;
	background-color: var(--vimm-navy);
	color: var(--vimm-text-on-dark);
	overflow: hidden;
	padding: 90px 16px 110px;
}
/* Foto: livello separato così opacità e desaturazione non toccano il testo. */
.vimm-hero::before {
	content: "";
	position: absolute;
	inset: 0;
	background-image: var(--vimm-hero-bg, none);
	background-size: cover;
	background-position: center center;
	background-repeat: no-repeat;
	opacity: 0.30;
	filter: saturate(0.65);
	pointer-events: none;
	z-index: 0;
}
/* Velatura brand: tiene il contrasto del testo a sinistra, sfuma verso destra. */
.vimm-hero::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(90deg,
		rgba(var(--vimm-navy-rgb, 45,49,73), 0.70) 0%,
		rgba(var(--vimm-navy-rgb, 45,49,73), 0.40) 55%,
		rgba(var(--vimm-navy-rgb, 45,49,73), 0.15) 100%);
	pointer-events: none;
	z-index: 0;
}
.vimm-hero__inner {
	position: relative;
	z-index: 1;
	max-width: var(--vimm-container);
	margin: 0 auto;
}
.vimm-hero__title {
	font-size: clamp(34px, 4.6vw, 56px);
	font-weight: 800;
	letter-spacing: -0.02em;
	max-width: 720px;
	margin: 0 0 18px;
}
.vimm-hero__subtitle {
	font-size: 21px;
	color: rgba(255,255,255,0.95);
	max-width: 600px;
	margin: 0 0 32px;
	white-space: pre-line;
	text-shadow: 0 1px 2px rgba(0,0,0,0.45);
}

/* ---- Sezione algoritmo con pattern dot/network ---- */
.vimm-algo {
	position: relative;
	background: #fff;
	padding: 90px 16px 80px;
	overflow: hidden;
}
.vimm-algo::before {
	content: "";
	position: absolute;
	inset: 0;
	background-image: var(--vimm-algo-pattern, none);
	background-size: cover;
	background-position: center;
	background-repeat: no-repeat;
	opacity: 0.85;
	pointer-events: none;
}
.vimm-algo__inner {
	position: relative;
	max-width: var(--vimm-container);
	margin: 0 auto;
	display: grid;
	grid-template-columns: 1.1fr 0.9fr;
	gap: 60px;
	align-items: center;
	z-index: 1;
}
.vimm-algo__copy h2 {
	color: var(--vimm-text);
	font-size: clamp(28px, 3.2vw, 40px);
	font-weight: 800;
	margin-bottom: 22px;
}
.vimm-algo__copy h2::after {
	content: "";
	display: block;
	width: 64px;
	height: 4px;
	background: var(--vimm-magenta);
	border-radius: 2px;
	margin: 14px 0 0;
}
.vimm-algo__intro {
	font-size: 19px;
	color: var(--vimm-text);
	margin: 16px 0 28px;
}
.vimm-checklist {
	list-style: none;
	padding: 0;
	margin: 24px 0 0;
}
.vimm-checklist li {
	position: relative;
	padding-left: 38px;
	margin-bottom: 16px;
	font-size: 17px;
}
.vimm-checklist li::before {
	content: "✓";
	position: absolute;
	left: 0;
	top: -1px;
	width: 26px;
	height: 26px;
	border-radius: 50%;
	background: #14b886;
	color: #fff;
	font-weight: 700;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 14px;
}
.vimm-algo__art {
	display: flex;
	justify-content: center;
	align-items: center;
}
.vimm-algo__art img,
.vimm-algo__art svg {
	max-width: 360px;
	width: 100%;
	height: auto;
}

/* ---- CTA centrale (banda chiara tra algoritmo e form) ---- */
.vimm-cta-band {
	background: linear-gradient(180deg, #f6f6f8 0%, #ffffff 100%);
	padding: 88px 16px;
	text-align: center;
	border-top: 1px solid rgba(0,0,0,0.04);
}
.vimm-cta-band h2 {
	font-size: clamp(30px, 3.4vw, 44px);
	font-weight: 700;
	color: var(--vimm-text);
	margin-bottom: 18px;
	line-height: 1.2;
}
.vimm-cta-band p {
	max-width: 720px;
	margin: 0 auto 32px;
	color: var(--vimm-text-muted);
	font-size: clamp(17px, 1.5vw, 20px);
	line-height: 1.6;
}
.vimm-cta-band .vimm-btn {
	font-size: 18px;
	padding: 18px 44px;
}

/* ---- Sezione "Chi siamo" (opzionale, renderizzata solo se vimm_about_title è valorizzata) ---- */
.vimm-about {
	position: relative;
	isolation: isolate;
	background-color: var(--vimm-navy);
	/* Fondo costruito a livelli: luce in alto a sinistra, alone brand in basso a destra,
	   ombra a terra sotto il ritratto, fasci diagonali. */
	background-image:
		radial-gradient(ellipse at 3% -15%, rgba(255,255,255,0.14) 0%, transparent 55%),
		radial-gradient(ellipse at 108% 115%, rgba(var(--vimm-magenta-rgb), 0.28) 0%, transparent 55%),
		radial-gradient(ellipse 24% 10% at 20% 100%, rgba(0,0,0,0.38) 0%, transparent 72%),
		linear-gradient(118deg, transparent 24%, rgba(255,255,255,0.06) 37%, transparent 50%),
		linear-gradient(118deg, transparent 58%, rgba(255,255,255,0.04) 66%, transparent 74%);
	color: var(--vimm-text-on-dark);
	padding: 90px 16px;
	overflow: hidden;
}
/* Skyline in linea appoggiato al bordo basso: riempie il fondo e resta in tema con il settore. */
.vimm-about::before {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	height: 260px;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 900 200'%3E%3Cg fill='none' stroke='%23ffffff' stroke-width='2' stroke-linejoin='round'%3E%3Cpath d='M0 190 L0 140 L60 140 L60 108 L100 108 L125 82 L150 108 L190 108 L190 150 L250 150 L250 68 L265 42 L280 68 L280 150 L330 150 L330 112 L395 112 L395 150 L470 150 L470 92 L530 92 L530 138 L600 138 L600 118 L640 86 L680 118 L680 150 L752 150 L752 102 L812 102 L812 144 L900 144 L900 190'/%3E%3Cpath d='M14 152h12v14H14z M40 152h12v14H40z M14 172h12v14H14z M204 124h12v14h-12z M228 124h12v14h-12z M204 160h12v14h-12z M344 126h14v16h-14z M370 126h14v16h-14z M344 158h14v16h-14z M484 108h12v14h-12z M508 108h12v14h-12z M484 132h12v14h-12z M508 132h12v14h-12z M546 152h14v16h-14z M574 152h14v16h-14z M766 118h12v14h-12z M790 118h12v14h-12z M766 142h12v14h-12z M640 132h14v18h-14z'/%3E%3C/g%3E%3C/svg%3E");
	background-repeat: repeat-x;
	background-position: left bottom;
	background-size: 900px 260px;
	opacity: 0.18;
	pointer-events: none;
	z-index: -1;
}
/* Trama a punti nella fascia alta a destra, dove il fondo resterebbe vuoto. */
.vimm-about::after {
	content: "";
	position: absolute;
	inset: 0;
	background-image: radial-gradient(rgba(255,255,255,0.22) 1.3px, transparent 1.3px);
	background-size: 26px 26px;
	-webkit-mask-image: radial-gradient(ellipse 46% 58% at 80% 12%, #000 0%, transparent 78%);
	mask-image: radial-gradient(ellipse 46% 58% at 80% 12%, #000 0%, transparent 78%);
	pointer-events: none;
	z-index: -1;
}
.vimm-about__inner {
	max-width: var(--vimm-container);
	margin: 0 auto;
	display: grid;
	grid-template-columns: 1fr;
	gap: 48px;
	align-items: center;
}
.vimm-about--with-photo .vimm-about__inner {
	grid-template-columns: minmax(220px, 0.7fr) 1.3fr;
	/* Il ritratto è scontornato a metà gamba: appoggiarlo sul bordo inferiore della sezione
	   lo fa leggere come una posa, non come un taglio. */
	align-items: end;
}
.vimm-about--with-photo { padding-bottom: 0; }
.vimm-about--with-photo .vimm-about__copy { padding-bottom: 90px; }
/* Su schermi larghi la colonna crescerebbe a dismisura e farebbe una sezione altissima:
   il ritratto è limitato in altezza, così l'altezza della sezione la detta il testo. */
.vimm-about__photo {
	display: flex;
	align-items: flex-end;
	justify-content: center;
}
.vimm-about__photo img {
	display: block;
	width: auto;
	max-width: 100%;
	max-height: 520px;
	/* Cut-out portraits are transparent PNGs: box-shadow would outline the bounding box and
	   look like a frame around the person, drop-shadow follows the alpha silhouette.
	   Alone senza offset verticale: appoggiato al bordo, un'ombra verso il basso si taglierebbe. */
	filter: drop-shadow(0 0 34px rgba(0,0,0,0.32));
}
/* Squared photo (no transparency): give it back the card treatment. */
.vimm-about__photo--framed img {
	border-radius: var(--vimm-radius-lg);
	box-shadow: 0 18px 50px rgba(0,0,0,0.28);
	filter: none;
}
.vimm-about__kicker {
	text-transform: uppercase;
	letter-spacing: 0.12em;
	font-size: 13px;
	font-weight: 700;
	color: var(--vimm-magenta);
	margin-bottom: 10px;
}
.vimm-about__title {
	font-size: clamp(26px, 3.2vw, 40px);
	font-weight: 800;
	margin-bottom: 20px;
}
.vimm-about__copy p {
	color: var(--vimm-text-on-dark-muted);
	font-size: 17px;
	max-width: 60ch;
}
.vimm-about__copy .vimm-btn { margin-top: 12px; }

/* ---- Testimonianze ---- */
.vimm-reviews {
	background: linear-gradient(135deg, var(--vimm-navy) 0%, var(--vimm-magenta) 100%);
	color: var(--vimm-text-on-dark);
	padding: 80px 16px;
}
.vimm-reviews__inner { max-width: var(--vimm-container); margin: 0 auto; }
.vimm-reviews__title {
	font-size: clamp(24px, 2.8vw, 34px);
	font-weight: 800;
	text-align: center;
	margin-bottom: 40px;
	max-width: 24ch;
	margin-inline: auto;
}
.vimm-reviews__grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
	gap: 24px;
}
.vimm-review {
	background: var(--vimm-card-bg);
	color: var(--vimm-text);
	border-radius: var(--vimm-radius-lg);
	box-shadow: var(--vimm-card-shadow);
	padding: 28px 24px;
	margin: 0;
	display: flex;
	flex-direction: column;
	gap: 14px;
}
.vimm-review__stars { color: #f5a623; letter-spacing: 2px; font-size: 15px; }
.vimm-review__quote {
	margin: 0;
	font-size: 15px;
	line-height: 1.6;
	color: var(--vimm-text-muted);
}
.vimm-review__author {
	font-weight: 700;
	font-size: 14px;
	color: var(--vimm-text);
	margin-top: auto;
}

/* ---- Sezione form contatto ---- */
.vimm-contact {
	position: relative;
	background: var(--vimm-navy);
	color: var(--vimm-text-on-dark);
	padding: 90px 16px;
	overflow: hidden;
}
.vimm-contact--with-image::before {
	content: "";
	position: absolute;
	inset: 0;
	background-image: var(--vimm-form-image, none);
	background-size: cover;
	background-position: left center;
	background-repeat: no-repeat;
	opacity: 0.45;
	pointer-events: none;
}
.vimm-contact__inner {
	position: relative;
	max-width: var(--vimm-container);
	margin: 0 auto;
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 60px;
	align-items: center;
	z-index: 1;
}
.vimm-contact__title {
	font-size: clamp(24px, 2.8vw, 34px);
	font-weight: 800;
	color: #fff;
	margin-bottom: 24px;
}
.vimm-contact__title::after {
	content: "";
	display: block;
	width: 64px;
	height: 4px;
	background: var(--vimm-magenta);
	border-radius: 2px;
	margin: 14px 0 0;
}
.vimm-contact__copy {
	font-size: 17px;
	color: var(--vimm-text-on-dark-muted);
}
.vimm-contact__copy p { margin-bottom: 14px; }
.vimm-contact__copy strong {
	display: inline-block;
	font-size: 12px;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: rgba(255,255,255,0.55);
	font-weight: 700;
	margin-right: 8px;
}
.vimm-contact__link {
	color: #fff;
	text-decoration: none;
	font-weight: 600;
	font-size: 18px;
	border-bottom: 2px solid rgba(255,255,255,0.25);
	padding-bottom: 1px;
	transition: border-color .15s ease, color .15s ease;
}
.vimm-contact__link:hover {
	color: #fff;
	opacity: 1;
	border-bottom-color: var(--vimm-magenta);
}

.vimm-contact__form-wrap {
	background: #fff;
	color: var(--vimm-text);
	border-radius: var(--vimm-radius-lg);
	padding: 36px 32px;
	box-shadow: 0 20px 50px rgba(0,0,0,0.22), 0 4px 12px rgba(0,0,0,0.10);
}
.vimm-contact__form-title {
	color: var(--vimm-magenta);
	font-size: 22px;
	font-weight: 700;
	margin-bottom: 14px;
}

/* ---- Pagine interne (card bianca) ---- */
.vimm-page {
	padding: 60px 16px 100px;
	min-height: 60vh;
	background: var(--vimm-grey-bg);
}
.vimm-card {
	max-width: var(--vimm-container);
	margin: 0 auto;
	background: var(--vimm-card-bg);
	border-radius: var(--vimm-radius-lg);
	padding: 56px 48px;
	box-shadow: var(--vimm-card-shadow);
}
.vimm-card h1 {
	font-size: clamp(24px, 3vw, 32px);
	font-weight: 700;
	margin-bottom: 16px;
}
.vimm-card h2 {
	font-size: 24px;
	font-weight: 700;
	margin-top: 32px;
	margin-bottom: 12px;
}
.vimm-card .vimm-card__title-magenta {
	color: var(--vimm-magenta);
}

/* Risultato valutazione */
.vimm-result { text-align: center; }
.vimm-result__label {
	font-size: 14px;
	color: var(--vimm-text-muted);
	text-transform: uppercase;
	letter-spacing: 0.08em;
	margin-bottom: 8px;
}
.vimm-result__value h1 {
	font-size: clamp(32px, 5vw, 48px);
	color: var(--vimm-navy);
	margin: 0 0 32px;
	letter-spacing: -0.01em;
}
.vimm-result__unavailable {
	font-size: 19px;
	color: var(--vimm-text-muted);
	background: var(--vimm-cream-soft);
	border: 1px solid rgba(0,0,0,0.04);
	border-radius: var(--vimm-radius-md);
	padding: 24px 28px;
	margin: 0 0 32px;
	line-height: 1.5;
}

/* Errore */
.vimm-error h1 { color: var(--vimm-text); }
.vimm-error__subtitle {
	color: var(--vimm-magenta);
	font-size: 24px;
	font-weight: 700;
	margin: 8px 0 28px;
}

/* ---- Footer ---- */
.vimm-footer {
	background: var(--vimm-navy-dark);
	color: var(--vimm-text-on-dark-muted);
	font-size: 15px;
	line-height: 1.6;
	border-top: 3px solid var(--vimm-magenta);
}
.vimm-footer__inner {
	max-width: var(--vimm-container);
	margin: 0 auto;
	padding: 56px 24px 40px;
	display: grid;
	grid-template-columns: 1.2fr 1fr 1fr;
	gap: 48px;
	align-items: start;
}
.vimm-footer__col { min-width: 0; }
.vimm-footer__logo { display: inline-block; }
.vimm-footer__logo img {
	max-height: 88px;
	width: auto;
	filter: brightness(1.02);
}
.vimm-footer__brand {
	display: inline-block;
	font-size: 24px;
	font-weight: 700;
	color: #fff;
	letter-spacing: -0.01em;
}
.vimm-footer__tagline {
	margin: 14px 0 0;
	color: var(--vimm-text-on-dark-muted);
	font-size: 15px;
	max-width: 320px;
}
.vimm-footer__title {
	margin: 0 0 18px;
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: #fff;
	opacity: 0.85;
}
.vimm-footer__list {
	display: flex;
	flex-direction: column;
	gap: 10px;
	font-style: normal;
	padding: 0;
	margin: 0;
	list-style: none;
}
.vimm-footer__item { display: block; }
.vimm-footer__label {
	display: inline-block;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: rgba(255,255,255,0.55);
	margin-right: 6px;
}
.vimm-footer__link {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	color: #fff;
	text-decoration: none;
	font-weight: 500;
	transition: color .15s ease, transform .15s ease;
}
.vimm-footer__link:hover {
	color: var(--vimm-magenta);
	transform: translateX(2px);
}
.vimm-footer__link::before {
	content: "";
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 32px;
	height: 32px;
	border-radius: 8px;
	background-color: rgba(255,255,255,0.08);
	background-repeat: no-repeat;
	background-position: center center;
	background-size: 18px 18px;
	transition: background-color .15s ease, transform .15s ease;
}
.vimm-footer__link:hover::before {
	background-color: var(--vimm-magenta);
	transform: scale(1.05);
}
.vimm-footer__link--phone::before    { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23ffffff'%3E%3Cpath d='M19.95 21q-3.125 0-6.175-1.362t-5.55-3.863q-2.5-2.5-3.862-5.55T3 4.05q0-.45.3-.75t.75-.3H8.1q.35 0 .625.238t.325.562l.65 3.5q.05.4-.025.675T9.4 8.45L6.975 10.9q.5.925 1.187 1.787t1.513 1.663q.775.775 1.625 1.438T13.1 17l2.35-2.35q.225-.225.588-.337t.712-.063l3.45.7q.35.1.575.363t.225.587v4.05q0 .45-.3.75t-.75.3Z'/%3E%3C/svg%3E"); }
.vimm-footer__link--whatsapp::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23ffffff'%3E%3Cpath d='M19.05 4.91A9.82 9.82 0 0 0 12.04 2c-5.46 0-9.91 4.45-9.91 9.91 0 1.75.46 3.45 1.32 4.95L2.05 22l5.25-1.38c1.45.79 3.08 1.21 4.74 1.21 5.46 0 9.91-4.45 9.91-9.91 0-2.65-1.03-5.14-2.9-7.01zm-7.01 15.24c-1.48 0-2.93-.4-4.2-1.15l-.3-.18-3.12.82.83-3.04-.2-.31a8.264 8.264 0 0 1-1.26-4.38c0-4.54 3.7-8.24 8.24-8.24 2.2 0 4.27.86 5.82 2.42a8.183 8.183 0 0 1 2.41 5.83c.02 4.54-3.68 8.23-8.22 8.23zm4.52-6.16c-.25-.12-1.47-.72-1.69-.81-.23-.08-.39-.12-.56.12-.17.25-.64.81-.78.97-.14.17-.29.19-.54.06-.25-.12-1.05-.39-1.99-1.23-.74-.66-1.23-1.47-1.38-1.72-.14-.25-.02-.38.11-.51.11-.11.25-.29.37-.43s.17-.25.25-.41c.08-.17.04-.31-.02-.43s-.56-1.34-.76-1.84c-.2-.48-.41-.42-.56-.43h-.48c-.17 0-.43.06-.66.31-.22.25-.86.85-.86 2.07 0 1.22.89 2.4 1.01 2.56.12.17 1.75 2.67 4.23 3.74.59.26 1.05.41 1.41.52.59.19 1.13.16 1.56.1.48-.07 1.47-.6 1.67-1.18.21-.58.21-1.07.14-1.18s-.22-.16-.47-.28z'/%3E%3C/svg%3E"); }
.vimm-footer__link--email::before    { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23ffffff'%3E%3Cpath d='M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2zm0 4l8 5 8-5V6l-8 5-8-5v2z'/%3E%3C/svg%3E"); }

/* ---- Footer bottom bar ---- */
.vimm-footer__bottom {
	border-top: 1px solid rgba(255,255,255,0.08);
	font-size: 13px;
}
.vimm-footer__bottom-inner {
	max-width: var(--vimm-container);
	margin: 0 auto;
	padding: 18px 24px;
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 16px;
	flex-wrap: wrap;
}
.vimm-footer__copy {
	color: rgba(255,255,255,0.55);
}
.vimm-footer__legal {
	color: rgba(255,255,255,0.75);
	text-decoration: none;
	font-weight: 500;
	transition: color .15s ease;
}
.vimm-footer__legal:hover { color: #fff; }

/* ---- FluentForm overrides (minimal — il plugin ha già stili) ---- */
.ff-default .ff-el-input--label label { font-weight: 600; }
.ff-default .ff-el-form-control,
.ff-default input[type="text"],
.ff-default input[type="email"],
.ff-default input[type="tel"] {
	border-radius: var(--vimm-radius-sm);
	border: 1px solid #d8d8e0;
	padding: 12px 14px;
}
.ff-default .ff-btn-submit,
.ff-default button[type="submit"] {
	background: var(--vimm-magenta) !important;
	border-color: var(--vimm-magenta) !important;
	color: #fff !important;
	border-radius: var(--vimm-radius-pill) !important;
	padding: 16px 38px !important;
	font-size: 17px !important;
	font-weight: 600;
}
.ff-default .ff-btn-submit:hover,
.ff-default button[type="submit"]:hover {
	background: var(--vimm-magenta-hover) !important;
	border-color: var(--vimm-magenta-hover) !important;
}

/* ---- Multi-step buttons (Avanti / Indietro) ---- */
.ff-default .ff-btn-next,
.ff-default .ff-btn-prev,
.ff-default button[data-action="next"],
.ff-default button[data-action="prev"] {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	border-radius: var(--vimm-radius-pill) !important;
	padding: 11px 26px !important;
	font-weight: 600 !important;
	font-size: 15px !important;
	letter-spacing: 0.01em;
	cursor: pointer;
	transition: background .15s ease, color .15s ease, transform .15s ease, box-shadow .15s ease;
	border: 1.5px solid var(--vimm-magenta) !important;
	line-height: 1.2 !important;
}

/* Avanti = primary filled */
.ff-default .ff-btn-next,
.ff-default button[data-action="next"] {
	background: var(--vimm-magenta) !important;
	color: #fff !important;
	box-shadow: 0 1px 0 rgba(var(--vimm-magenta-rgb, 214,37,106), .15), 0 4px 12px rgba(var(--vimm-magenta-rgb, 214,37,106), .18);
}
.ff-default .ff-btn-next:hover,
.ff-default button[data-action="next"]:hover {
	background: var(--vimm-magenta-hover) !important;
	border-color: var(--vimm-magenta-hover) !important;
	transform: translateY(-1px);
	box-shadow: 0 1px 0 rgba(var(--vimm-magenta-rgb, 214,37,106), .20), 0 6px 16px rgba(var(--vimm-magenta-rgb, 214,37,106), .25);
}

/* Indietro = bianco filled con ombra (card-button) */
.ff-default .ff-btn-prev,
.ff-default button[data-action="prev"] {
	background: #ffffff !important;
	color: var(--vimm-magenta) !important;
	box-shadow: 0 1px 0 rgba(15,23,42,.04), 0 4px 14px rgba(15,23,42,.08) !important;
}
.ff-default .ff-btn-prev:hover,
.ff-default button[data-action="prev"]:hover {
	background: var(--vimm-cream-soft) !important;
	color: var(--vimm-magenta-hover) !important;
	border-color: var(--vimm-magenta-hover) !important;
	transform: translateY(-1px);
	box-shadow: 0 2px 0 rgba(15,23,42,.05), 0 8px 20px rgba(15,23,42,.10) !important;
}

/* Icone freccia via pseudo-element (no SVG da caricare) */
.ff-default .ff-btn-next::after,
.ff-default button[data-action="next"]::after {
	content: "→";
	font-size: 17px;
	line-height: 1;
	display: inline-block;
	transform: translateY(-1px);
	transition: transform .15s ease;
}
.ff-default .ff-btn-next:hover::after,
.ff-default button[data-action="next"]:hover::after { transform: translate(2px, -1px); }
.ff-default .ff-btn-prev::before,
.ff-default button[data-action="prev"]::before {
	content: "←";
	font-size: 17px;
	line-height: 1;
	display: inline-block;
	transform: translateY(-1px);
	transition: transform .15s ease;
}
.ff-default .ff-btn-prev:hover::before,
.ff-default button[data-action="prev"]:hover::before { transform: translate(-2px, -1px); }

/* Layout: Indietro a sx, Avanti a dx, gap consistente */
.ff-default .ff-el-group:has(> .ff-btn-prev + .ff-btn-next),
.ff-default .ff-t-cell.ff-el-form-control:has(.ff-btn-prev),
.ff-default .step-nav,
.ff-default .ff_step_btn_pos {
	display: flex !important;
	justify-content: space-between !important;
	align-items: center;
	gap: 12px;
	margin-top: 20px;
}
.ff-default .ff-btn-prev { margin-right: auto !important; }
.ff-default .ff-btn-next.ff-float-right,
.ff-default .ff-btn-next { margin-left: auto !important; }

/* Submit step finale stessa famiglia */
.ff-default .ff-btn-submit::after,
.ff-default button[type="submit"]::after {
	content: "→";
	margin-left: 6px;
	display: inline-block;
	transition: transform .15s ease;
}
.ff-default .ff-btn-submit:hover::after,
.ff-default button[type="submit"]:hover::after { transform: translateX(3px); }

/* ---- Submit loading state (impedisce double-click durante AJAX Heroval) ---- */
.ff-default button[type="submit"]:disabled,
.ff-default button[type="submit"].vimm-submitting,
.ff-default .ff-btn-submit:disabled,
.ff-default .ff-btn-submit.vimm-submitting {
	opacity: 0.9 !important;
	cursor: wait !important;
	pointer-events: none !important;
}
.ff-default button[type="submit"].vimm-submitting::after,
.ff-default .ff-btn-submit.vimm-submitting::after {
	content: "" !important;
	width: 14px;
	height: 14px;
	margin-left: 10px;
	border: 2px solid rgba(255,255,255,0.35);
	border-top-color: #fff;
	border-radius: 50%;
	vertical-align: middle;
	animation: vimm-spin 0.7s linear infinite;
	transform: none !important;
}
@keyframes vimm-spin { to { transform: rotate(360deg); } }
.vimm-form-submitting .ff-step-container,
.vimm-form-submitting .ff_form_instance,
.vimm-form-submitting .ff-step-body {
	opacity: 0.7;
	pointer-events: none;
	transition: opacity .2s ease;
}

/* ---- Responsive ---- */
@media (max-width: 860px) {
	.vimm-algo__inner,
	.vimm-contact__inner {
		grid-template-columns: 1fr;
		text-align: center;
	}
	.vimm-about--with-photo .vimm-about__inner {
		grid-template-columns: 1fr;
		text-align: center;
	}
	.vimm-about__copy p { margin-inline: auto; }
	.vimm-about__photo img { max-width: 320px; margin: 0 auto; }
	.vimm-about, .vimm-reviews { padding: 60px 16px; }
	/* In colonna singola il ritratto va dopo il testo, sempre appoggiato al bordo basso. */
	.vimm-about--with-photo .vimm-about__photo { order: 2; }
	.vimm-about--with-photo { padding-bottom: 0; }
	.vimm-about--with-photo .vimm-about__copy { padding-bottom: 0; }
	.vimm-about--with-photo .vimm-about__inner { gap: 36px; }
	.vimm-about::before { height: 180px; background-size: 620px 180px; opacity: 0.14; }
	.vimm-about::after {
		-webkit-mask-image: radial-gradient(ellipse 70% 30% at 50% 8%, #000 0%, transparent 78%);
		mask-image: radial-gradient(ellipse 70% 30% at 50% 8%, #000 0%, transparent 78%);
	}
	.vimm-review { text-align: left; }
	.vimm-checklist { text-align: left; }
	.vimm-algo__copy h2::after,
	.vimm-contact__title::after { margin-left: auto; margin-right: auto; }
	.vimm-hero { padding: 48px 16px 60px; }
	.vimm-hero__subtitle { font-size: 18px; }
	/* La panoramica è larghissima: su schermo stretto alza il taglio sulla piazza,
	   altrimenti si vedono solo i tetti. */
	.vimm-hero::before { background-position: center 32%; }
	.vimm-card { padding: 40px 24px; }
	.vimm-algo__art img,
	.vimm-algo__art svg { max-width: 240px; }

	/* Queste sezioni erano rimaste ai padding desktop (88-90px): su mobile è scroll a vuoto. */
	.vimm-algo { padding: 60px 16px; }
	.vimm-cta-band { padding: 56px 16px; }
	.vimm-contact { padding: 60px 16px; }
	/* 120px di logo si mangiavano metà del primo schermo. */
	.vimm-logo__img { max-height: var(--vimm-logo-h-mobile, 46px); }
	/* Due loghi affiancati su schermo stretto: gap ridotto, restano sulla stessa riga. */
	.vimm-header__inner { gap: 16px; }
	/* CTA a tutta larghezza: bersaglio più comodo per il pollice. */
	.vimm-btn { width: 100%; max-width: 340px; }
	/* Il form eredita il text-align:center della sezione: label centrate sopra input
	   allineati a sinistra sembrano un errore di impaginazione. */
	.vimm-contact .fluentform,
	.vimm-contact .fluentform label,
	.vimm-contact .ff-el-group,
	.vimm-contact .ff-el-input--label { text-align: left; }

	.vimm-footer__inner {
		grid-template-columns: 1fr;
		gap: 36px;
		padding: 44px 24px 32px;
	}
	.vimm-footer__bottom-inner {
		justify-content: center;
		text-align: center;
	}
}

/* Hero CTA enlarged — Garda landing */
.vimm-hero .vimm-btn--primary { font-size: 21px; padding: 20px 54px; }

/* Deve stare dopo la regola qui sopra, stessa specificità: su mobile 21px + 54px di padding
   fanno un bottone sproporzionato. */
@media (max-width: 860px) {
	.vimm-hero .vimm-btn--primary { font-size: 18px; padding: 18px 24px; }
}
