/* Fioreimmo Shortcodes — variabili sovrascrivibili dal tema */
:root {
	--fi-primary: #b91c1c;
	--fi-btn: #41668d; /* sfondo dei bottoni (.fi-btn, invio form, bottone header) */
	--fi-container: 1300px;
	--fi-gutter: 1.25rem;
	--fi-radius: 6px;
}

.fi-container {
	max-width: var(--fi-container);
	margin-inline: auto;
	padding-inline: var(--fi-gutter);
	box-sizing: border-box;
}

/* Sezioni con ancora (#id): arrivando da un link, il titolo resta sotto l'header sticky
   (altezza in --fi-header-h, impostata da header.js) e non sotto di esso. */
.fi-hero[id],
.fi-section[id],
.fi-textsec[id],
.fi-txtimg[id],
.fi-cta[id],
.fi-contact[id],
.fi-script[id] {
	scroll-margin-top: calc(var(--fi-header-h, 0px) + 1rem);
}

/* Testo solo per screen reader (es. il titolo dell'articolo nel link "Leggi"). */
.fi-sr-only {
	position: absolute !important;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0 0 0 0);
	clip-path: inset(50%);
	white-space: nowrap;
	border: 0;
}

.fi-btn {
	display: inline-block;
	padding: 0.85em 1.75em;
	border-radius: var(--fi-radius);
	background: var(--fi-btn, #41668d);
	color: #fff;
	font-weight: 600;
	line-height: 1.2;
	text-decoration: none;
	transition: opacity 0.15s ease;
}
.fi-btn:hover { opacity: 0.9; color: #fff; }
.fi-btn:focus-visible {
	outline: 3px solid currentColor;
	outline-offset: 3px;
}

/* Link dentro ai testi: sempre sottolineati (il tema toglie l'underline a tutti i link,
   e un link riconoscibile solo dal colore non è accessibile). Su sfondo scuro prendono
   il colore del testo, così il contrasto resta quello del testo. */
.fi-section__content a:not(.fi-btn),
.fi-textsec__content a,
.fi-imgsplit__content a,
.fi-imgtext__content a,
.fi-txtimg__content a,
.fi-split__content a,
.fi-video__text a,
.fi-contact__content a,
.fi-cta__text a,
.fi-hero__subtitle a,
.fi-hero__desc a {
	text-decoration: underline;
	text-underline-offset: 0.15em;
}
.fi-section--dark a:not(.fi-btn),
.fi-textsec--dark a:not(.fi-btn),
.fi-imgsplit--dark a:not(.fi-btn),
.fi-imgtext--dark a:not(.fi-btn),
.fi-split--dark a:not(.fi-btn),
.fi-video--dark a:not(.fi-btn),
.fi-contact--dark a:not(.fi-btn) {
	color: inherit;
}

/* ---------------------------------------------------------------------------
   Larghezza piena.
   Temi classici (es. GeneratePress con contenitore a 1200px): l'elemento esce
   dal contenitore centrato con margini negativi pari a metà viewport.
   Temi a blocchi: il contenitore "constrained" gestisce da solo la classe
   alignfull, quindi lì i margini restano quelli del tema.
   --------------------------------------------------------------------------- */
.fi-hero,
.fi-slider,
.fi-section,
.fi-split,
.fi-posts,
.fi-video,
.fi-imgsplit,
.fi-services,
.fi-imgtext,
.fi-textsec,
.fi-txtimg,
.fi-cta,
.fi-contact,
.fi-script {
	max-width: none;
	width: auto;
	/* --fi-sbw = larghezza della barra di scorrimento (impostata da un inline script),
	   perché 100vw la include e sfalserebbe di qualche pixel. */
	margin-left: calc(50% - 50vw + var(--fi-sbw, 0px) / 2);
	margin-right: calc(50% - 50vw + var(--fi-sbw, 0px) / 2);
}
:where(.is-layout-constrained) > .fi-hero,
:where(.is-layout-constrained) > .fi-slider,
:where(.is-layout-constrained) > .fi-section,
:where(.is-layout-constrained) > .fi-split,
:where(.is-layout-constrained) > .fi-posts,
:where(.is-layout-constrained) > .fi-video,
:where(.is-layout-constrained) > .fi-imgsplit,
:where(.is-layout-constrained) > .fi-services,
:where(.is-layout-constrained) > .fi-imgtext,
:where(.is-layout-constrained) > .fi-textsec,
:where(.is-layout-constrained) > .fi-txtimg,
:where(.is-layout-constrained) > .fi-cta,
:where(.is-layout-constrained) > .fi-contact,
:where(.is-layout-constrained) > .fi-script {
	margin-left: 0;
	margin-right: 0;
}
/* Le slide stanno dentro lo slider: nessun margine proprio. */
.fi-slider .fi-hero {
	margin-left: 0;
	margin-right: 0;
}
/* Temi classici (GeneratePress "one-container"): il contenuto ha un padding di 40px.
   Se la pagina inizia o finisce con un blocco a tutta larghezza, azzeriamo quel
   padding in alto/in basso: niente striscia bianca tra header e hero o prima del footer. */
.site-content:has(.entry-content > :is(.fi-hero, .fi-slider, .fi-section, .fi-split, .fi-posts, .fi-video, .fi-imgsplit, .fi-services, .fi-imgtext, .fi-textsec, .fi-txtimg, .fi-cta, .fi-contact, .fi-script):first-child),
.site-content:has(.entry-content > :is(.fi-hero, .fi-slider, .fi-section, .fi-split, .fi-posts, .fi-video, .fi-imgsplit, .fi-services, .fi-imgtext, .fi-textsec, .fi-txtimg, .fi-cta, .fi-contact, .fi-script):first-child) .inside-article {
	padding-top: 0;
}
.site-content:has(.entry-content > :is(.fi-hero, .fi-slider, .fi-section, .fi-split, .fi-posts, .fi-video, .fi-imgsplit, .fi-services, .fi-imgtext, .fi-textsec, .fi-txtimg, .fi-cta, .fi-contact, .fi-script):last-child),
.site-content:has(.entry-content > :is(.fi-hero, .fi-slider, .fi-section, .fi-split, .fi-posts, .fi-video, .fi-imgsplit, .fi-services, .fi-imgtext, .fi-textsec, .fi-txtimg, .fi-cta, .fi-contact, .fi-script):last-child) .inside-article {
	padding-bottom: 0;
}
/* Spazio tra blocchi consecutivi: nessuno (eventuali <p> vuoti lasciati da wpautop). */
.entry-content > p:empty { display: none; }

/* 100vw include la barra di scorrimento: evita lo scroll orizzontale. */
body:has(.fi-hero, .fi-slider, .fi-section, .fi-split, .fi-posts, .fi-video, .fi-imgsplit, .fi-services, .fi-imgtext, .fi-textsec, .fi-txtimg, .fi-cta, .fi-contact, .fi-script) {
	overflow-x: clip;
}

/* Hero */
.fi-hero {
	position: relative;
	display: flex;
	align-items: center;
	min-height: 100vh;
	margin-block: 0;
	padding: 4rem var(--fi-gutter);
	background: #1f2937;
	color: #fff;
	text-align: center;
	box-sizing: border-box;
	isolation: isolate; /* l'immagine (z-index -1) resta sopra il colore di fondo e sotto il velo */
}
/* Immagine di sfondo: <img> a tutta superficie, ritagliata come background-size: cover. */
.fi-hero__bg {
	position: absolute;
	inset: 0;
	z-index: -1;
	display: block;
	width: 100%;
	height: 100%;
	max-width: none;
	object-fit: cover;
	object-position: center;
}
/* Velo scuro sulla foto: 0.55 (era 0.45) perché il testo bianco tenga il contrasto 4.5:1
   anche su foto chiare; il gradiente scurisce di più la parte bassa, dove sta il bottone. */
.fi-hero--has-image::before {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.6));
}
.fi-hero--has-image .fi-hero__title,
.fi-hero--has-image .fi-hero__subtitle,
.fi-hero--has-image .fi-hero__desc {
	text-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
}
.fi-hero__inner {
	position: relative;
	width: 100%;
	max-width: var(--fi-container);
	margin-inline: auto;
}
.fi-hero__title {
	margin: 0 0 0.5em;
	font-size: clamp(2rem, 5vw, 65px);
	line-height: 1.1;
	color: inherit;
	text-align: left;
	font-weight: 800;
}
.fi-hero__subtitle {
	margin: 0 0 1.5em;
	font-size: clamp(1.1rem, 2.2vw, 1.5rem);
	opacity: 0.9;
}
/* Hero ridotto ([fiore-hero-small]): stesso stile, ma non occupa tutto lo schermo. */
.fi-hero--small {
	min-height: 50vh;
	padding-block: 3rem;
}
.fi-hero--small .fi-hero__title {
	font-size: clamp(1.8rem, 4vw, 52px);
}
.fi-hero--small .fi-hero__subtitle {
	font-size: clamp(1rem, 2vw, 1.35rem);
}

/* Hero ridotto con descrizione ([fiore-hero-text]): tutto centrato e in Merriweather. */
.fi-hero--text .fi-hero__inner { text-align: center; }
html body .fi-hero--text .fi-hero__title,
html body .fi-hero--text .fi-hero__subtitle,
html body .fi-hero--text .fi-hero__desc {
	font-family: var(--fi-font-heading);
	text-align: center;
}
.fi-hero--text .fi-hero__title { font-weight: 700; }
.fi-hero--text .fi-hero__subtitle { margin-bottom: 1em; }
.fi-hero__desc {
	max-width: 760px;
	margin-inline: auto;
	font-size: clamp(1rem, 1.6vw, 1.15rem);
	line-height: 1.65;
	opacity: 0.92;
}
.fi-hero__desc > :first-child { margin-top: 0; }
.fi-hero__desc > :last-child  { margin-bottom: 0; }
.fi-hero__desc p { margin: 0 0 1em; color: inherit; }
.fi-hero__desc a { color: inherit; text-decoration: underline; }
.fi-hero__actions { margin: 1.75rem 0 0; }

/* Section */
.fi-section {
	margin-block: 0;
	padding-block: 4rem;
}
.fi-section--grey { background: #f5f5f5; }
.fi-section--dark { background: #1f2937; color: #fff; }
.fi-section__title {
	margin: 0 0 1.5rem;
	font-size: clamp(1.6rem, 3.5vw, 2.5rem);
	line-height: 1.15;
	color: inherit;
}
.fi-section__content > :first-child { margin-top: 0; }
.fi-section__content > :last-child  { margin-bottom: 0; }

@media (max-width: 640px) {
	.fi-hero { min-height: 60vh; padding: 3rem var(--fi-gutter); }
	.fi-hero--small { min-height: 40vh; padding: 2.5rem var(--fi-gutter); }
	.fi-section { padding-block: 2.5rem; }
}

/* Hero slider */
.fi-slider {
	position: relative;
	overflow: hidden;
}
/* Il contenitore riceve il focus (tabindex=-1) solo quando la slide con l'elemento
   focalizzato viene nascosta: anello interno per non perdere l'orientamento. */
.fi-slider:focus-visible {
	outline: 3px solid #fff;
	outline-offset: -3px;
}
.fi-slider__track {
	position: relative;
	min-height: 70vh;
}
.fi-slider__slide {
	position: absolute;
	inset: 0;
	min-height: 100%;
	opacity: 0;
	visibility: hidden;
	transition: opacity 0.6s ease, visibility 0.6s ease;
}
.fi-slider__slide.is-active {
	opacity: 1;
	visibility: visible;
	z-index: 1;
}
/* Controlli: frecce e bottone pausa (44px), pallini (area 24px). */
.fi-slider__arrow,
.fi-slider__pause {
	position: absolute;
	z-index: 2;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	padding: 0;
	border: 1px solid rgba(255, 255, 255, 0.5);
	border-radius: 50%;
	/* Fondo scuro semitrasparente: il glifo bianco resta leggibile anche su foto chiare. */
	background: rgba(0, 0, 0, 0.45);
	color: #fff;
	font-size: 1.2rem;
	line-height: 1;
	cursor: pointer;
	transition: background 0.15s ease;
}
.fi-slider__arrow:hover,
.fi-slider__pause:hover { background: rgba(0, 0, 0, 0.7); }
.fi-slider__arrow:focus-visible,
.fi-slider__pause:focus-visible,
.fi-slider__dot:focus-visible {
	outline: 3px solid #fff;
	outline-offset: 2px;
	box-shadow: 0 0 0 5px rgba(0, 0, 0, 0.6);
}
.fi-slider__arrow {
	top: 50%;
	transform: translateY(-50%);
}
.fi-slider__arrow--prev { left: 1rem; }
.fi-slider__arrow--next { right: 1rem; }
.fi-slider__pause {
	right: 1rem;
	bottom: 1rem;
}
.fi-slider__pause[hidden] { display: none; } /* senza autoplay o con "riduci animazioni" (slider.js) */
.fi-slider__pause svg { width: 20px; height: 20px; }
.fi-slider__icon-play { display: none; }
.fi-slider.is-paused .fi-slider__icon-pause { display: none; }
.fi-slider.is-paused .fi-slider__icon-play { display: block; }
.fi-slider__dots {
	position: absolute;
	bottom: 1.25rem;
	left: 0;
	right: 0;
	z-index: 2;
	display: flex;
	justify-content: center;
	gap: 0.25rem;
}
.fi-slider__dot {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 24px;
	height: 24px;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: transparent;
	cursor: pointer;
}
.fi-slider__dot::before {
	content: "";
	width: 10px;
	height: 10px;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.5);
	box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.25);
	transition: background 0.15s ease, transform 0.15s ease;
}
.fi-slider__dot:hover::before { background: rgba(255, 255, 255, 0.8); }
.fi-slider__dot.is-active::before { background: #fff; transform: scale(1.25); }

@media (max-width: 640px) {
	.fi-slider__track { min-height: 60vh; }
	.fi-slider__arrow { width: 36px; height: 36px; font-size: 1rem; }
	.fi-slider__pause { width: 36px; height: 36px; }
	.fi-slider__dots { bottom: 1rem; padding-right: 3.5rem; }
	/* Il testo delle slide non passa sotto le frecce (36px + 1rem di margine). */
	.fi-slider .fi-hero__inner { padding-inline: 3.25rem; box-sizing: border-box; }
	/* Spazio in basso per pallini e bottone pausa. */
	.fi-slider .fi-hero { padding-bottom: 4rem; }
}
@media (prefers-reduced-motion: reduce) {
	.fi-slider__slide,
	.fi-slider__dot::before,
	.fi-slider__arrow,
	.fi-slider__pause { transition: none; }
}

/* Sezione testo + video */
.fi-split {
	margin-block: 0;
	padding-block: 8rem;
}
.fi-split--grey { background: #f5f5f5; }
.fi-split--dark { background: #1f2937; color: #fff; }
.fi-split__grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 3rem;
	align-items: center;
}
.fi-split--reverse .fi-split__text { order: 2; }
.fi-split--reverse .fi-split__media { order: 1; }
.fi-split--no-media .fi-split__grid { grid-template-columns: 1fr; }
.fi-split__text { position: relative; }
.fi-split__text > :not(.fi-split__watermark) { position: relative; z-index: 1; }
.fi-split__watermark {
	position: absolute;
	top: -0.65em;
  	left: -0.04em;
	z-index: 0;
	font-size: clamp(5rem, 12vw, 10rem);
	font-weight: 300;
	line-height: 1;
	letter-spacing: -0.02em;
	color: currentColor;
	opacity: 0.06;
	white-space: nowrap;
	pointer-events: none;
	user-select: none;
}
.fi-split__title {
	margin: 0 0 1rem;
	font-size: clamp(1.6rem, 3.5vw, 2.5rem);
	line-height: 1.15;
	color: inherit;
}
.fi-split__content > :first-child { margin-top: 0; }
.fi-split__content > :last-child  { margin-bottom: 0; }
.fi-split__actions { margin: 1.5rem 0 0; }
.fi-split__media video,
.fi-split__media iframe {
	display: block;
	width: 100%;
	height: auto;
	border-radius: 8px;
	background: #000;
	box-shadow: 0 10px 30px rgba(0, 0, 0, 0.15);
}
.fi-split__embed { position: relative; aspect-ratio: 16 / 9; }
.fi-split__embed iframe { position: absolute; inset: 0; height: 100%; }

@media (max-width: 800px) {
	.fi-split { padding-block: 2.5rem; overflow: hidden; }
	.fi-split__watermark { font-size: 4.5rem; top: -0.4em; left: 0; }
	.fi-split__grid { grid-template-columns: 1fr; gap: 1.75rem; }
	.fi-split--reverse .fi-split__text { order: 1; }
	.fi-split--reverse .fi-split__media { order: 2; }
}

/* Ultimi articoli */
.fi-posts {
	margin-block: 0;
	padding-block: 0;
	padding-bottom: 4rem;
}
/* Contenuto a tutta larghezza: niente colonna da 1300px, solo il margine laterale. */
.fi-posts .fi-container {
	max-width: none;
	padding-inline: clamp(var(--fi-gutter), 2vw, 2rem);
}
.fi-posts--grey { background: #f5f5f5; }
.fi-posts--dark { background: #1f2937; color: #fff; }
.fi-posts__title {
	margin: 0 0 2rem;
	font-size: clamp(1.6rem, 3.5vw, 2.5rem);
	line-height: 1.15;
	color: inherit;
}
.fi-posts__grid {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 1.5rem;
}
.fi-posts__grid--1 { grid-template-columns: minmax(0, 1fr); }
.fi-posts__grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.fi-posts__grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.fi-post {
	display: flex;
	flex-direction: column;
	background: #fff;
	color: #1f2937;
	border-radius: 8px;
	overflow: hidden;
	box-shadow: 0 4px 16px rgba(0, 0, 0, 0.06);
	transition: transform 0.15s ease, box-shadow 0.15s ease;
}
.fi-post:hover { transform: translateY(-3px); box-shadow: 0 10px 28px rgba(0, 0, 0, 0.12); }
/* Il riquadro 16:10 detta l'altezza; l'immagine lo riempie per intero a qualsiasi larghezza della card. */
.fi-post__media { position: relative; display: block; aspect-ratio: 16 / 10; overflow: hidden; background: #e5e7eb; }
.fi-post__media img { position: absolute; inset: 0; display: block; width: 100%; height: 100%; max-width: none; object-fit: cover; }
.fi-post__placeholder {
	display: block;
	width: 100%;
	height: 100%;
	background: linear-gradient(135deg, #e5e7eb, #d1d5db);
}
.fi-post__body { display: flex; flex-direction: column; flex: 1; padding: 1.1rem 1.25rem 1.25rem; }

.fi-post__cat {
	align-self: flex-start;
	margin: 0 0 .9rem;
	font-size: 15px;
	line-height: 1.5;
	color: black;
	font-weight: 600;
}
.fi-post__title { margin: 0 0 0.9rem; font-size: 1.15rem; line-height: 1.3; }
.fi-post__title a { color: inherit; text-decoration: none; font-size: 17px; }
.fi-post__title a:hover { color: var(--fi-primary, #b91c1c); }
.fi-post__excerpt { margin: 0 0 1rem; font-size: 0.95rem; line-height: 1.55; color: #4b5563; }
.fi-post__more {
	margin-top: auto;
	/* Il bordo arriva ai lati della card: compensa il padding orizzontale di .fi-post__body. */
	margin-inline: -1.25rem;
	padding: 0.85rem 1.25rem 0;
	border-top: 1px solid #e5e7eb;
	font-weight: 600;
	font-size: 0.9rem;
	color: #41668D;
	text-decoration: none;
}
.fi-post__more:hover { text-decoration: underline; }
/* Righe condivise tra le card della stessa fila: titolo, categoria, estratto e "Leggi" restano
   allineati anche con titoli di lunghezza diversa. Senza subgrid resta il layout flex qui sopra. */
@supports (grid-template-rows: subgrid) {
	.fi-post,
	.fi-post__body {
		display: grid;
		grid-template-rows: subgrid;
		grid-template-columns: minmax(0, 1fr);
		row-gap: 0;
	}
	.fi-post { grid-row: span 4; }
	.fi-post__media { grid-row: 1; }
	.fi-post__body { grid-row: 2 / span 3; }
	.fi-post__title { grid-row: 1; }
	.fi-post__cat { grid-row: 2; justify-self: start; }
	.fi-post__excerpt { grid-row: 3; }
	.fi-post__more { grid-row: 4; align-self: end; }
}
/* Focus visibile sui link della card (il titolo non è sottolineato: l'anello è l'unico segnale). */
.fi-post__title a:focus-visible,
.fi-post__more:focus-visible {
	outline: 2px solid var(--fi-primary, #b91c1c);
	outline-offset: 3px;
	border-radius: 2px;
}
@media (prefers-reduced-motion: reduce) {
	.fi-post,
	.fi-btn,
	.fi-post__title a,
	.fi-post__more { transition: none; }
	.fi-post:hover { transform: none; }
}
.fi-posts__actions { margin: 2rem 0 0; text-align: center; }

@media (max-width: 1024px) {
	.fi-posts__grid, .fi-posts__grid--3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 600px) {
	.fi-posts { padding-block: 2.5rem; }
	.fi-posts__grid, .fi-posts__grid--2, .fi-posts__grid--3 { grid-template-columns: minmax(0, 1fr); }
}

/* Video centrato */
.fi-video {
	margin-block: 0;
	padding-block: 4rem;
	background: #f5f5f7;
	text-align: center;
}
.fi-video--grey { background: #f5f5f7; }
.fi-video--dark { background: #1f2937; color: #fff; }
.fi-video__title {
	margin: 0 0 1rem;
	/* 150px da desktop (viewport >= 1440px), poi scala con la larghezza fino a 2.5rem su mobile. */
	font-size: clamp(2.5rem, 10.4vw, 150px);
	font-style: italic;
	line-height: 1.05;
	color: #B5D6FA;
}
.fi-video__text {
	max-width: 720px;
	margin: 0 auto 2rem;
	font-size: 1.05rem;
	line-height: 1.6;
}
.fi-video__text > :first-child { margin-top: 0; }
.fi-video__text > :last-child  { margin-bottom: 0; }
.fi-video__title + .fi-video__media { margin-top: 2rem; }
.fi-video__media {
	max-width: 960px;
	margin-inline: auto;
}
.fi-video__media video,
.fi-video__media iframe {
	display: block;
	width: 100%;
	height: auto;
	border-radius: 8px;
	background: #000;
	box-shadow: 0 10px 30px rgba(0, 0, 0, 0.15);
}
.fi-video__embed { position: relative; aspect-ratio: 16 / 9; }
.fi-video__embed iframe { position: absolute; inset: 0; height: 100%; }

@media (max-width: 640px) {
	.fi-video { padding-block: 2.5rem; }
}

/* Sezione titolo + immagine / descrizione */
.fi-imgsplit {
	margin-block: 0;
	padding-block: 8rem;
}
.fi-imgsplit--grey { background: #f5f5f7; }
.fi-imgsplit--dark { background: #1f2937; color: #fff; }
.fi-imgsplit__grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 3rem;
	align-items: center;
}
.fi-imgsplit--reverse .fi-imgsplit__visual { order: 2; }
.fi-imgsplit--reverse .fi-imgsplit__text { order: 1; }
.fi-imgsplit__visual { position: relative; }
.fi-imgsplit__visual > :not(.fi-imgsplit__watermark) { position: relative; z-index: 1; }
.fi-imgsplit__watermark {
	position: absolute;
	top: -0.65em;
  	left: -0.04em;
	z-index: 0;
	font-size: clamp(5rem, 12vw, 10rem);
	font-weight: 300;
	line-height: 1;
	letter-spacing: -0.02em;
	color: currentColor;
	opacity: 0.06;
	white-space: nowrap;
	pointer-events: none;
	user-select: none;
}
.fi-imgsplit__title {
	margin: 0 0 1.25rem;
	font-size: clamp(1.6rem, 3.5vw, 2.5rem);
	line-height: 1.15;
	color: inherit;
}
.fi-imgsplit__figure { margin: 0; }
.fi-imgsplit__figure img {
	display: block;
	width: 100%;
	height: auto;
	border-radius: 8px;
	box-shadow: 0 10px 30px rgba(0, 0, 0, 0.12);
}
.fi-imgsplit__content { font-size: 1.05rem; line-height: 1.65; }
.fi-imgsplit__content > :first-child { margin-top: 0; }
.fi-imgsplit__content > :last-child  { margin-bottom: 0; }
.fi-imgsplit__actions { margin: 1.5rem 0 0; }

/* Due colonne: il testo parte all'altezza dell'immagine (non del titolo). Titolo e immagine
   occupano due righe condivise, il testo sta nella riga dell'immagine. Senza subgrid resta centrato. */
@media (min-width: 801px) {
	@supports (grid-template-rows: subgrid) {
		.fi-imgsplit__grid { grid-template-rows: auto auto; row-gap: 0; align-items: start; }
		.fi-imgsplit__visual {
			display: grid;
			grid-template-rows: subgrid;
			grid-template-columns: minmax(0, 1fr);
			grid-row: 1 / span 2;
			grid-column: 1;
		}
		.fi-imgsplit__title { grid-row: 1; }
		.fi-imgsplit__figure { grid-row: 2; }
		.fi-imgsplit__text { grid-row: 2; grid-column: 2; }
		.fi-imgsplit--reverse .fi-imgsplit__visual { grid-column: 2; }
		.fi-imgsplit--reverse .fi-imgsplit__text { grid-column: 1; }
	}
}

@media (max-width: 800px) {
	.fi-imgsplit { padding-block: 2.5rem; overflow: hidden; }
	.fi-imgsplit__watermark { font-size: 4.5rem; top: -0.4em; left: 0; }
	.fi-imgsplit__grid { grid-template-columns: 1fr; gap: 1.75rem; }
	.fi-imgsplit--reverse .fi-imgsplit__visual { order: 1; }
	.fi-imgsplit--reverse .fi-imgsplit__text { order: 2; }
}

/* Sezione titolo + descrizione (solo testo, centrata) */
.fi-textsec {
	margin-block: 0;
	padding-block: 4rem;
}
.fi-textsec--grey { background: #f5f5f7; }
.fi-textsec--dark { background: #1f2937; color: #fff; }
.fi-textsec__inner {
	max-width: 820px;
	margin-inline: auto;
	text-align: center;
}
.fi-textsec__title {
	margin: 0 0 1.25rem;
	font-size: clamp(1.6rem, 3.5vw, 2.5rem);
	line-height: 1.15;
	color: inherit;
}
.fi-textsec__content { font-size: 1.05rem; line-height: 1.65; }
.fi-textsec__content > :first-child { margin-top: 0; }
.fi-textsec__content > :last-child  { margin-bottom: 0; }
.fi-textsec__actions { margin: 1.75rem 0 0; }

@media (max-width: 800px) {
	.fi-textsec { padding-block: 2.5rem; }
}

/* Call to action: fascia azzurra, frase centrata in grande e bottone */
.fi-cta {
	--fi-cta-bg: #e8f1f8;
	--fi-cta-btn: var(--fi-btn, #41668d);
	--fi-cta-color: #1f2937;
	margin-block: 0;
	padding-block: 3.5rem;
	background: var(--fi-cta-bg);
	color: var(--fi-cta-color);
}
.fi-cta__inner {
	max-width: 900px;
	margin-inline: auto;
	text-align: center;
}
.fi-cta__text {
	margin: 0;
	font-family: var(--fi-font-heading, Georgia, serif);
	font-size: clamp(1.25rem, 2.4vw, 1.75rem);
	line-height: 1.4;
	font-weight: 400;
	color: inherit;
}
.fi-cta__actions { margin: 1.75rem 0 0; }
.fi-cta__btn {
	background: var(--fi-cta-btn);
	/* --fi-cta-btn-color viene impostato dallo shortcode (testo scuro) se il colore
	   scelto per il bottone non ha abbastanza contrasto con il bianco. */
	color: var(--fi-cta-btn-color, #fff);
	border-radius: 4px;
	font-weight: 500;
}
.fi-cta__btn:hover { opacity: 0.9; color: var(--fi-cta-btn-color, #fff); }

@media (max-width: 800px) {
	.fi-cta { padding-block: 2.5rem; }
}

/* Contatti: due colonne, testo a sinistra e testo + form a destra */
.fi-contact {
	margin-block: 0;
	padding-block: 4rem;
}
.fi-contact--grey { background: #f5f5f7; }
.fi-contact--dark { background: #1f2937; color: #fff; }
.fi-contact__grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: clamp(2rem, 5vw, 4rem);
	align-items: start;
}
.fi-contact__title {
	margin: 0 0 1rem;
	font-size: clamp(1.5rem, 3vw, 2.1rem);
	line-height: 1.2;
	color: inherit;
}
.fi-contact__content { font-size: 1.05rem; line-height: 1.65; }
.fi-contact__content > :first-child { margin-top: 0; }
.fi-contact__content > :last-child  { margin-bottom: 0; }
.fi-contact__content a { color: inherit; }
.fi-contact__form-wrap { margin-top: 1.5rem; }
.fi-contact__form-wrap > :first-child { margin-top: 0; }
/* Campi del form: stile di base neutro, valido per Contact Form 7, WPForms e simili.
   Vale anche per un form Contact Form 7 messo nella descrizione di [fiore-image-text] e per
   quello nella colonna laterale della scheda immobile (.ekeria-container-form). */
:is(.fi-contact__form-wrap, .fi-imgtext__content .wpcf7, .ekeria-container-form .wpcf7) input:not([type="submit"]):not([type="checkbox"]):not([type="radio"]),
:is(.fi-contact__form-wrap, .fi-imgtext__content .wpcf7, .ekeria-container-form .wpcf7) textarea,
:is(.fi-contact__form-wrap, .fi-imgtext__content .wpcf7, .ekeria-container-form .wpcf7) select {
	width: 100%;
	box-sizing: border-box;
	padding: 0.75em 0.9em;
	border: 1px solid #64748b; /* 4.8:1 su bianco: il bordo del campo deve avere contrasto >= 3:1 (WCAG 1.4.11) */
	border-radius: var(--fi-radius);
	background: #fff;
	color: #1f2937;
	font: inherit;
}
:is(.fi-contact__form-wrap, .fi-imgtext__content .wpcf7, .ekeria-container-form .wpcf7) input:focus-visible,
:is(.fi-contact__form-wrap, .fi-imgtext__content .wpcf7, .ekeria-container-form .wpcf7) textarea:focus-visible,
:is(.fi-contact__form-wrap, .fi-imgtext__content .wpcf7, .ekeria-container-form .wpcf7) select:focus-visible,
:is(.fi-contact__form-wrap, .fi-imgtext__content .wpcf7, .ekeria-container-form .wpcf7) button:focus-visible {
	outline: 2px solid var(--fi-primary);
	outline-offset: 2px;
}
:is(.fi-contact__form-wrap, .fi-imgtext__content .wpcf7, .ekeria-container-form .wpcf7) textarea { min-height: 8em; }
:is(.fi-contact__form-wrap, .fi-imgtext__content .wpcf7, .ekeria-container-form .wpcf7) input[type="submit"],
:is(.fi-contact__form-wrap, .fi-imgtext__content .wpcf7, .ekeria-container-form .wpcf7) button[type="submit"] {
	display: inline-block;
	padding: 0.85em 1.75em;
	border: 0;
	border-radius: var(--fi-radius);
	background: var(--fi-btn, #41668d);
	color: #fff;
	font: inherit;
	font-weight: 600;
	cursor: pointer;
	transition: opacity 0.15s ease;
}
:is(.fi-contact__form-wrap, .fi-imgtext__content .wpcf7, .ekeria-container-form .wpcf7) input[type="submit"]:hover,
:is(.fi-contact__form-wrap, .fi-imgtext__content .wpcf7, .ekeria-container-form .wpcf7) button[type="submit"]:hover { opacity: 0.9; }
/* Invio disattivato finché non si spunta il consenso. */
:is(.fi-contact__form-wrap, .fi-imgtext__content .wpcf7, .ekeria-container-form .wpcf7) :is(input, button)[type="submit"]:disabled {
	opacity: 0.5;
	cursor: not-allowed;
}

@media (max-width: 800px) {
	.fi-contact { padding-block: 2.5rem; }
	.fi-contact__grid { grid-template-columns: 1fr; gap: 2rem; }
}

/* Testo + immagine con fascia diagonale */
.fi-txtimg {
	--fi-txtimg-accent: #e8f1f8;
	position: relative;
	margin-block: 0;
	padding-block: 3.5rem;
	background: #fff;
	overflow: hidden;
}
/* Fascia diagonale azzurra dietro la colonna del testo. */
.fi-txtimg--accent::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 0;
	background: var(--fi-txtimg-accent);
	clip-path: polygon(0 0, 33% 0, 16% 100%, 0 100%);
	pointer-events: none;
}
.fi-txtimg--accent.fi-txtimg--reverse::before {
	clip-path: polygon(67% 0, 100% 0, 100% 100%, 84% 100%);
}
/* Nessun max-width: le colonne occupano tutta la larghezza dello schermo. */
.fi-txtimg__inner {
	position: relative;
	z-index: 1;
	padding-inline: clamp(var(--fi-gutter), 4vw, 4rem);
	box-sizing: border-box;
}
.fi-txtimg__grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: clamp(2rem, 5vw, 5rem);
	align-items: center;
}
.fi-txtimg--no-image .fi-txtimg__grid { grid-template-columns: 1fr; }
.fi-txtimg--reverse .fi-txtimg__text { order: 2; }
.fi-txtimg--reverse .fi-txtimg__figure { order: 1; }
.fi-txtimg__title {
	margin: 0 0 1.25rem;
	font-size: clamp(1.25rem, 2.2vw, 1.6rem);
	line-height: 1.25;
	font-weight: 700;
	color: inherit;
}
.fi-txtimg__lead {
	margin: 0 0 1.25rem;
	font-size: 1.1rem;
	line-height: 1.5;
	color: var(--fi-primary);
}
.fi-txtimg__content { font-size: 1.05rem; line-height: 1.65; color: #4b5563; }
.fi-txtimg__content > :first-child { margin-top: 0; }
.fi-txtimg__content > :last-child  { margin-bottom: 0; }
.fi-txtimg__actions { margin: 1.5rem 0 0; }
.fi-txtimg__figure { margin: 0; }
.fi-txtimg__figure img {
	display: block;
	width: 100%;
	height: auto;
}

/* Animazione: l'immagine scivola dentro dal proprio lato quando entra nel viewport.
   Lo stato iniziale nascosto vale solo con JS attivo (html.fi-js). */
.fi-reveal {
	--fi-reveal-x: 0;
	--fi-reveal-y: 0;
	--fi-reveal-duration: .8s;
	--fi-reveal-delay: 0s;
	transition: transform var(--fi-reveal-duration) cubic-bezier(.22, .61, .36, 1) var(--fi-reveal-delay),
	            opacity var(--fi-reveal-duration) ease-out var(--fi-reveal-delay);
	will-change: transform, opacity;
}
.fi-reveal--from-right { --fi-reveal-x: 4rem; }
.fi-reveal--from-left  { --fi-reveal-x: -4rem; }
.fi-reveal--from-bottom { --fi-reveal-y: 2rem; }
html.fi-js .fi-reveal:not(.is-visible) {
	opacity: 0;
	transform: translate3d(var(--fi-reveal-x), var(--fi-reveal-y), 0);
}
.fi-reveal.is-visible {
	opacity: 1;
	transform: none;
}
@media (prefers-reduced-motion: reduce) {
	.fi-reveal { transition: none; }
	html.fi-js .fi-reveal:not(.is-visible) { opacity: 1; transform: none; }
}

@media (max-width: 800px) {
	.fi-txtimg { padding-block: 2.5rem; }
	.fi-txtimg__inner { padding-inline: var(--fi-gutter); }
	.fi-txtimg--accent::before,
	.fi-txtimg--accent.fi-txtimg--reverse::before { clip-path: polygon(0 0, 55% 0, 30% 100%, 0 100%); }
	.fi-txtimg__grid { grid-template-columns: 1fr; gap: 1.75rem; }
	.fi-txtimg--reverse .fi-txtimg__text { order: 1; }
	.fi-txtimg--reverse .fi-txtimg__figure { order: 2; }
}

/* Servizi */
.fi-services {
	--fi-services-accent: #5bb5e0;
	margin-block: 0;
	padding-block: 8rem;
	background-color: #fff;
	background-image:
		radial-gradient(circle at 15% 60%, rgba(91, 181, 224, 0.10), transparent 40%),
		radial-gradient(circle at 85% 30%, rgba(91, 181, 224, 0.10), transparent 40%);
}
.fi-services--grey { background-color: #f5f5f7; }
.fi-services--dark { background-color: #1f2937; color: #fff; background-image: none; }
.fi-services__head { position: relative; max-width: 640px; margin-bottom: 2.5rem; }
.fi-services__watermark {
	position: absolute;
	top: -0.65em;
	left: -0.04em;
	z-index: 0;
	font-size: clamp(5rem, 12vw, 10rem);
	font-weight: 300;
	line-height: 1;
	letter-spacing: -0.02em;
	color: currentColor;
	opacity: 0.06;
	white-space: nowrap;
	pointer-events: none;
	user-select: none;
}
.fi-services__title {
	position: relative;
	z-index: 1;
	margin: 0;
	font-size: clamp(1.6rem, 3vw, 2.25rem);
	line-height: 1.2;
	color: inherit;
}
.fi-services__grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 2rem;
}
.fi-services__grid--1 { grid-template-columns: minmax(0, 1fr); }
.fi-services__grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.fi-services__grid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.fi-services__card {
	padding: 2rem;
	background: #fff;
	color: #1f2937;
	border-radius: 8px;
	box-shadow: 0 10px 40px rgba(31, 41, 55, 0.08);
}
.fi-services__card-title {
	margin: 0 0 1.5rem;
	padding: 1.1rem 1.25rem;
	background: #f5f5f7;
	border-radius: 6px;
	font-size: 1.1rem;
	font-weight: 500;
	line-height: 1.3;
}
.fi-services__list { list-style: none; margin: 0; padding: 0 0.25rem; }
.fi-services__list li {
	display: flex;
	align-items: center;
	gap: 1rem;
	padding: 0.55rem 0;
	font-weight: 600;
}
/* Riga cliccabile: stesso aspetto della riga semplice, colore d'accento al passaggio. */
.fi-services__link {
	display: flex;
	align-items: center;
	gap: 1rem;
	flex: 1;
	color: inherit;
	text-decoration: none;
	transition: color 0.15s ease;
}
.fi-services__link:hover { color: var(--fi-services-accent); }
.fi-services__link:focus-visible {
	outline: 2px solid var(--fi-services-accent);
	outline-offset: 3px;
	border-radius: 2px;
}
.fi-services__icon {
	flex: none;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 24px;
	height: 24px;
	color: var(--fi-services-accent);
}
.fi-services__icon svg { width: 22px; height: 22px; }
.fi-services__icon--text { font-size: 20px; line-height: 1; }
.fi-services__actions { margin: 2.5rem 0 0; text-align: center; }

@media (max-width: 1024px) {
	.fi-services__grid, .fi-services__grid--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 640px) {
	.fi-services { padding-block: 2.5rem; overflow: hidden; }
	.fi-services__watermark { font-size: 4.5rem; top: -0.4em; left: 0; }
	.fi-services__grid, .fi-services__grid--2, .fi-services__grid--4 { grid-template-columns: minmax(0, 1fr); gap: 1.25rem; }
	.fi-services__card { padding: 1.5rem; }
}

/* Immagine a tutta larghezza + testo */
.fi-imgtext {
	display: grid;
	grid-template-columns: 1fr 1fr;
	margin-block: 0;
	min-height: 520px;
	background: #fff;
}
.fi-imgtext--grey { background: #f5f5f7; }
.fi-imgtext--dark { background: #1f2937; color: #fff; }
.fi-imgtext--no-image { grid-template-columns: 1fr; }
.fi-imgtext__media { position: relative; min-height: 320px; }
.fi-imgtext__media img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
}
.fi-imgtext--reverse .fi-imgtext__media { order: 2; }
.fi-imgtext--reverse .fi-imgtext__body { order: 1; }
.fi-imgtext__body {
	display: flex;
	align-items: center;
	padding: 4rem clamp(1.25rem, 6vw, 6rem);
}
/* Il testo si allinea al bordo interno del contenitore (1300px) quando lo schermo è più largo. */
.fi-imgtext:not(.fi-imgtext--reverse) .fi-imgtext__body { padding-right: max(clamp(1.25rem, 6vw, 6rem), calc((100% - var(--fi-container, 1300px) / 2))); }
.fi-imgtext--reverse .fi-imgtext__body { padding-left: max(clamp(1.25rem, 6vw, 6rem), calc((100% - var(--fi-container, 1300px) / 2))); }
.fi-imgtext__inner { max-width: 560px; }
.fi-imgtext--no-image .fi-imgtext__inner { max-width: var(--fi-container, 1300px); margin-inline: auto; }
.fi-imgtext__title {
	margin: 0 0 1.25rem;
	font-size: clamp(1.6rem, 3.5vw, 2.5rem);
	line-height: 1.15;
	color: inherit;
}
.fi-imgtext__content { font-size: 1.05rem; line-height: 1.65; }
.fi-imgtext__content > :first-child { margin-top: 0; }
.fi-imgtext__content > :last-child  { margin-bottom: 0; }
.fi-imgtext__actions { margin: 1.5rem 0 0; }
/* Form Contact Form 7 nella descrizione (es. name="newsletter"): etichette sopra i campi,
   spazi compatti. I campi e il bottone prendono lo stile comune definito con [fiore-contact].
   Stesse regole per il form della scheda immobile (.ekeria-container-form). */
.fi-imgtext__content .wpcf7 { margin-top: 1.5rem; }
:is(.fi-imgtext__content, .ekeria-container-form) .wpcf7 form > p { margin: 0 0 1rem; }
:is(.fi-imgtext__content, .ekeria-container-form) .wpcf7 label { display: block; font-size: 0.9rem; font-weight: 600; line-height: 1.4; }
:is(.fi-imgtext__content, .ekeria-container-form) .wpcf7 label br { display: none; }
:is(.fi-imgtext__content, .ekeria-container-form) .wpcf7 .wpcf7-form-control-wrap { display: block; margin-top: 0.35rem; font-size: 1rem; font-weight: 400; }
:is(.fi-imgtext__content, .ekeria-container-form) .wpcf7 textarea { height: 8em; resize: vertical; }
/* Consenso: casella e testo affiancati, testo che va a capo allineato. */
:is(.fi-imgtext__content, .ekeria-container-form) .wpcf7 .wpcf7-acceptance .wpcf7-list-item { display: block; margin: 0; }
:is(.fi-imgtext__content, .ekeria-container-form) .wpcf7 .wpcf7-acceptance label {
	display: flex;
	align-items: flex-start;
	gap: 0.6rem;
	font-size: 0.85rem;
	font-weight: 400;
	cursor: pointer;
}
:is(.fi-imgtext__content, .ekeria-container-form) .wpcf7 .wpcf7-acceptance input { flex: none; width: 1.1rem; height: 1.1rem; margin: 0.15em 0 0; }
:is(.fi-imgtext__content, .ekeria-container-form) .wpcf7 form > p:last-of-type { margin-bottom: 0; }
:is(.fi-imgtext__content, .ekeria-container-form) .wpcf7 .wpcf7-not-valid-tip { margin-top: 0.3rem; font-size: 0.85rem; }
:is(.fi-imgtext__content, .ekeria-container-form) .wpcf7 .wpcf7-response-output {
	margin: 1rem 0 0;
	padding: 0.75em 0.9em;
	border-radius: var(--fi-radius);
	font-size: 0.9rem;
}

@media (max-width: 800px) {
	.fi-imgtext { grid-template-columns: 1fr; min-height: 0; }
	.fi-imgtext__media { min-height: 0; aspect-ratio: 16 / 10; }
	.fi-imgtext--reverse .fi-imgtext__media { order: 1; }
	.fi-imgtext--reverse .fi-imgtext__body { order: 2; }
	.fi-imgtext__body, .fi-imgtext--reverse .fi-imgtext__body, .fi-imgtext:not(.fi-imgtext--reverse) .fi-imgtext__body { padding: 2.5rem var(--fi-gutter, 1.25rem); }
}

/* Script / embed centrato */
.fi-script {
	margin-block: 0;
	padding-block: 4rem;
}
.fi-script--grey { background: #f5f5f7; }
.fi-script--dark { background: #1f2937; color: #fff; }
.fi-script__inner { text-align: center; }
.fi-script__title {
	margin: 0 0 1.75rem;
	font-size: clamp(1.6rem, 3.5vw, 2.5rem);
	line-height: 1.15;
	color: inherit;
}
/* I blocchi del widget (div, form…) occupano tutta la colonna con il loro allineamento;
   iframe, immagini e video stretti vengono centrati. Nessun elemento supera la colonna. */
.fi-script__embed { text-align: left; }
.fi-script__embed > :is(iframe, img, video, embed, object) {
	display: block;
	margin-inline: auto;
}
.fi-script__embed > *,
.fi-script__embed iframe { max-width: 100%; }

@media (max-width: 800px) {
	.fi-script { padding-block: 2.5rem; }
}

/* Script con filigrana e/o bottone: intestazione come [fiore-services]
   (titolo a sinistra con la parola in filigrana, bottone a destra). */
.fi-script--split { padding-block: 8rem 4rem; }
.fi-script--split .fi-script__inner { text-align: left; }
.fi-script__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1.5rem 2rem;
	margin-bottom: 2.5rem;
}
.fi-script__heading { position: relative; min-width: 0; }
.fi-script__watermark {
	position: absolute;
	top: -0.65em;
	left: -0.04em;
	z-index: 0;
	font-size: clamp(5rem, 12vw, 10rem);
	font-weight: 300;
	line-height: 1;
	letter-spacing: -0.02em;
	color: currentColor;
	opacity: 0.06;
	white-space: nowrap;
	pointer-events: none;
	user-select: none;
}
.fi-script--split .fi-script__title {
	position: relative;
	z-index: 1;
	margin: 0;
	font-size: clamp(1.6rem, 3vw, 2.25rem);
	line-height: 1.2;
}
.fi-script__head .fi-btn { flex-shrink: 0; }

@media (max-width: 640px) {
	.fi-script--split { padding-block: 4rem 2.5rem; overflow: hidden; }
	.fi-script__head { flex-direction: column; align-items: flex-start; }
	.fi-script__watermark { font-size: 4.5rem; top: -0.4em; left: 0; }
}

/* Script a tutta larghezza (width="full"): niente colonna da 1300px, solo il margine laterale. */
.fi-script--wide .fi-container {
	max-width: none;
	padding-inline: clamp(var(--fi-gutter), 2vw, 2rem);
}

/* Script centrato ([fiore-script-center]): colonna stretta, titolo e codice al centro. */
.fi-script--center .fi-script__inner {
	max-width: 820px;
	margin-inline: auto;
	text-align: center;
}
.fi-script--center .fi-script__embed {
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
}
.fi-script--center-wide .fi-script__inner { max-width: none; }
