/*
 * Travelounge – CSS del tema.
 *
 * Regole di sovrascrivibilità:
 * - ogni selettore è dentro :where() (specificità 0): Kit globale e impostazioni
 *   dei widget Elementor vincono sempre;
 * - colori e font solo tramite var(--e-global-*, fallback);
 * - nessun !important (solo in animations.css, dentro prefers-reduced-motion).
 * Eccezioni motivate (specificità minima, sempre inferiore ai controlli del widget
 * = 0,3,0+), segnate con "ECCEZIONE": servono a battere il CSS base di Elementor
 * (.elementor-button 0,1,0 · .elementor img 0,1,1 · .elementor-widget 0,1,0).
 *
 * Breakpoint: mobile ≤ 767 · tablet 768–1024 · desktop ≥ 1025 · menu orizzontale ≥ 1100.
 */

/* ---------- Token ---------- */

:where(:root) {
	--tl-ease-expo: cubic-bezier(.16, 1, .3, 1);
	--tl-ease-inout: cubic-bezier(.65, 0, .35, 1);
	--tl-ease-std: cubic-bezier(.4, 0, .2, 1);
	--tl-dur-fast: 200ms;
	--tl-dur-base: 400ms;
	--tl-gutter: 20px;
	--tl-section: 72px;
	--tl-section-compact: 48px;
	--tl-content-w: 1240px;
	--tl-narrow-w: 760px;
	--tl-cols-default: 1;
	--tl-gap-default: 16px;
	--tl-header-h: 64px;
	--tl-header-h-top: 72px;
	--tl-font-title: var(--e-global-typography-primary-font-family, "Gotu"), "Gotu Fallback", Georgia, serif;
	--tl-font-text: var(--e-global-typography-text-font-family, "Work Sans"), "Work Sans Fallback", Arial, sans-serif;
	--tl-shadow-header: 0 1px 0 rgba(32, 38, 49, .08);
	--tl-shadow-dropdown: 0 16px 40px -16px rgba(32, 38, 49, .22);
	--tl-shadow-card: 0 24px 48px -24px rgba(32, 38, 49, .35);
}

@media (min-width: 768px) {
	:where(:root) {
		--tl-gutter: 32px;
		--tl-section: 96px;
		--tl-section-compact: 64px;
		--tl-cols-default: 2;
		--tl-gap-default: 24px;
	}
}

@media (min-width: 1025px) {
	:where(:root) {
		--tl-gutter: 40px;
		--tl-section: 128px;
		--tl-section-compact: 80px;
		--tl-cols-default: 3;
		--tl-gap-default: 32px;
		--tl-header-h: 72px;
		--tl-header-h-top: 96px;
	}
}

/*
 * Colori di riferimento catturati sul body (dove il Kit definisce le variabili
 * globali): restano corretti anche dove i contesti scuri rimappano le globali.
 */
:where(body) {
	--tl-c-primary: var(--e-global-color-primary, #202631);
	--tl-c-white: var(--e-global-color-tlwhite, #fff);
	--tl-c-secondary: var(--e-global-color-secondary, #2B2A28);
	--tl-c-goldink: var(--e-global-color-tlgoldink, #84693E);
	--tl-c-beige: var(--e-global-color-tlbgbeige, #F4F3F0);
	--tl-btn-fg: var(--e-global-color-primary, #202631);
	--tl-btn-fill-text: var(--e-global-color-tlwhite, #fff);
}

/*
 * Contesti scuri (tl-on-dark, hero con overlay, header trasparente, tl-btn--light):
 * le globali vengono rimappate sui figli, così titoli, testi, link e bottoni
 * impostati con i colori globali del Kit si invertono da soli. Il container
 * mantiene il proprio sfondo. Un colore fisso impostato nel widget vince comunque.
 */
:where(.tl-on-dark, .tl-header-overlay) > *,
:where(.tl-btn--light, .tl-form--dark, .tl-hero, .tl-page-hero.has-image, .tl-has-overlay .tl-header:not(.is-solid)) {
	--e-global-color-primary: var(--tl-c-white);
	--e-global-color-secondary: var(--tl-c-white);
	--e-global-color-text: var(--tl-c-white);
	--e-global-color-tlgoldink: var(--e-global-color-tlgoldlight, #C2A574);
	--e-global-color-accent: var(--e-global-color-tlgoldlight, #C2A574);
	--e-global-color-tlmuted: var(--e-global-color-tlstone, #BDB7AE);
	--e-global-color-tlline: rgba(255, 255, 255, .16);
	--tl-btn-fg: var(--tl-c-white);
	--tl-btn-fill-text: var(--tl-c-primary);
	--tl-focus: var(--e-global-color-tlgoldlight, #C2A574);
}

:where(.tl-on-dark) {
	color: var(--tl-c-white);
}

/* Sulle foto degli hero l'oro chiaro non garantisce 4.5:1: eyebrow e accenti in bianco 85%. */
:where(.tl-header-overlay) > * {
	--e-global-color-tlgoldlight: rgba(255, 255, 255, .85);
}

/* ---------- Base ---------- */

:where(*, *::before, *::after) {
	box-sizing: border-box;
}

:where(html) {
	-webkit-text-size-adjust: 100%;
	scroll-padding-top: calc(var(--tl-header-h) + 16px);
}

@media (prefers-reduced-motion: no-preference) {
	:where(html) {
		scroll-behavior: smooth;
	}
}

:where(body) {
	margin: 0;
	overflow-x: clip;
	background-color: var(--e-global-color-tlwhite, #fff);
	color: var(--e-global-color-text, #444);
	font-family: var(--tl-font-text);
	font-size: var(--e-global-typography-text-font-size, 1rem);
	font-weight: var(--e-global-typography-text-font-weight, 400);
	line-height: var(--e-global-typography-text-line-height, 1.75);
	-webkit-font-smoothing: antialiased;
	text-rendering: optimizeLegibility;
}

:where(img, svg, video) {
	max-width: 100%;
	height: auto;
}

:where(h1, h2, h3, h4, h5, h6) {
	margin: 0 0 .6em;
	color: var(--e-global-color-primary, #202631);
	font-family: var(--tl-font-title);
	font-weight: 400;
	text-wrap: balance;
}

:where(h1) { font-size: clamp(2.125rem, 1.4rem + 2.6vw, 3.25rem); line-height: 1.12; letter-spacing: -.01em; }
:where(h2) { font-size: clamp(1.69rem, 1.3rem + 1.4vw, 2.375rem); line-height: 1.2; letter-spacing: -.005em; }
:where(h3) { font-size: clamp(1.31rem, 1.2rem + .4vw, 1.5rem); line-height: 1.3; }
:where(h4) { font-size: 1.25rem; line-height: 1.35; }

:where(h5, h6) {
	color: var(--e-global-color-secondary, #2B2A28);
	font-family: var(--tl-font-text);
	font-weight: 600;
	line-height: 1.4;
}

:where(h5) { font-size: .9375rem; letter-spacing: .02em; }
:where(h6) { font-size: .75rem; letter-spacing: .14em; text-transform: uppercase; }

:where(p, ul, ol, figure, blockquote, table) {
	margin: 0 0 1.25em;
}

:where(p) {
	text-wrap: pretty;
}

:where(a) {
	color: var(--e-global-color-tlgoldink, #84693E);
	text-decoration-thickness: 1px;
	text-underline-offset: 3px;
	transition: color var(--tl-dur-fast) var(--tl-ease-std);
}

:where(a:hover) {
	color: var(--e-global-color-tlgolddark, #6F5833);
	text-decoration-thickness: 2px;
}

/*
 * ECCEZIONE (0,2,2): i link di TESTO seguono il colore link del Kit; i link dei COMPONENTI
 * del tema (menu, card, breadcrumb, chip, paginazione, bottoni, CTA, skip link) usano
 * il proprio colore, letto da --tl-a (impostata a specificità 0 da ogni componente).
 * Batte .elementor-kit-N a / a:hover (0,1,1 / 0,2,1) e .elementor-button:hover (0,2,0);
 * resta sotto i controlli dei widget (.elementor-N .elementor-element.elementor-element-x …, 0,4,0+).
 */
html :is(.tl-nav, .tl-card, .tl-bc, .tl-chips, .tl-pagination, .tl-fallback-header, .tl-fallback-footer) a:is(:link, :visited, :not([href])),
html a:is(.elementor-button, .tl-btn, .tl-link-cta, .tl-skip-link):is(:link, :visited, :not([href])) {
	color: var(--tl-a, currentColor);
}

:where(:focus-visible) {
	outline: 2px solid var(--tl-focus, var(--e-global-color-tlgoldink, #84693E));
	outline-offset: 3px;
}

:where(.screen-reader-text) {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

:where(.tl-skip-link) {
	position: fixed;
	top: 8px;
	left: 8px;
	z-index: 1000;
	padding: 12px 20px;
	background: var(--e-global-color-primary, #202631);
	--tl-a: var(--e-global-color-tlwhite, #fff);
	font-weight: 600;
	text-decoration: none;
	transform: translateY(-200%);
}

:where(.tl-skip-link:focus) {
	transform: none;
}

:where(.tl-main:focus) {
	outline: 0;
}

/* ---------- Layout dei template PHP ---------- */

:where(.tl-wrap) {
	width: 100%;
	max-width: calc(var(--tl-content-w) + 2 * var(--tl-gutter));
	margin-inline: auto;
	padding-inline: var(--tl-gutter);
}

:where(.tl-wrap--narrow) {
	max-width: calc(var(--tl-narrow-w) + 2 * var(--tl-gutter));
}

:where(.tl-section) {
	padding-block: var(--tl-section);
}

:where(.tl-grid) {
	display: grid;
	grid-template-columns: repeat(var(--tl-cols, var(--tl-cols-default)), minmax(0, 1fr));
	gap: calc(var(--tl-gap, var(--tl-gap-default)) * 1.5) var(--tl-gap, var(--tl-gap-default));
}

:where(.tl-empty) {
	display: grid;
	justify-items: start;
	gap: 24px;
	max-width: 640px;
	font-size: 1.125rem;
}

/* ---------- Header (wrapper del tema) ---------- */

:where(.tl-header) {
	position: fixed;
	top: var(--wp-admin--admin-bar--height, 0px);
	inset-inline: 0;
	z-index: 100;
	display: flex;
	align-items: center;
	min-height: var(--tl-header-h);
	background-color: var(--e-global-color-tlbgsoft, #FAFAFA);
	box-shadow: var(--tl-shadow-header);
	color: var(--e-global-color-secondary, #2B2A28);
	transition:
		min-height var(--tl-dur-base) var(--tl-ease-std),
		background-color var(--tl-dur-base) var(--tl-ease-std),
		box-shadow var(--tl-dur-base) var(--tl-ease-std),
		transform var(--tl-dur-base) var(--tl-ease-std);
}

:where(.tl-header) > * {
	flex: 1 1 auto;
	min-width: 0;
}

:where(.tl-header)::before {
	content: "";
	position: absolute;
	inset: 0 0 auto;
	height: 180px;
	background: linear-gradient(color-mix(in srgb, var(--e-global-color-tlnavydeep, #171B23) 45%, transparent), transparent);
	opacity: 0;
	pointer-events: none;
	transition: opacity var(--tl-dur-base) var(--tl-ease-std);
}

:where(.tl-has-overlay .tl-header:not(.is-solid)) {
	min-height: var(--tl-header-h-top);
	background-color: transparent;
	box-shadow: none;
	color: var(--tl-c-white);
}

:where(.tl-has-overlay .tl-header:not(.is-solid))::before {
	opacity: 1;
}

:where(.tl-header.is-hidden) {
	transform: translateY(-100%);
}

:where(body:not(.tl-has-overlay) .tl-main) {
	padding-top: var(--tl-header-h);
}

:where(.tl-header .tl-logo) {
	transform-origin: left center;
	transition: scale var(--tl-dur-base) var(--tl-ease-std);
}

:where(.tl-has-overlay .tl-header:not(.is-solid) .tl-logo) {
	scale: 1.15;
}

:where(.tl-header .tl-logo img) {
	width: auto;
	max-height: 34px;
}

@media (max-width: 767px) {
	:where(.tl-header .tl-logo img) {
		max-height: 28px;
	}
}

:where(.tl-header .tl-logo--light),
:where(.tl-has-overlay .tl-header:not(.is-solid) .tl-logo--dark) {
	display: none;
}

:where(.tl-has-overlay .tl-header:not(.is-solid) .tl-logo--light) {
	display: block;
	animation: tl-fade-in .3s var(--tl-ease-std);
}

/* ECCEZIONE (0,2,0): batte display di .elementor-widget. */
@media (max-width: 1099.98px) {
	.elementor-element.tl-hide-below-menu {
		display: none;
	}
}

/* Fallback senza parti tema */
:where(.tl-fallback-header) {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 8px 32px;
	padding-block: 12px;
}

:where(.tl-fallback-header__name) {
	font-family: var(--tl-font-title);
	font-size: 1.5rem;
	text-decoration: none;
}

:where(.tl-fallback-nav__list, .tl-fallback-footer__list) {
	display: flex;
	flex-wrap: wrap;
	gap: 4px 24px;
	margin: 0;
	padding: 0;
	list-style: none;
}

:where(.tl-fallback-nav__list a, .tl-fallback-footer__list a) {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	font-size: .75rem;
	font-weight: 500;
	letter-spacing: .11em;
	text-decoration: none;
	text-transform: uppercase;
}

:where(.tl-fallback-footer) {
	padding-block: 32px;
	background: var(--e-global-color-tlnavydeep, #171B23);
	color: var(--e-global-color-tlstone, #BDB7AE);
	font-size: .875rem;
}

:where(.tl-fallback-footer__inner) {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
}

:where(.tl-fallback-footer__copy) {
	margin: 0;
}

/* ---------- Bottoni: pill outline + "barra di caricamento" sul perimetro ---------- */

@property --tl-ring {
	syntax: "<percentage>";
	inherits: false;
	initial-value: 0%;
}

/*
 * ECCEZIONE (0,1,0, caricato dopo il CSS di Elementor): forma e tipografia dei bottoni.
 * Il Kit NON imposta i bottoni (Elementor applicherebbe quegli stili a ogni <button>,
 * anche ai controlli interni di menu/slider). Si modificano dal widget Button (0,3,0+)
 * o dai Colori/Font globali, che queste regole leggono tramite variabili.
 */
.elementor-button,
:where(.tl-btn, .wpcf7-submit) {
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: .5em;
	min-height: 44px;
	padding: 18px 42px;
	border-width: 1px;
	border-style: solid;
	font-family: var(--tl-font-text);
	font-size: 1rem;
	font-weight: 500;
	line-height: 1.2;
	letter-spacing: .025em;
	text-align: center;
	text-decoration: none;
	text-transform: uppercase;
	cursor: pointer;
}

/*
 * ECCEZIONE (0,1,0, caricato dopo il CSS di Elementor): sostituisce i default di
 * Elementor (.elementor-button: sfondo grigio, testo bianco, radius 3px). Kit
 * (0,2,0) e widget (0,3,0+) restano sopra. Hover tramite variabili.
 */
.elementor-button,
:where(.tl-btn, .wpcf7-submit) {
	border-color: var(--tl-btn-line, color-mix(in srgb, var(--tl-btn-fg) 35%, transparent));
	border-radius: 999px;
	background-color: var(--tl-btn-bg, transparent);
	color: var(--tl-btn-text, var(--tl-btn-fg));
	transition:
		color .25s var(--tl-ease-std) var(--tl-btn-delay, 0s),
		background-color .25s var(--tl-ease-std) var(--tl-btn-delay, 0s),
		border-color .25s var(--tl-ease-std);
}

:where(.elementor-button, .tl-btn) {
	--tl-a: var(--tl-btn-text, var(--tl-btn-fg));
}

/* L'anello pieno percorre il bordo tenue (35%), poi il bottone si riempie. */
:where(.elementor-button, .tl-btn)::before {
	content: "";
	position: absolute;
	inset: -1px;
	padding: 2px;
	border-radius: inherit;
	background: conic-gradient(from 0deg, var(--tl-btn-fg) var(--tl-ring), transparent 0);
	-webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
	-webkit-mask-composite: xor;
	mask: linear-gradient(#000 0 0) content-box exclude, linear-gradient(#000 0 0);
	pointer-events: none;
	transition: --tl-ring .3s var(--tl-ease-inout);
}

:where(.elementor-button:hover, .elementor-button:focus-visible, .tl-btn:hover, .tl-btn:focus-visible, .tl-card--linked:hover .tl-btn, .tl-card--linked:focus-within .tl-btn, .wpcf7-submit:hover, .wpcf7-submit:focus-visible) {
	--tl-btn-bg: var(--tl-btn-fg);
	--tl-btn-text: var(--tl-btn-fill-text);
	--tl-btn-delay: .6s;
}

:where(.elementor-button:hover, .elementor-button:focus-visible, .tl-btn:hover, .tl-btn:focus-visible, .tl-card--linked:hover .tl-btn, .tl-card--linked:focus-within .tl-btn)::before {
	--tl-ring: 100%;
	transition-duration: .6s;
}

:where(.elementor-button:active, .tl-btn:active, .wpcf7-submit:active) {
	translate: 0 1px;
}

:where(.elementor-button:disabled, .elementor-button[aria-disabled="true"], .wpcf7-submit:disabled) {
	opacity: .4;
	cursor: not-allowed;
}

:where(.elementor-button .elementor-button-content-wrapper) {
	display: inline-flex;
	align-items: center;
	gap: .5em;
}

/* Variante link testuale (ECCEZIONE 0,3,0: batte la forma pill del Kit, 0,2,0). */
.elementor-widget-button.tl-btn--line .elementor-button {
	min-height: 44px;
	padding: 0 0 8px;
	border: 0;
	border-radius: 0;
	background: none;
	--tl-a: var(--tl-line-c, var(--e-global-color-tlgoldink, #84693E));
	font-size: .75rem;
	font-weight: 600;
	letter-spacing: .14em;
}

:where(.tl-btn--line .elementor-button)::before {
	content: none;
}

:where(.tl-btn--line .elementor-button, .tl-link-cta)::after {
	content: "";
	position: absolute;
	inset: auto 0 0;
	height: 1px;
	background: currentColor;
	transform-origin: left;
}

:where(.tl-btn--line .elementor-button:hover, .tl-btn--line .elementor-button:focus-visible, .tl-link-cta:hover, .tl-link-cta:focus-visible) {
	--tl-line-c: var(--e-global-color-tlgolddark, #6F5833);
}

:where(.tl-btn--line .elementor-button:hover, .tl-btn--line .elementor-button:focus-visible, .tl-link-cta:hover, .tl-link-cta:focus-visible)::after {
	animation: tl-line-swap .65s var(--tl-ease-expo);
}

:where(.tl-link-cta) {
	position: relative;
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding-bottom: 8px;
	--tl-a: var(--tl-line-c, var(--e-global-color-tlgoldink, #84693E));
	font-size: .75rem;
	font-weight: 600;
	letter-spacing: .14em;
	text-decoration: none;
	text-transform: uppercase;
}

/* ---------- Utility di stile ---------- */

:where(.tl-eyebrow) {
	color: var(--e-global-color-tlgoldink, #84693E);
	font-family: var(--e-global-typography-tleyebrow-font-family, "Work Sans"), "Work Sans Fallback", Arial, sans-serif;
	font-size: var(--e-global-typography-tleyebrow-font-size, .75rem);
	font-weight: var(--e-global-typography-tleyebrow-font-weight, 600);
	line-height: 1.4;
	letter-spacing: var(--e-global-typography-tleyebrow-letter-spacing, .16em);
	text-transform: uppercase;
}

:where(.tl-link-line) a {
	text-decoration: none;
	background: linear-gradient(currentColor, currentColor) 0 100% / 0 1px no-repeat;
	transition: background-size var(--tl-dur-base) var(--tl-ease-expo), color var(--tl-dur-fast) var(--tl-ease-std);
}

:where(.tl-link-line) a:hover,
:where(.tl-link-line) a:focus-visible {
	background-size: 100% 1px;
}

:where(.tl-meta) {
	color: var(--e-global-color-tlmuted, #6E6960);
	font-size: .875rem;
	line-height: 1.6;
}

:where(.tl-badge) {
	display: inline-block;
	margin-inline-end: 6px;
	padding: 2px 10px;
	border: 1px solid currentColor;
	border-radius: 999px;
	color: var(--e-global-color-tlgoldink, #84693E);
	font-size: .6875rem;
	font-weight: 600;
	letter-spacing: .12em;
	text-transform: uppercase;
	vertical-align: .1em;
}

:where(.tl-price-from) {
	margin-inline-end: .2em;
	color: var(--e-global-color-tlmuted, #6E6960);
	font-family: var(--tl-font-text);
	font-size: .8125rem;
	letter-spacing: .04em;
	vertical-align: .25em;
}

/* Proporzioni immagine (anche per breakpoint: -t- tablet, -m- mobile). */
:where(.tl-ratio-4-5, .tl-ratio-3-4, .tl-ratio-1-1, .tl-ratio-4-3, .tl-ratio-16-10, .tl-ratio-16-9) img {
	display: block;
	width: 100%;
	object-fit: cover;
}

:where(.tl-ratio-4-5) img { aspect-ratio: 4 / 5; }
:where(.tl-ratio-3-4) img { aspect-ratio: 3 / 4; }
:where(.tl-ratio-1-1) img { aspect-ratio: 1; }
:where(.tl-ratio-4-3) img { aspect-ratio: 4 / 3; }
:where(.tl-ratio-16-10) img { aspect-ratio: 16 / 10; }
:where(.tl-ratio-16-9) img { aspect-ratio: 16 / 9; }

@media (max-width: 1024px) {
	:where(.tl-ratio-t-4-5) img { aspect-ratio: 4 / 5; }
	:where(.tl-ratio-t-1-1) img { aspect-ratio: 1; }
	:where(.tl-ratio-t-4-3) img { aspect-ratio: 4 / 3; }
	:where(.tl-ratio-t-16-10) img { aspect-ratio: 16 / 10; }
}

@media (max-width: 767px) {
	:where(.tl-ratio-m-4-5) img { aspect-ratio: 4 / 5; }
	:where(.tl-ratio-m-1-1) img { aspect-ratio: 1; }
	:where(.tl-ratio-m-4-3) img { aspect-ratio: 4 / 3; }
	:where(.tl-ratio-m-16-10) img { aspect-ratio: 16 / 10; }
}

/*
 * tl-cover: Image dietro al contenuto del container (sotto l'overlay nativo).
 * ECCEZIONE (0,2,0 / 0,2,1): batte position di .elementor-widget e height di .elementor img.
 */
:where(.e-con, .e-con-inner):has(> .tl-cover) {
	isolation: isolate;
}

.elementor-element.tl-cover {
	position: absolute;
	inset: 0;
	z-index: -1;
	overflow: hidden;
}

.elementor-element.tl-cover img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/* Negli hero, gradiente dal basso per la leggibilità del testo sulle foto chiare. */
:where(.tl-header-overlay > .tl-cover)::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(to top, color-mix(in srgb, var(--e-global-color-tlnavydeep, #171B23) 72%, transparent) 0%, color-mix(in srgb, var(--e-global-color-tlnavydeep, #171B23) 45%, transparent) 35%, transparent 65%);
	pointer-events: none;
}

/* Su mobile, fuori dagli hero (tl-header-overlay), l'immagine torna in flusso 4:3. */
@media (max-width: 767px) {
	:where(.e-con:not(.tl-header-overlay), .e-con-inner) > .elementor-element.tl-cover {
		position: relative;
		inset: auto;
		z-index: auto;
	}

	:where(.e-con:not(.tl-header-overlay), .e-con-inner) > .elementor-element.tl-cover img {
		height: auto;
		aspect-ratio: 4 / 3;
	}
}

/* tl-sticky: colonna sticky da 1025 px (ECCEZIONE 0,2,0: batte position del container). */
@media (min-width: 1025px) {
	.e-con.tl-sticky {
		position: sticky;
		top: calc(var(--wp-admin--admin-bar--height, 0px) + var(--tl-header-h) + 40px);
		align-self: flex-start;
	}
}

/* tl-sticky-cta: barra CTA fissa in basso, solo mobile e solo con JS (ECCEZIONE 0,2,0). */
.e-con.tl-sticky-cta {
	position: fixed;
	inset: auto 0 0;
	z-index: 90;
	transform: translateY(100%);
	visibility: hidden;
	transition: transform var(--tl-dur-base) var(--tl-ease-expo), visibility 0s linear var(--tl-dur-base);
}

.e-con.tl-sticky-cta.is-visible {
	transform: none;
	visibility: visible;
	transition-delay: 0s;
}

@media (min-width: 768px) {
	.e-con.tl-sticky-cta {
		display: none;
	}
}

:where(html:not(.tl-js) .tl-sticky-cta, body.elementor-editor-active .tl-sticky-cta) {
	position: static;
	transform: none;
	visibility: visible;
}

:where(.tl-cta-visible body) {
	padding-bottom: var(--tl-cta-h, 64px);
}

/* Icon List su 2 colonne da 768 px. */
@media (min-width: 768px) {
	:where(.tl-cols-2 .elementor-icon-list-items) {
		display: grid;
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 12px 32px;
	}
}

/* Icon List con check oro. */
:where(.tl-list-check .elementor-icon-list-item) {
	align-items: flex-start;
	padding-block: 6px;
}

:where(.tl-list-check .elementor-icon-list-icon) {
	color: var(--e-global-color-accent, #967647);
	fill: currentColor;
}

/* Tabella editoriale (Text Editor). */
:where(.tl-table table) {
	width: 100%;
	border-collapse: collapse;
}

:where(.tl-table :is(th, td)) {
	padding: 14px 16px 14px 0;
	border: 0;
	border-bottom: 1px solid var(--e-global-color-tlline, #E4E0D9);
	text-align: start;
	vertical-align: top;
}

:where(.tl-table :is(th, td):last-child) {
	padding-inline-end: 0;
}

:where(.tl-table :is(th, tr > td:first-child)) {
	color: var(--e-global-color-secondary, #2B2A28);
	font-size: .75rem;
	font-weight: 600;
	letter-spacing: .14em;
	text-transform: uppercase;
}

:where(.tl-table td:last-child:not(:first-child)) {
	text-align: end;
}

:where(.tl-table tfoot td) {
	border-top: 1px solid var(--e-global-color-primary, #202631);
	border-bottom: 0;
	color: var(--e-global-color-primary, #202631);
	font-weight: 600;
}

@media (max-width: 767px) {
	:where(.tl-table) {
		overflow-x: auto;
	}
}

/* Mappa: immagine intera con bordo (ECCEZIONE 0,2,1: batte border di .elementor img). */
.elementor-widget-image.tl-map img {
	width: 100%;
	height: auto;
	border: 1px solid var(--e-global-color-tlline, #E4E0D9);
}

/*
 * Programma: Nested Accordion come timeline numerata.
 * ECCEZIONE (0,2,0): le variabili --n-accordion-* battono i default del widget
 * (.elementor-widget-n-accordion, 0,1,0); i controlli del widget (0,3,0+) restano sopra.
 */
.elementor-widget-n-accordion.tl-timeline {
	--n-accordion-border-width: 0px;
	--n-accordion-padding: 16px 0;
	--n-accordion-item-title-space-between: 0px;
	--n-accordion-item-title-distance-from-content: 0px;
	--n-accordion-title-font-size: 1.25rem;
	--n-accordion-title-justify-content: space-between;
	--n-accordion-title-icon-order: 1;
	--n-accordion-icon-size: 14px;
	--n-accordion-icon-gap: 0 24px;
	--n-accordion-title-normal-color: var(--e-global-color-primary, #202631);
	--n-accordion-title-hover-color: var(--e-global-color-primary, #202631);
	--n-accordion-title-active-color: var(--e-global-color-primary, #202631);
	--n-accordion-icon-normal-color: var(--e-global-color-accent, #967647);
	--n-accordion-icon-hover-color: var(--e-global-color-accent, #967647);
	--n-accordion-icon-active-color: var(--e-global-color-accent, #967647);
}

.tl-timeline :where(.e-n-accordion-item) > .e-con {
	--padding-top: 0px;
	--padding-right: 0px;
	--padding-bottom: 24px;
	--padding-left: 0px;
}

:where(.tl-timeline .e-n-accordion) {
	position: relative;
	counter-reset: tl-day;
}

:where(.tl-timeline .e-n-accordion)::before,
:where(.tl-timeline .e-n-accordion)::after {
	content: "";
	position: absolute;
	inset: 20px auto 20px 19.5px;
	width: 1px;
	background: var(--e-global-color-tlline, #E4E0D9);
}

:where(.tl-timeline .e-n-accordion)::after {
	background: var(--e-global-color-accent, #967647);
	transform: scaleY(var(--tl-timeline, 0));
	transform-origin: top;
}

:where(.tl-timeline .e-n-accordion-item) {
	z-index: 1;
	padding-inline-start: 64px;
	border-bottom: 1px solid var(--e-global-color-tlline, #E4E0D9);
	counter-increment: tl-day;
}

:where(.tl-timeline .e-n-accordion-item-title) {
	position: relative;
	min-height: 44px;
}

:where(.tl-timeline .e-n-accordion-item-title-header) {
	flex: 1;
}

:where(.tl-timeline .e-n-accordion-item-title-text) {
	font-family: var(--tl-font-title);
	font-weight: 400;
	line-height: 1.35;
}

:where(.tl-timeline .e-n-accordion-item-title)::before {
	content: counter(tl-day, decimal-leading-zero);
	position: absolute;
	top: 50%;
	inset-inline-start: -64px;
	display: grid;
	place-items: center;
	width: 40px;
	height: 40px;
	margin-top: -20px;
	border: 1px solid var(--e-global-color-accent, #967647);
	border-radius: 50%;
	background: var(--e-global-color-tlwhite, #fff);
	color: var(--e-global-color-primary, #202631);
	font-family: var(--e-global-typography-tlnumber-font-family, "Gotu"), "Gotu Fallback", Georgia, serif;
	font-size: 1rem;
	line-height: 1;
}

:where(.tl-timeline .e-n-accordion-item[open] > .e-n-accordion-item-title)::before {
	background: var(--e-global-color-primary, #202631);
	border-color: var(--e-global-color-primary, #202631);
	color: var(--e-global-color-tlwhite, #fff);
}

/*
 * Date e quote: Nested Tabs editoriali (lista a sinistra, label maiuscola, linea oro sulla
 * tab attiva). ECCEZIONE (0,2,0): variabili --n-tabs-* sopra i default del widget (0,1,0).
 */
.elementor-widget-n-tabs.tl-tabs {
	--n-tabs-gap: 48px;
	--n-tabs-heading-width: 280px;
	--n-tabs-title-gap: 0px;
	--n-tabs-title-font-size: .75rem;
	--n-tabs-title-justify-content: flex-start;
	--n-tabs-title-text-align: start;
	--n-tabs-title-white-space: normal;
	--n-tabs-title-padding-top: 16px;
	--n-tabs-title-padding-bottom: 16px;
	--n-tabs-title-padding-left: 20px;
	--n-tabs-title-padding-right: 16px;
	--n-tabs-title-background-color: transparent;
	--n-tabs-title-background-color-hover: transparent;
	--n-tabs-title-background-color-active: transparent;
	--n-tabs-title-color: var(--e-global-color-tlmuted, #6E6960);
	--n-tabs-title-color-hover: var(--e-global-color-primary, #202631);
	--n-tabs-title-color-active: var(--e-global-color-primary, #202631);
}

:where(.tl-tabs .e-n-tab-title) {
	font-family: var(--tl-font-text);
	font-weight: 600;
	line-height: 1.4;
	letter-spacing: .14em;
	text-transform: uppercase;
	box-shadow: inset 0 -1px 0 var(--e-global-color-tlline, #E4E0D9);
}

:where(.tl-tabs .e-n-tab-title[aria-selected="true"]) {
	box-shadow: inset 2px 0 0 var(--e-global-color-accent, #967647), inset 0 -1px 0 var(--e-global-color-tlline, #E4E0D9);
}

:where(.tl-tabs .e-n-tabs-content > .e-active) {
	animation: tl-fade-in .3s var(--tl-ease-std);
}

/* Numeri statistiche / step (Heading): Gotu 56 / 48 / 40, oro. ECCEZIONE (0,3,0): batte la tipografia H del Kit e il default dell'Heading; i controlli tipografici del widget (0,4,0) restano sopra. */
.elementor-widget-heading.tl-stat .elementor-heading-title {
	margin-bottom: 16px;
	color: var(--e-global-color-accent, #967647);
	font-family: var(--e-global-typography-tldisplay-font-family, "Gotu"), "Gotu Fallback", Georgia, serif;
	font-size: clamp(2.5rem, 2rem + 1.6vw, 3.5rem);
	font-weight: 400;
	line-height: 1;
	letter-spacing: -.01em;
}

/* Split (feature A): immagine 4:5 limitata in altezza, testo centrato. */
:where(.tl-img-curtain--left, .tl-img-curtain--right) img {
	max-height: min(86vh, 860px);
	object-fit: cover;
}

/* ---------- Card condivisa ---------- */

:where(.tl-card) {
	position: relative;
	display: flex;
	flex-direction: column;
	height: 100%;
}

:where(.tl-card__media) {
	overflow: hidden;
	background: var(--e-global-color-tlbgbeige, #F4F3F0);
}

:where(.tl-card__img) {
	display: block;
	width: 100%;
	height: auto;
	object-fit: cover;
	transition: scale .7s var(--tl-ease-expo);
}

:where(.tl-card__body) {
	display: flex;
	flex: 1;
	flex-direction: column;
	align-items: flex-start;
	padding-top: var(--tl-card-space, 24px);
}

:where(.tl-card__eyebrow) {
	margin: 0 0 8px;
	color: var(--e-global-color-tlgoldink, #84693E);
	font-size: .75rem;
	font-weight: 600;
	line-height: 1.4;
	letter-spacing: .16em;
	text-transform: uppercase;
}

:where(.tl-card__title) {
	margin: 0 0 12px;
	color: var(--e-global-color-primary, #202631);
	font-family: var(--tl-font-title);
	font-size: clamp(1.31rem, 1.2rem + .4vw, 1.5rem);
	font-weight: 400;
	line-height: 1.3;
	text-wrap: balance;
}

:where(.tl-card__link) {
	text-decoration: none;
}

:where(.tl-card--linked:hover .tl-card__link, .tl-card__link:focus-visible) {
	--tl-a: var(--e-global-color-tlgoldink, #84693E);
}

:where(.tl-card__link)::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
}

:where(.tl-card__link:focus-visible) {
	outline: 0;
}

:where(.tl-card:has(.tl-card__link:focus-visible)) {
	outline: 2px solid var(--tl-focus, var(--e-global-color-tlgoldink, #84693E));
	outline-offset: 4px;
}

:where(.tl-card__text) {
	display: -webkit-box;
	margin-bottom: 12px;
	overflow: hidden;
	font-size: .9375rem;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: var(--tl-lines, 3);
	line-clamp: var(--tl-lines, 3);
}

:where(.tl-card__text) > * {
	margin: 0;
}

:where(.tl-card__text a) {
	position: relative;
	z-index: 2;
}

:where(.tl-card__meta) {
	margin: 0;
	color: var(--e-global-color-tlmuted, #6E6960);
	font-size: .875rem;
	line-height: 1.6;
}

:where(.tl-card__body > :has(+ .tl-card__cta)) {
	margin-bottom: 24px;
}

:where(.tl-card__cta) {
	margin-top: auto;
	padding: 14px 32px;
}

@media (hover: hover) {
	:where(.tl-card--linked:hover .tl-card__img) {
		scale: var(--tl-card-zoom, 1.06);
	}
}

/* Variante riga (lista compatta, es. "Novità" nel footer). */
:where(.tl-card--row) {
	display: grid;
	grid-template-columns: var(--tl-thumb, 64px) minmax(0, 1fr);
	align-items: center;
	gap: 16px;
}

:where(.tl-card--row .tl-card__body) {
	gap: 4px;
	padding-top: 0;
}

/* ECCEZIONE (0,2,0): batte la tipografia H3 del Kit (.elementor-kit-N h3, 0,1,1). */
.tl-card--row .tl-card__title {
	margin: 0;
	font-family: var(--tl-font-text);
	font-size: .9375rem;
	font-weight: 500;
	line-height: 1.4;
	letter-spacing: 0;
}

:where(.tl-card--row .tl-card__meta) {
	font-size: .8125rem;
}

/* Variante in evidenza (featured + grid): meta sopra il titolo, titolo grande. */
:where(.tl-card--featured .tl-card__eyebrow) { order: -2; }
:where(.tl-card--featured .tl-card__meta) { order: -1; margin-bottom: 12px; }
:where(.tl-card--featured .tl-card__text) { font-size: 1.0625rem; }

/* ECCEZIONE (0,2,0): batte la tipografia H3 del Kit. */
.tl-card--featured .tl-card__title {
	font-size: clamp(1.5rem, 1.2rem + 1vw, 2rem);
	line-height: 1.2;
}

@media (min-width: 768px) {
	:where(.tl-card--featured) {
		display: grid;
		grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
		align-items: center;
		gap: 64px;
	}

	:where(.tl-card--featured .tl-card__body) {
		padding-top: 0;
	}
}

/* ---------- Chip, paginazione ---------- */

:where(.tl-chips) {
	padding-block: 24px;
}

:where(.tl-chips__list) {
	display: flex;
	gap: 8px;
	margin: 0;
	padding: 0 0 4px;
	overflow-x: auto;
	list-style: none;
	scrollbar-width: thin;
}

:where(.tl-chip) {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding: 0 20px;
	border: 1px solid var(--e-global-color-tlline, #E4E0D9);
	border-radius: 999px;
	--tl-a: var(--e-global-color-secondary, #2B2A28);
	font-size: .875rem;
	text-decoration: none;
	white-space: nowrap;
	transition: border-color var(--tl-dur-fast) var(--tl-ease-std), background-color var(--tl-dur-fast) var(--tl-ease-std), color var(--tl-dur-fast) var(--tl-ease-std);
}

:where(.tl-chip:hover) {
	border-color: var(--tl-list-accent, var(--e-global-color-primary, #202631));
	--tl-a: var(--tl-list-accent, var(--e-global-color-primary, #202631));
}

:where(.tl-chip[aria-current="true"]) {
	border-color: var(--tl-list-accent, var(--e-global-color-primary, #202631));
	background: var(--tl-list-accent, var(--e-global-color-primary, #202631));
	--tl-a: var(--e-global-color-tlwhite, #fff);
}

:where(.tl-pagination) {
	margin-top: 64px;
}

:where(.tl-pagination__list) {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 4px;
	margin: 0;
	padding: 0;
	list-style: none;
}

:where(.tl-pagination .page-numbers) {
	display: inline-grid;
	place-items: center;
	min-width: 44px;
	min-height: 44px;
	--tl-a: var(--e-global-color-secondary, #2B2A28);
	color: var(--tl-a);
	font-family: var(--tl-font-title);
	text-decoration: none;
}

:where(.tl-pagination .page-numbers.current) {
	--tl-a: var(--tl-list-accent, var(--e-global-color-primary, #202631));
	text-decoration: underline;
	text-decoration-color: var(--e-global-color-accent, #967647);
	text-underline-offset: 8px;
}

/* ---------- Hero dei template PHP ---------- */

:where(.tl-page-hero) {
	position: relative;
	isolation: isolate;
	display: flex;
	align-items: flex-end;
	padding-block: var(--tl-section-compact);
	background: var(--e-global-color-tlbgbeige, #F4F3F0);
}

:where(.tl-page-hero.has-image) {
	min-height: 60svh;
	padding-top: calc(var(--tl-header-h-top) + 48px);
	padding-bottom: 56px;
	overflow: hidden;
	background: var(--e-global-color-tlnavydeep, #171B23);
	color: var(--tl-c-white);
}

@media (min-width: 768px) and (max-width: 1024px) {
	:where(.tl-page-hero.has-image) {
		min-height: 50svh;
	}
}

@media (min-width: 768px) {
	:where(.tl-page-hero.has-image) {
		padding-bottom: 96px;
	}
}

:where(.tl-page-hero__media) {
	position: absolute;
	inset: 0;
	z-index: -1;
	overflow: hidden;
}

:where(.tl-page-hero__media)::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(to top, color-mix(in srgb, var(--e-global-color-tlnavydeep, #171B23) 70%, transparent), color-mix(in srgb, var(--e-global-color-tlnavydeep, #171B23) 25%, transparent));
}

:where(.tl-page-hero__img) {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

:where(.tl-page-hero__inner) {
	display: grid;
	justify-items: start;
	gap: 16px;
}

:where(.tl-page-hero__eyebrow) {
	margin: 0;
	color: var(--e-global-color-tlgoldink, #84693E);
	font-size: .75rem;
	font-weight: 600;
	letter-spacing: .16em;
	text-transform: uppercase;
}

:where(.tl-page-hero__title) {
	max-width: 20ch;
	margin: 0;
}

:where(.tl-page-hero__lead) {
	max-width: 560px;
	font-size: var(--e-global-typography-secondary-font-size, 1.1875rem);
	line-height: 1.65;
	opacity: .9;
}

:where(.tl-page-hero__lead) > * {
	margin: 0;
}

/* ---------- Articolo ---------- */

:where(.tl-article) {
	padding-block: 48px var(--tl-section);
}

:where(.tl-article__meta) {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	color: var(--e-global-color-tlmuted, #6E6960);
	font-size: .875rem;
}

:where(.tl-prose) {
	font-size: 1.0625rem;
}

:where(.tl-prose) > :where(p, ul, ol) {
	max-width: 68ch;
	margin: 0 0 24px;
}

:where(.tl-prose h2) {
	margin: 64px 0 16px;
}

:where(.tl-prose h3) {
	margin: 48px 0 12px;
}

@media (max-width: 767px) {
	:where(.tl-prose h2) { margin: 48px 0 12px; }
	:where(.tl-prose h3) { margin: 36px 0 12px; }
}

:where(.tl-prose) > :where(figure, .alignwide, .alignfull) {
	margin-block: 56px;
}

:where(.tl-prose blockquote) {
	margin-block: 48px;
	padding-inline-start: 24px;
	border-inline-start: 2px solid var(--e-global-color-accent, #967647);
	color: var(--e-global-color-primary, #202631);
	font-family: var(--e-global-typography-tlquote-font-family, "Gotu"), "Gotu Fallback", Georgia, serif;
	font-size: clamp(1.31rem, 1.1rem + .8vw, 1.625rem);
	line-height: 1.4;
}

:where(.tl-prose figcaption) {
	margin-top: 8px;
	color: var(--e-global-color-tlmuted, #6E6960);
	font-size: .875rem;
}

:where(.tl-share) {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px 24px;
	margin-top: 48px;
	padding-top: 24px;
	border-top: 1px solid var(--e-global-color-tlline, #E4E0D9);
}

:where(.tl-share__label) {
	margin: 0;
	font-size: .75rem;
	font-weight: 600;
	letter-spacing: .14em;
	text-transform: uppercase;
}

:where(.tl-share__list) {
	display: flex;
	flex-wrap: wrap;
	gap: 0 16px;
	margin: 0;
	padding: 0;
	list-style: none;
}

:where(.tl-share__link) {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
}

:where(.tl-related) {
	background: var(--e-global-color-tlbgsoft, #FAFAFA);
}

:where(.tl-search-form) {
	padding-top: 48px;
}

:where(.search-form) {
	display: flex;
	gap: 8px;
}

:where(.search-form label) {
	flex: 1;
}

:where(.search-form .search-field) {
	width: 100%;
	min-height: 52px;
	padding: 0 16px;
	border: 1px solid var(--e-global-color-tlgrey, #8A847B);
	border-radius: 2px;
	font: inherit;
}

:where(.tl-404) {
	display: grid;
	gap: 32px;
}

/* ---------- Frecce condivise (hero, carousel) ---------- */

:where(.tl-arrow) {
	display: inline-grid;
	place-items: center;
	width: var(--tl-arrow-size, 52px);
	height: var(--tl-arrow-size, 52px);
	padding: 0;
	border: 1px solid currentColor;
	border-radius: 50%;
	background: transparent;
	color: var(--tl-arrow-color, var(--e-global-color-primary, #202631));
	cursor: pointer;
	transition: background-color .3s var(--tl-ease-std), color .3s var(--tl-ease-std), scale .2s var(--tl-ease-std), opacity .2s;
}

:where(.tl-arrow:hover, .tl-arrow:focus-visible) {
	background: currentColor;
}

:where(.tl-arrow:hover svg, .tl-arrow:focus-visible svg) {
	color: var(--tl-c-white);
}

:where(.tl-arrow:active) {
	scale: .96;
}

:where(.tl-arrow[aria-disabled="true"]) {
	opacity: .3;
	cursor: default;
}

/* ---------- Cursore custom (tl-cursor-view, carousel) ---------- */

:where(.tl-cursor) {
	position: fixed;
	top: 0;
	left: 0;
	z-index: 200;
	display: grid;
	place-items: center;
	width: 88px;
	height: 88px;
	margin: -44px 0 0 -44px;
	border-radius: 50%;
	background: var(--tl-cursor-bg, var(--e-global-color-primary, #202631));
	color: var(--e-global-color-tlwhite, #fff);
	font-size: .6875rem;
	font-weight: 600;
	letter-spacing: .14em;
	text-transform: uppercase;
	pointer-events: none;
	scale: 0;
	transition: scale .3s var(--tl-ease-expo);
}

:where(.tl-cursor.is-active) {
	scale: 1;
}

:where(.tl-cursor.is-pressed) {
	scale: .8;
}

@keyframes tl-fade-in {
	from { opacity: 0; }
}

@keyframes tl-line-swap {
	0% { transform: scaleX(1); transform-origin: right; }
	38% { transform: scaleX(0); transform-origin: right; }
	39% { transform: scaleX(0); transform-origin: left; }
	100% { transform: scaleX(1); transform-origin: left; }
}
