/* ==========================================================================
   SMILE-DIH Next — design system
   Concept: "Lean Digital Blueprint" — precisione industriale (griglia da
   progetto tecnico), energia digitale (gradiente verde→ciano), superfici
   pulite e leggibili. Compatibile Divi 4.27+ / Divi 5.
   ========================================================================== */

/* 1. TOKEN ------------------------------------------------------------------
   Se in Divi 5 definisci i Global Colors / Design Variables, i token li
   ereditano (var(--gcid-*)); in Divi 4 valgono i fallback. Una sola fonte. */
:root {
	--smile-green:      var(--gcid-primary-color, #31a66f);
	--smile-green-700:  #1f7d51;
	--smile-cyan:       #19b5c9;
	--smile-navy:       var(--gcid-secondary-color, #0f2a46);
	--smile-navy-600:   #1d3f66;
	--smile-ink:        var(--gcid-heading-color, #14202e);
	--smile-text:       var(--gcid-body-color, #3d4757);
	--smile-muted:      #6b7686;
	--smile-surface:    #ffffff;
	--smile-surface-2:  #f3f6f9;
	--smile-line:       #dfe5ec;

	--smile-gradient:   linear-gradient(115deg, var(--smile-green) 0%, var(--smile-cyan) 100%);
	--smile-gradient-dark: linear-gradient(135deg, var(--smile-navy) 0%, var(--smile-navy-600) 100%);

	--smile-radius-s: 8px;
	--smile-radius:   16px;
	--smile-radius-l: 28px;
	--smile-shadow-1: 0 1px 2px rgb(15 42 70 / .06), 0 2px 8px rgb(15 42 70 / .06);
	--smile-shadow-2: 0 10px 30px -10px rgb(15 42 70 / .25);

	--smile-ease: cubic-bezier(.2, .7, .2, 1);
	--smile-dur:  .35s;

	/* Tipografia fluida (360px → 1440px) */
	--smile-fs-body: clamp(1rem, .95rem + .2vw, 1.125rem);
	--smile-fs-h1:   clamp(2.1rem, 1.5rem + 2.6vw, 3.6rem);
	--smile-fs-h2:   clamp(1.7rem, 1.3rem + 1.6vw, 2.6rem);
	--smile-fs-h3:   clamp(1.25rem, 1.1rem + .6vw, 1.6rem);
}

/* 2. BASE ------------------------------------------------------------------ */
body.smile-next {
	color: var(--smile-text);
	font-size: var(--smile-fs-body);
	line-height: 1.7;
	-webkit-font-smoothing: antialiased;
	text-rendering: optimizeLegibility;
}
.smile-next h1, .smile-next h2, .smile-next h3,
.smile-next h4, .smile-next h5, .smile-next h6 {
	color: var(--smile-ink);
	font-weight: 700;
	letter-spacing: -.01em;
	line-height: 1.15;
	text-wrap: balance;
}
.smile-next h1 { font-size: var(--smile-fs-h1); }
.smile-next h2 { font-size: var(--smile-fs-h2); }
.smile-next h3 { font-size: var(--smile-fs-h3); }
.smile-next p { text-wrap: pretty; }
.smile-card h3, .smile-next .et_pb_post .entry-title { overflow-wrap: break-word; hyphens: manual; }
/* I titoli non vanno mai giustificati (alcuni moduli Blog lo impostano): crea buchi tra le parole */
.smile-next .et_pb_post .entry-title { text-align: left !important; }

.smile-next ::selection { background: var(--smile-green); color: #fff; }

/* Link nel contenuto (non nei bottoni)
   Colore invariato all'hover: sale un evidenziatore tenue dal filetto di base.
   Le variabili si invertono automaticamente sugli sfondi scuri. */
.smile-next {
	--smile-link: var(--smile-green-700);
	--smile-link-hover: var(--smile-green-700);
	--smile-link-tint: rgb(49 166 111 / .16);
}
.smile-next .et_pb_bg_layout_dark,
.smile-next #main-footer,
.smile-next .smile-blueprint,
.smile-next .smile-cta,
.smile-next .smile-glass {
	--smile-link: #8ee6bd;            /* ≥ 7:1 su #3a3a3a e sul navy */
	--smile-link-hover: #ffffff;
	--smile-link-tint: rgb(142 230 189 / .2);
}
.smile-next .et_pb_text a:not(.et_pb_button),
.smile-next.single .et_pb_post .entry-content a:not(.et_pb_button) {
	color: var(--smile-link) !important;
	text-decoration: none !important;
	background-image:
		linear-gradient(var(--smile-link-tint), var(--smile-link-tint)),
		linear-gradient(currentColor, currentColor);
	background-repeat: no-repeat;
	background-position: 0 100%, 0 100%;
	background-size: 100% 0, 100% 1px;
	padding: 0 .12em;
	margin: 0 -.12em;
	border-radius: 3px;
	-webkit-box-decoration-break: clone;
	        box-decoration-break: clone;
	transition: background-size var(--smile-dur) var(--smile-ease), color var(--smile-dur);
}
.smile-next .et_pb_text a:not(.et_pb_button):hover,
.smile-next.single .et_pb_post .entry-content a:not(.et_pb_button):hover {
	color: var(--smile-link-hover) !important;
	background-size: 100% 100%, 100% 2px;
}

/* 3. ACCESSIBILITÀ ---------------------------------------------------------- */
.smile-skip {
	position: absolute; left: 1rem; top: -100px; z-index: 100000;
	padding: .75rem 1.25rem; border-radius: var(--smile-radius-s);
	background: var(--smile-navy); color: #fff !important; font-weight: 600;
	transition: top .2s;
}
.smile-skip:focus { top: 1rem; }

.smile-next :focus-visible {
	outline: 3px solid var(--smile-cyan);
	outline-offset: 3px;
	border-radius: 4px;
}

@media (prefers-reduced-motion: reduce) {
	.smile-next *, .smile-next *::before, .smile-next *::after {
		animation-duration: .01ms !important;
		transition-duration: .01ms !important;
		scroll-behavior: auto !important;
	}
}

/* 4. HEADER (header di default Divi; se usi il Theme Builder aggiungi la
      classe "smile-header" alla sezione dell'header) ----------------------- */
.smile-next #top-header {
	background: var(--smile-navy) !important;
	font-size: 13px;
}
.smile-next #main-header,
.smile-next .smile-header {
	background: rgb(255 255 255 / .82) !important;
	-webkit-backdrop-filter: saturate(180%) blur(14px);
	backdrop-filter: saturate(180%) blur(14px);
	box-shadow: 0 1px 0 var(--smile-line);
	transition: box-shadow var(--smile-dur) var(--smile-ease), background var(--smile-dur);
}
.smile-next.smile-scrolled #main-header,
.smile-next.smile-scrolled .smile-header {
	background: rgb(255 255 255 / .94) !important;
	box-shadow: var(--smile-shadow-2);
}
.smile-next #top-menu > li > a {
	font-weight: 600;
	position: relative;
}
/* Sottolineatura animata su ::before: ::after appartiene a Divi (freccia dei sottomenu).
   Ancorata al testo, non al fondo del link, così segue anche l'header che si restringe. */
.smile-next #top-menu > li > a::before {
	content: ""; position: absolute; left: 0; right: 0; top: calc(1em + 9px); height: 3px;
	border-radius: 3px; background: var(--smile-gradient);
	transform: scaleX(0); transform-origin: left;
	transition: transform var(--smile-dur) var(--smile-ease);
	pointer-events: none;
}
.smile-next #top-menu > li.menu-item-has-children > a::before { right: 20px; } /* esclude la freccia */
.smile-next #top-menu > li > a:hover::before,
.smile-next #top-menu > li.current-menu-item > a::before,
.smile-next #top-menu > li.current-menu-ancestor > a::before { transform: scaleX(1); }
.smile-next #top-menu li.current-menu-item > a { color: var(--smile-green-700) !important; }

.smile-next .nav li ul {
	border-top: 0 !important;
	border-radius: var(--smile-radius);
	box-shadow: var(--smile-shadow-2);
	padding: .5rem 0;
}

/* Barra di avanzamento lettura */
.smile-progress {
	position: fixed; inset: 0 0 auto 0; height: 3px; z-index: 100001;
	background: var(--smile-gradient);
	transform: scaleX(var(--smile-progress, 0)); transform-origin: left;
	pointer-events: none;
}

/* 5. BOTTONI ------------------------------------------------------------- */
.smile-next .et_pb_button,
.smile-next .et_pb_more_button,
.smile-next .et_pb_contact_submit {
	border: 0 !important;
	border-radius: 999px !important;
	padding: .75em 1.6em !important;
	font-weight: 600 !important;
	background: var(--smile-green-700) !important; /* bianco su #1f7d51 ≈ 5:1 (AA); su #31a66f solo 3:1 */
	color: #fff !important;
	box-shadow: 0 6px 18px -6px rgb(31 125 81 / .55);
	transition: transform var(--smile-dur) var(--smile-ease),
	            box-shadow var(--smile-dur) var(--smile-ease),
	            background var(--smile-dur);
}
.smile-next .et_pb_button:hover,
.smile-next .et_pb_more_button:hover,
.smile-next .et_pb_contact_submit:hover {
	background: #17603e !important;
	transform: translateY(-2px);
	box-shadow: 0 12px 24px -8px rgb(31 125 81 / .55);
	padding: .75em 1.6em !important; /* neutralizza lo shift dell'icona Divi 4 */
}
/* Freccia animata al posto dell'icona Divi (opt-in: classe "smile-arrow" sul modulo) */
.smile-next .smile-arrow .et_pb_button::after {
	content: "→" !important; font-family: inherit !important;
	position: static !important; opacity: 1 !important; margin-left: .5em !important;
	display: inline-block; transition: transform var(--smile-dur) var(--smile-ease);
}
.smile-next .smile-arrow .et_pb_button:hover::after { transform: translateX(4px); }

/* Variante secondaria: classe "smile-btn-ghost" sul modulo Bottone */
.smile-next .smile-btn-ghost .et_pb_button {
	background: transparent !important;
	color: var(--smile-navy) !important;
	box-shadow: inset 0 0 0 2px currentColor;
}
.smile-next .smile-btn-ghost .et_pb_button:hover {
	background: var(--smile-navy) !important; color: #fff !important;
}

/* 6. BLOG / NEWS / BANDI come card ------------------------------------------ */
.smile-next .et_pb_blog_grid .et_pb_post,
.smile-next .smile-card {
	background: var(--smile-surface);
	border: 1px solid var(--smile-line) !important;
	border-radius: var(--smile-radius) !important;
	box-shadow: var(--smile-shadow-1);
	overflow: hidden;
	position: relative;
	transition: transform var(--smile-dur) var(--smile-ease),
	            box-shadow var(--smile-dur) var(--smile-ease),
	            border-color var(--smile-dur);
}
.smile-next .et_pb_blog_grid .et_pb_post::before,
.smile-next .smile-card::before {
	content: ""; position: absolute; inset: 0 0 auto 0; height: 4px;
	background: var(--smile-gradient);
	transform: scaleX(0); transform-origin: left;
	transition: transform var(--smile-dur) var(--smile-ease);
	z-index: 2;
}
.smile-next .et_pb_blog_grid .et_pb_post:hover,
.smile-next .smile-card:hover {
	transform: translateY(-4px);
	box-shadow: var(--smile-shadow-2);
	border-color: transparent !important;
}
.smile-next .et_pb_blog_grid .et_pb_post:hover::before,
.smile-next .smile-card:hover::before { transform: scaleX(1); }

.smile-next .et_pb_blog_grid .et_pb_image_container { margin: -19px -19px 19px; }
/* Immagine in evidenza a larghezza piena, con le sue proporzioni originali:
   nessun ritaglio e nessuna banda. smile.js sostituisce la miniatura 400×250
   ritagliata da Divi/Jetpack con l'immagine intera. */
.smile-next .et_pb_blog_grid .et_pb_image_container { background: none; overflow: hidden; }
.smile-next .et_pb_blog_grid .entry-featured-image-url { margin-bottom: 0; }
.smile-next .et_pb_blog_grid .et_pb_image_container img {
	aspect-ratio: auto !important; object-fit: fill !important;
	width: 100% !important; height: auto !important;
	transition: transform .6s var(--smile-ease);
}
.smile-next .et_pb_blog_grid .et_pb_post:hover .et_pb_image_container img { transform: scale(1.04); }
.smile-next .et_pb_post .entry-title { font-size: 1.2rem !important; line-height: 1.3 !important; }
.smile-next .et_pb_post .entry-title a { color: var(--smile-ink); text-decoration: none !important; transition: color var(--smile-dur); }
.smile-next .et_pb_post .entry-title a:hover { color: var(--smile-green-700); }

/* Casi d'uso (modulo Portfolio / Portfolio a larghezza intera, griglia o carosello):
   immagine intera dentro il riquadro calcolato da Divi, così l'altezza delle
   tessere e l'allineamento del carosello non cambiano. */
.smile-next .et_pb_fullwidth_portfolio .et_pb_portfolio_image,
.smile-next .et_pb_portfolio .et_portfolio_image,
.smile-next .et_pb_filterable_portfolio .et_portfolio_image { background: var(--smile-surface); }
.smile-next .et_pb_fullwidth_portfolio .et_pb_portfolio_image img,
.smile-next .et_pb_portfolio .et_portfolio_image img,
.smile-next .et_pb_filterable_portfolio .et_portfolio_image img { object-fit: contain !important; }

/* Riassunto (excerpt) nelle card: massimo 5 righe: bastano per l'86% dei riassunti attuali e le card restano di altezze simili.
   Taglia anche i riassunti scritti a mano, che l'impostazione "Lunghezza estratto" di Divi non limita. */
.smile-next .et_pb_blog_grid .et_pb_post .post-content-inner {
	display: -webkit-box !important; /* Divi impone display: flow-root */
	text-align: left !important;    /* niente giustificato nelle colonne strette delle card */
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 5;
	line-clamp: 5;
	overflow: hidden;
}
.smile-next .et_pb_blog_grid .et_pb_post .post-content-inner p { display: inline; }

/* "leggi tutto" come pulsante. Verde scuro: il bianco sul verde chiaro del brand
   (#31a66f) ha contrasto 3:1, sul #1f7d51 supera 5:1 (WCAG AA).
   Selettore rinforzato: il modulo Blog di Divi imposta colore e stile con !important. */
.smile-next .et_pb_blog_grid .et_pb_post div.post-content a.more-link {
	display: inline-block;
	margin-top: 16px;
	padding: .55em 1.3em;
	border-radius: 999px;
	background: var(--smile-green-700);
	color: #fff !important;
	font-weight: 600;
	font-size: .9rem;
	line-height: 1.2;
	text-decoration: none !important;
	box-shadow: 0 6px 16px -8px rgb(31 125 81 / .8);
	transition: background var(--smile-dur), transform var(--smile-dur) var(--smile-ease);
}
.smile-next .et_pb_blog_grid .et_pb_post div.post-content a.more-link:hover {
	background: #17603e;
	transform: translateY(-2px);
}

/* Categorie del post come "chip" */
.smile-next .et_pb_post .post-meta { color: var(--smile-muted); font-size: .85rem; text-align: left !important; } /* mai giustificata: con più categorie creava buchi tra data e chip */
.smile-next .et_pb_post .post-meta a,
.smile-next .smile-chip {
	display: inline-block;
	padding: .15em .7em;
	border-radius: 999px;
	background: rgb(49 166 111 / .12);
	color: var(--smile-green-700) !important;
	font-weight: 600; font-size: .78rem;
	letter-spacing: .02em; text-transform: uppercase;
	text-decoration: none !important;
}

/* 7. UTILITY (campo "Classe CSS" di sezione/riga/modulo, D4 e D5) ---------- */

/* Sfondo "blueprint": griglia tecnica che richiama manifattura ed edilizia */
.smile-blueprint {
	background-color: var(--smile-navy) !important;
	background-image:
		linear-gradient(rgb(255 255 255 / .06) 1px, transparent 1px),
		linear-gradient(90deg, rgb(255 255 255 / .06) 1px, transparent 1px),
		linear-gradient(rgb(255 255 255 / .03) 1px, transparent 1px),
		linear-gradient(90deg, rgb(255 255 255 / .03) 1px, transparent 1px) !important;
	background-size: 96px 96px, 96px 96px, 24px 24px, 24px 24px !important;
	color: rgb(255 255 255 / .85);
}
.smile-blueprint h1, .smile-blueprint h2, .smile-blueprint h3,
.smile-blueprint h4 { color: #fff !important; }

.smile-blueprint-light {
	background-color: var(--smile-surface-2) !important;
	background-image:
		linear-gradient(rgb(15 42 70 / .05) 1px, transparent 1px),
		linear-gradient(90deg, rgb(15 42 70 / .05) 1px, transparent 1px) !important;
	background-size: 32px 32px !important;
}

/* Box vetro per testi sopra immagini (es. hero "Servizi per l'Edilizia") */
.smile-glass {
	background: rgb(15 42 70 / .62) !important;
	-webkit-backdrop-filter: blur(12px) saturate(140%);
	backdrop-filter: blur(12px) saturate(140%);
	border: 1px solid rgb(255 255 255 / .18);
	border-radius: var(--smile-radius-l) !important;
	box-shadow: var(--smile-shadow-2);
	color: #fff;
}
.smile-glass h1, .smile-glass h2, .smile-glass h3 { color: #fff !important; }

/* Testo con gradiente brand */
.smile-gradient-text,
.smile-gradient-text h1, .smile-gradient-text h2, .smile-gradient-text h3 {
	background: var(--smile-gradient);
	-webkit-background-clip: text; background-clip: text;
	color: transparent !important;
}

/* Etichetta sopra-titolo ("eyebrow") */
.smile-eyebrow {
	display: inline-flex; align-items: center; gap: .5em;
	font-size: .8rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase;
	color: var(--smile-green-700);
}
.smile-eyebrow::before {
	content: ""; width: 24px; height: 2px; background: var(--smile-gradient);
}

/* Loghi partner/reti: monocromatici, a colori all'hover */
.smile-logos img {
	filter: grayscale(1) contrast(.9);
	opacity: .7;
	transition: filter var(--smile-dur), opacity var(--smile-dur);
}
.smile-logos img:hover { filter: none; opacity: 1; }

/* Numeri chiave (modulo Testo o Contatore con classe "smile-stat") */
.smile-stat .et_pb_number_counter_wrap,
.smile-stat .percent,
.smile-stat strong {
	font-size: clamp(2.4rem, 1.8rem + 2.5vw, 4rem) !important;
	font-weight: 700;
	line-height: 1;
	background: var(--smile-gradient);
	-webkit-background-clip: text; background-clip: text;
	color: transparent !important;
}

/* Riga a "bento grid": classe "smile-bento" sulla RIGA */
@media (min-width: 981px) {
	.smile-bento {
		display: grid !important;
		grid-template-columns: repeat(4, 1fr);
		gap: 24px;
	}
	.smile-bento > .et_pb_column { width: auto !important; margin: 0 !important; }
	.smile-bento > .et_pb_column:first-child { grid-column: span 2; grid-row: span 2; }
}

/* Comparsa allo scroll (classe "smile-reveal", gestita da smile.js) */
.smile-js .smile-reveal {
	opacity: 0;
	transform: translateY(24px);
	transition: opacity .7s var(--smile-ease), transform .7s var(--smile-ease);
	transition-delay: var(--smile-delay, 0s);
}
.smile-js .smile-reveal.is-visible { opacity: 1; transform: none; }

/* Mai nascondere nulla dentro il Visual Builder (D4 e D5) */
.et-fb .smile-reveal,
.et-db .et-fb-root-ancestor .smile-reveal { opacity: 1 !important; transform: none !important; }

/* 8. FOOTER --------------------------------------------------------------- */
.smile-next #main-footer {
	background: var(--smile-navy) !important;
	background-image:
		linear-gradient(rgb(255 255 255 / .04) 1px, transparent 1px),
		linear-gradient(90deg, rgb(255 255 255 / .04) 1px, transparent 1px) !important;
	background-size: 48px 48px !important;
	border-top: 4px solid transparent;
	border-image: var(--smile-gradient) 1;
}
.smile-next #footer-bottom { background: rgb(0 0 0 / .25) !important; }
.smile-next #main-footer a:hover { color: #fff !important; }

/* 9. FORM ----------------------------------------------------------------- */
.smile-next .et_pb_contact_form input,
.smile-next .et_pb_contact_form textarea,
.smile-next .et_pb_contact_form select {
	background: var(--smile-surface) !important;
	border: 1px solid var(--smile-line) !important;
	border-radius: var(--smile-radius-s) !important;
	color: var(--smile-ink) !important;
	transition: border-color var(--smile-dur), box-shadow var(--smile-dur);
}
.smile-next .et_pb_contact_form input:focus,
.smile-next .et_pb_contact_form textarea:focus {
	border-color: var(--smile-green) !important;
	box-shadow: 0 0 0 4px rgb(49 166 111 / .18);
}

/* 10. MOBILE -------------------------------------------------------------- */
@media (max-width: 980px) {
	.smile-next #main-header { backdrop-filter: none; background: #fff !important; }
	.smile-next .et_mobile_menu {
		border-top: 3px solid var(--smile-green) !important;
		border-radius: 0 0 var(--smile-radius) var(--smile-radius);
	}
}


/* 10b. ICONE SOCIAL (header e footer) -------------------------------------
   Sostituiscono le regole nelle Opzioni di Divi: nel Personalizza Divi toglie
   il backslash da content:"\e61b" e l'icona diventa il testo "E61B".
   Il logo X è una maschera SVG: niente Font Awesome da CDN (privacy/prestazioni). */
.smile-next .et-social-twitter a.icon::before {
	content: "" !important;
	font-family: inherit !important;
	display: inline-block;
	width: .9em; height: .9em;
	vertical-align: -.08em;
	background-color: currentColor;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M18.9 1.2h3.7l-8 9.2 9.4 12.4h-7.4l-5.8-7.6-6.6 7.6H.5l8.6-9.8L.1 1.2h7.6l5.2 6.9zm-1.3 19.4h2L6.5 3.3H4.3z'/%3E%3C/svg%3E") center / contain no-repeat;
	        mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M18.9 1.2h3.7l-8 9.2 9.4 12.4h-7.4l-5.8-7.6-6.6 7.6H.5l8.6-9.8L.1 1.2h7.6l5.2 6.9zm-1.3 19.4h2L6.5 3.3H4.3z'/%3E%3C/svg%3E") center / contain no-repeat;
}
.smile-next .et-social-linkedin a.icon::before {
	content: "\e09d" !important;
	font-family: ETmodules !important;
}
.smile-next .et-social-icon a { transition: color var(--smile-dur), transform var(--smile-dur) var(--smile-ease); }
.smile-next .et-social-icon a:hover { color: var(--smile-green) !important; transform: translateY(-2px); }

/* 10c. FOOTER: leggibilità e newsletter ----------------------------------- */
.smile-next #main-footer .footer-widget,
.smile-next #main-footer .footer-widget p {
	font-size: .9rem;
	line-height: 1.65;
	text-align: left !important;      /* il giustificato su colonne strette crea "fiumi" */
	hyphens: manual;                  /* testi misti IT/EN: niente sillabazione automatica */
}
.smile-next #main-footer .footer-widget a { color: var(--smile-link); }
.smile-next #main-footer .footer-widget a:hover { color: #fff; }

/* Fascia inferiore: Divi la imposta a #666 su navy (contrasto ≈ 2:1) */
.smile-next #footer-bottom,
.smile-next #footer-info,
.smile-next #footer-info a {
	color: #c9d4e0 !important;        /* ≈ 11:1 sul fondo */
	font-size: .85rem;
	line-height: 1.7;
}
.smile-next #footer-info strong { color: #fff; }
.smile-next #footer-info a:hover { color: #fff !important; }
.smile-next #main-footer .tnp-field input[type="text"],
.smile-next #main-footer .tnp-field input[type="email"] {
	border-radius: var(--smile-radius-s);
	border: 1px solid rgb(255 255 255 / .2);
	background: rgb(255 255 255 / .96);
}
.smile-next .tnp-submit,
.smile-next .tnp-field input[type="submit"] {
	background: var(--smile-green-700) !important;
	color: #fff !important;
	border: 0 !important;
	border-radius: 999px !important;
	font-weight: 600;
	cursor: pointer;
	transition: background var(--smile-dur);
}
.smile-next .tnp-submit:hover,
.smile-next .tnp-field input[type="submit"]:hover { background: #17603e !important; }

/* 10d. SEZIONE CALL-TO-ACTION (classe "smile-cta" sulla sezione) ---------- */
.smile-cta {
	background: var(--smile-gradient-dark) !important;
	position: relative;
	overflow: hidden;
}
.smile-cta::after {
	content: ""; position: absolute; width: 520px; height: 520px; right: -160px; top: -200px;
	border-radius: 50%;
	background: radial-gradient(circle, rgb(25 181 201 / .35), transparent 65%);
	pointer-events: none;
}
.smile-cta h1, .smile-cta h2, .smile-cta h3 { color: #fff !important; }

/* 10e. NUMERI CHIAVE su sezione blueprint: colori del brand al posto dell'arcobaleno */
.smile-blueprint .et_pb_number_counter .percent,
.smile-blueprint .et_pb_number_counter .percent p,
.smile-blueprint .smile-stat strong {
	background: var(--smile-gradient);
	-webkit-background-clip: text; background-clip: text;
	color: transparent !important;
}

/* 10f. SIDEBAR E WIDGET NEL CONTENUTO --------------------------------------
   Lo schema colori "green" di Divi colora i link #7cc68d: su bianco il contrasto
   è ≈ 2:1. Nel contenuto (non nel footer) usiamo il verde scuro del tema. */
.smile-next #main-content .et_pb_widget a,
.smile-next #sidebar a {
	color: var(--smile-green-700);
	transition: color var(--smile-dur);
}
.smile-next #main-content .et_pb_widget a:hover,
.smile-next #sidebar a:hover { color: var(--smile-navy); }
.smile-next #sidebar .widgettitle,
.smile-next #main-content .et_pb_widget .widgettitle { color: var(--smile-ink); font-weight: 700; }

/* 10g. ARTICOLO SINGOLO -------------------------------------------------- */
.smile-next.single .et_post_meta_wrapper h1.entry-title,
.smile-next.single h1.entry-title {
	font-size: var(--smile-fs-h2) !important;
	line-height: 1.15 !important;
	margin-bottom: .4em;
}

/* 10h. SLIDER DI ARTICOLI (es. "Bandi recenti"): testo leggibile sopra l'immagine */
.smile-next .et_pb_post_slider .et_pb_slide.et_pb_bg_layout_dark::before {
	content: "";
	position: absolute; inset: 0; z-index: 0;
	background: linear-gradient(to top, rgb(15 42 70 / .92) 0%, rgb(15 42 70 / .65) 55%, rgb(15 42 70 / .25) 100%);
	pointer-events: none;
}
.smile-next .et_pb_post_slider .et_pb_slide > .et_pb_container { position: relative; z-index: 1; }
.smile-next .et_pb_post_slider .et_pb_slide_description,
.smile-next .et_pb_post_slider .et_pb_slide_content,
.smile-next .et_pb_post_slider .et_pb_slide_title { text-align: left !important; }

/* 10i. TESTO GIUSTIFICATO: su schermi stretti crea spazi enormi tra le parole */
@media (max-width: 767px) {
	.smile-next .et_pb_text_align_justified,
	.smile-next .et_pb_text_align_justified p,
	.smile-next .et_pb_post .post-content,
	.smile-next .et_pb_post .post-content p { text-align: left !important; }
}

/* 10j. TAG DELL'ARTICOLO (aggiunti da functions.php in fondo al contenuto) --- */
.smile-tags {
	display: flex; flex-wrap: wrap; align-items: center; gap: 10px 14px;
	margin-top: 2.5em; padding-top: 1.5em;
	border-top: 1px solid var(--smile-line);
}
.smile-tags__label {
	font-size: .8rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase;
	color: var(--smile-muted);
}
.smile-next .smile-tags__list,
.smile-next .smile-tags__list li {
	display: flex; flex-wrap: wrap; gap: 8px;
	margin: 0 !important; padding: 0 !important; list-style: none !important;
}
.smile-next .smile-tags__list li::before { content: none !important; }
/* Selettore rinforzato per prevalere sullo stile dei link nel testo dell'articolo */
.smile-next.single .et_pb_post .entry-content .smile-tags a[rel~="tag"] {
	display: inline-block;
	margin: 0 !important;
	padding: .3em .9em !important;
	border: 1px solid var(--smile-line);
	border-radius: 999px;
	background: var(--smile-surface) !important;
	color: var(--smile-green-700) !important;
	font-size: .85rem; font-weight: 600; line-height: 1.4;
	text-decoration: none !important;
	transition: background var(--smile-dur), border-color var(--smile-dur), color var(--smile-dur);
}
.smile-next.single .et_pb_post .entry-content .smile-tags a[rel~="tag"]:hover {
	background: rgb(49 166 111 / .12) !important;
	border-color: transparent;
	color: var(--smile-navy) !important;
}

/* 10k. SOTTOMENU: leggibilità, area cliccabile, tastiera ---------------------
   Divi li disegna a 13px, grigio al 60% e con hover solo in trasparenza. */
.smile-next #top-menu .sub-menu {
	width: 280px;
	padding: 8px !important;
}
.smile-next #top-menu .sub-menu li {
	width: 100%;
	padding: 0 !important;
	margin: 0;
}
.smile-next #top-menu .sub-menu a {
	position: relative;
	display: block;
	width: auto !important;
	padding: 10px 14px !important;
	border-radius: 8px;
	font-size: 15px;
	font-weight: 600;
	line-height: 1.35;
	color: var(--smile-ink) !important;
	opacity: 1 !important;
	background: transparent;
	transition: background var(--smile-dur), color var(--smile-dur), padding-left var(--smile-dur) var(--smile-ease);
}
.smile-next #top-menu .sub-menu a::before {
	content: ""; position: absolute; left: 4px; top: 10px; bottom: 10px; width: 3px;
	border-radius: 3px; background: var(--smile-gradient);
	transform: scaleY(0); transition: transform var(--smile-dur) var(--smile-ease);
}
.smile-next #top-menu .sub-menu a:hover,
.smile-next #top-menu .sub-menu a:focus-visible,
.smile-next #top-menu .sub-menu li.current-menu-item > a {
	background: rgb(49 166 111 / .1) !important;
	color: var(--smile-green-700) !important;
	padding-left: 20px !important;
}
.smile-next #top-menu .sub-menu a:hover::before,
.smile-next #top-menu .sub-menu a:focus-visible::before,
.smile-next #top-menu .sub-menu li.current-menu-item > a::before { transform: scaleY(1); }
.smile-next #top-menu .sub-menu a:focus-visible { outline-offset: 0; }
/* Sottomenu di terzo livello: accostati al riquadro, con un "ponte" invisibile
   che copre lo spazio tra i due riquadri, così il mouse non perde il menu */
.smile-next #top-menu .sub-menu .sub-menu { left: calc(100% + 8px) !important; top: -8px; }
.smile-next #top-menu .sub-menu .sub-menu::before {
	content: ""; position: absolute; top: 0; bottom: 0; left: -18px; width: 18px;
}
/* Freccia delle voci con sottomenu: punta verso destra, dove si apre il sottomenu */
.smile-next #top-menu .sub-menu .menu-item-has-children > a::after {
	top: 50% !important;
	right: 12px !important;
	transform: translateY(-50%) rotate(-90deg);
}
/* Apertura anche da tastiera (Tab), non solo al passaggio del mouse */
.smile-next #top-menu li:focus-within > .sub-menu {
	visibility: visible !important;
	opacity: 1 !important;
	display: block;
}

/* 10l. ARTICOLI RECENTI nella barra laterale --------------------------------- */
.smile-next #sidebar .widget_recent_entries ul li {
	position: relative;
	margin: 0 !important;
	padding: 10px 0 10px 16px !important;
	border-bottom: 1px solid var(--smile-line);
}
.smile-next #sidebar .widget_recent_entries ul li:last-child { border-bottom: 0; }
.smile-next #sidebar .widget_recent_entries ul li::before {
	content: ""; position: absolute; left: 0; top: 12px; bottom: 12px; width: 3px;
	border-radius: 3px; background: var(--smile-gradient);
	transform: scaleY(0); transition: transform var(--smile-dur) var(--smile-ease);
}
.smile-next #sidebar .widget_recent_entries ul li a {
	display: block;
	font-size: 15px;
	font-weight: 600;
	line-height: 1.45;
	color: var(--smile-ink) !important;
	transition: color var(--smile-dur);
}
.smile-next #sidebar .widget_recent_entries ul li:hover::before,
.smile-next #sidebar .widget_recent_entries ul li:focus-within::before { transform: scaleY(1); }
.smile-next #sidebar .widget_recent_entries ul li a:hover,
.smile-next #sidebar .widget_recent_entries ul li a:focus-visible { color: var(--smile-green-700) !important; }

/* 10m. PAGINE DEI TAG: iniziale maiuscola nel titolo ("startup" → "Startup").
   I nomi dei tag (oltre mille, quasi tutti in minuscolo) restano invariati. */
.smile-next.tag h1::first-letter { text-transform: uppercase; }

/* 10n. HOME: box del testo sopra le slide (slider con "sovrapposizione testo") come vetro navy */
.smile-next .et_pb_slider_with_text_overlay .et_pb_text_overlay_wrapper {
	background: rgb(15 42 70 / .62) !important;
	-webkit-backdrop-filter: blur(12px) saturate(140%);
	backdrop-filter: blur(12px) saturate(140%);
	border: 1px solid rgb(255 255 255 / .18);
	border-radius: var(--smile-radius-l) !important;
	padding: 32px 36px !important;
	box-shadow: var(--smile-shadow-2);
}

/* 10o. Classi di sezione più forti dei colori impostati nel builder di Divi
   (Divi scrive lo sfondo della sezione con !important a livello di modulo). */
.smile-next .et_pb_section.smile-blueprint,
.smile-next .et_pb_section.smile-cta { background-color: var(--smile-navy) !important; }
.smile-next .smile-blueprint .et_pb_fullwidth_header.et_pb_module { background-color: transparent !important; }
.smile-next .smile-blueprint .et_pb_fullwidth_portfolio .et_pb_portfolio_item * { border-color: var(--smile-navy) !important; }
.smile-next .smile-blueprint .et_pb_number_counter.et_pb_module .percent,
.smile-next .smile-blueprint .et_pb_number_counter.et_pb_module .percent p {
	background: var(--smile-gradient);
	-webkit-background-clip: text; background-clip: text;
	color: transparent !important;
}

/* 11. STAMPA (bandi e avvisi vengono spesso stampati) --------------------- */
@media print {
	.smile-progress, .smile-skip, #top-header, #main-header, #main-footer,
	.et_pb_button_module_wrapper { display: none !important; }
	.smile-next a[href^="http"]::after { content: " (" attr(href) ")"; font-size: .8em; }
}
