/*
Theme Name:   CFL x GELLIFY
Theme URI:    https://www.gellify.com/
Author:       GELLIFY
Author URI:   https://www.gellify.com/
Template:     hello-elementor
Description:  Child theme di Hello Elementor per CrowdForLife (Crédit Agricole Italia), sviluppato da GELLIFY.
Version:      1.13.1
Text Domain:  gwp-theme-cfl
*/

/*
 * Solo CSS che Elementor non puo' gestire (reset, fix globali, stati dei widget nativi).
 * Colori, font e spacing vanno nel Kit Elementor (Global Colors / Global Fonts).
 */

/* ---------- Header sovrapposto all'hero e fisso durante lo scorrimento ----------
 * Il contenitore esterno è trasparente (margini attorno alla barra): non intercetta i clic.
 * --cfl-header-space = spazio occupato dall'header (margine + barra + 24px): ancore, focus e
 * colonne sticky restano sotto l'header (WCAG 2.4.11). */
:root {
	--cfl-header-space: 125px;
}

html {
	scroll-padding-top: var(--cfl-header-space);
}

.cfl-header {
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	z-index: 100;
	pointer-events: none;
}

.cfl-header > * {
	pointer-events: auto;
}

@media (max-width: 767px) {
	:root { --cfl-header-space: 100px; }
}

/* Schermi bassi (telefono in orizzontale, zoom 400%): l'header fisso toglierebbe un terzo dello
   spazio (WCAG 1.4.10): scorre con la pagina */
@media (max-height: 500px) {
	.cfl-header { position: absolute; }
	:root { --cfl-header-space: 24px; }
}

/* Occhiello sopra i titoli (eyebrow_heading): testo scritto normale, maiuscolo solo a video
   (alcuni lettori di schermo compitano o enfatizzano le parole in maiuscolo) */
.cfl-eyebrow .elementor-heading-title {
	text-transform: uppercase;
}

.admin-bar .cfl-header { top: 32px; }

/* Etichetta "CERCA" accanto alla lente (Search Form Pro, skin full screen) */
.cfl-search-label .elementor-search-form__toggle {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	width: auto;
	cursor: pointer;
}

.cfl-search-label .elementor-search-form__toggle::after {
	content: "Cerca";
	font: 600 12px/1 "Inter", sans-serif;
	text-transform: uppercase;
	color: var(--e-global-color-text);
}

@media (max-width: 1024px) {
	.cfl-search-label .elementor-search-form__toggle::after { display: none; }
}

@media (max-width: 782px) {
	.admin-bar .cfl-header { top: 46px; }
}

/* ---------- Link sottolineati nei testi legali ---------- */
/* Interlinea 34px come nel design (il font globale cflsmall ne impone un'altra) */
.cfl-footer-legal p {
	line-height: 34px;
}

.cfl-underline-links a,
.cfl-footer-legal a {
	color: inherit;
	text-decoration: underline;
	text-underline-offset: 3px;
}

.cfl-underline-links a:hover,
.cfl-footer-legal a:hover {
	color: var(--e-global-color-accent);
}

/* ---------- Accordion regolamento (nested-accordion + .cfl-accordion) ----------
 * Il widget espone variabili CSS sul wrapper: le sovrascriviamo li'.
 */
.elementor-widget-n-accordion.cfl-accordion {
	--n-accordion-title-font-size: var(--e-global-typography-cflaccordion-font-size);
	--n-accordion-title-justify-content: space-between;
	--n-accordion-title-flex-grow: 1;
	--n-accordion-title-icon-order: 1;
	--n-accordion-icon-size: 35px;
	--n-accordion-icon-gap: 24px;
	--n-accordion-border-width: 0;
	--n-accordion-border-radius: 0;
	--n-accordion-padding: 40px 0;
	--n-accordion-item-title-space-between: 0;
	--n-accordion-item-title-distance-from-content: 0;
	--n-accordion-title-normal-color: #000;
	--n-accordion-title-hover-color: var(--e-global-color-accent);
	--n-accordion-title-active-color: #000;
}

.elementor-widget-n-accordion.cfl-accordion .e-n-accordion-item {
	border-bottom: 1px solid var(--e-global-color-accent);
}

.elementor-widget-n-accordion.cfl-accordion .e-n-accordion-item:first-child > .e-n-accordion-item-title {
	padding-top: 0;
}

.elementor-widget-n-accordion.cfl-accordion .e-n-accordion-item-title-text {
	font-family: var(--e-global-typography-cflaccordion-font-family), sans-serif;
	font-size: var(--e-global-typography-cflaccordion-font-size);
	font-weight: var(--e-global-typography-cflaccordion-font-weight);
	line-height: var(--e-global-typography-cflaccordion-line-height);
	margin: 0;
}

/* Icone SVG del design: solo stroke. !important perche' il widget imposta fill e altezza
   con selettori per stato (open/hover) piu' specifici. */
.elementor-widget-n-accordion.cfl-accordion .e-n-accordion-item-title-icon span > svg {
	width: 35px;
	height: 35px !important;
	fill: none !important;
}

/* Il "meno" e' un SVG 40x5 con preserveAspectRatio="none": va dimensionato a parte */
.elementor-widget-n-accordion.cfl-accordion .e-n-accordion-item-title-icon .e-opened > svg {
	height: 4.4px !important;
}

.elementor-widget-n-accordion.cfl-accordion .e-n-accordion-item-title-icon > span {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 35px;
	height: 35px;
}

.elementor-widget-n-accordion.cfl-accordion .e-n-accordion-item > .e-con {
	padding: 0 0 40px;
	border: 0;
}

.cfl-accordion__body ul {
	margin: 1em 0 0;
	padding-left: 1.5em;
}

.cfl-accordion__body a {
	color: inherit;
	text-decoration: underline;
}

/* Regolamento: etichetta "Espandi" / "Contrai" accanto a +/- (stato dall'attributo open di <details>).
 * Testo alternativo vuoto (/ ""): i lettori di schermo non la leggono, lo stato lo annuncia gia'
 * aria-expanded del <summary> (il nome della voce resta solo il titolo). */
.elementor-widget-n-accordion.cfl-accordion:not(.cfl-accordion--faq) .e-n-accordion-item-title-icon {
	display: flex;
	align-items: center;
	gap: 12px;
	width: auto;
}

.elementor-widget-n-accordion.cfl-accordion:not(.cfl-accordion--faq) .e-n-accordion-item-title-icon::before {
	content: "Espandi";
	content: "Espandi" / "";
	font-family: "Lato", sans-serif;
	font-size: 16px;
	font-weight: 600;
	line-height: 1;
	text-transform: uppercase;
	color: var(--e-global-color-accent);
	white-space: nowrap;
}

.elementor-widget-n-accordion.cfl-accordion:not(.cfl-accordion--faq) .e-n-accordion-item[open] > .e-n-accordion-item-title .e-n-accordion-item-title-icon::before {
	content: "Contrai";
	content: "Contrai" / "";
}

@media (max-width: 767px) {
	.elementor-widget-n-accordion.cfl-accordion:not(.cfl-accordion--faq) .e-n-accordion-item-title-icon { gap: 8px; }
	.elementor-widget-n-accordion.cfl-accordion:not(.cfl-accordion--faq) .e-n-accordion-item-title-icon::before { font-size: 14px; }
}

@media (max-width: 767px) {
	.elementor-widget-n-accordion.cfl-accordion {
		--n-accordion-padding: 24px 0;
		--n-accordion-icon-size: 24px;
		--n-accordion-icon-gap: 16px;
	}
	.elementor-widget-n-accordion.cfl-accordion .e-n-accordion-item-title-icon span > svg { width: 24px; height: 24px !important; }
	.elementor-widget-n-accordion.cfl-accordion .e-n-accordion-item-title-icon .e-opened > svg { height: 3px !important; }
	.elementor-widget-n-accordion.cfl-accordion .e-n-accordion-item-title-icon > span { width: 24px; height: 24px; }
	.elementor-widget-n-accordion.cfl-accordion .e-n-accordion-item > .e-con { padding-bottom: 24px; }
}

/* Etichette brevi che non devono andare a capo (numeri in hero) */
.cfl-nowrap .elementor-heading-title,
.cfl-nowrap .elementor-counter-title {
	white-space: nowrap;
}

/* ---------- Contrasto testi su foto (WCAG 1.4.3) ----------
 * Su mobile il testo occupa tutta la larghezza: il gradiente orizzontale del design non basta.
 * Le sezioni con foto (.cfl-photo) ricevono un velo uniforme.
 */
@media (max-width: 767px) {
	.e-con.cfl-photo::before {
		background-image: linear-gradient(rgba(3, 53, 64, 0.8), rgba(3, 53, 64, 0.8)) !important;
		opacity: 1 !important;
	}

	/* Hero: overlay pieno (cover) #033540 al 85% */
	.e-con.cfl-hero::before {
		background-image: none !important;
		background-color: #033540 !important;
		opacity: 0.85 !important;
	}
}

/* ---------- Pagina FAQ ---------- */
/* Indice delle categorie: resta visibile mentre si scorre (desktop) */
@media (min-width: 1025px) {
	.e-con.cfl-faq-aside {
		position: sticky;
		top: var(--cfl-header-space);
	}
}

.cfl-faq-nav ul {
	margin: 0;
	padding: 0;
	list-style: none;
	display: flex;
	flex-direction: column;
	gap: 4px;
}

.cfl-faq-nav a {
	display: block;
	padding: 12px 16px;
	border-radius: 4px;
	color: var(--e-global-color-primary);
	text-decoration: none;
}

.cfl-faq-nav a:hover {
	background: var(--e-global-color-cfllight);
	color: var(--e-global-color-accent);
}

.cfl-faq-nav a.is-active {
	background: var(--e-global-color-accent);
	color: #fff;
}

@media (max-width: 1024px) {
	.cfl-faq-nav ul {
		flex-direction: row;
		flex-wrap: wrap;
		gap: 8px;
	}

	.cfl-faq-nav a {
		padding: 8px 16px;
		border: 1px solid var(--e-global-color-accent);
		border-radius: 30px;
	}
}

/* Accordion FAQ: domande più piccole e compatte dell'accordion del regolamento */
.elementor-widget-n-accordion.cfl-accordion--faq {
	--n-accordion-padding: 24px 0;
	--n-accordion-icon-size: 24px;
	--n-accordion-icon-gap: 24px;
	--n-accordion-title-normal-color: var(--e-global-color-primary);
	--n-accordion-title-active-color: var(--e-global-color-primary);
}

.elementor-widget-n-accordion.cfl-accordion--faq .e-n-accordion-item-title-text {
	font-family: var(--e-global-typography-cflfaq-font-family), sans-serif;
	font-size: var(--e-global-typography-cflfaq-font-size);
	font-weight: var(--e-global-typography-cflfaq-font-weight);
	line-height: var(--e-global-typography-cflfaq-line-height);
}

.elementor-widget-n-accordion.cfl-accordion--faq .e-n-accordion-item-title-icon span > svg {
	width: 24px;
	height: 24px !important;
}

.elementor-widget-n-accordion.cfl-accordion--faq .e-n-accordion-item-title-icon .e-opened > svg {
	height: 3px !important;
}

.elementor-widget-n-accordion.cfl-accordion--faq .e-n-accordion-item-title-icon > span {
	width: 24px;
	height: 24px;
}

.elementor-widget-n-accordion.cfl-accordion--faq .e-n-accordion-item:first-child > .e-n-accordion-item-title {
	padding-top: 24px;
}

.elementor-widget-n-accordion.cfl-accordion--faq .e-n-accordion-item:first-child {
	border-top: 1px solid var(--e-global-color-accent);
}

.elementor-widget-n-accordion.cfl-accordion--faq .e-n-accordion-item > .e-con {
	padding-bottom: 32px;
}

.cfl-accordion__body p + p,
.cfl-accordion__body ol,
.cfl-accordion__body ul {
	margin-top: 1em;
}

.cfl-accordion__body ol {
	padding-left: 1.5em;
}

/* Tabella (agevolazioni fiscali): scorre in orizzontale sugli schermi stretti */
.cfl-table-scroll {
	margin-top: 1.5em;
	overflow-x: auto;
}

.cfl-table-scroll:focus-visible {
	outline: 3px solid var(--e-global-color-accent);
	outline-offset: 2px;
}

.cfl-accordion__body table {
	width: 100%;
	min-width: 560px;
	margin: 0;
	border-collapse: collapse;
	font-size: 15px;
}

.cfl-accordion__body th,
.cfl-accordion__body td {
	padding: 12px;
	border: 1px solid #CFD6D6;
	vertical-align: top;
	text-align: left;
}

.cfl-accordion__body.cfl-accordion__body th {   /* doppio: batte le righe alterne di Hello */
	background: var(--e-global-color-primary);
	color: #fff;
}

.cfl-accordion__body td ul {
	margin: 0;
	padding-left: 1.2em;
}

/* Obiettivi SDG nelle FAQ: icona sempre a sinistra (Elementor la impila sotto i 768px) */
.cfl-accordion--faq .elementor-widget-image-box .elementor-image-box-wrapper {
	display: flex;
	align-items: flex-start;
	gap: 16px;
	text-align: left;
}

.cfl-accordion--faq .elementor-widget-image-box .elementor-image-box-img {
	flex: 0 0 72px;
	width: 72px !important;   /* batte la larghezza % del widget */
	margin: 0 !important;
}

.cfl-accordion--faq .elementor-widget-image-box .elementor-image-box-title {
	margin: 0 0 4px;
}

/* ---------- Pagina semplice: testo scritto con l'editor a blocchi (.cfl-prose) ---------- */
.cfl-prose {
	line-height: 1.55;
}

.cfl-prose > .elementor-widget-container > :first-child,
.cfl-prose > :first-child {
	margin-top: 0;
}

.cfl-prose p,
.cfl-prose ul,
.cfl-prose ol,
.cfl-prose table,
.cfl-prose blockquote,
.cfl-prose figure {
	margin: 0 0 1.1em;
}

.cfl-prose .cfl-intro {
	margin-bottom: 2em;
	font-family: var(--e-global-typography-cfllead-font-family), sans-serif;
	font-size: var(--e-global-typography-cfllead-font-size);
	font-weight: var(--e-global-typography-cfllead-font-weight);
	line-height: 1.35;
	color: var(--e-global-color-primary);
}

.cfl-prose h2,
.cfl-prose h3,
.cfl-prose h4 {
	margin: 1.8em 0 0.6em;
	font-family: var(--e-global-typography-secondary-font-family), sans-serif;
	font-weight: 700;
	line-height: 1.3;
	color: var(--e-global-color-primary);
}

.cfl-prose h2 { font-size: 24px; }
.cfl-prose h3 { font-size: 20px; }
.cfl-prose h4 { font-size: 18px; }

.cfl-prose hr {
	margin: 2.4em 0;
	border: 0;
	border-top: 1px solid var(--e-global-color-accent);
}

.cfl-prose hr + h2,
.cfl-prose hr + h3 {
	margin-top: 0;
}

.cfl-prose ul,
.cfl-prose ol {
	padding-left: 1.4em;
}

.cfl-prose li + li {
	margin-top: 0.4em;
}

/* News: immagini nel testo con gli angoli arrotondati come l'immagine in evidenza (10px) */
.single-post .cfl-prose img {
	border-radius: 10px;
}

.cfl-prose a {
	color: var(--e-global-color-accent);
	text-decoration: underline;
	text-underline-offset: 2px;
}

.cfl-prose a:hover {
	color: var(--e-global-color-primary);
}

.cfl-prose blockquote {
	padding: 16px 24px;
	border-left: 4px solid var(--e-global-color-secondary);
	background: var(--e-global-color-cfllight);
}

.cfl-prose table {
	width: 100%;
	border-collapse: collapse;
	font-size: 16px;
}

.cfl-prose th,
.cfl-prose td {
	padding: 12px;
	border: 1px solid #CFD6D6;
	text-align: left;
	vertical-align: top;
}

.cfl-prose.cfl-prose th {   /* doppio: batte le righe alterne di Hello */
	background: var(--e-global-color-primary);
	color: #fff;
}

.cfl-prose img {
	max-width: 100%;
	height: auto;
}

@media (max-width: 767px) {
	.cfl-prose h2 { font-size: 21px; }
	.cfl-prose h3 { font-size: 19px; }
	.cfl-prose .wp-block-table { overflow-x: auto; }
}

/* ---------- Etichette (Pagine Partner: settori di intervento / valori, .cfl-chips) ---------- */
.cfl-chips ul {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.cfl-chips li {
	margin: 0;
	padding: 8px 18px;
	border: 1px solid var(--e-global-color-accent);
	border-radius: 30px;
	background: #fff;
}

/* ---------- Card news (Loop Item "Card news", .cfl-news-card) ----------
 * Tutta la card è cliccabile: il link del titolo si estende sulla card (un solo link,
 * nome accessibile = titolo). Altezza piena nella griglia, hover e focus sulla card.
 */
.e-loop-item .cfl-news-card {
	position: relative;
	height: 100%;
	transition: box-shadow 0.2s ease;
}

/* Elementor mette position: relative su widget e container: il link si estenderebbe solo sul titolo */
.cfl-news-card > .e-con,
.cfl-news-card .cfl-news-card__title {
	position: static;
}

.cfl-news-card .cfl-news-card__title a::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
}

.cfl-news-card:hover {
	box-shadow: 0 8px 24px rgba(3, 53, 64, 0.15);
}

.cfl-news-card:hover .cfl-news-card__title a {
	color: var(--e-global-color-accent);
	text-decoration: underline;
	text-underline-offset: 3px;
}

.cfl-news-card:focus-within {
	outline: 3px solid var(--e-global-color-accent);
	outline-offset: 3px;
}

/* Contorno solo col focus da tastiera (non al clic): dove :has() è supportato */
@supports selector(:has(a:focus-visible)) {
	.cfl-news-card:focus-within {
		outline: 0;
	}
	.cfl-news-card:has(a:focus-visible) {
		outline: 3px solid var(--e-global-color-accent);
		outline-offset: 3px;
	}
}

.cfl-news-card .cfl-news-card__title a:focus-visible {
	outline: none;
}

/* Riassunto: massimo 3 righe con puntini */
.cfl-news-card .cfl-news-card__excerpt {
	display: -webkit-box;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 3;
	line-clamp: 3;
	overflow: hidden;
}

/* "Leggi di più" in fondo alla card, con freccia */
.cfl-news-card .cfl-news-card__more {
	margin-top: auto;
}

.cfl-news-card .cfl-news-card__more .elementor-heading-title::after {
	content: " \2192";
}

/* ---------- Moduli Gravity Forms (Candidatura progetto, Contatti) ----------
 * I moduli stanno nel riquadro .cfl-form (form_card nel generatore): gli stili valgono solo li'.
 * In produzione i moduli usano il tema GF "Gravity Forms 2.5" (.gravity-theme, markup moderno),
 * non Orbital; si impostano comunque anche le variabili di Orbital (--gf-*) nel caso si passi a
 * quel tema. Il prefisso .cfl-form e il doppio .gform_wrapper battono basic.min.css di GF e il
 * reset di Hello su input e pulsanti.
 */
.cfl-form .gform_wrapper {
	--cfl-form-border: #6E6E6E;        /* 5:1 su bianco: bordo dei campi (WCAG 1.4.11) */
	--cfl-form-error: #B3261E;
	--gf-color-primary: var(--e-global-color-secondary);
	--gf-color-primary-contrast: var(--e-global-color-primary);
	--gf-color-in-ctrl-primary: var(--e-global-color-accent);
	--gf-color-in-ctrl-dark: var(--cfl-form-border);
	--gf-color-danger: var(--cfl-form-error);
	--gf-radius: 10px;
	--gf-ctrl-size: 52px;
	margin: 0;
	font-family: var(--e-global-typography-text-font-family), sans-serif;
	color: var(--e-global-color-text);
}

.cfl-form .gform_wrapper.gform_wrapper .gform_fields {
	grid-column-gap: 24px;
	grid-row-gap: 28px;
}

/* Etichette e legende */
.cfl-form .gform_wrapper.gform_wrapper .gfield_label {
	display: block;
	margin: 0 0 8px;
	padding: 0;
	font-family: var(--e-global-typography-text-font-family), sans-serif;
	font-size: 16px;
	font-weight: 700;
	line-height: 1.3;
	color: var(--e-global-color-text);
}

.cfl-form .gform_wrapper.gform_wrapper .gfield_required {
	margin-left: 4px;
	font-size: 14px;
	font-weight: 400;
	font-style: normal;
	color: var(--e-global-color-cflmuted);
}

.cfl-form .gform_wrapper.gform_wrapper .gfield_required .gfield_required { margin-left: 0; }

.cfl-form .gform_wrapper.gform_wrapper .gfield_description {
	padding-top: 8px;
	font-size: 14px;
	line-height: 1.4;
	color: var(--e-global-color-cflmuted);
}

/* Campi di testo, email, area di testo */
.cfl-form .gform_wrapper.gform_wrapper input[type="text"],
.cfl-form .gform_wrapper.gform_wrapper input[type="email"],
.cfl-form .gform_wrapper.gform_wrapper input[type="tel"],
.cfl-form .gform_wrapper.gform_wrapper input[type="url"],
.cfl-form .gform_wrapper.gform_wrapper input[type="number"],
.cfl-form .gform_wrapper.gform_wrapper select,
.cfl-form .gform_wrapper.gform_wrapper textarea {
	width: 100%;
	min-height: 52px;
	padding: 12px 18px;
	border: 1px solid var(--cfl-form-border);
	border-radius: 10px;
	background: #fff;
	font-family: var(--e-global-typography-text-font-family), sans-serif;
	font-size: 16px;
	line-height: 1.4;
	color: var(--e-global-color-text);
	box-shadow: none;
	transition: border-color .2s, box-shadow .2s;
}

.cfl-form .gform_wrapper.gform_wrapper textarea {
	height: 200px;
	min-height: 140px;
	resize: vertical;
}

.cfl-form .gform_wrapper.gform_wrapper input:focus,
.cfl-form .gform_wrapper.gform_wrapper select:focus,
.cfl-form .gform_wrapper.gform_wrapper textarea:focus {
	border-color: var(--e-global-color-accent);
	outline: 2px solid var(--e-global-color-accent);
	outline-offset: 0;
	box-shadow: 0 0 0 4px rgba(0, 123, 129, .15);
}

/* Consensi e radio: controlli piu' grandi, testo leggibile, link sottolineati */
.cfl-form .gform_wrapper.gform_wrapper .ginput_container_consent,
.cfl-form .gform_wrapper.gform_wrapper .gchoice {
	display: flex;
	align-items: flex-start;
	gap: 12px;
}

.cfl-form .gform_wrapper.gform_wrapper .gfield_radio {
	display: flex;
	flex-direction: column;
	gap: 10px;
}

.cfl-form .gform_wrapper.gform_wrapper input[type="checkbox"],
.cfl-form .gform_wrapper.gform_wrapper input[type="radio"] {
	flex: 0 0 20px;
	width: 20px;
	height: 20px;
	margin: 0;
	accent-color: var(--e-global-color-accent);
	cursor: pointer;
}

.cfl-form .gform_wrapper.gform_wrapper .gfield_consent_label,
.cfl-form .gform_wrapper.gform_wrapper .gchoice label {
	margin: 0;
	padding: 0;
	max-width: none;
	font-size: 16px;
	font-weight: 400;
	line-height: 1.3;
	color: var(--e-global-color-text);
	cursor: pointer;
}

.cfl-form .gform_wrapper .gfield_consent_label a {
	color: var(--e-global-color-accent);
	text-decoration: underline;
	text-underline-offset: 2px;
}

.cfl-form .gform_wrapper .gfield_consent_label a:hover {
	color: var(--e-global-color-primary);
}

/* Caricamento file: pulsante "Scegli file" come un pulsante outline del sito */
.cfl-form .gform_wrapper.gform_wrapper input[type="file"] {
	width: 100%;
	padding: 8px;
	border: 1px dashed var(--cfl-form-border);
	border-radius: 10px;
	background: #fff;
	font-family: var(--e-global-typography-text-font-family), sans-serif;
	font-size: 15px;
	color: var(--e-global-color-cflmuted);
	cursor: pointer;
}

.cfl-form .gform_wrapper input[type="file"]::file-selector-button {
	margin-right: 12px;
	padding: 8px 18px;
	border: 2px solid var(--e-global-color-accent);
	border-radius: 30px;
	background: #fff;
	font: 700 13px/1.2 var(--e-global-typography-accent-font-family), sans-serif;
	text-transform: uppercase;
	color: var(--e-global-color-primary);
	cursor: pointer;
}

.cfl-form .gform_wrapper input[type="file"]:hover::file-selector-button {
	border-color: var(--e-global-color-secondary);
	background: var(--e-global-color-secondary);
}

/* Pulsante di invio: come i pulsanti primari (menta, pillola, Montserrat maiuscolo) */
.cfl-form .gform_wrapper.gform_wrapper .gform_footer {
	margin: 32px 0 0;
	padding: 0;
}

.cfl-form .gform_wrapper.gform_wrapper .gform_footer input[type="submit"],
.cfl-form .gform_wrapper.gform_wrapper .gform_footer button.gform_button {   /* GF 3.x: <button> */
	min-height: 0;
	margin: 0;
	padding: 15px 38px;
	border: 0;
	border-radius: 30px;
	background: var(--e-global-color-secondary);
	font-family: var(--e-global-typography-accent-font-family), sans-serif;
	font-size: 16px;
	font-weight: 700;
	line-height: 1.2;
	text-transform: uppercase;
	color: var(--e-global-color-primary);
	cursor: pointer;
	transition: background-color .2s, color .2s;
}

.cfl-form .gform_wrapper.gform_wrapper .gform_footer input[type="submit"]:hover,
.cfl-form .gform_wrapper.gform_wrapper .gform_footer input[type="submit"]:focus-visible,
.cfl-form .gform_wrapper.gform_wrapper .gform_footer button.gform_button:hover,
.cfl-form .gform_wrapper.gform_wrapper .gform_footer button.gform_button:focus-visible {
	background: var(--e-global-color-primary);
	color: #fff;
}

.cfl-form .gform_wrapper.gform_wrapper .gform_footer input[type="submit"]:focus-visible,
.cfl-form .gform_wrapper.gform_wrapper .gform_footer button.gform_button:focus-visible {
	outline: 3px solid var(--e-global-color-accent);
	outline-offset: 3px;
}

/* Errori: riepilogo in alto (dopo l'invio GF gli da' il focus: il contorno rosso e' il suo outline),
   bordo e messaggio sul campo */
.cfl-form .gform_wrapper.gform_wrapper .gform_validation_errors {
	margin: 0 0 32px;
	padding: 16px 20px 16px 52px;   /* a sinistra l'icona di GF (posizionata assoluta) */
	border: 0;
	border-left: 4px solid var(--cfl-form-error);
	border-radius: 10px;
	background: #fff;
	box-shadow: none;
}

.cfl-form .gform_wrapper.gform_wrapper .gform_validation_errors > h2 {
	margin: 0;
	font-family: var(--e-global-typography-text-font-family), sans-serif;
	font-size: 16px;
	font-weight: 700;
	line-height: 1.4;
	color: var(--cfl-form-error);
}

.cfl-form .gform_wrapper.gform_wrapper .gfield_error .gfield_label {
	color: var(--e-global-color-text);
}

.cfl-form .gform_wrapper.gform_wrapper .gfield_error input[type="text"],
.cfl-form .gform_wrapper.gform_wrapper .gfield_error input[type="email"],
.cfl-form .gform_wrapper.gform_wrapper .gfield_error input[type="file"],
.cfl-form .gform_wrapper.gform_wrapper .gfield_error textarea {
	border: 2px solid var(--cfl-form-error);
}

.cfl-form .gform_wrapper.gform_wrapper .gfield_validation_message,
.cfl-form .gform_wrapper.gform_wrapper .validation_message {
	margin: 8px 0 0;
	padding: 0;
	border: 0;
	background: none;
	font-size: 14px;
	font-weight: 600;
	line-height: 1.4;
	color: var(--cfl-form-error);
}

/* Conferma dopo l'invio */
.cfl-form .gform_confirmation_message {
	padding: 24px 28px;
	border-left: 4px solid var(--e-global-color-secondary);
	border-radius: 10px;
	background: #fff;
	font-family: var(--e-global-typography-cfllead-font-family), sans-serif;
	font-size: var(--e-global-typography-cfllead-font-size);
	font-weight: var(--e-global-typography-cfllead-font-weight);
	line-height: 1.4;
	color: var(--e-global-color-primary);
}

.cfl-form .gform_wrapper .gform_ajax_spinner {
	margin-left: 16px;
	vertical-align: middle;
}

/* ---------- Popup ricerca (tools/popup_ricerca.py) ----------
 * Pulsante "Cerca" dell'header (Button + tag popup) e form HTML del popup (nessun controllo di stile).
 * Selettori doppi: il reset di Hello su input/button altrimenti vince.
 */
.cfl-search-trigger .elementor-button-icon { font-size: 16.5px; }

@media (max-width: 1024px) {
	/* solo lente: il testo resta per gli screen reader */
	.cfl-search-trigger .elementor-button-text {
		position: absolute;
		width: 1px;
		height: 1px;
		overflow: hidden;
		clip: rect(0 0 0 0);
		white-space: nowrap;
	}
}

.cfl-search-trigger .elementor-button:focus-visible,
.cfl-popup-ricerca .dialog-close-button:focus-visible {
	outline: 2px solid var(--e-global-color-accent);
	outline-offset: 2px;
}

.cfl-popup-ricerca .dialog-close-button {
	width: 32px;
	height: 32px;
	align-items: center;
	justify-content: center;
	border-radius: 50%;
}

.cfl-ricerca-form {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 12px 16px;
	margin: 0;
}

.cfl-ricerca-form .cfl-ricerca-label {
	font-family: var(--e-global-typography-cflsmall-font-family), sans-serif;
	font-size: 16px;
	font-weight: 600;
	color: var(--e-global-color-text);
}

.cfl-ricerca-form input.cfl-ricerca-campo {
	flex: 1 1 180px;
	min-width: 0;
	min-height: 48px;
	padding: 10px 20px;
	border: 1px solid var(--e-global-color-cflgray);
	border-radius: 30px;
	background: #fff;
	font-family: var(--e-global-typography-text-font-family), sans-serif;
	font-size: 16px;
	color: var(--e-global-color-text);
}

.cfl-ricerca-form input.cfl-ricerca-campo::placeholder {
	color: var(--e-global-color-cflgray);
	opacity: 1;
}

.cfl-ricerca-form input.cfl-ricerca-campo:focus {
	border-color: var(--e-global-color-accent);
	outline: 2px solid var(--e-global-color-accent);
	outline-offset: 1px;
}

.cfl-ricerca-form button.cfl-ricerca-invio,
.cfl-ricerca-form button.cfl-ricerca-invio:focus {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 12px;
	min-height: 48px;
	padding: 12px 32px;
	border: 0;
	border-radius: 30px;
	background: var(--e-global-color-accent);
	color: #fff;
	font-family: var(--e-global-typography-accent-font-family), sans-serif;
	font-size: 16px;
	font-weight: 700;
	line-height: 1.2;
	text-transform: uppercase;
	cursor: pointer;
}

.cfl-ricerca-form button.cfl-ricerca-invio:hover {
	background: var(--e-global-color-primary);
	color: #fff;
}

.cfl-ricerca-form button.cfl-ricerca-invio:focus-visible {
	outline: 2px solid var(--e-global-color-primary);
	outline-offset: 2px;
}

.cfl-ricerca-form .cfl-ricerca-invio svg {
	width: 18px;
	height: 18px;
	fill: currentColor;
}

@media (max-width: 767px) {
	.cfl-ricerca-form .cfl-ricerca-label,
	.cfl-ricerca-form input.cfl-ricerca-campo,
	.cfl-ricerca-form button.cfl-ricerca-invio {
		flex-basis: 100%;
	}
}

/* ---------- Risultati ricerca (tools/archive_ricerca.py) ----------
 * Fascia scura: conteggio ed etichetta del campo in bianco (il form riusa .cfl-ricerca-form del popup).
 * Risultati: card del Loop Item "Risultato ricerca" (classi della card news: tutta cliccabile,
 * hover, focus, estratto a 3 righe); immagine a tutta altezza, assente se il contenuto non ne ha.
 * Paginazione numerata della Loop Grid a pillole.
 */
.cfl-ricerca-top .cfl-ricerca-conteggio {
	margin: 0;
	font-family: var(--e-global-typography-cfllead-font-family), sans-serif;
	font-size: 18px;
	font-weight: 600;
	color: #fff;
}

.cfl-ricerca-form.cfl-ricerca-pagina .cfl-ricerca-label {
	color: #fff;
}

.cfl-ricerca-form.cfl-ricerca-pagina button.cfl-ricerca-invio:hover {
	background: var(--e-global-color-secondary);
	color: var(--e-global-color-primary);
}

.cfl-ricerca-form.cfl-ricerca-pagina button.cfl-ricerca-invio:focus-visible,
.cfl-ricerca-form.cfl-ricerca-pagina input.cfl-ricerca-campo:focus {
	outline-color: var(--e-global-color-secondary);
}

.cfl-risultato .cfl-risultato__img img {
	display: block;
	min-height: 100%;
}

.cfl-ricerca-risultati .elementor-pagination {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	align-items: center;
	gap: 8px;
}

.cfl-ricerca-risultati .elementor-pagination .page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 44px;
	min-height: 44px;
	margin: 0 !important;
	padding: 0 14px;
	border: 1px solid #DEDEDE;
	border-radius: 22px;
	background: #fff;
}

.cfl-ricerca-risultati .elementor-pagination a.page-numbers:hover {
	border-color: var(--e-global-color-accent);
	text-decoration: underline;
}

.cfl-ricerca-risultati .elementor-pagination .page-numbers.current {
	border-color: var(--e-global-color-accent);
	background: var(--e-global-color-accent);
	color: #fff;
}

.cfl-ricerca-risultati .elementor-pagination .page-numbers.dots {
	border: 0;
	background: none;
	min-width: 0;
}

.cfl-ricerca-risultati .elementor-pagination a.page-numbers:focus-visible {
	outline: 2px solid var(--e-global-color-accent);
	outline-offset: 2px;
}

/* Precedente/Successiva non disponibili (prima/ultima pagina): span senza link, nascosti */
.cfl-ricerca-risultati .elementor-pagination span.page-numbers.prev,
.cfl-ricerca-risultati .elementor-pagination span.page-numbers.next {
	display: none;
}

/* ---------- Progetto singolo (template "Progetto singolo", tools/single_progetto.py) ----------
 * Descrizione del progetto (Post Content): titoli grandi come nel design, video 16:9 a tutta larghezza.
 */
.cfl-prose.cfl-project-content h2 {
	margin: 40px 0 10px;
	font-family: var(--e-global-typography-primary-font-family), sans-serif;
	font-size: var(--e-global-typography-primary-font-size);
	font-weight: 900;
	line-height: 1.2;
	color: var(--e-global-color-primary);
}

.cfl-prose.cfl-project-content h3 {
	font-size: 24px;
}

.cfl-prose.cfl-project-content > .elementor-widget-container > h2:first-child,
.cfl-prose.cfl-project-content > h2:first-child {
	margin-top: 0;
}

.cfl-project-content iframe {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 16 / 9;
	margin: 0 0 40px;
	border: 0;
}

/* Immagini della descrizione (foto, logo dell'ente in fondo come nel design): centrate */
.cfl-project-content figure.wp-block-image {
	margin-right: auto;   /* .aligncenter del blocco è display: table: centrato solo con i margini auto */
	margin-left: auto;
	text-align: center;
}

.cfl-project-content figure.wp-block-image img {
	display: inline-block;
}

/* Link "sezione FAQ" nel riquadro scuro "Benefici fiscali" */
.cfl-project-tax__text a {
	color: #fff;
	text-decoration: underline;
	text-underline-offset: 2px;
}

.cfl-project-tax__text a:hover,
.cfl-project-tax__text a:focus-visible {
	color: var(--e-global-color-secondary);
}
