/* ==========================================================================
   COMPONENTS.CSS — Catalunya Experience
   Sistema dei Componenti Modulari e Layout di Pagina
   ==========================================================================
   INDICE DEI CONTENUTI:

   [ PARTE 1: CORE UI & NAVIGAZIONE ]
   1. HEADER & TOP BAR (Desktop, Mobile, Hamburger)
   2. MEGA MENU
   3. MOBILE DRILL-DOWN MENU
   4. SEARCH OVERLAY

   [ PARTE 2: MOTORI DI LAYOUT GLOBALI ]
   5. HERO & PAGE HEADERS
   6. GRIGLIE E CARDS UNIVERSALI
   7. SMART BAR & FILTRI
   8. SLIDERS E SCROLL NATIVO MOBILE

   [ PARTE 3: TEMPLATE EDITORIALI E DI PAGINA ]
   9. HOMEPAGE
   10. ARTICOLO SINGOLO
   11. EVENTO SINGOLO
   12. HUB DESTINAZIONI ED ESPERIENZE
   13. GRAND TOUR LANDING PAGE
   14. GRAND TOUR SINGOLA TAPPA
   15. WIZARD "INIZIA IL VIAGGIO"
   16. CONTATTI E PRESS AREA

   [ PARTE 4: FOOTER & EXTRA ]
   17. CTA LONELY PLANET
   18. FOOTER ISTITUZIONALE
   19. ANIMAZIONI E PERFORMANCE
   ========================================================================== */

/* ==========================================================================
   [ PARTE 1: CORE UI & NAVIGAZIONE ]
   ========================================================================== */

/* ─────────────────────────────────────────
   1. HEADER & TOP BAR
   ───────────────────────────────────────── */
.site-header {
	position:         sticky;
	top:              0;
	z-index:          var(--z-header);
	background-color: var(--color-background);
	border-bottom:    1px solid transparent; 
	transition:       background-color var(--duration-base) var(--ease), box-shadow var(--duration-base) var(--ease), transform var(--duration-base) var(--ease);
}

.site-header.is-scrolled {
	box-shadow: 0 0.25rem 0.75rem rgba(0,0,0,0.05);
	border-bottom-color: transparent;
}

/* Visibilità Strutturale Netta (Doppio DOM) */
@media (max-width: 1024px) {
	.header-desktop { display: none !important; }
}
@media (min-width: 1025px) {
	.header-mobile { display: none !important; }
}

/* Elementi Comuni: Logo */
.site-logo {
	display:     flex;
	align-items: center;
	flex-shrink: 0;
}
.site-logo img,
.site-logo svg {
	width:   auto;
	display: block;
}

/* Elementi Comuni: Navigazione */
.site-nav { display: flex; align-items: center; }

.nav-list {
	display:     flex;
	align-items: center;
	gap:         var(--space-2);
	list-style:  none;
}

.nav-item { position: static; }

.nav-link {
	display:         flex;
	align-items:     center;
	gap:             0.6rem;
	padding:         0.5rem 0.75rem;
	font-size:       clamp(1rem, 1.25vw, 1.125rem);
	font-weight: 	 500;
	letter-spacing:  0.01em;
	background:      none;
	border:          none;
	cursor:          pointer;
	text-decoration: none;
	white-space:     nowrap;
	position:        relative;
	color:           var(--color-black);
	transition:      color var(--duration-fast) var(--ease);
}

/* Bordo rosso — animazione dal centro */
.nav-link::after {
	content:          '';
	position:         absolute;
	bottom:           -0.25rem; 
	left:             0.75rem;
	width:            calc(100% - 1.5rem); 
	height:           0.125rem;
	background-color: var(--color-red);
	opacity:          0;
	transform:        scaleX(0); 
	transform-origin: center;
	transition:       transform var(--duration-slow) var(--ease-out),
	                  opacity var(--duration-slow) var(--ease-out);
}

.nav-trigger::after {
	width: calc(100% - 2.85rem); 
}

.nav-link:hover::after,
.nav-link.is-active::after,
.nav-link[aria-expanded="true"]::after {
	opacity:   1;
	transform: scaleX(1); 
}

.nav-chevron {
	display:     flex;
	align-items: center;
	flex-shrink: 0;
	color:       var(--color-grey);
}

/* Elementi Comuni: Bottoni e Icone */
.header-icon-btn {
	display:         flex;
	align-items:     center;
	justify-content: center;
	background:      none;
	border:          none;
	cursor:          pointer;
	position:        relative;
	text-decoration: none;
	color:           var(--color-black); 
	-webkit-appearance: none; 
	appearance:         none;
	transition:      color var(--duration-fast) var(--ease),
	                 background-color var(--duration-fast) var(--ease);
}

.icon-wrap {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
}

.favourites-dot {
	position:         absolute;
	top:              -0.125rem;
	right:            -0.25rem;
	width:            0.5rem;
	height:           0.5rem;
	background-color: var(--color-red);
	border-radius:    50%;
	display:          none;
	border:           0.125rem solid var(--color-white);
}

.favourites-dot.is-visible { display: block; }

.btn-primary {
	display:          inline-flex;
	align-items:      center;
	justify-content:  center;
	padding:          0.6rem 1.25rem;
	background-color: var(--color-red);
	color:            var(--color-white);
	font-size:        var(--fs-sm);
	font-weight:      600;
	letter-spacing:   0.02em;
	border-radius:    var(--radius-sm);
	text-decoration:  none;
	white-space:      nowrap;
	border:           none;
	cursor:           pointer;
	-webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
	text-shadow: 0 0 1px rgba(255, 255, 255, 0.25);
	transition:       background-color var(--duration-fast) var(--ease),
	                  transform var(--duration-fast) var(--ease);
}

.btn-primary:hover  { background-color: var(--color-red-deep);}
.btn-primary:active { transform: translateY(0); }

/* Stato Attivo Preferiti (Bottoni UI) */
.js-favourite.is-saved {
    color: var(--color-red) !important;
}
.js-favourite.is-saved svg path {
    fill: var(--color-red) !important;
}

/* ==========================================================
   WRAPPER CTA UNIVERSALE (Hub e Uscita Sezione)
   Riutilizzabile in tutto il sito.
   ========================================================== */
.cat-section-cta-wrapper {
    display: flex;
    justify-content: center;
    align-items: center;
    width: 100%;
    margin-top: var(--space-10); /* Respiro ampio dai dots o dalle card */
}

@media (max-width: 768px) {
    .cat-section-cta-wrapper {
        margin-top: var(--space-8); /* Su mobile stringiamo leggermente */
    }
    
    /* Su mobile il bottone prende tutto lo spazio disponibile */
    .cat-section-cta-wrapper .gt-btn-ghost,
    .cat-section-cta-wrapper .btn-primary {
        width: 100%;
        justify-content: center;
        text-align: center;
    }
}

/* --- Header Desktop --- */
@media (min-width: 1025px) {
	.site-logo img,
	.site-logo svg {
		height: 4.375rem;
	}

	.site-header {
		top: -2.5rem; 
	}

	.header-top-bar {
		display: flex;
		justify-content: flex-end;
		align-items: center; 
		height: 2.5rem;     
		opacity: 1;
		transition: opacity var(--duration-base) var(--ease);
	}
	
	.site-header.is-scrolled .header-top-bar {
		opacity: 0; 
		pointer-events: none;
	}

	.header-utilities {
		display: flex;
		align-items: center;
		gap: var(--space-6);
	}

	.header-utilities .header-icon-btn {
		width: auto;
		height: auto;
		flex-direction: row;
		gap: 0.375rem;
		padding: 0.25rem 0;
		border-radius: 0;
	}

	.header-utilities .header-icon-btn:hover {
		color: var(--color-red);
	}

	.header-utilities .icon-wrap {
		width: 1rem; 
		height: 1rem;
		color: var(--color-red);
	}
	
	.header-utilities .header-icon-label {
		display: block;
		font-size: var(--fs-xs);
		line-height: 1;
		letter-spacing: 0.01em;
	}

	.header-main-bar {
		display: grid;
		grid-template-columns: 1fr auto 1fr; 
		min-height: 5.625rem;
		padding-bottom: var(--space-4);
		padding-top: var(--space-4);
		transition: padding var(--duration-base) var(--ease);
		align-items: center;
	}
	
	.site-header.is-scrolled .header-main-bar {
		padding-top: var(--space-3); 
		padding-bottom: var(--space-3); 
	}

	.header-main-bar .header-left {
		display: flex;
		align-items: center;
		gap: var(--space-4);
		justify-self: start; 
	}

	.header-main-bar .site-tagline {
		display: block;
		font-size: 0.75rem;
		line-height: 1.2;
		color: var(--color-light-black);
		align-self: center;
		max-width: 25ch; 
		text-wrap: balance;
	}

	.header-main-bar .site-nav {
		justify-self: center; 
		width: auto;
	}

	.header-main-bar .header-right {
		justify-self: end; 
		display: flex;
		align-items: center;
	}
}

/* --- Header Mobile --- */
@media (max-width: 1024px) {
	.site-header.is-hidden-mobile {
		transform: translateY(-100%);
	}
	
	.header-mobile-inner {
		display: flex;
		align-items: center;
		justify-content: space-between;
		height: 4.5rem;
	}

	.site-logo img,
	.site-logo svg {
		height: 3.75rem;
	}

	.header-right-mobile {
		display: flex;
		align-items: center;
		gap: 0.25rem; 
	}

	.header-right-mobile .header-icon-btn {
		flex-direction: column;
		height: auto;
		width: auto;
		gap: 0.25rem;
		background: transparent; 
		border-radius: 0;
		padding: 0.25rem 0.125rem;
		display: flex;
		color: var(--color-black);
		-webkit-text-fill-color: var(--color-black);
	}

	.header-right-mobile .icon-wrap {
		width: 1.5rem;
		height: 1.5rem;
	}

	.header-right-mobile .header-icon-btn svg { color: var(--color-black); }

	.header-right-mobile .header-icon-btn:hover {
		background: transparent; 
		color: var(--color-red);
	}
	
	.header-right-mobile .header-icon-btn:hover svg { color: var(--color-red); }

	.header-right-mobile .header-icon-label {
		display: block;
		font-size: 0.625rem; 
		font-weight: 600;
		color: var(--color-black);
		line-height: 1;
		letter-spacing: 0.02em;
	}
}

/* --- Hamburger Button --- */
.hamburger-btn {
	background: transparent;
	border: none;
	cursor: pointer;
	z-index: 1000;
}

.hamburger-box {
	width: 1.5rem;
	height: 1.5rem;
	display: inline-block;
	position: relative;
}

.hamburger-inner {
	display: block;
	top: 50%;
	margin-top: -0.0625rem;
}

.hamburger-inner, 
.hamburger-inner::before, 
.hamburger-inner::after {
	width: 1.5rem;
	height: 0.125rem;
	background-color: var(--color-black);
	position: absolute;
	transition: transform 0.2s ease, opacity 0.2s ease, top 0.2s ease, bottom 0.2s ease;
	border-radius: 0.125rem;
}

.hamburger-inner::before, 
.hamburger-inner::after { content: ""; display: block; }
.hamburger-inner::before { top: -0.5rem; }
.hamburger-inner::after { bottom: -0.5rem; }

.hamburger-btn.is-active .hamburger-inner { transform: rotate(45deg); }
.hamburger-btn.is-active .hamburger-inner::before { top: 0; opacity: 0; }
.hamburger-btn.is-active .hamburger-inner::after { bottom: 0; transform: rotate(-90deg); }

/* ─────────────────────────────────────────
   2. MEGA MENU
   ───────────────────────────────────────── */
.megamenu {
	position:         absolute;
	top:              100%;
	left:             0;
	width:            100vw;
	height:           clamp(23rem, 5rem + 26vw, 30rem);
	background-color: var(--color-background);
	transform:        none;
	clip-path:        inset(0 0 100% 0);
	pointer-events:   none;
	box-shadow:       0 0.5rem 1.5rem rgba(0,0,0,0.08), 0 1px 0 rgba(0,0,0,0.04);
	will-change:      transform, opacity;
}

.megamenu::after {
	content:        '';
	position:       absolute;
	bottom:         0;
	left:           0;
	right:          0;
	height:         0.25rem;
	background:     linear-gradient(to bottom, transparent, rgba(0,0,0,0.05));
	pointer-events: none;
}

.megamenu.is-open { pointer-events: auto; }

.megamenu-inner {
	display:               grid;
	grid-template-columns: repeat(22, 1fr);
	grid-template-rows:    auto 1fr;
	gap:                   1.5rem;
	padding-top:           var(--space-10);
	padding-bottom:        var(--space-24);
	padding-inline:        var(--px-container);
	height:                100%;
	will-change:           transform, opacity;
}

.megamenu-heading-group {
	grid-column:    1 / 8;
	display:        flex;
	flex-direction: column;
	gap:            var(--space-3);
	align-items:    flex-start;
}

.megamenu-eyebrow {
	font-size:      0.75rem; 
	font-weight:    700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color:          var(--color-light-black);
	line-height:    1;
}

.megamenu-title {
	font-family:   var(--font-display);
	font-size:     var(--fs-lg);
	font-weight:   600;
	line-height:   var(--lh-snug);
	margin:        0;
}

.megamenu-title a {
	text-decoration: none;
	color:           var(--color-black);
	transition:      color 0.3s ease;
}

.megamenu-title a:hover {
	color: var(--color-red);
}

.megamenu-list {
	grid-column:    1 / 8;
	grid-row:       2 / 3;
	display:        flex;
	flex-direction: column;
	gap:            var(--space-2);
	align-self:     start;
}

.megamenu-list--icons {
	display:               grid;
	grid-template-columns: 1fr 1fr;
	align-content:         start;
	gap:                   var(--space-3) var(--space-6);
}

.megamenu-list--2cols {
	display:               grid;
	grid-template-columns: 1fr 1fr;
	grid-template-rows:    repeat(5, auto); 
	grid-auto-flow:        column;
	gap:                   var(--space-2) var(--space-4);
	align-content:         start;
}

.megamenu-link {
	display:               grid;
	grid-template-columns: auto 1fr;
	align-items:           center;
	column-gap:            var(--space-3);
	padding:               var(--space-2) var(--space-3); 
	margin-left:           calc(var(--space-3) * -1); 
	color:                 var(--color-black);
	text-decoration:       none;
	border-radius:         var(--radius-sm);
	white-space:           nowrap;
	transition:            color 0.3s ease;
}

.megamenu-link-textonly {
	display:               flex;
	align-items:           center;
	padding:               var(--space-2) var(--space-3); 
	margin-left:           calc(var(--space-3) * -1); 
	color:                 var(--color-black);
	text-decoration:       none;
	border-radius:         var(--radius-sm);
	white-space:           nowrap;
	transition:            color 0.3s ease;
}

.megamenu-link:hover,
.megamenu-link.is-active,
.megamenu-link-textonly:hover,
.megamenu-link-textonly.is-active {
	color: var(--color-red);
}

.megamenu-link-text { line-height: 1; }

.megamenu-icon {
	display:         flex; 
	align-items:     center;
	justify-content: center;
	width:           1.5rem; 
	flex-shrink:     0;
	color:           currentColor; 
	opacity:         0.6;
	transition:      color 0.3s ease, opacity 0.3s ease;
}

.megamenu-icon svg { width: 100%; height: auto; display: block; overflow: visible; }

.megamenu-link:hover .megamenu-icon,
.megamenu-link.is-active .megamenu-icon {
	opacity: 1;
}

.megamenu-cards-group {
	grid-column:           9 / 23; 
	grid-row:              1 / 3;  
	display:               grid;
	grid-template-columns: repeat(3, 1fr);
	gap:                   var(--space-4);
	opacity:               0;
	visibility:			   hidden;
	pointer-events:        none;
	list-style:            none;
	padding:               0;
	margin:                0;
}

.megamenu-cards-group.is-active {
	opacity:        1;
	visibility:     visible;
	pointer-events: auto;
	z-index:        2; 
}

.megamenu-card {
	display:         block;
	text-decoration: none;
	border-radius:   var(--radius-lg);
	overflow:        hidden;
	position:        relative;
	height:          100%;
}

.megamenu-card img {
	position:   absolute;
	inset:      0;
	width:      100%;
	height:     100%;
	object-fit: cover;
	display:    block;
	transition: transform var(--duration-slow) var(--ease);
}

.megamenu-card:hover img { transform: scale(1.04); }

.megamenu-card::before {
	content:       '';
	position:      absolute;
	inset:         0;
	background:    linear-gradient(to top, rgba(0,0,0,0.8) 0%, rgba(0,0,0,0) 40%);
	z-index:       1;
	border-radius: var(--radius-lg);
}

.megamenu-card-info {
	position:       absolute;
	bottom:         0;
	left:           0;
	right:          0;
	padding:        var(--space-6);
	z-index:        2;
	display:        flex;
	flex-direction: column;
	gap:            var(--space-2);
}

.megamenu-card-label {
	font-size:      var(--fs-xs);
	font-weight:    600;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	color:          var(--color-white);
	line-height:    1;
	opacity:        0.9;
}

.megamenu-card-title {
	font-size:   var(--fs-lg);
	font-weight: 500;
	color:       var(--color-white);
	line-height: var(--lh-tight);
}

.megamenu-backdrop {
	position:         fixed;
	inset:            0;
	background-color: rgba(0,0,0,0);
	z-index:          calc(var(--z-header) - 1);
	pointer-events:   none;
	transition:       background-color var(--duration-slow) var(--ease);
}

.megamenu-backdrop.is-active {
	background-color: rgba(0,0,0,0.3);
	pointer-events:   auto;
}

/* ─────────────────────────────────────────
   3. MOBILE DRILL-DOWN MENU
   ───────────────────────────────────────── */
@media (min-width: 1025px) {
	.mobile-nav-overlay { display: none !important; }
}

@media (max-width: 1024px) {
	.mobile-nav-overlay {
		position: fixed;
		top: 4.5rem; 
		left: 0;
		width: 100%;
		height: calc(100vh - 4.5rem);
		height: calc(100dvh - 4.5rem);
		background-color: var(--color-background);
		z-index: 999;
		overflow: hidden;
		opacity: 0;
		pointer-events: none;
		visibility: hidden;
		will-change: transform, opacity;
	}

	.mobile-nav-panel {
		position: absolute;
		top: 0;
		left: 0;
		width: 100%;
		height: 100%;
		background-color: var(--color-background);
		overflow-y: auto; 
		-webkit-overflow-scrolling: touch;
		padding-bottom: 0;
		will-change: transform, opacity;
	}

	.mobile-nav-panel--main { transform: translateX(0); z-index: 1; }
	.mobile-nav-panel--sub { transform: translateX(100%); z-index: 2; }

	.mobile-nav-list {
		list-style: none;
		padding: 0;
		margin: 0;
		padding-inline: var(--px-container);
	}

	.mobile-nav-link {
		display: flex;
		align-items: center;
		justify-content: space-between;
		padding: 1.25rem 0;
		font-size: var(--fs-lg);
		color: var(--color-black);
		font-weight: 500;
		text-decoration: none;
		border-bottom: 0.0625rem solid #EAEAEA; 
		background: none;
		border-top: none;
		border-left: none;
		border-right: none;
		width: 100%;
		text-align: left;
		cursor: pointer;
	}

	.mobile-nav-label { display: flex; align-items: center; gap: 1rem; flex-wrap: nowrap; }
	.mobile-nav-chevron { display: flex; align-items: center; justify-content: center; }
	.mobile-nav-chevron svg { fill: var(--color-grey); }
	.mobile-nav-icon { display: flex; align-items: center; flex-wrap: nowrap; }
	.mobile-nav-icon svg { flex-shrink: 0; display: block; }

	.mobile-nav-header {
		position: sticky;
		top: 0;
		background-color: #F8F8F8; 
		z-index: 10;
		border-bottom: 0.0625rem solid #EAEAEA; 
	}

	.mobile-nav-back {
		display: flex;
		align-items: center;
		gap: 0.5rem;
		padding: 1rem 1.25rem;
		width: 100%;
		background: none;
		border: none;
		font-size: 1rem;
		color: var(--color-black);
		cursor: pointer;
	}

	.mobile-nav-title-group { padding: 2rem 1.25rem 1rem; }
	.mobile-nav-title { font-size: 1.75rem; margin: 0; line-height: 1.2; }
	.mobile-nav-subtitle { display: block; color: #666; margin-top: 0.25rem; }

	.mobile-nav-footer { padding: 2.5rem 1.25rem; text-align: center; }

	.mobile-nav-cta {
		display: block;
		width: 100%; 
		padding: 1rem;
		background-color: var(--color-red); 
		color: var(--color-white);
		border-radius: var(--radius-sm);
		font-size: var(--fs-base);
		text-decoration: none;
		margin-bottom: 2rem;
	}

	.mobile-nav-social { display: flex; justify-content: center; gap: 1.5rem; margin-bottom: var(--space-10);}
	.mobile-nav-social a {
		display: inline-flex;
		align-items: center;
		justify-content: center;
		width: 2rem;
		height: 2rem;
		color: var(--color-black);
	}
	.mobile-nav-social svg { width: 100%; height: 100%; display: block; }

	.mobile-nav-tagline { font-size: var(--fs-sm); text-align: center; margin: var(--space-12) 0;}

	.mobile-nav-promo {
		margin-top: var(--space-20);
		margin-bottom: env(safe-area-inset-bottom);
		padding: clamp(2rem, 5vw, 3rem) var(--px-container);
		display: flex;
		justify-content: center;
		background-color: var(--color-cream);
	}

	.mobile-teaser-card {
		display: flex;
		align-items: center;
		background-color: var(--color-cream); 
		border-radius: var(--radius-lg); 
		text-decoration: none;
		position: relative;
		gap: clamp(0.75rem, 2vw, 1.25rem);
		width: 100%;
		transition: background-color var(--duration-fast) var(--ease);
	}

	.mobile-teaser-card:active { background-color: var(--color-cream-dark); }
	.teaser-content { flex: 1; z-index: 2; }
	.teaser-kicker {
		display: block;
		font-size: clamp(0.6875rem, 2vw, 0.75rem); 
		letter-spacing: 0.02em;
		color: var(--color-light-black);
		margin-bottom: 0.5rem;
	}

	.teaser-title {
		font-size: clamp(1.25rem, 4vw, 1.5rem); 
		font-weight: 700;
		color: var(--color-black);
		margin: 0 0 0.5rem 0;
		line-height: 1.1;
	}

	.teaser-desc {
		font-size: clamp(0.8125rem, 2.5vw, 0.875rem); 
		color: var(--color-light-black);
		margin: 0 0 1rem 0;
		line-height: 1.4;
	}

	.teaser-btn {
		display: inline-block;
		background-color: var(--color-red);
		color: var(--color-white);
		font-size: 0.75rem;
		font-weight: 600;
		padding: 0.625rem 1rem;
		border-radius: var(--radius-sm);
		text-transform: uppercase;
		letter-spacing: 0.02em;
	}

	.teaser-image-wrap {
		width: clamp(5.5rem, 15vw, 6.5rem);
		height: clamp(6.5rem, 18vw, 7.5rem);
		flex-shrink: 0;
		position: relative;
		z-index: 2;
	}

	.teaser-image-wrap img { display: block; border-radius: var(--radius-xs); height: auto; }

	.teaser-img-back {
		position: absolute;
		top: 0; left: 0;
		width: 70%; 
		z-index: 1;
		box-shadow: 0 0.25rem 0.5rem rgba(0,0,0,0.1);
		transform: translate(-12%, -17%);
	}

	.teaser-img-front {
		position: absolute;
		bottom: 0; right: 0;
		width: 78%; 
		z-index: 2;
		box-shadow: -0.25rem 0.5rem 1rem rgba(0,0,0,0.25);
	}
}

/* ─────────────────────────────────────────
   4. SEARCH OVERLAY
   ───────────────────────────────────────── */
dialog.search-overlay {
	margin:           auto;
	padding:          0;
	border:           none;
	width:            100vw;
	height:           100vh;
	max-width:        none;
	max-height:       none;
	background-color: transparent;
}

dialog.search-overlay::backdrop {
	background-color: rgba(255,255,255,0.98);
	backdrop-filter:  blur(8px);
}

.search-overlay-inner {
	width:      100%;
	max-width:  42rem;
	padding:    var(--space-8);
	margin:     15vh auto 0;
	position:   relative;
	opacity:    0;
	will-change: transform, opacity;
}

.search-close {
	position:        absolute;
	top:             -3rem;
	right:           0;
	width:           2.5rem;
	height:          2.5rem;
	display:         flex;
	align-items:     center;
	justify-content: center;
	color:           var(--color-black);
	background:      none;
	border:          none;
	cursor:          pointer;
	border-radius:   50%;
	transition:      color var(--duration-fast) var(--ease),
	                 background-color var(--duration-fast) var(--ease);
}

.search-close:hover {
	color:            var(--color-red);
	background-color: rgba(227,6,19,0.05);
}

.search-content { display: flex; flex-direction: column; gap: var(--space-6); }

.search-label {
	font-family: var(--font-display);
	font-size:   var(--fs-2xl);
	font-weight: 400;
	text-align:  center;
}

.search-input {
	width:            100%;
	padding:          var(--space-4) var(--space-6);
	font-size:        var(--fs-lg);
	background-color: var(--color-cream);
	border:           2px solid transparent;
	border-radius:    var(--radius-lg);
	outline:          none;
	transition:       border-color var(--duration-fast) var(--ease);
	-webkit-appearance: none;
	appearance:       none;
}

.search-input:focus { border-color: var(--color-red); }
.search-input::placeholder { color: var(--color-grey); }

.search-results { display: flex; flex-direction: column; gap: var(--space-2); }

.search-result-item {
	display:         flex;
	align-items:     center;
	gap:             var(--space-4);
	padding:         var(--space-3) var(--space-4);
	text-decoration: none;
	border-radius:   var(--radius-md);
	transition:      background-color var(--duration-fast) var(--ease);
}

.search-result-item:hover { background-color: var(--color-cream); }

.search-result-thumb {
	width:            3rem;
	height:           3rem;
	border-radius:    var(--radius-md);
	overflow:         hidden;
	flex-shrink:      0;
	background-color: var(--color-cream);
}

.search-result-thumb img { width: 100%; height: 100%; object-fit: cover; }

.search-result-info {
	display:        flex;
	flex-direction: column;
	gap:            var(--space-1);
	flex:           1;
	min-width:      0;
}

.search-result-type {
	font-size:      var(--fs-xs);
	font-weight:    700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color:          var(--color-light-black);
}

.search-result-title {
	font-size:     var(--fs-base);
	font-weight:   500;
	white-space:   nowrap;
	overflow:      hidden;
	text-overflow: ellipsis;
}

.search-results-empty {
	text-align: center;
	color:      var(--color-light-black);
	padding:    var(--space-8) 0;
}

/* ==========================================================================
   [ PARTE 2: MOTORI DI LAYOUT GLOBALI ]
   ========================================================================== */

/* ─────────────────────────────────────────
   5. HERO & PAGE HEADERS
   ───────────────────────────────────────── */

/* Wrappers Unificati (1440px -> 90rem) */
.cat-hero-wrapper,
.gt-hero-wrapper,
.hp-hero-wrapper {
	width: min(90rem, 100% - (var(--px-container) * 2));
	margin-inline: auto;
}
.cat-hero-wrapper { margin-bottom: var(--space-20); }

/* Archive Hero Header (Landing Eventi, Destinazioni) */
.archive-hero-header {
    padding-top: var(--space-16);
    padding-bottom: var(--space-10);
    background-color: var(--color-background); 
}
.archive-hero-header__inner {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    max-width: 51.25rem; /* 820px */
    margin-inline: auto;
}
.archive-hero-header__title {
    font-family: var(--font-display);
    font-size: var(--fs-3xl);
    font-weight: 600;
    line-height: 1.1;
    color: var(--color-black);
    margin-bottom: var(--space-4);
    text-wrap: balance;
}
.archive-hero-header__subtitle {
    font-family: var(--font-body);
    font-size: var(--fs-lg);
    color: var(--color-light-black);
    margin: 0;
    text-wrap: balance;
}

/* ─────────────────────────────────────────
   ANIMAZIONI HERO NATIVE (Sostituiscono GSAP)
   ───────────────────────────────────────── */

/* 1. Titolo Hero (Ottimizzato per PageSpeed: Veloce e senza ritardo) */
.gsap-hero-title {
    opacity: 0;
    transform: translateY(-20px); /* Movimento dimezzato per essere fluido anche se velocissimo */
    /* Durata: 0.4s | Ritardo: 0s */
    animation: heroTitleReveal 0.4s cubic-bezier(0.165, 0.84, 0.44, 1) 0s forwards;
    will-change: transform, opacity;
}

@keyframes heroTitleReveal {
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* 2. Sottotitolo Hero (Ottimizzato per PageSpeed: Segue subito il titolo) */
.gsap-hero-subtitle {
    opacity: 0;
    /* Durata: 0.4s | Ritardo: 0.1s */
    animation: heroSubtitleReveal 0.4s cubic-bezier(0.215, 0.61, 0.355, 1) 0.1s forwards;
    will-change: opacity;
}

@keyframes heroSubtitleReveal {
    to {
        opacity: 0.95;
    }
}                

/* ─────────────────────────────────────────
   6. GRIGLIE E CARDS UNIVERSALI
   ───────────────────────────────────────── */

/* Segno di Fine Articolo (Fleuron Editoriale) */
.cat-editorial-divider {
	display: grid;
	grid-template-columns: 1fr auto 1fr;
	align-items: center;
	gap: var(--space-8);
	width: min(var(--w-header), 100% - (var(--px-container) * 2));
	margin-inline: auto;
	margin-top: var(--space-20);
}
.cat-editorial-divider::before,
.cat-editorial-divider::after {
	content: '';
	display: block;
	height: 1px;
	background-color: rgba(0,0,0,0.09); 
}
.cat-fleuron-wrapper {
	display: block;
	width: 7.5rem; /* 120px -> rem */
	min-width: 7.5rem;
}
.cat-fleuron-wrapper img { width: 100%; height: auto; display: block; }

@media (max-width: 768px) {
	.cat-fleuron-wrapper { width: 6rem; min-width: 6rem; }
}

/* Sezione Correlati (Universale) */
.cat-related-section {
	background-color: transparent; 
	padding-top: var(--space-16); 
	padding-bottom: var(--space-16);
	margin-top: var(--space-24); 
}
.cat-related-section--event { margin-top: var(--space-24); }

.cat-related-inner {
	width: 100%;
	max-width: var(--w-header);
	margin-inline: auto;
	padding-inline: var(--px-container);
}
.cat-related-title {
	font-family: var(--font-display);
	font-size: var(--fs-xl);
	font-weight: 600;
	margin-bottom: var(--space-10);
	margin-top: var(--space-12);
}
.cat-related-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: var(--space-8);
}

/* Card 1: Articolo Standard */
.cat-article-card {
	text-decoration: none;
	display: flex;
	flex-direction: column;
	gap: var(--space-4);
	transition: transform var(--duration-fast) var(--ease);
}
.cat-article-card:hover { transform: translateY(-4px); }
.cat-article-card__thumb {
	width: 100%;
	aspect-ratio: 3 / 2;
	overflow: hidden;
	border-radius: var(--radius-md);
}
.cat-article-card__thumb img {
	width: 100%; height: 100%; object-fit: cover;
	transition: transform var(--duration-slow) var(--ease);
}
.cat-article-card:hover .cat-article-card__thumb img { transform: scale(1.05); }
.cat-article-card__title {
	font-size: var(--fs-lg); color: var(--color-black);
	line-height: 1.3; font-weight: 600; margin: 0;
}

/* Card 2, 3, 4: Master Component (Stili Condivisi per Evento, Wizard, Correlati) */
.cat-event-card, .cat-wizard-card, .cat-related-card {
	background-color: var(--color-white);
	border-radius: var(--radius-lg);
	overflow: hidden;
	box-shadow: 0 0.25rem 1.5rem rgba(0,0,0, 0.06); 
	transition: transform var(--duration-fast) var(--ease), box-shadow var(--duration-fast) var(--ease);
    position: relative; /* Per bottoni cuore/preferiti */
}
.cat-event-card__link, .cat-wizard-card__link, .cat-related-card__link {
	display: flex; flex-direction: column; text-decoration: none; height: 100%;
}
.cat-event-card__visual, .cat-wizard-card__visual, .cat-related-card__visual {
	position: relative; width: 100%; overflow: hidden;
}
.cat-event-card__img, .cat-wizard-card__img, .cat-related-card__img {
	width: 100%; height: 100%; object-fit: cover; display: block;
	transition: transform var(--duration-slow) var(--ease); will-change: transform;
}
.cat-event-card:hover .cat-event-card__img,
.cat-wizard-card:hover .cat-wizard-card__img,
.cat-related-card:hover .cat-related-card__img {
	transform: scale(1.05) translateZ(0);
}
.cat-event-card__label, .cat-wizard-card__label, .cat-related-card__label {
	position: absolute; bottom: -1px; left: -1px;
	font-size: 0.6875rem; font-weight: 700; text-transform: uppercase;
	letter-spacing: 0.05em; padding: 0.375rem 0.75rem; z-index: 2; border-top-right-radius: var(--radius-sm);
}
/* Colori Label Specifici */
.cat-event-card__label { color: var(--color-white); }
.cat-wizard-card__label, .cat-related-card__label { background-color: var(--color-cream); color: var(--color-black); }

.cat-event-card__content, .cat-wizard-card__content, .cat-related-card__content {
	padding: var(--space-6); display: flex; flex-direction: column; flex-grow: 1; gap: var(--space-4);
}
.cat-event-card__title, .cat-wizard-card__title, .cat-related-card__title {
	font-size: var(--fs-lg); font-weight: 600; line-height: 1.3; color: var(--color-black); margin: 0;
	transition: color var(--duration-fast) var(--ease);
}
.cat-event-card:hover .cat-event-card__title,
.cat-wizard-card:hover .cat-wizard-card__title,
.cat-related-card:hover .cat-related-card__title {
	color: var(--color-red);
}

/* Event Card Specifics */
.cat-event-card__meta { display: flex; flex-direction: column; gap: var(--space-2); margin-top: auto; }
.cat-event-card__meta-item { display: flex; align-items: center; gap: var(--space-2); margin-bottom: var(--space-2); }
.cat-event-card__meta-icon { color: var(--color-light-black); width: 1.125rem; display: flex; align-items: center; justify-content: center; }
.cat-event-card__meta-icon svg { width: 100%; height: auto; }
.cat-event-card__meta-text { font-size: var(--fs-sm); color: var(--color-light-black); line-height: 1; font-weight: 500; }

/* Wizard & Related Excerpts */
.cat-wizard-card__excerpt, .cat-related-card__excerpt {
    color: var(--color-light-black); font-size: var(--fs-sm); margin: 0;
    display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; text-overflow: ellipsis;
}

/* --- Bottone Wizard Load More (Centrato con Linea Passante) --- */
.wizard-load-more {
    grid-column: 1 / -1; /* Sblocca il contenitore su tutta la griglia */
    position: relative; 
    display: flex; 
    justify-content: center; 
    align-items: center;
    margin-top: var(--space-12); 
    margin-bottom: var(--space-4); 
    width: 100%;
    z-index: 1; /* Crea un recinto (Stacking Context) isolato per la linea */
}

/* La linea che attraversa tutto lo schermo */
.wizard-load-more::before {
    content: '';
    position: absolute;
    top: 50%;
    left: 0;
    width: 100%; /* Forza fisicamente l'estensione su tutte le colonne */
    height: 1px;
    background-color: rgba(0, 0, 0, 0.1); /* Colore della linea grigio chiaro */
    z-index: -1; /* Nasconde la linea ESATTAMENTE dietro il bottone */
}

/* Assicuriamoci che il bottone abbia un fondo pieno per "tagliare" la linea */
.wizard-load-more .btn-wizard-expand {
    position: relative;
    background-color: #ffffff; /* Copre la linea che ci passa sotto */
    /* Aggiungi un po' di margine o padding orizzontale se serve staccare la linea dal testo */
}
.btn-wizard-expand {
	position: relative; z-index: 1; background-color: var(--color-background); color: var(--color-black);
	border: 1px solid rgba(0, 0, 0, 0.1); padding: 0.75rem 2rem; border-radius: var(--radius-sm);
	font-family: inherit; font-weight: 600; font-size: 1rem; cursor: pointer; display: inline-flex; align-items: center; gap: 0.5rem;
	transition: all var(--duration-fast) var(--ease); box-shadow: 0 0.25rem 0.75rem rgba(0,0,0, 0.03);
}
.btn-wizard-expand:hover {
	border-color: var(--color-red); box-shadow: 0 0.5rem 1rem rgba(0,0,0, 0.08);
}
.btn-wizard-expand svg { transition: transform var(--duration-fast) var(--ease); }

/* --- RESPONSIVE GRIGLIA CORRELATI E ARTICOLI (Mobile Slider Full-Bleed) --- */
@media (max-width: 1024px) {
    /* 1. Rimuove la ghigliottina sui padri */
    .cat-related-section,
    .cat-related-inner {
        overflow: visible;
    }

    /* 2. Applica la logica Slider al Grid */
    .cat-related-grid {
        display: flex;
        flex-wrap: nowrap;
        overflow-x: auto;
        scroll-snap-type: x mandatory;
        scroll-padding-inline-start: var(--px-container);

        width: 100vw;
        margin-left: calc(50% - 50vw);
        margin-right: calc(50% - 50vw);
        padding-left: var(--px-container);
        padding-right: 12.5vw;

        gap: var(--space-4);
        padding-bottom: var(--space-8);
        scrollbar-width: none;
        -webkit-overflow-scrolling: touch;
    }

    .cat-related-grid::-webkit-scrollbar {
        display: none;
    }

    /* 3. Dimensiona fluidamente tutte le card figlie */
    .cat-related-grid > * {
        flex: 0 0 85%;
        max-width: 85%;
        scroll-snap-align: start;
        flex-shrink: 0;
        /* Nessun box-shadow da aggiungere qui: le singole card di sistema lo hanno già! */
    }
}

@media (max-width: 768px) {
    /* 4. Stringe su smartphone per l'affordance (spicchio destro) */
    .cat-related-grid > * {
        flex: 0 0 75vw;
        max-width: 75vw;
    }
}

/* ==========================================================================
   [ PARTE 3: TEMPLATE EDITORIALI E DI PAGINA ]
   ========================================================================== */

/* ─────────────────────────────────────────
   7. SMART BAR & FILTRI
   ───────────────────────────────────────── */
.filters-bar-wrapper {
    position: sticky;
    top: var(--filter-bar-top, 5.875rem); 
    background-color: var(--color-background);
    border-bottom: 1px solid rgba(0, 0, 0, 0.08);
    padding-block: var(--space-6);
    z-index: 300;
    margin-bottom: var(--space-16);
    transition: top var(--duration-base) var(--ease);
}

@media (max-width: 768px) {
	.filters-bar-wrapper {
		top: var(--filter-bar-top, 4.5rem);
	}
}

.filters-inner { display: flex; align-items: center; }

.filters-group {
    display: flex;
    gap: var(--space-3);
    flex-wrap: wrap;
    width: 100%;
}

.filter-wrap { position: relative; }

.filter-trigger {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    background-color: var(--color-cream);
    border: 1px solid transparent;
    padding: 0.65rem 1.25rem;
    border-radius: var(--radius-sm);
    font-size: var(--fs-sm);
    font-weight: 600;
    color: var(--color-black);
    transition: all 0.2s;
    white-space: nowrap;
}

.filter-trigger[aria-expanded="true"] {
    border-color: var(--color-black);
    background-color: var(--color-white);
}

@media (hover: hover) {
    .filter-trigger:hover {
        border-color: var(--color-black);
        background-color: var(--color-white);
    }
}

.filter-trigger.has-selection {
    border-color: var(--color-red);
    background-color: var(--color-white);
}

.filter-trigger.has-selection .filter-icon { color: var(--color-red); }

.filter-icon {
    width: 1.125rem;
    height: 1.125rem;
    min-width: 1.125rem; 
    color: var(--color-grey);
    display: flex;
    transition: color 0.2s;
    flex-shrink: 0;
}

.filter-label {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.filter-chevron {
    width: 1rem;
    height: 1rem;
    min-width: 1rem; 
    color: var(--color-grey);
    transition: transform 0.2s;
    display: flex;
    align-items: center;
    margin-left: auto;
    flex-shrink: 0;
}

.filter-trigger[aria-expanded="true"] .filter-chevron { transform: rotate(180deg); }
.filter-trigger.has-selection .filter-chevron { display: none; }

.filter-clear {
    display: none;
    width: 1.25rem;
    height: 1.25rem;
    align-items: center;
    justify-content: center;
    color: var(--color-black);
    border-radius: 50%;
    margin-left: auto;
    transition: background 0.2s, color 0.2s;
    flex-shrink: 0;
	position: relative; 
}

.filter-clear::after {
	content: '';
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
	width: 2.75rem;
	height: 2.75rem;
	background: transparent;
	border-radius: 50%;
	z-index: 1;
}

@media (hover: hover) {
    .filter-clear:hover {
        background-color: rgba(227, 6, 19, 0.1);
        color: var(--color-red);
    }
}
.filter-clear:active {
    background-color: rgba(227, 6, 19, 0.1);
    color: var(--color-red);
}

.filter-clear svg { width: 1rem; height: 1rem; stroke-width: 2.5; }
.filter-trigger.has-selection .filter-clear { display: flex; }

/* ─────────────────────────────────────────
   7.1 DROPDOWN CUSTOM (Categorie e Località)
   ───────────────────────────────────────── */
.custom-dropdown {
    position: absolute;
    top: calc(100% + 1rem);
    left: 0;
    background: var(--color-white); 
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-dropdown);
    min-width: 17.5rem; 
    opacity: 0;
    visibility: hidden;
    transform: translateY(-0.625rem);
    transition: opacity 0.3s ease, transform 0.3s ease, visibility 0.3s ease;
    z-index: 350;
    overflow: hidden;
    border: 1px solid rgba(0, 0, 0, 0.05);
}

.custom-dropdown.is-open {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
}

.cat-list { padding: var(--space-3); }

.cat-item {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.5rem;
    cursor: pointer;
    border-radius: var(--radius-md);
    transition: background 0.2s;
}

.cat-item:hover { background-color: var(--color-cream); }

.cat-checkbox {
    width: 1.125rem;
    height: 1.125rem;
    accent-color: var(--color-red);
    cursor: pointer;
}

.cat-dot {
    width: 0.75rem;
    height: 0.75rem;
    border-radius: 50%;
    display: inline-block;
    flex-shrink: 0;
}

.cat-label {
    font-size: var(--fs-base); 
    font-weight: 500;
    cursor: pointer;
    user-select: none;
}

/* ─────────────────────────────────────────
   7.2 FLATPICKR OVERRIDES (Design Desktop)
   ───────────────────────────────────────── */
body .flatpickr-calendar {
    width: 23.75rem !important; 
    background: var(--color-white) !important; 
    box-shadow: var(--shadow-dropdown);
    border: 1px solid rgba(0, 0, 0, 0.05);
    border-radius: var(--radius-lg);
    font-family: var(--font-body);
    padding: 0;
	margin-top: 1rem;
}

body .flatpickr-calendar::before,
body .flatpickr-calendar::after { display: none !important; }

body .flatpickr-calendar .flatpickr-months {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem 0;
}

body .flatpickr-calendar .flatpickr-months .flatpickr-prev-month, 
body .flatpickr-calendar .flatpickr-months .flatpickr-next-month {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    height: auto;
    padding: 1rem;
    z-index: 3;
}

body .flatpickr-calendar .flatpickr-months .flatpickr-prev-month { left: 0.5rem; }
body .flatpickr-calendar .flatpickr-months .flatpickr-next-month { right: 0.5rem; }

body .flatpickr-calendar .flatpickr-months .flatpickr-prev-month.flatpickr-disabled, 
body .flatpickr-calendar .flatpickr-months .flatpickr-next-month.flatpickr-disabled {
    display: block !important; opacity: 0.2; cursor: default; pointer-events: none;
}

body .flatpickr-calendar .flatpickr-current-month {
    display: flex; justify-content: center; align-items: center; gap: 0.35rem;
    font-size: 1.15rem; font-weight: 800; color: var(--color-black); padding: 0; width: 100%; left: 0;
}

body .flatpickr-calendar .flatpickr-month { background: transparent; }
body .flatpickr-calendar .flatpickr-current-month span.cur-month { font-weight: 800; color: var(--color-black); margin: 0; }
body .flatpickr-calendar .flatpickr-current-month input.cur-year { font-family: inherit; font-weight: 800; font-size: 1.15rem; color: var(--color-black); padding: 0; display: inline-block; }
body .flatpickr-calendar .numInputWrapper span.arrowUp, 
body .flatpickr-calendar .numInputWrapper span.arrowDown { display: none; } 

body .flatpickr-calendar .flatpickr-innerContainer { padding: 0 1.25rem 0.5rem 1.25rem; display: flex; justify-content: center; }
body .flatpickr-calendar span.flatpickr-weekday { text-transform: uppercase; font-size: 0.8125rem; font-weight: 800; color: var(--color-light-black); letter-spacing: 0.05em; }

body .flatpickr-calendar .flatpickr-day {
    max-width: 2.75rem; height: 2.75rem; line-height: 2.75rem; font-size: 1.05rem; font-weight: 600; border-radius: 50px;
}

body .flatpickr-calendar .flatpickr-day.today { border-color: transparent; }

body .flatpickr-calendar .flatpickr-day:hover { background: var(--color-black) !important; border-color: var(--color-black) !important; color: white !important; }

body .flatpickr-calendar .flatpickr-day.flatpickr-disabled, 
body .flatpickr-calendar .flatpickr-day.flatpickr-disabled:hover { color: #D0D0D0 !important; background: transparent !important; border-color: transparent !important; font-weight: 400; }

body .flatpickr-calendar .flatpickr-day.selected, 
body .flatpickr-calendar .flatpickr-day.startRange, 
body .flatpickr-calendar .flatpickr-day.endRange, 
body .flatpickr-calendar .flatpickr-day.selected.inRange, 
body .flatpickr-calendar .flatpickr-day.startRange.inRange, 
body .flatpickr-calendar .flatpickr-day.endRange.inRange, 
body .flatpickr-calendar .flatpickr-day.selected:focus, 
body .flatpickr-calendar .flatpickr-day.startRange:focus, 
body .flatpickr-calendar .flatpickr-day.endRange:focus, 
body .flatpickr-calendar .flatpickr-day.selected:hover, 
body .flatpickr-calendar .flatpickr-day.startRange:hover, 
body .flatpickr-calendar .flatpickr-day.endRange:hover, 
body .flatpickr-calendar .flatpickr-day.inRange, 
body .flatpickr-calendar .flatpickr-day.inRange:hover {
    background: var(--color-black) !important; border-color: var(--color-black) !important; color: white !important;
}

body .flatpickr-calendar .flatpickr-day.inRange, 
body .flatpickr-calendar .flatpickr-day.inRange:hover {
    border-radius: 0 !important; box-shadow: -0.3125rem 0 0 var(--color-black), 0.3125rem 0 0 var(--color-black) !important;
}

body .flatpickr-calendar .flatpickr-day.startRange { border-radius: 50px 0 0 50px !important; }
body .flatpickr-calendar .flatpickr-day.endRange { border-radius: 0 50px 50px 0 !important; }
body .flatpickr-calendar .flatpickr-day.startRange.endRange { border-radius: 50px !important; }

/* ─────────────────────────────────────────
   7.3 BOTTONI RAPIDI DATE
   ───────────────────────────────────────── */
.dice-quick-dates {
    display: flex; gap: 0.375rem; background-color: var(--color-cream); padding: 1rem; border-bottom: 1px solid rgba(0, 0, 0, 0.05);
}

.dice-btn {
    background: var(--color-white); border: 1px solid rgba(0, 0, 0, 0.1); padding: 0.25rem 0.75rem; border-radius: var(--radius-sm);
    font-size: 0.75rem; font-weight: 800; cursor: pointer; transition: 0.2s; text-transform: uppercase; letter-spacing: 0.05em; color: var(--color-black);
}

.dice-btn:hover { background: var(--color-black); color: var(--color-white); border-color: var(--color-black); }

.dice-apply-wrapper { padding: 0.5rem 1.25rem 1.25rem 1.25rem; display: none; }
.dice-apply-wrapper.is-visible { display: block; animation: slideUp 0.2s ease forwards; }

.dice-apply-btn {
    width: 100%; background: var(--color-black); color: var(--color-white); border: none; padding: 1rem; border-radius: var(--radius-sm);
    font-weight: 800; font-size: 0.85rem; text-transform: uppercase; letter-spacing: 0.05em; cursor: pointer; transition: 0.2s; display: flex; justify-content: center; align-items: center;
}
.dice-apply-btn:hover { background: var(--color-red); }

@keyframes slideUp { from { opacity: 0; transform: translateY(0.625rem); } to { opacity: 1; transform: translateY(0); } }

/* ─────────────────────────────────────────
   7.4 MEDIA QUERIES FILTRI (Layout Mobile)
   ───────────────────────────────────────── */
.fp-backdrop { display: none; }

@media (max-width: 768px) {
    .filters-group { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-2); }
    #wrap-date { grid-column: 1 / -1; width: 100%; }
    .filter-trigger { width: 100%; }

    .custom-dropdown {
        width: calc(200% + var(--space-2)); max-width: none; top: calc(100% + var(--space-2)); bottom: auto; 
    }
    #wrap-category .custom-dropdown { left: 0; right: auto; }
    #wrap-location .custom-dropdown { right: 0; left: auto; }

    html body .flatpickr-calendar { width: 100% !important; max-width: 100% !important; margin-top: var(--space-2); }

    .fp-backdrop {
        display: block; position: fixed; inset: 0; background-color: rgba(0,0,0,0.4); z-index: 290; opacity: 0; visibility: hidden; transition: opacity 0.3s var(--ease, ease), visibility 0.3s var(--ease, ease);
    }
    .fp-backdrop.is-active { opacity: 1; visibility: visible; }
}

/* ─────────────────────────────────────────
   7.5 ARCHIVE EVENTI - LAYOUT GRIGLIA E EMPTY STATE
   ───────────────────────────────────────── */
.events-list-container { padding-bottom: var(--space-24); transition: opacity 0.3s ease; }

@media (min-width: 769px) {
    .events-list-container.is-focused { opacity: 0.6; pointer-events: none; }
}

.events-list-container.is-loading { opacity: 0.3; pointer-events: none; }

.month-group { margin-bottom: var(--space-16); }

.month-title {
    font-family: var(--font-display); font-size: var(--fs-2xl); margin-bottom: var(--space-6); padding-bottom: var(--space-2); border-bottom: 2px solid var(--color-black); display: inline-block;
}

.empty-state { text-align: center; padding-block: var(--space-16); }
.empty-state__title { font-family: var(--font-display); font-size: var(--fs-2xl); margin-bottom: var(--space-4); }
.empty-state__desc { color: var(--color-light-black); font-size: var(--fs-base); margin: 0; }

/* ─────────────────────────────────────────
   8. SLIDERS E SCROLL NATIVO MOBILE
   ───────────────────────────────────────── */
.cat-slider {
    position: relative;
    width: 100%;
    overflow: hidden;
}

.cat-slider-track {
    display: flex;
    gap: var(--space-6);
    transition: transform 0.5s cubic-bezier(0.25, 1, 0.5, 1);
}

.cat-slider-slide {
    flex: 0 0 auto;
    width: 100%;
}

.cat-slider-arrows {
    display: flex;
    align-items: center;
    gap: var(--space-4);
    margin-top: var(--space-8);
    justify-content: flex-end;
}

.cat-slider-arrow {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 3rem;
    height: 3rem;
    border-radius: 50%;
    border: 1px solid rgba(0,0,0,0.1);
    background-color: var(--color-white);
    color: var(--color-black);
    cursor: pointer;
    transition: all var(--duration-fast) var(--ease);
}

.cat-slider-arrow:hover:not(:disabled) {
    background-color: var(--color-black);
    color: var(--color-white);
    border-color: var(--color-black);
}

.cat-slider-arrow:disabled {
    opacity: 0.3;
    cursor: not-allowed;
}

@media (max-width: 1024px) {
    .u-mobile-slider {
        display: flex;
        flex-wrap: nowrap;
        overflow-x: auto;
        scroll-snap-type: x mandatory;
        scroll-padding-inline-start: var(--px-container);
        
        width: 100vw;
        margin-left: calc(50% - 50vw);
        margin-right: calc(50% - 50vw);
        padding-left: var(--px-container);
        padding-right: 12.5vw;
        
        gap: var(--space-4);
        padding-bottom: var(--space-8);
        scrollbar-width: none;
        -ms-overflow-style: none;
    }

    .u-mobile-slider::-webkit-scrollbar { display: none; }

    .u-mobile-slider > * {
        scroll-snap-align: start;
        flex: 0 0 85%; 
    }
}
@media (max-width: 768px) {
    .u-mobile-slider > * { flex: 0 0 75vw; }
}

/* ─────────────────────────────────────────
   7. SMART BAR & FILTRI
   ───────────────────────────────────────── */
.filters-bar-wrapper {
    position: sticky;
    top: var(--filter-bar-top, 5.875rem); 
    background-color: var(--color-background);
    border-bottom: 1px solid rgba(0, 0, 0, 0.08);
    padding-block: var(--space-6);
    z-index: 300;
    margin-bottom: var(--space-16);
    transition: top var(--duration-base) var(--ease);
}

@media (max-width: 768px) {
	.filters-bar-wrapper {
		top: var(--filter-bar-top, 4.5rem);
	}
}

.filters-inner { display: flex; align-items: center; }

.filters-group {
    display: flex;
    gap: var(--space-3);
    flex-wrap: wrap;
    width: 100%;
}

.filter-wrap { position: relative; }

.filter-trigger {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    background-color: var(--color-cream);
    border: 1px solid transparent;
    padding: 0.65rem 1.25rem;
    border-radius: var(--radius-sm);
    font-size: var(--fs-sm);
    font-weight: 600;
    color: var(--color-black);
    transition: all 0.2s;
    white-space: nowrap;
}

.filter-trigger[aria-expanded="true"] {
    border-color: var(--color-black);
    background-color: var(--color-white);
}

@media (hover: hover) {
    .filter-trigger:hover {
        border-color: var(--color-black);
        background-color: var(--color-white);
    }
}

.filter-trigger.has-selection {
    border-color: var(--color-red);
    background-color: var(--color-white);
}

.filter-trigger.has-selection .filter-icon { color: var(--color-red); }

.filter-icon {
    width: 1.125rem;
    height: 1.125rem;
    min-width: 1.125rem; 
    color: var(--color-grey);
    display: flex;
    transition: color 0.2s;
    flex-shrink: 0;
}

.filter-label {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.filter-chevron {
    width: 1rem;
    height: 1rem;
    min-width: 1rem; 
    color: var(--color-grey);
    transition: transform 0.2s;
    display: flex;
    align-items: center;
    margin-left: auto;
    flex-shrink: 0;
}

.filter-trigger[aria-expanded="true"] .filter-chevron { transform: rotate(180deg); }
.filter-trigger.has-selection .filter-chevron { display: none; }

.filter-clear {
    display: none;
    width: 1.25rem;
    height: 1.25rem;
    align-items: center;
    justify-content: center;
    color: var(--color-black);
    border-radius: 50%;
    margin-left: auto;
    transition: background 0.2s, color 0.2s;
    flex-shrink: 0;
	position: relative; 
}

.filter-clear::after {
	content: '';
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
	width: 2.75rem;
	height: 2.75rem;
	background: transparent;
	border-radius: 50%;
	z-index: 1;
}

@media (hover: hover) {
    .filter-clear:hover {
        background-color: rgba(227, 6, 19, 0.1);
        color: var(--color-red);
    }
}
.filter-clear:active {
    background-color: rgba(227, 6, 19, 0.1);
    color: var(--color-red);
}

.filter-clear svg { width: 1rem; height: 1rem; stroke-width: 2.5; }
.filter-trigger.has-selection .filter-clear { display: flex; }

/* ─────────────────────────────────────────
   7.1 DROPDOWN CUSTOM (Categorie e Località)
   ───────────────────────────────────────── */
.custom-dropdown {
    position: absolute;
    top: calc(100% + 1rem);
    left: 0;
    background: var(--color-white); 
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-dropdown);
    min-width: 17.5rem; 
    opacity: 0;
    visibility: hidden;
    transform: translateY(-0.625rem);
    transition: opacity 0.3s ease, transform 0.3s ease, visibility 0.3s ease;
    z-index: 350;
    overflow: hidden;
    border: 1px solid rgba(0, 0, 0, 0.05);
}

.custom-dropdown.is-open {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
}

.cat-list { padding: var(--space-3); }

.cat-item {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.5rem;
    cursor: pointer;
    border-radius: var(--radius-md);
    transition: background 0.2s;
}

.cat-item:hover { background-color: var(--color-cream); }

.cat-checkbox {
    width: 1.125rem;
    height: 1.125rem;
    accent-color: var(--color-red);
    cursor: pointer;
}

.cat-dot {
    width: 0.75rem;
    height: 0.75rem;
    border-radius: 50%;
    display: inline-block;
    flex-shrink: 0;
}

.cat-label {
    font-size: var(--fs-base); 
    font-weight: 500;
    cursor: pointer;
    user-select: none;
}

/* ─────────────────────────────────────────
   7.2 FLATPICKR OVERRIDES (Design Desktop)
   ───────────────────────────────────────── */
body .flatpickr-calendar {
    width: 23.75rem !important; 
    background: var(--color-white) !important; 
    box-shadow: var(--shadow-dropdown);
    border: 1px solid rgba(0, 0, 0, 0.05);
    border-radius: var(--radius-lg);
    font-family: var(--font-body);
    padding: 0;
	margin-top: 1rem;
}

body .flatpickr-calendar::before,
body .flatpickr-calendar::after { display: none !important; }

body .flatpickr-calendar .flatpickr-months {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem 0;
}

body .flatpickr-calendar .flatpickr-months .flatpickr-prev-month, 
body .flatpickr-calendar .flatpickr-months .flatpickr-next-month {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    height: auto;
    padding: 1rem;
    z-index: 3;
}

body .flatpickr-calendar .flatpickr-months .flatpickr-prev-month { left: 0.5rem; }
body .flatpickr-calendar .flatpickr-months .flatpickr-next-month { right: 0.5rem; }

body .flatpickr-calendar .flatpickr-months .flatpickr-prev-month.flatpickr-disabled, 
body .flatpickr-calendar .flatpickr-months .flatpickr-next-month.flatpickr-disabled {
    display: block !important; opacity: 0.2; cursor: default; pointer-events: none;
}

body .flatpickr-calendar .flatpickr-current-month {
    display: flex; justify-content: center; align-items: center; gap: 0.35rem;
    font-size: 1.15rem; font-weight: 800; color: var(--color-black); padding: 0; width: 100%; left: 0;
}

body .flatpickr-calendar .flatpickr-month { background: transparent; }
body .flatpickr-calendar .flatpickr-current-month span.cur-month { font-weight: 800; color: var(--color-black); margin: 0; }
body .flatpickr-calendar .flatpickr-current-month input.cur-year { font-family: inherit; font-weight: 800; font-size: 1.15rem; color: var(--color-black); padding: 0; display: inline-block; }
body .flatpickr-calendar .numInputWrapper span.arrowUp, 
body .flatpickr-calendar .numInputWrapper span.arrowDown { display: none; } 

body .flatpickr-calendar .flatpickr-innerContainer { padding: 0 1.25rem 0.5rem 1.25rem; display: flex; justify-content: center; }
body .flatpickr-calendar span.flatpickr-weekday { text-transform: uppercase; font-size: 0.8125rem; font-weight: 800; color: var(--color-light-black); letter-spacing: 0.05em; }

body .flatpickr-calendar .flatpickr-day {
    max-width: 2.75rem; height: 2.75rem; line-height: 2.75rem; font-size: 1.05rem; font-weight: 600; border-radius: 50px;
}

body .flatpickr-calendar .flatpickr-day.today { border-color: transparent; }

body .flatpickr-calendar .flatpickr-day:hover { background: var(--color-black) !important; border-color: var(--color-black) !important; color: white !important; }

body .flatpickr-calendar .flatpickr-day.flatpickr-disabled, 
body .flatpickr-calendar .flatpickr-day.flatpickr-disabled:hover { color: #D0D0D0 !important; background: transparent !important; border-color: transparent !important; font-weight: 400; }

body .flatpickr-calendar .flatpickr-day.selected, 
body .flatpickr-calendar .flatpickr-day.startRange, 
body .flatpickr-calendar .flatpickr-day.endRange, 
body .flatpickr-calendar .flatpickr-day.selected.inRange, 
body .flatpickr-calendar .flatpickr-day.startRange.inRange, 
body .flatpickr-calendar .flatpickr-day.endRange.inRange, 
body .flatpickr-calendar .flatpickr-day.selected:focus, 
body .flatpickr-calendar .flatpickr-day.startRange:focus, 
body .flatpickr-calendar .flatpickr-day.endRange:focus, 
body .flatpickr-calendar .flatpickr-day.selected:hover, 
body .flatpickr-calendar .flatpickr-day.startRange:hover, 
body .flatpickr-calendar .flatpickr-day.endRange:hover, 
body .flatpickr-calendar .flatpickr-day.inRange, 
body .flatpickr-calendar .flatpickr-day.inRange:hover {
    background: var(--color-black) !important; border-color: var(--color-black) !important; color: white !important;
}

body .flatpickr-calendar .flatpickr-day.inRange, 
body .flatpickr-calendar .flatpickr-day.inRange:hover {
    border-radius: 0 !important; box-shadow: -0.3125rem 0 0 var(--color-black), 0.3125rem 0 0 var(--color-black) !important;
}

body .flatpickr-calendar .flatpickr-day.startRange { border-radius: 50px 0 0 50px !important; }
body .flatpickr-calendar .flatpickr-day.endRange { border-radius: 0 50px 50px 0 !important; }
body .flatpickr-calendar .flatpickr-day.startRange.endRange { border-radius: 50px !important; }

/* ─────────────────────────────────────────
   7.3 BOTTONI RAPIDI DATE
   ───────────────────────────────────────── */
.dice-quick-dates {
    display: flex; gap: 0.375rem; background-color: var(--color-cream); padding: 1rem; border-bottom: 1px solid rgba(0, 0, 0, 0.05);
}

.dice-btn {
    background: var(--color-white); border: 1px solid rgba(0, 0, 0, 0.1); padding: 0.25rem 0.75rem; border-radius: var(--radius-sm);
    font-size: 0.75rem; font-weight: 800; cursor: pointer; transition: 0.2s; text-transform: uppercase; letter-spacing: 0.05em; color: var(--color-black);
}

.dice-btn:hover { background: var(--color-black); color: var(--color-white); border-color: var(--color-black); }

.dice-apply-wrapper { padding: 0.5rem 1.25rem 1.25rem 1.25rem; display: none; }
.dice-apply-wrapper.is-visible { display: block; animation: slideUp 0.2s ease forwards; }

.dice-apply-btn {
    width: 100%; background: var(--color-black); color: var(--color-white); border: none; padding: 1rem; border-radius: var(--radius-sm);
    font-weight: 800; font-size: 0.85rem; text-transform: uppercase; letter-spacing: 0.05em; cursor: pointer; transition: 0.2s; display: flex; justify-content: center; align-items: center;
}
.dice-apply-btn:hover { background: var(--color-red); }

@keyframes slideUp { from { opacity: 0; transform: translateY(0.625rem); } to { opacity: 1; transform: translateY(0); } }

/* ─────────────────────────────────────────
   7.4 MEDIA QUERIES FILTRI (Layout Mobile)
   ───────────────────────────────────────── */
.fp-backdrop { display: none; }

@media (max-width: 768px) {
    .filters-group { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-2); }
    #wrap-date { grid-column: 1 / -1; width: 100%; }
    .filter-trigger { width: 100%; }

    .custom-dropdown {
        width: calc(200% + var(--space-2)); max-width: none; top: calc(100% + var(--space-2)); bottom: auto; 
    }
    #wrap-category .custom-dropdown { left: 0; right: auto; }
    #wrap-location .custom-dropdown { right: 0; left: auto; }

    html body .flatpickr-calendar { width: 100% !important; max-width: 100% !important; margin-top: var(--space-2); }

    .fp-backdrop {
        display: block; position: fixed; inset: 0; background-color: rgba(0,0,0,0.4); z-index: 290; opacity: 0; visibility: hidden; transition: opacity 0.3s var(--ease, ease), visibility 0.3s var(--ease, ease);
    }
    .fp-backdrop.is-active { opacity: 1; visibility: visible; }
}

/* ─────────────────────────────────────────
   7.5 ARCHIVE EVENTI - LAYOUT GRIGLIA E EMPTY STATE
   ───────────────────────────────────────── */
.events-list-container { padding-bottom: var(--space-24); transition: opacity 0.3s ease; }

@media (min-width: 769px) {
    .events-list-container.is-focused { opacity: 0.6; pointer-events: none; }
}

.events-list-container.is-loading { opacity: 0.3; pointer-events: none; }

.month-group { margin-bottom: var(--space-16); }

.month-title {
    font-family: var(--font-display); font-size: var(--fs-2xl); margin-bottom: var(--space-6); padding-bottom: var(--space-2); border-bottom: 2px solid var(--color-black); display: inline-block;
}

.empty-state { text-align: center; padding-block: var(--space-16); }
.empty-state__title { font-family: var(--font-display); font-size: var(--fs-2xl); margin-bottom: var(--space-4); }
.empty-state__desc { color: var(--color-light-black); font-size: var(--fs-base); margin: 0; }


/* ==========================================================================
   [ PARTE 3: TEMPLATE EDITORIALI E DI PAGINA ]
   ========================================================================== */

/* ==========================================================================
   9. HOMEPAGE (front-page.php)
   ========================================================================== */

/* --- 9.1 PAGE HEADER & HERO --- */
.hp-page-header {
	width: min(var(--w-article), 100% - (var(--px-container) * 2));
	margin-inline: auto;
	padding-top: var(--space-16);
	padding-bottom: var(--space-10);
	text-align: center;
}

.hp-title-primary {
	font-family: var(--font-display);
	font-size: var(--fs-h1);
	font-weight: 600;
	line-height: var(--lh-tight);
	color: var(--color-black);
	margin-bottom: var(--space-6);
}

.hp-subtitle-primary {
	font-size: var(--fs-lead);
	line-height: var(--lh-normal);
	color: var(--color-light-black);
	text-wrap: balance;
}

/* --- WRAPPER HERO (Gestisce il distacco dall'header) --- */
.hp-hero-wrapper {
	margin-top: var(--space-4);
}

.hp-hero-figure {
	margin: 0;
	position: relative;
	background-color: var(--color-cream);
	border-radius: var(--radius-lg);
	overflow: hidden; 
}

/* ─────────────────────────────────────────
   9.1.1 HOMEPAGE STAGE EFFECT (Solo Desktop > 1024px)
   ───────────────────────────────────────── */
@media (min-width: 1025px) {

	body.home .site-header {
		border-bottom: none;
	}

	body.home .site-header:has(.megamenu.is-open) {
		background: var(--color-background);
		transition: background var(--duration-base) var(--ease);
	}

	body.home .site-header.is-scrolled {
		background: var(--color-background);
		box-shadow: 0 4px 12px rgba(0,0,0,0.05);
	}

	body.home .hp-hero-figure {
		box-shadow: 0 20px 50px rgba(0, 0, 0, 0.12);
	}
}

.hp-hero-img {
	width: 100%;
	height: auto;
	max-height: 85vh; 
	object-fit: cover;
	display: block;
}

/* --- IL CONTENITORE DEL TESTO (Con Halo Radiale Invisibile) --- */
.hp-hero-text-overlay {
	position: absolute;
	inset: 0; 
	padding-inline: var(--px-container); 
	text-align: center;
	z-index: 2; 
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	background: radial-gradient(circle at center, rgba(0, 0, 0, 0.25) 0%, rgba(0, 0, 0, 0) 65%);
}

.hp-hero-text-overlay .hp-title-primary {
	font-size: var(--fs-hero); 
	color: var(--color-white);
	max-width: 20ch;
	text-wrap: balance;
	margin-bottom: var(--space-3); 
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	text-shadow: 
		0 2px 4px rgba(0, 0, 0, 0.35),   
		0 6px 12px rgba(0, 0, 0, 0.25),  
		0 12px 24px rgba(0, 0, 0, 0.20), 
		0 24px 48px rgba(0, 0, 0, 0.15), 
		0 0 80px rgba(0, 0, 0, 0.10);    
}

.hp-hero-text-overlay .hp-subtitle-primary {
	font-family: var(--font-display); 
	font-size: var(--fs-2xl); 
	color: var(--color-white);
	max-width: 35ch; 
	font-weight: 600;
	margin: 0;
	opacity: 0;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	text-shadow: 
		0 1px 2px rgba(0, 0, 0, 0.4),
		0 4px 8px rgba(0, 0, 0, 0.25),
		0 10px 20px rgba(0, 0, 0, 0.15);
}

/* Fix Z-Index per la Smart Card dei Crediti */
.hp-hero-figure .cat-image-credit {
	z-index: 20; 
}

/* --- RESPONSIVE MOBILE --- */
@media (max-width: 1024px) {
	.hp-page-header {
		margin-bottom: 0;
		padding-bottom: var(--space-8);
	}
	
	.hp-hero-wrapper {
		width: 100%;
		margin-inline: 0;
	}
	
	.hp-hero-figure {
		border-radius: 0;
	}
	
	.hp-hero-img {
		height: 100%;
		border-radius: 0;
	}
}

/* --- 9.2 MAPPA DESTINAZIONI (Desktop Focus) --- */

.hp-section-header {
	text-align: center;
	max-width: var(--w-article);
	margin-inline: auto;
	margin-bottom: var(--space-16);
}

.hp-section-title {
	font-family: var(--font-display);
	font-size: var(--fs-2xl);
	font-weight: 600;
	color: var(--color-black);
	line-height: var(--lh-snug);
	margin-bottom: var(--space-4);
}

.hp-section-subtitle {
	color: var(--color-light-black);
	text-wrap: pretty;
	margin: 0;
}

.hp-split-layout {
	display: grid;
	grid-template-columns: 4fr 6fr; 
	gap: var(--space-16);
	align-items: center; 
}

.hp-cards-col {
	width: 100%;
}

.hp-cards-stack {
	display: grid;
	grid-template-columns: 1fr;
	grid-template-rows: 1fr;
	filter: drop-shadow(var(--shadow-lg)); 
}

.hp-dest-card {
	grid-area: 1 / 1; 
	background-color: var(--color-white);
	border-radius: var(--radius-lg);
	overflow: hidden;
	display: flex;
	flex-direction: column;
	opacity: 0;
	visibility: hidden;
	transition: opacity var(--duration-base) var(--ease),
	            visibility var(--duration-base) var(--ease);
}

.hp-dest-card.is-active {
	opacity: 1;
	visibility: visible;
	z-index: 2; 
}

.hp-dest-visual {
	width: 100%;
	overflow: hidden;
}

.hp-dest-img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.hp-dest-content {
	padding: var(--space-8);
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: var(--space-4);
}

.hp-dest-name {
	font-family: var(--font-display);
	font-size: var(--fs-xl);
	font-weight: 600;
	color: var(--color-black);
	line-height: var(--lh-tight);
	margin: 0;
}

.hp-dest-excerpt {
	font-family: var(--font-body);
	font-size: var(--fs-base);
	color: var(--color-light-black);
	line-height: var(--lh-relaxed);
	margin: 0;
	display: -webkit-box;
	-webkit-line-clamp: 3;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.hp-dest-btn {
	margin-top: var(--space-2);
}

.hp-map-col {
	width: 100%;
	display: flex;
	justify-content: flex-end; 
}

.hp-map-wrapper {
	width: 100%;
	max-width: 40rem;
	height: 40rem; 
	position: relative;
	filter: drop-shadow(0 15px 30px rgba(0,0,0,0.06)); 
}

.hp-map-wrapper svg {
	width: 100%;
	height: 100%; 
	object-fit: contain; 
	display: block;
}

svg #costa-barcellona, 
svg #barcellona, 
svg #paesaggi-barcellona, 
svg #val-aran, 
svg #costa-brava, 
svg #terres-lleida, 
svg #costa-daurada, 
svg #terres-ebre, 
svg #pirenei {
	cursor: pointer;
}

#costa-barcellona path[fill="#636363"], #barcellona path[fill="#636363"],
#paesaggi-barcellona path[fill="#636363"], #val-aran path[fill="#636363"],
#costa-brava path[fill="#636363"], #terres-lleida path[fill="#636363"],
#costa-daurada path[fill="#636363"], #terres-ebre path[fill="#636363"],
#pirenei path[fill="#636363"] {
	transition: fill var(--duration-fast) var(--ease);
}

#costa-barcellona:hover path[fill="#636363"], #costa-barcellona.is-active path[fill="#636363"],
#barcellona:hover path[fill="#636363"], #barcellona.is-active path[fill="#636363"],
#paesaggi-barcellona:hover path[fill="#636363"], #paesaggi-barcellona.is-active path[fill="#636363"],
#val-aran:hover path[fill="#636363"], #val-aran.is-active path[fill="#636363"],
#costa-brava:hover path[fill="#636363"], #costa-brava.is-active path[fill="#636363"],
#terres-lleida:hover path[fill="#636363"], #terres-lleida.is-active path[fill="#636363"],
#costa-daurada:hover path[fill="#636363"], #costa-daurada.is-active path[fill="#636363"],
#terres-ebre:hover path[fill="#636363"], #terres-ebre.is-active path[fill="#636363"],
#pirenei:hover path[fill="#636363"], #pirenei.is-active path[fill="#636363"] {
	fill: var(--color-red);
}

#costa-barcellona path[stroke="#fff"], #barcellona path[stroke="#fff"],
#paesaggi-barcellona path[stroke="#fff"], #val-aran path[stroke="#fff"],
#costa-brava path[stroke="#fff"], #terres-lleida path[stroke="#fff"],
#costa-daurada path[stroke="#fff"], #terres-ebre path[stroke="#fff"],
#pirenei path[stroke="#fff"] {
	transition: transform var(--duration-fast) var(--ease);
}

#costa-barcellona:hover path[stroke="#fff"], #costa-barcellona.is-active path[stroke="#fff"],
#barcellona:hover path[stroke="#fff"], #barcellona.is-active path[stroke="#fff"],
#paesaggi-barcellona:hover path[stroke="#fff"], #paesaggi-barcellona.is-active path[stroke="#fff"],
#val-aran:hover path[stroke="#fff"], #val-aran.is-active path[stroke="#fff"],
#costa-brava:hover path[stroke="#fff"], #costa-brava.is-active path[stroke="#fff"],
#terres-lleida:hover path[stroke="#fff"], #terres-lleida.is-active path[stroke="#fff"],
#costa-daurada:hover path[stroke="#fff"], #costa-daurada.is-active path[stroke="#fff"],
#terres-ebre:hover path[stroke="#fff"], #terres-ebre.is-active path[stroke="#fff"],
#pirenei:hover path[stroke="#fff"], #pirenei.is-active path[stroke="#fff"] {
	transform: translateY(-5px);
}

/* --- 9.2.1 RESPONSIVE MAPPA DESTINAZIONI (Mobile Slider) --- */
@media (max-width: 1024px) {
    /* 1. Rimuove la griglia a 2 colonne */
    .hp-split-layout {
        display: block;
    }

    /* 2. Nasconde la mappa SVG su mobile */
    .hp-map-col {
        display: none;
    }

    /* 3. Trasforma il contenitore impilato nello slider mobile (logica .u-mobile-slider) */
    .hp-cards-stack {
        display: flex;
        flex-wrap: nowrap;
        overflow-x: auto;
        scroll-snap-type: x mandatory;
        scroll-padding-inline-start: var(--px-container);
        
        width: 100vw;
        margin-left: calc(50% - 50vw);
        margin-right: calc(50% - 50vw);
        padding-left: var(--px-container);
        padding-right: 12.5vw;
        
        gap: var(--space-4);
        padding-bottom: var(--space-8);
        scrollbar-width: none;
        -ms-overflow-style: none;
        filter: none; /* Rimuove l'ombra unificata del desktop */
    }

    .hp-cards-stack::-webkit-scrollbar { 
        display: none; 
    }

    /* 4. Risveglia le card (nascoste su desktop) e dà loro la larghezza per lo swipe */
    .hp-dest-card {
        opacity: 1;
        visibility: visible;
        grid-area: auto; /* Sgancia le card dalla sovrapposizione */
        
        scroll-snap-align: start;
        flex: 0 0 85%; /* Larghezza per Tablet */
		box-shadow: 0 0.25rem 1.5rem rgba(0, 0, 0, 0.06);
    }
}

@media (max-width: 768px) {
    .hp-dest-card {
        flex: 0 0 75vw; /* Larghezza per Smartphone con "spicchio" vuoto a destra */
    }
}

/* ==========================================
   9.3 COSE DA FARE (TABBED SLIDER 3+3)
   ========================================== */

.hp-activities-nav {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: var(--space-10);
    gap: var(--space-8);
}

.hp-tabs-track {
    display: flex;
    gap: var(--space-8);
    overflow-x: auto;
    scrollbar-width: none; 
    -ms-overflow-style: none; 
    scroll-behavior: smooth;
}
.hp-tabs-track::-webkit-scrollbar { display: none; }

.hp-tab-btn {
    background: none;
    border: none;
    padding: 0 0 var(--space-4) 0;
    font-size: var(--fs-sm);
    font-family: var(--font-body);
    font-weight: 500;
    color: var(--color-light-black);
    cursor: pointer;
    white-space: nowrap;
    position: relative;
    transition: color var(--duration-fast) var(--ease);
}

.hp-tab-btn:hover { color: var(--color-black); }

.hp-tab-btn::after {
    content: '';
    position: absolute;
    bottom: -1px;
    left: 0;
    width: 100%;
    height: 3px;
    background-color: var(--color-red);
    transform: scaleX(0);
    transition: transform var(--duration-base) var(--ease);
}

.hp-tab-btn.is-active { color: var(--color-black); }
.hp-tab-btn.is-active::after { transform: scaleX(1); }

.hp-slider-controls {
    display: flex;
    gap: var(--space-2);
    padding-bottom: var(--space-4);
    flex-shrink: 0;
}

.hp-arrow-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    border: 2px solid var(--color-black);
    background: transparent;
    color: var(--color-black);
    cursor: pointer;
    transition: all var(--duration-fast) var(--ease);
}

.hp-arrow-btn:hover:not(:disabled) {
    background-color: var(--color-red);
    color: var(--color-white);
    border-color: var(--color-red);
}

.hp-arrow-btn:disabled {
    opacity: 0.3;
    cursor: not-allowed;
}

.hp-categories-container { position: relative; }

.hp-category-view {
    display: none; 
    animation: hpFadeIn 0.4s var(--ease) forwards;
}
.hp-category-view.is-active { display: block; }

@keyframes hpFadeIn {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: translateY(0); }
}

.hp-cards-viewport {
    overflow: hidden;
    width: auto;
    margin: -2rem calc(var(--space-8) * -0.5);
    padding: 2rem 0;
}

@media (min-width: 1025px) {
    .hp-cards-viewport,
    .hp-activities-section .hp-cards-viewport, 
    .hp-events-section .hp-cards-viewport {
        margin-inline: 0 !important; 
    }
}

.hp-cards-track {
    display: flex;
    flex-wrap: nowrap;
    width: 100%;
    gap: var(--space-8);
    transition: transform 0.6s var(--ease);
}

.hp-category-view .cat-related-card,
.hp-events-section .cat-event-card {
    flex: 0 0 calc((100% - (var(--space-8) * 2)) / 3);
    max-width: calc((100% - (var(--space-8) * 2)) / 3);
    flex-shrink: 0;
    min-width: 0;
}

.hp-slider-dots {
    display: flex;
    justify-content: center;
    gap: 0.5rem;
    margin-top: calc(2rem + var(--space-8));
}

.hp-dot {
    width: 32px;
    height: 4px;
    background-color: rgba(0,0,0,0.15);
    border-radius: var(--radius-pill);
    transition: background-color var(--duration-fast) var(--ease);
}
.hp-dot.is-active { background-color: var(--color-red); }

/* --- 9.3.1 RESPONSIVE SLIDERS (Cose da Fare & Eventi) --- */
@media (max-width: 1024px) {
    /* 1. Spegne i bottoni freccia su mobile/tablet */
    .hp-slider-controls,
	.hp-slider-dots {
        display: none;
    }

    /* 2. Applica la logica Full-Bleed dello .u-mobile-slider al binario */
    .hp-cards-track {
        display: flex;
        flex-wrap: nowrap;
        overflow-x: auto;
        scroll-snap-type: x mandatory;
        scroll-padding-inline-start: var(--px-container);
        
        width: 100vw;
        margin-left: calc(50% - 50vw);
        margin-right: calc(50% - 50vw);
        padding-left: var(--px-container);
        padding-right: 12.5vw;
        
        gap: var(--space-4);
        padding-bottom: var(--space-8);
        scrollbar-width: none;
        -ms-overflow-style: none;
    }

    .hp-cards-track::-webkit-scrollbar { 
        display: none; 
    }

    /* 3. Sostituisce la larghezza fissa (1/3 di schermo) con quella fluida per tablet */
    .hp-category-view .cat-related-card,
    .hp-events-section .cat-event-card {
        flex: 0 0 85%;
        max-width: 85%;
        scroll-snap-align: start;
    }
}

@media (max-width: 768px) {
    /* 4. Stringe la larghezza su smartphone per far intravedere la card successiva */
    .hp-category-view .cat-related-card,
    .hp-events-section .cat-event-card {
        flex: 0 0 75vw;
        max-width: 75vw;
    }
}

/* --- Sblocco Overflow (Evita il taglio verticale delle card) --- */
@media (max-width: 1024px) {
    .hp-category-view,
    .hp-events-view,
    .hp-cards-viewport {
        overflow: visible;
    }
}

/* ==========================================================================
   9.4 SEZIONE EVENTI HOMEPAGE (.hp-events-section)
   ========================================================================== */

.hp-events-header {
    align-items: flex-end;
    margin-bottom: var(--space-12);
}

.hp-events-kicker {
	display: block;
	font-size: var(--fs-sm);
	font-weight: 600;
	letter-spacing: 0.05em;
	text-transform: uppercase;
    margin-bottom: var(--space-3);
}

.hp-events-title {
    margin-bottom: 0;
}

.hp-events-slider-controls {
    padding-bottom: 0;
}

.hp-arrow-next svg {
    transform: rotate(180deg);
}

.hp-events-mobile-actions {
    margin-top: var(--space-6);
    text-align: center;
}

.hp-btn-block {
    width: 100%;
    display: block;
}

/* ==========================================================================
   9.5 SEZIONE GRAND TOUR HOMEPAGE (Dark Glass Premium)
   ========================================================================== */

.hp-grandtour-banner {
    width: 100%;
    min-height: 45rem;
    position: relative;
    border-radius: var(--radius-lg); 
    overflow: hidden;
    background-color: var(--color-black);
    background-size: cover;
    background-position: center center;
    display: flex;
    align-items: center;
    box-shadow: var(--shadow-md);
}

.hp-grandtour-banner::before {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.2) 45%, rgba(0, 0, 0, 0) 100%);
    z-index: var(--z-base);
}

.hp-grandtour-map {
    position: absolute;
    right: 2%;
    top: 5%;
    height: 90%;
    width: 55%;
    opacity: 0.85;
    pointer-events: none;
    z-index: calc(var(--z-base) + 1);
    display: flex;
    justify-content: flex-end;
    align-items: center;
}

.hp-grandtour-map svg {
    width: 100%;
    height: 100%;
    object-fit: contain;
    object-position: center right;
}

.hp-grandtour-glass {
    position: relative;
    z-index: calc(var(--z-base) + 2);
    margin-left: 5%;
    width: 100%;
    max-width: 440px;
    
    background: rgba(0, 0, 0, 0.35);
    backdrop-filter: blur(16px) saturate(120%);
    -webkit-backdrop-filter: blur(16px) saturate(120%);
    border: 1px solid rgba(255, 255, 255, 0.15);
    
    border-radius: var(--radius-lg);
    padding: var(--space-10) var(--space-8);
    box-shadow: var(--shadow-md);
}

.hp-grandtour-logo {
    max-width: 130px;
    height: auto;
    margin-bottom: var(--space-6);
    display: block;
}

.hp-grandtour-title {
    font-size: clamp(2rem, 3vw, 2.25rem);
    line-height: var(--lh-tight);
    font-weight: 600;
    color: var(--color-white);
    margin: 0 0 var(--space-4) 0;
    letter-spacing: -0.02em;
}

.hp-grandtour-desc {
    font-size: var(--fs-base);
    line-height: var(--lh-relaxed);
    color: var(--color-white);
    margin: 0 0 var(--space-8) 0;
    opacity: 0.9;
}

.hp-action-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: var(--space-3) var(--space-6);
    font-size: var(--fs-base);
    font-weight: 600;
    color: var(--color-black);
    text-decoration: none;
    
    background-color: var(--color-white);
    border: 2px solid var(--color-white);
    border-radius: var(--radius-sm); 
    
    transition: all var(--duration-fast) var(--ease);
    cursor: pointer;
}

.hp-action-btn:hover {
    background-color: var(--color-red); 
    border-color: var(--color-red);
    color: var(--color-white);
}

@media (max-width: 1024px) {
    body .hp-grandtour-banner {
        justify-content: center; 
        align-items: center;     
        min-height: 35rem; 
        display: flex;
    }

    body .hp-grandtour-banner::before {
        background: radial-gradient(circle at center, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0) 75%);
    }

    body .hp-grandtour-glass {
        background: transparent;
        backdrop-filter: none;
        -webkit-backdrop-filter: none;
        border: none;
        box-shadow: none;
        
        width: 100%;
        max-width: 40rem;
        margin-left: 0;
        display: flex;
        flex-direction: column;
        align-items: center;
        text-align: center;
        padding-inline: var(--px-container);
    }

    body .hp-grandtour-logo {
        margin-inline: auto;
    }

    body .hp-grandtour-map {
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        max-width: 25rem;
        opacity: 0.1; 
        pointer-events: none;
        z-index: 1;
    }
}

@media (max-width: 768px) {
    body .hp-grandtour-banner {
        min-height: 30rem;
    }
    
    body .hp-grandtour-title {
        font-size: var(--fs-xl);
    }
}

/* ─────────────────────────────────────────
   10. ARTICOLO SINGOLO E GUTENBERG (.cat-prose)
   ───────────────────────────────────────── */
.cat-article-header { width: min(var(--w-article), 100% - (var(--px-container) * 2)); margin-inline: auto; padding-top: var(--space-16); padding-bottom: var(--space-10); text-align: center; }
.cat-title-primary { font-family: var(--font-display); font-size: var(--fs-h1); font-weight: 600; line-height: var(--lh-snug); color: var(--color-black); margin-bottom: var(--space-6); }
.cat-subtitle-primary { font-size: var(--fs-md); line-height: var(--lh-relaxed); color: var(--color-light-black); font-weight: 400; }
.cat-breadcrumbs-wrapper { padding-top: var(--space-4); margin-bottom: calc(var(--space-10) * -1); }
.cat-breadcrumbs { width: 100%; }
.cat-breadcrumbs__list { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-start; gap: var(--space-3); list-style: none; padding: 0; margin: 0; font-family: var(--font-body); font-size: var(--fs-xs); color: var(--color-grey); }
.cat-breadcrumbs__link { color: var(--color-light-black); text-decoration: none; transition: color var(--duration-fast) var(--ease); }
.cat-breadcrumbs__link:hover { color: var(--color-black); }
.cat-breadcrumbs__separator { font-size: 0.8em; }
.cat-breadcrumbs__item--current { pointer-events: none; white-space: nowrap; }
.cat-article-kicker { display: block; font-family: var(--font-body); font-size: var(--fs-xs); font-weight: 700; text-transform: uppercase; letter-spacing: 0.12em; color: var(--color-red); margin-bottom: var(--space-4); text-align: center; }
.cat-hero-figure { margin: 0; position: relative; }
.cat-hero-img { width: 100%; height: auto; max-height: 85vh; object-fit: cover; border-radius: var(--radius-lg); display: block; }
.cat-prose figcaption { display: none; }
.cat-image-credit { position: absolute; bottom: var(--space-4); right: var(--space-4); display: flex; align-items: center; justify-content: flex-end; background-color: rgba(0, 0, 0, 0.45); backdrop-filter: blur(4px); border-radius: 3rem; padding: 0; margin: 0; cursor: pointer; box-shadow: 0 0.25rem 0.75rem rgba(0,0,0,0.1); transition: background-color 0.4s ease; }
.cat-image-credit:hover, .cat-image-credit:focus-within, .cat-image-credit:active, .cat-image-credit.is-clicked { background-color: rgba(255, 255, 255, 0.92); }
.cat-credit-text-group { display: flex; flex-direction: column; justify-content: center; row-gap: 0.375rem; align-items: flex-start; overflow: hidden; max-width: 0; padding-left: 0; padding-right: 0; opacity: 0; transition: max-width 0.5s cubic-bezier(0.215, 0.61, 0.355, 1), padding 0.5s cubic-bezier(0.215, 0.61, 0.355, 1), opacity 0.3s ease; }
.cat-image-credit:hover .cat-credit-text-group, .cat-image-credit:focus-within .cat-credit-text-group, .cat-image-credit:active .cat-credit-text-group, .cat-image-credit.is-clicked .cat-credit-text-group { opacity: 1; max-width: 24rem; padding-left: 1.25rem; padding-right: 1rem; transition-delay: 0.05s; }
.cat-photo-desc, .cat-photo-credit { width: max-content; max-width: min(18rem, 60vw); }
.cat-photo-desc { color: var(--color-black); font-size: 0.8125rem; font-weight: 600; line-height: 1; white-space: normal; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.cat-photo-credit { color: var(--color-light-black); font-size: 0.6875rem; font-weight: 500; line-height: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cat-credit-icon { width: 2.75rem; height: 2.75rem; display: flex; align-items: center; justify-content: center; flex-shrink: 0; color: var(--color-white); transition: color 0.4s ease; }
.cat-credit-icon svg { width: 1.125rem; height: 1.125rem; }
.cat-image-credit:hover .cat-credit-icon, .cat-image-credit:focus-within .cat-credit-icon, .cat-image-credit:active .cat-credit-icon, .cat-image-credit.is-clicked .cat-credit-icon { color: var(--color-black); }
.cat-share-colophon { width: 100%; max-width: var(--w-article); margin-inline: auto; padding-inline: var(--px-container); display: flex; flex-direction: column; align-items: center; text-align: center; gap: var(--space-6); margin-top: var(--space-20); padding-bottom: var(--space-12); }
.cat-share-colophon__text { max-width: 45rem; }
.cat-share-colophon__kicker { display: block; font-family: var(--font-body); font-size: var(--fs-xs); font-weight: 700; text-transform: uppercase; letter-spacing: 0.1em; color: var(--color-black); margin-bottom: var(--space-2); }
.cat-share-colophon__desc { font-family: var(--font-body); color: var(--color-light-black); margin: 0; line-height: 1.5; }
.cat-share-button { display: inline-flex; align-items: center; justify-content: center; gap: 0.625rem; padding: var(--space-3) var(--space-6); background: transparent; color: var(--color-black); border: 1px solid var(--color-black); border-radius: var(--radius-sm); font-family: var(--font-body); font-size: var(--fs-sm); font-weight: 600; cursor: pointer; transition: background-color var(--duration-fast) var(--ease), color var(--duration-fast) var(--ease); }
.cat-share-button:hover { background-color: var(--color-black); color: var(--color-white); }
.cat-share-button svg { width: 1.125rem; height: 1.125rem; }

/* Container bottoni universale (Desktop & Mobile) */
.cat-share-colophon .cat-share-colophon__action { display: flex; flex-direction: column; width: 100%; max-width: 360px; gap: var(--space-3); }

/* Forza il bottone al 100% del suo contenitore (max 360px) solo nel colophon */
.cat-share-colophon .cat-share-button { width: 100%; justify-content: center; }

/* ─────────────────────────────────────────
   11. EVENTO SINGOLO (.event-single-page)
   ───────────────────────────────────────── */
.link-animated-underline { display: inline-flex; align-items: center; gap: 0.25rem; color: currentColor; text-decoration: none; position: relative; width: fit-content; }
.link-animated-underline span { display: flex; align-items: center; width: 1rem; transition: transform 0.3s cubic-bezier(0.25, 1, 0.5, 1); }
.link-animated-underline::after { content: ''; position: absolute; bottom: -2px; left: 0; width: 100%; height: 1px; background-color: currentColor; transform-origin: right; transform: scaleX(0); transition: transform 0.4s cubic-bezier(0.86, 0, 0.07, 1); }
.link-animated-underline:hover::after { transform-origin: left; transform: scaleX(1); }
.event-hero-header { padding-top: var(--space-16); padding-bottom: var(--space-10); }
.event-hero-header__inner { display: flex; justify-content: space-between; align-items: flex-end; gap: var(--space-8); }
.event-hero-header__left { max-width: 70%; }
.event-category-label { display: inline-block; padding: 0.375rem 1rem; background-color: var(--local-event-color); border-radius: var(--radius-sm); font-size: var(--fs-xs); font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: var(--color-white); margin-bottom: var(--space-8); }
.event-title { font-family: var(--font-display); font-weight: 600; line-height: var(--lh-snug); color: var(--color-black); margin: 0 0 var(--space-4) 0; max-width: 28ch; text-wrap: balance;  }
.event-subtitle { font-family: var(--font-display); font-size: var(--fs-xl); letter-spacing: -0.02em; line-height: var(--lh-snug); text-wrap-style: pretty; max-width: 50ch; color: var(--color-light-black); margin: 0; }
.event-hero-header__right { display: flex; flex-direction: column; gap: var(--space-3); padding-bottom: var(--space-2); flex-shrink: 0; }
.event-meta-block { display: flex; align-items: center; gap: var(--space-3); }
.event-meta-icon { color: var(--local-event-color); display: flex; align-items: center; justify-content: center; width: 1.5rem; }
.event-meta-icon svg { width: 100%; height: auto; }
.event-meta-text { font-size: var(--fs-base); color: var(--color-black); font-weight: 500; }
.event-content-section { display: grid; grid-template-columns: 8fr 4fr; gap: var(--space-16); align-items: start; }
.event-content-main.cat-prose > * { width: 100%; margin-inline: 0; }
.event-content-main.cat-prose > *:first-child { margin-top: 0; }
.event-content-sidebar { position: sticky; top: calc(var(--header-height, 5.625rem) + var(--space-12)); }
.event-info-card { background-color: var(--color-white); border: 1px solid rgba(0,0,0,0.05); border-radius: var(--radius-lg); overflow: hidden; box-shadow: 0 0.75rem 2rem rgba(0,0,0,0.04); }
.event-info-card__header { background-color: var(--local-event-color); padding: var(--space-4) var(--space-6); }
.event-info-card__header h2 { color: var(--color-white); font-size: var(--fs-lg); font-weight: 600; margin: 0; }
.event-info-card__body { padding: var(--space-6); display: flex; flex-direction: column; gap: var(--space-6); }
.info-group { display: flex; flex-direction: column; gap: var(--space-1); }
.info-group__label { font-size: var(--fs-sm); font-weight: 700; color: var(--local-event-color); }
.info-group__value { font-size: var(--fs-base); color: var(--color-black); line-height: 1.4; }
.info-group__value--stacked, .info-group__value--location { display: flex; flex-direction: column; }
.info-group__value--stacked { gap: 0.125rem; }
.info-group__value--location { gap: 0.25rem; }
.info-date-main { font-weight: 500; }
.info-time-sub { font-size: var(--fs-sm); color: var(--color-light-black); }
.info-location-name { font-weight: 600; color: var(--color-black); line-height: 1.2; }
.info-location-address { font-weight: 500; color: var(--color-light-black); line-height: 1.3; }
.info-location-city { font-weight: 500; color: var(--color-light-black); }
.info-group__list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: var(--space-2); font-size: var(--fs-base); }
.info-group__list strong { font-weight: 600; color: var(--color-black); }
.info-group--action { margin-top: var(--space-4); padding-top: var(--space-6); border-top: 1px solid rgba(0,0,0,0.09); }
.btn-favourite-event { display: flex; align-items: center; gap: var(--space-3); background: none; border: none; padding: 0; font-size: var(--fs-base); font-weight: 600; color: var(--local-event-color); cursor: pointer; transition: opacity var(--duration-fast) var(--ease); }
.btn-favourite-event:hover { opacity: 0.8; }
.btn-favourite-event__icon { width: 1.25rem; height: 1.25rem; display: flex; align-items: center; justify-content: center; }

@media (max-width: 1024px) {
	.event-hero-header { padding-top: var(--space-10); padding-bottom: var(--space-6); }
	.event-hero-header__inner { flex-direction: column; align-items: flex-start; gap: var(--space-6); }
	.event-hero-header__left { max-width: 100%; }
	.event-title { font-size: clamp(2rem, 5vw, 2.5rem); max-width: none; }
	.event-hero-header__right { width: 100%; flex-direction: column; gap: var(--space-2); border-top: 1px solid rgba(0,0,0,0.05); padding-top: var(--space-4); }
	.event-content-section { display: flex; flex-direction: column; gap: var(--space-10); }
	.event-content-sidebar { order: 1; width: 100%; position: static; top: auto; }
	.event-content-main { order: 2; width: 100%; }
	.event-info-card { box-shadow: 0 0.25rem 1rem rgba(0,0,0,0.05); }
	.event-info-card__body { padding: var(--space-5); }
}

/* ─────────────────────────────────────────
   12. HUB DESTINAZIONI ED ESPERIENZE (Pillar Pages)
   ───────────────────────────────────────── */

/* --- 12.1 STRUTTURA E NAVIGAZIONE STICKY --- */
.dest-hub-page,
.exp-hub-page {
    overflow-x: clip; 
    background-color: var(--color-background);
}

.dest-hub-page .wizard-kicker,
.exp-hub-page .wizard-kicker,
.container-article.text-center .wizard-kicker {
    display: block;
	font-size: var(--fs-sm);
    font-weight: 700;
    letter-spacing: 0.05em;
    color: var(--color-red);
	text-transform: uppercase;
    margin-bottom: var(--space-3);
}

.site-main.dest-hub-page,
.site-main.exp-hub-page {
    overflow: visible !important; 
}

.dest-hub-nav, .exp-hub-nav {
    position: -webkit-sticky;
    position: sticky;
    top: 5.625rem;
    z-index: 90;
    background-color: var(--color-background);
    width: 100%;
}

/* Applica il bordo inferiore solo alla larghezza del contenitore (allineato col layout) */
.dest-hub-nav .container-header, 
.exp-hub-nav .container-header {
    border-bottom: 1px solid rgba(0, 0, 0, 0.08);
}

@media (max-width: 1024px) {
    .dest-hub-nav,
    .exp-hub-nav {
        top: 4rem; 
        transition: top 0.3s ease-in-out;
    }

    .dest-hub-nav.is-header-hidden,
    .exp-hub-nav.is-header-hidden {
        top: 0; 
    }

    body.admin-bar .dest-hub-nav.is-header-hidden,
    body.admin-bar .exp-hub-nav.is-header-hidden {
        top: 46px;
    }
}

.dest-hub-nav__link.is-active,
.exp-hub-nav__link.is-active {
    color: var(--color-red);
    font-weight: 700;
}

.dest-hub-nav__list,
.exp-hub-nav__list {
    display: flex;
    justify-content: center;
    align-items: center;
    list-style: none;
    padding: 1.25rem 0;
    gap: 2rem;
    margin: 0;
}

.dest-hub-nav__item,
.exp-hub-nav__item {
    flex-shrink: 0;
}

.dest-hub-nav__link,
.exp-hub-nav__link {
    font-family: var(--font-body);
    font-size: var(--fs-xs);
    font-weight: 500;
    color: var(--color-black);
    text-decoration: none;
    letter-spacing: 0.05em;
    transition: color var(--duration-base) var(--ease);
}

.dest-hub-nav__link:hover,
.exp-hub-nav__link:hover {
    color: var(--color-red);
}

/* --- 12.2 INTRO E BLOCCO REGIONALE (50/50 Zig-Zag) --- */
.dest-hub-intro,
.exp-hub-intro {
    padding-block: var(--space-20);
}

.dest-hub-intro__title,
.exp-hub-intro__title {
    font-family: var(--font-display);
    font-size: var(--fs-2xl);
    font-weight: 600;
    line-height: var(--lh-tight);
    margin-bottom: var(--space-4);
}

.dest-hub-intro__text,
.exp-hub-intro__text {
    font-family: var(--font-body);
    font-size: 1.125rem;
    line-height: var(--lh-normal);
    color: var(--color-text-body);
}

.dest-region-section,
.exp-region-section {
    padding-bottom: var(--space-32);
}

.dest-region-hero,
.exp-region-hero {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    align-items: stretch;
    background-color: var(--color-cream);
    border-radius: var(--radius-lg);
    overflow: hidden;
}

.dest-region-hero.is-reversed .dest-region-visual,
.exp-region-hero.is-reversed .exp-region-visual {
    order: 2;
}
.dest-region-hero.is-reversed .dest-region-content,
.exp-region-hero.is-reversed .exp-region-content {
    order: 1;
}

.dest-region-figure,
.exp-region-figure {
    margin: 0;
    height: 100%;
    width: 100%;
}

.dest-region-img,
.exp-region-img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.dest-region-content,
.exp-region-content {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: flex-start;
    padding: var(--space-12);
}

.dest-region-content .dest-title,
.exp-region-content .dest-title {
    font-family: var(--font-display);
    font-size: var(--fs-2xl);
    line-height: var(--lh-snug);
    margin-bottom: var(--space-4);
    color: var(--color-black);
}

.dest-region-content .dest-body,
.exp-region-content .dest-body {
    font-family: var(--font-body);
    font-size: 1.125rem;
    line-height: var(--lh-normal);
    margin-bottom: var(--space-8);
    color: var(--color-text-body);
}

/* --- 12.3 SINGOLA DESTINAZIONE / ESPERIENZA (Pillar Interno) --- */
.dest-main-content,
.cat-pillar-main-content {
    padding-bottom: var(--space-20);
}

.dest-split-layout,
.cat-pillar-split-layout {
    display: grid;
    grid-template-columns: 1fr 22rem; 
    gap: var(--space-12);
    align-items: start;
    justify-content: space-between;
}

.dest-left-col,
.cat-pillar-left-col {
    width: 100%;
}

.dest-editorial-content,
.cat-pillar-editorial-content {
    display: flex;
    flex-direction: column;
    text-align: left;
}

.dest-kicker,
.cat-pillar-kicker {
    display: block;
	font-size: var(--fs-sm);
    font-weight: 600;
    letter-spacing: 0.05em;
	text-transform: uppercase;
    margin-bottom: var(--space-3);
}

.dest-title,
.cat-pillar-title {
    font-family: var(--font-display);
    font-size: var(--fs-xl);
    font-weight: 600;
    line-height: var(--lh-snug);
    margin-bottom: var(--space-6);
    color: var(--color-black);
    margin-left: 0;
    margin-right: auto;
}

.dest-body,
.cat-pillar-body {
    width: 100%;
}

.dest-body > *,
.cat-pillar-body > * {
    margin-left: 0;
    margin-right: 0;
    margin-bottom: var(--space-4);
    max-width: 100%;
}

@media (min-width: 1025px) {
    .dest-title,
    .cat-pillar-title,
    .dest-body > *,
    .cat-pillar-body > * {
        max-width: var(--w-article, 51.25rem); 
        margin-right: auto;
    }
}

@media (max-width: 1024px) {
    .dest-title,
    .cat-pillar-title,
    .dest-body > *,
    .cat-pillar-body > * {
        max-width: 100%;
        margin-right: 0;
    }
}

.dest-right-col,
.cat-pillar-right-col {
    position: sticky;
    top: calc(var(--header-height, 90px) + var(--space-8));
    display: flex;
    flex-direction: column;
    gap: var(--space-4);
    width: 100%;
    margin-top: 4.5rem; 
}

.dest-utility-item,
.cat-pillar-utility-item {
    background-color: var(--color-cream);
    border-radius: var(--radius-lg);
    padding: var(--space-5) var(--space-6);
    transition: background-color var(--duration-fast) var(--ease), color var(--duration-fast) var(--ease);
}

.dest-action-btn,
.cat-pillar-action-btn {
    display: flex;
    align-items: center;
    gap: var(--space-3);
    width: 100%;
    border: none;
    color: var(--color-black);
    font-family: var(--font-body);
    font-weight: 600;
    font-size: var(--fs-base);
    cursor: pointer;
}

.dest-action-btn:not(.is-saved):hover,
.cat-pillar-action-btn:not(.is-saved):hover {
    background-color: var(--color-red);
    color: var(--color-white);
}

.dest-action-icon,
.cat-pillar-action-icon {
    width: 1.25rem;
    height: 1.25rem;
    display: flex;
    align-items: center;
    flex-shrink: 0;
}

.dest-action-icon svg,
.cat-pillar-action-icon svg {
    width: 100%;
    height: 100%;
    display: block;
}

.dest-useful-links-box,
.cat-pillar-useful-links-box {
    padding-top: var(--space-6);
    padding-bottom: var(--space-6);
}

.dest-useful-header,
.cat-pillar-useful-header {
    display: flex;
    align-items: center;
    gap: var(--space-3);
    margin-bottom: var(--space-5);
}

.dest-utility-title-text,
.cat-pillar-utility-title-text {
    font-family: var(--font-body);
    font-weight: 600;
    font-size: var(--fs-base);
    color: var(--color-black);
}

.dest-links-list,
.cat-pillar-links-list {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: var(--space-4);
}

/* 1. Spostiamo il Flexbox sull'elemento <li> per affiancare pallino e link */
.dest-links-list li,
.cat-pillar-links-list li {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
}

/* 2. Il tag <a> ora contiene solo la tipografia */
.dest-links-list li a,
.cat-pillar-links-list li a {
    font-size: var(--fs-sm);
    color: var(--color-black);
    text-decoration: none;
    line-height: 1.4;
}

/* 3. Il pallino rimane inalterato e gestito dal flex del <li> */
.dest-bullet-gold,
.cat-pillar-bullet-gold {
    flex: 0 0 8px; 
    width: 8px;
    height: 8px;
    background-color: var(--color-gold);
    border-radius: 50%;
    margin-top: 0.35rem; 
}

/* --- 12.5 HUB RESPONSIVE MOBILE --- */
@media (max-width: 1024px) {
    .dest-hub-nav__list,
    .exp-hub-nav__list {
        justify-content: flex-start;
        padding: 1rem 1.25rem;
        overflow-x: auto;
        gap: 1.5rem;
        scrollbar-width: none;
    }
    .dest-hub-nav__list::-webkit-scrollbar,
    .exp-hub-nav__list::-webkit-scrollbar { display: none; }

    .dest-region-hero,
    .exp-region-hero {
        grid-template-columns: 1fr;
    }

    .dest-region-hero.is-reversed .dest-region-visual,
    .dest-region-hero.is-reversed .dest-region-content,
    .exp-region-hero.is-reversed .exp-region-visual,
    .exp-region-hero.is-reversed .exp-region-content {
        order: unset;
    }

    .dest-region-content,
    .exp-region-content {
        padding: var(--space-10) var(--space-6);
    }

    .dest-split-layout,
    .cat-pillar-split-layout {
        grid-template-columns: 1fr;
        gap: var(--space-10);
    }
    
    .dest-right-col,
    .cat-pillar-right-col {
        position: static;
        margin-top: 0;
        order: 2; 
    }
    
    .dest-left-col,
    .cat-pillar-left-col {
        order: 1;
    }

    .dest-main-content,
    .cat-pillar-main-content {
        padding-top: var(--space-8);
    }
}

/* SISTEMA A BINARIO CARD (Swipe Nativo) */
.dest-hub-page .hp-events-title-group,
.exp-hub-page .hp-events-title-group {
    margin-bottom: var(--space-8);
}

.dest-hub-page .hp-cards-track,
.exp-hub-page .hp-cards-track {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: var(--space-8);
}

.dest-hub-page .cat-related-card,
.exp-hub-page .cat-related-card {
    position: relative;
}

.dest-hub-page .hp-section-title,
.exp-hub-page .hp-section-title {
    font-size: var(--fs-xl);
    margin-bottom: var(--space-2);
}

/* --- Responsive Slider Hub (Allineato a logica Full-Bleed) --- */
@media (max-width: 1024px) {
    .dest-hub-page .hp-cards-track,
    .exp-hub-page .hp-cards-track {
        display: flex;
        flex-wrap: nowrap;
        overflow-x: auto;
        scroll-snap-type: x mandatory;
        scroll-padding-inline-start: var(--px-container);
        
        width: 100vw;
        margin-left: calc(50% - 50vw);
        margin-right: calc(50% - 50vw);
        padding-left: var(--px-container);
        padding-right: 12.5vw;
        
        gap: var(--space-4);
        padding-bottom: var(--space-8);
        scrollbar-width: none;
        -webkit-overflow-scrolling: touch;
    }

    .dest-hub-page .hp-cards-track::-webkit-scrollbar,
    .exp-hub-page .hp-cards-track::-webkit-scrollbar {
        display: none;
    }

    .dest-hub-page .cat-related-card,
    .exp-hub-page .cat-related-card {
        flex: 0 0 85%;
        max-width: 85%;
        scroll-snap-align: start;
        flex-shrink: 0;
        box-shadow: 0 0.25rem 1.5rem rgba(0, 0, 0, 0.06); /* Ombreggiatura unificata */
    }
}

@media (max-width: 768px) {
    .dest-hub-page .cat-related-card,
    .exp-hub-page .cat-related-card {
        flex: 0 0 75vw;
        max-width: 75vw;
    }
}

/* ─────────────────────────────────────────
   13. GRAND TOUR LANDING PAGE
   ───────────────────────────────────────── */

/* --- 13.1 PAGE HEADER & HERO --- */
.gt-page-header {
	width: min(var(--w-article), 100% - (var(--px-container) * 2));
	margin-inline: auto;
	padding-top: var(--space-16);
	padding-bottom: var(--space-10);
	text-align: center;
}

.gt-title-primary {
	font-family: var(--font-display);
	font-size: var(--fs-h1);
	font-weight: 600;
	line-height: var(--lh-tight);
	color: var(--color-black);
	margin-bottom: var(--space-6);
}

.gt-subtitle-primary {
	font-size: var(--fs-lead);
	line-height: var(--lh-normal);
	color: var(--color-text-body);
	text-wrap: balance;
}

.gt-hero-figure {
	margin: 0;
	position: relative;
	background-color: var(--color-black);
	border-radius: var(--radius-lg);
	overflow: hidden; 
}

.gt-hero-img {
	width: 100%;
	height: auto;
	max-height: 85vh; 
	object-fit: cover;
	display: block;
}

.gt-hero-figure .gt-hero-overlay {
	position: absolute;
	inset: 0;
	background: linear-gradient(90deg, rgba(0, 0, 0, 0.75) 0%, rgba(0, 0, 0, 0.35) 45%, rgba(0, 0, 0, 0.05) 100%);
	z-index: 2;
}

.gt-hero-figure .gt-hero-content-layer {
	position: absolute;
	inset: 0;
	z-index: 3;
	display: flex;
	align-items: center;
}

.gt-hero-figure .gt-hero-content-grid {
	width: 100%;
	max-width: 90rem; 
	margin-inline: auto;
	padding-inline: max(var(--px-container), 3rem); 
	display: grid;
	grid-template-columns: 55% 45%; 
	gap: var(--space-10);
	align-items: center;
}

.gt-hero-figure .gt-hero-left {
	display: flex;
	flex-direction: column; 
	align-items: flex-start;
	color: var(--color-white);
}

.gt-hero-figure .official-logo {
	height: clamp(4.5rem, 6vw, 5.5rem); 
	width: auto;
	margin-bottom: var(--space-6); 
	filter: drop-shadow(0 0.25rem 0.375rem rgba(0,0,0,0.3));
}

.gt-hero-figure .hero-titles-wrapper {
	margin: 0 0 var(--space-6) 0;
}

.gt-hero-figure .hero-title {
	font-family: var(--font-display);
	font-size: var(--fs-2xl);
	font-weight: 600;
	line-height: var(--lh-snug);
	color: var(--color-white);
	margin: 0;
	text-wrap: balance; 
}

.gt-hero-figure .hero-excerpt-container {
	margin-bottom: var(--space-6);
	max-width: 65ch;
}

.gt-hero-figure .hero-excerpt {
	font-size: var(--fs-lead);
	line-height: var(--lh-normal);
	color: var(--color-white);
	margin: 0;
	text-wrap: pretty;
	max-width: 60ch;
}

.gt-hero-figure .gt-hero-right {
	display: flex;
	justify-content: flex-end;
	align-items: center;
}

.gt-hero-figure .gt-stage-map-container {
	position: relative;
	width: 100%;
	max-width: 42rem; 
	filter: drop-shadow(0 0.9375rem 1.875rem rgba(0,0,0,0.5));
}

.gt-hero-figure .gt-stage-map-svg { 
	width: 100%; 
	height: auto; 
	display: block; 
}

.gt-hero-figure .cat-image-credit {
	z-index: 20; 
}

@media (max-width: 1200px) and (min-width: 1025px) {
	.gt-hero-figure .gt-hero-content-grid {
		gap: var(--space-4);
		grid-template-columns: 60% 40%;
	}
	.gt-hero-figure .gt-hero-right {
		transform: scale(0.9);
		transform-origin: center right;
	}
}

@media (max-width: 1024px) {
	.gt-hero-figure {
		border-radius: 0;
		aspect-ratio: 1 / 1;
	}
	.gt-hero-figure .gt-hero-img {
		height: 100%;
		border-radius: 0;
	}
	.gt-hero-figure .gt-hero-content-grid {
		grid-template-columns: 1fr;
		padding-top: var(--space-8);
		padding-bottom: var(--space-8);
		padding-inline: var(--px-container); /* FIX 2: Annulla i 3rem di max() e usa il valore nativo */
	}
	.gt-hero-figure .gt-hero-overlay {
		background: linear-gradient(0deg, rgba(0,0,0,0.85) 0%, rgba(0,0,0,0.4) 50%, rgba(0,0,0,0.05) 100%);
	}
	.gt-hero-figure .gt-hero-content-layer {
		align-items: center; /* FIX 1: Centra perfettamente il blocco in verticale */
	}
}

/* --- 13.2 INTRO & SPIRITO --- */
.gt-intro-content h3 {
	font-family: var(--font-display);
	font-size: var(--fs-xl); 
	font-weight: 600;
	line-height: var(--lh-snug);
	color: inherit;
	margin-top: 0;
	margin-bottom: var(--space-6); 
}

.gt-intro-content > *:last-child { margin-bottom: 0; }

.gt-intro-section { 
	padding-bottom: var(--space-24); 
	text-align: center; 
	border-bottom: 1px solid rgba(0,0,0,0.05); 
}

.gt-intro-logos { 
	display: flex; 
	flex-direction: column; 
	justify-content: center; 
	align-items: center; 
	gap: var(--space-4); 
	margin-bottom: var(--space-8); 
	font-size: var(--fs-sm); 
	font-weight: 700; 
	text-transform: uppercase; 
	letter-spacing: 0.1em; 
	color: var(--color-light-black); 
}

.gt-lp-logo { height: 2.5rem; width: auto; }

.gt-intro-text { 
	max-width: var(--w-article); 
	margin-inline: auto; 
	font-size: var(--fs-lead);
	line-height: var(--lh-normal);
	color: var(--color-black);
	text-wrap: balance;
}

.gt-spirit-section { 
	padding-top: var(--space-16);
	padding-bottom: var(--space-24);
}

.gt-section-kicker {
	display: block;
	font-family: var(--font-body);
	font-size: var(--fs-xs);
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.12em;
	color: var(--color-red);
	line-height: 1;
	margin-bottom: var(--space-3); 
}

.gt-section-title { 
	font-family: var(--font-display); 
	font-size: var(--fs-2xl);
	font-weight: 600;
	line-height: var(--lh-tight); 
	margin-bottom: var(--space-10); 
}

.gt-spirit-split {
	background-color: var(--color-cream);
	border-radius: var(--radius-lg);
	padding: var(--space-20);
	max-width: 80rem; 
	margin-inline: auto;
	display: grid;
	grid-template-columns: 1fr 1.1fr;
	gap: var(--space-10);
	align-items: center;
}

.gt-spirit-content { padding-right: var(--space-4); }

/* --- 13.3 COMPONENTE PODCAST CARD --- */
.cat-podcast-card {
	display: block;
	position: relative;
	width: 100%;
	aspect-ratio: 4 / 3;
	border-radius: var(--radius-lg);
	overflow: hidden;
	text-decoration: none;
	box-shadow: 0 1rem 3rem rgba(0,0,0,0.15);
	isolation: isolate; 
}

.cat-podcast-card__bg {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	z-index: -2;
	transition: transform var(--duration-slow) var(--ease);
	will-change: transform;
}

.cat-podcast-card:hover .cat-podcast-card__bg { transform: scale(1.05) translateZ(0); }

.cat-podcast-card__glass {
	position: absolute;
	bottom: 0;
	left: 0;
	width: 100%;
	background: rgba(20, 20, 20, 0.35); 
	backdrop-filter: blur(10px);
	-webkit-backdrop-filter: blur(10px);
	padding: var(--space-5) var(--space-8);
	box-sizing: border-box;
	display: flex;
	justify-content: space-between;
	align-items: flex-end; 
	gap: var(--space-4);
	border-top: 1px solid rgba(255, 255, 255, 0.2);
}

.cat-podcast-card__text-wrap {
	display: flex;
	flex-direction: column;
	gap: var(--space-2);
	color: var(--color-white);
	max-width: 80%;
}

.cat-podcast-card__title {
	font-family: var(--font-display);
	font-size: var(--fs-xl); 
	line-height: var(--lh-tight);
	color: var(--color-white);
	margin: 0;
}

.cat-podcast-card__meta {
	font-size: var(--fs-sm);
	line-height: var(--lh-tight);
	color: var(--color-white);
	margin: 0;
}

.cat-podcast-card__cta {
	display: inline-flex;
	align-items: center;
	gap: var(--space-2);
	font-weight: 600;
	font-size: var(--fs-sm); 
	color: var(--color-white);
	text-transform: uppercase;
	letter-spacing: 0.08em;
	transition: opacity var(--duration-base) var(--ease);
	margin-top: var(--space-2);
}

.cat-podcast-card__cta svg { transition: transform var(--duration-base) var(--ease); }
.cat-podcast-card:hover .cat-podcast-card__cta { opacity: 1; }
.cat-podcast-card:hover .cat-podcast-card__cta svg { transform: translateX(4px); }

.cat-podcast-card__badge {
	position: absolute;
	top: var(--space-8);
	left: var(--space-8);
	z-index: 10;
	flex-shrink: 0;
	background-color: var(--color-red);
	color: var(--color-white);
	font-size: var(--fs-xs); 
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.05em;
	padding: 0.375rem 1rem; 
	border-radius: var(--radius-pill);
	display: inline-flex;
	align-items: center;
	gap: 0.375rem; 
	margin: 0; 
}

.cat-podcast-card__icon {
    width: 1.15em; 
    height: 1.15em;
    display: block;
    flex-shrink: 0; 
}

/* --- 13.4 LAYOUT MAPPA (SPLIT SCREEN) --- */
.gt-itinerary-section {
	padding-block: var(--space-24);
	background-color: var(--color-background);
	border-top: 1px solid rgba(0,0,0,0.05);
}

.gt-itinerary-header {
	text-align: center;
	max-width: var(--w-article);
	margin-inline: auto;
	margin-bottom: var(--space-24);
}

.gt-itinerary-subtitle {
	color: var(--color-light-black);
	font-size: var(--fs-lead);
	line-height: var(--lh-normal);
	margin-top: var(--space-4);
	text-wrap: pretty;
}

.gt-experiences-legend {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-wrap: wrap;
    gap: var(--space-8);
    margin-top: var(--space-10);
    padding-top: var(--space-8);
    border-top: 1px solid rgba(0, 0, 0, 0.09); 
}

.gt-exp-item {
    display: flex;
    align-items: center;
    gap: var(--space-3);
    color: var(--color-light-black);
    font-size: var(--fs-sm);
    font-weight: 600;
    text-transform: uppercase;
	line-height: 1;
    letter-spacing: 0.05em;
}

.gt-exp-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 1.25rem;
    height: 1.25rem;
    color: var(--color-red); 
    flex-shrink: 0;
}
.gt-exp-icon svg { width: 100%; height: 100%; display: block; }

.gt-split-layout {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: var(--space-16);
	align-items: start;
}

.gt-cards-col {
	display: flex;
	flex-direction: column;
	gap: var(--space-16);
}

/* --- 13.5 STACKING MAPPA E HITBOX --- */
.gt-map-col {
	position: sticky;
	top: calc(var(--header-height) + var(--space-10)); 
	display: flex;
	justify-content: center;
}

.map-wrapper {
	position: relative;
	width: 100%;
	max-width: 37.5rem; 
	filter: drop-shadow(0 0.5rem 1.5rem rgba(0,0,0,0.08));
}

.map-layer { width: 100%; height: auto; display: block; }
.map-layer.base { position: relative; z-index: var(--z-base); }
.map-layer.stage {
	position: absolute; top: 0; left: 0; z-index: 2; opacity: 0;
	transition: opacity var(--duration-slow) var(--ease); pointer-events: none;
}
.map-layer.stage.is-active { opacity: 1; }

.hitbox { position: absolute; z-index: 10; cursor: pointer; }
.hitbox-t1 { top: 35%; left: 36%; width: 28%; height: 39%; }
.hitbox-t2 { top: 53%; left: 3%; width: 30%; height: 44%; }
.hitbox-t3 { top: 5%; left: 13%; width: 23%; height: 46%; }
.hitbox-t4 { top: 13%; left: 40%; width: 47%; height: 15%; }
.hitbox-t5-a { top: 28%; left: 65%; width: 35%; height: 27%; }
.hitbox-t5-b { top: 13%; left: 90%; width: 10%; height: 15%; }

/* --- 13.6 CARD TAPPA --- */
.gt-stage-card {
	display: flex;
	flex-direction: column;
	background-color: var(--color-white);
	border-radius: var(--radius-lg);
	overflow: hidden;
	box-shadow: 0 0.25rem 1.5rem rgba(0,0,0, 0.06); 
	text-decoration: none;
	color: inherit;
}

.gt-stage-visual {
	position: relative;
	width: 100%;
	aspect-ratio: 4 / 3;
	overflow: hidden;
}

.gt-stage-visual img {
	width: 100%; height: 100%; object-fit: cover; display: block;
	transition: transform var(--duration-slow) var(--ease); will-change: transform;
}

.gt-stage-label {
	position: absolute; bottom: -1px; left: -1px;
	background-color: var(--color-cream); color: var(--color-black);
	font-size: var(--fs-sm); font-weight: 700; text-transform: uppercase;
	padding: 0.375rem 0.75rem; z-index: 2; letter-spacing: 0.05em; border-top-right-radius: 6px;
}

.gt-stage-card:hover .gt-stage-visual img { transform: scale(1.05) translateZ(0); }

.gt-stage-content {
	padding: var(--space-6); 
	display: flex; flex-direction: column; flex-grow: 1; gap: var(--space-4);
}

.gt-stage-title {
	font-family: var(--font-display); font-size: var(--fs-xl); font-weight: 600;
	line-height: var(--lh-tight); margin: 0; transition: color var(--duration-fast) var(--ease);
}
.gt-stage-card:hover .gt-stage-title { color: var(--color-red); }

.gt-stage-meta {
	display: flex; flex-wrap: wrap; gap: var(--space-6); padding-bottom: var(--space-4);
	border-bottom: 1px solid rgba(0,0,0,0.09);
}

.gt-meta-item {
	display: flex; align-items: center; gap: var(--space-2); font-weight: 600;
	font-size: var(--fs-sm); line-height: 1; color: var(--color-light-black);
}

.gt-meta-icon {
	display: flex; align-items: center; justify-content: center; width: 1.25rem; 
	height: 1.25rem; color: var(--color-red); flex-shrink: 0;
}
.gt-meta-icon svg { width: 100%; height: 100%; display: block; }

.gt-stage-meta--multi {
    display: flex; align-items: center; gap: var(--space-4); padding-bottom: var(--space-4);
    border-bottom: 1px solid rgba(0,0,0,0.09);
}

.gt-multi-icons { display: flex; align-items: center; gap: var(--space-2); }
.gt-multi-text {
    font-size: var(--fs-sm); font-weight: 600; color: var(--color-light-black);
    text-transform: uppercase; letter-spacing: 0.05em; line-height: 1; 
}

.gt-stage-desc {
	color: var(--color-light-black); display: -webkit-box; -webkit-line-clamp: 3;
	-webkit-box-orient: vertical; overflow: hidden; margin: 0; font-size: var(--fs-base); 
}

.fake-link-animated {
	display: inline-flex; align-items: center; gap: var(--space-2); color: var(--color-black); 
	font-weight: 600; text-transform: uppercase; font-size: var(--fs-sm); line-height: 1;
	margin-top: auto; padding-top: var(--space-2); transition: color var(--duration-fast) var(--ease);
}
.fake-link-animated svg { width: 1.25em; height: 1.25em; transition: transform var(--duration-fast) var(--ease); display: block; }
.gt-stage-card:hover .fake-link-animated { color: var(--color-red); }
.gt-stage-card:hover .fake-link-animated svg { transform: translateX(4px); }

/* --- 13.7 LIGHTBOX VIDEO E COVER --- */
.gt-route-intro-media { width: 100%; }
.gt-video-trigger {
	position: relative; width: 100%; aspect-ratio: 16 / 9; border-radius: var(--radius-lg);
	overflow: hidden; cursor: pointer; box-shadow: var(--shadow-sm);
	transition: transform var(--duration-base) var(--ease), box-shadow var(--duration-base) var(--ease);
}
.gt-video-trigger:hover { transform: translateY(-4px); box-shadow: var(--shadow-md); }
.gt-video-cover { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform var(--duration-slow) var(--ease); }
.gt-video-trigger:hover .gt-video-cover { transform: scale(1.05); }
.gt-video-trigger::after {
	content: ''; position: absolute; inset: 0; background-color: rgba(0, 0, 0, 0.1); 
	transition: background-color var(--duration-base) var(--ease); z-index: 1;
}
.gt-video-logo {
	position: absolute; top: var(--space-6); right: var(--space-6); width: 7.5rem; 
	height: auto; z-index: 2; opacity: 0.9; transition: opacity var(--duration-base) var(--ease);
}
.gt-video-trigger:hover .gt-video-logo { opacity: 1; }
.gt-play-btn {
	position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);
	width: 4.5rem; height: 4.5rem; background-color: rgba(255, 255, 255, 0.15); 
	backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); border: 1px solid rgba(255, 255, 255, 0.3); 
	border-radius: 50%; color: var(--color-white); z-index: 2;
	transition: transform var(--duration-base) var(--ease), background-color var(--duration-base) var(--ease);
}
.gt-play-btn svg { margin-left: 4px; }
.gt-video-trigger:hover .gt-play-btn { transform: translate(-50%, -50%) scale(1.1); background-color: rgba(255, 255, 255, 0.25); }

.gt-video-lightbox {
	position: fixed; inset: 0; z-index: 99999; display: flex; align-items: center; justify-content: center; padding: var(--space-4);
}
.gt-lightbox-overlay {
	position: absolute; inset: 0; background-color: rgba(0, 0, 0, 0.85); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
}
.gt-lightbox-content {
    position: relative; z-index: 100000; width: 100%; max-width: 87.5rem; aspect-ratio: 16 / 9; 
    background-color: #000; border-radius: var(--radius-lg); overflow: hidden; box-shadow: 0 1.5rem 3rem -0.75rem rgba(0, 0, 0, 0.8);
}
.gt-lightbox-content.is-cinema { aspect-ratio: 2.35 / 1; }
.gt-video-player { width: 100%; height: 100%; object-fit: cover; display: block; }
.gt-lightbox-close {
	position: absolute; top: var(--space-6); right: var(--space-6); z-index: 100001;
	width: 3.5rem; height: 3.5rem; background-color: rgba(255, 255, 255, 0.15); 
	backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); border: 1px solid rgba(255, 255, 255, 0.3); 
	border-radius: 50%; color: var(--color-white); display: flex; align-items: center; justify-content: center; cursor: pointer;
	transition: transform var(--duration-base) var(--ease), background-color var(--duration-base) var(--ease);
}
.gt-lightbox-close:hover { transform: scale(1.1); background-color: rgba(255, 255, 255, 0.25); }

/* --- RESPONSIVE GRAND TOUR LANDING --- */
@media (max-width: 1024px) { 
	.gt-split-layout { grid-template-columns: 1fr; }
	.gt-map-col { position: relative; top: 0; margin-bottom: var(--space-10); }
    .gt-experiences-legend { gap: var(--space-4); }
}
@media (max-width: 992px) {
	.gt-spirit-split { grid-template-columns: 1fr; gap: var(--space-8); padding: var(--space-10) var(--space-6); }
}
@media (max-width: 768px) {
	.cat-podcast-card { aspect-ratio: 1 / 1; }
	.cat-podcast-card__badge { top: var(--space-6); left: var(--space-6); }
	.cat-podcast-card__glass { flex-direction: column-reverse; align-items: flex-start; padding: var(--space-6); }
	.cat-podcast-card__text-wrap { max-width: 100%; }
    .gt-lightbox-content { aspect-ratio: 16 / 9; }
	.gt-lightbox-close { top: var(--space-4); right: var(--space-4); width: 3rem; height: 3rem; }
}

/* ==========================================================================
   14. GRAND TOUR - PAGINA TAPPA
   ========================================================================== */

/* ============================================================
   14.1 HERO DASHBOARD INTERATTIVA (Dentro il wrapper nativo)
   ============================================================ */

/* Il contenitore principale che racchiude le foto e i layer */
.gt-stage-interactive {
    position: relative;
    width: 100%;
    overflow: hidden;
    background-color: var(--color-black);
    border-radius: var(--radius-lg); /* Ripete il bordo nativo in caso di foto mancante */
}

/* Gestione del crossfade delle foto */
.gt-stage-interactive .bg-layer {
    transition: opacity var(--duration-base) var(--ease);
}

.gt-stage-interactive .bg-layer:not(.is-active) {
    opacity: 0;
}

/* L'immagine della bici va in absolute sopra quella dell'auto, così non occupano doppio spazio */
.gt-stage-interactive .absolute-layer {
    position: absolute;
    top: 0; left: 0;
    width: 100%; height: 100%;
}

/* Gradiente sopra le foto per garantire la leggibilità dei testi bianchi */
.gt-stage-interactive .gt-hero-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg, rgba(0, 0, 0, 0.75) 0%, rgba(0, 0, 0, 0.35) 45%, rgba(0, 0, 0, 0.05) 100%);
    z-index: 2;
}

/* Fix Z-Index per la Smart Card dei Crediti nella Tappa Singola */
.gt-stage-interactive .cat-image-credit {
	z-index: 20; 
}

/* Dissolvenza dinamica Crediti Hero Grand Tour */
.gt-credit-layer {
    position: absolute;
    bottom: 0;
    right: 0;
    z-index: 50;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity 0.4s ease, visibility 0.4s ease;
}

.gt-credit-layer.is-active {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
}

/* FIX MOBILE: Elevazione Smart Card Crediti (Singola Tappa)
   Scavalca lo switcher in basso a destra mantenendo il margine laterale intatto */
@media (max-width: 1024px) {
	.gt-stage-interactive .cat-image-credit {
		/* Usa calc() per sommare il margine base (var(--space-4)) 
		   all'ingombro stimato dello switcher (es. 4.5rem = ~72px).
		*/
		bottom: calc(var(--space-4) + 1.5rem); 
	}
}

/* Il Box dei contenuti: in Absolute così si poggia sopra la foto, ma padding laterali per rispettare i 1440px */
.gt-stage-interactive .gt-hero-content-layer {
    position: absolute;
    inset: 0;
    z-index: 3;
    display: flex;
    align-items: center;
}

.gt-stage-interactive .gt-hero-content-grid {
    width: 100%;
    /* ECCO IL BLOCCO MANCANTE: Ferma il contenuto a 1440px, lo centra e gli dà i tuoi margini di sicurezza nativi */
    max-width: 1440px; 
    margin-inline: auto;
    
    /* FIX PREMIUM: Usa il padding fluido di sistema, ma non scende MAI sotto i 3rem (48px) */
    padding-inline: max(var(--px-container), 3rem); 
    
    display: grid;
    grid-template-columns: 55% 45%; 
    gap: var(--space-10);
    align-items: center;
}

/* --- COLONNA SINISTRA (Logo e Testi) --- */
.gt-stage-interactive .gt-hero-left {
    display: flex;
    flex-direction: column; 
    align-items: flex-start;
    color: var(--color-white);
}

.gt-stage-interactive .official-logo {
    /* Dimensione fluida: min 4.5rem (~72px), ideale 6vw, max 5.5rem (~88px) */
    height: clamp(4.5rem, 6vw, 5.5rem); 
    width: auto;
    /* Margine inferiore ridotto leggermente per legarlo meglio al Titolo */
    margin-bottom: var(--space-6); 
    filter: drop-shadow(0 4px 6px rgba(0,0,0,0.3));
}

.gt-stage-interactive .hero-subtitle {
    font-size: var(--fs-sm);
    text-transform: uppercase;
    letter-spacing: 2px;
    color: var(--color-cream);
    margin-bottom: var(--space-3);
}

/* Contenitore a griglia per sovrapporre perfettamente i due Titoli H2 */
.gt-stage-interactive .hero-titles-wrapper {
    display: grid;
    margin: 0 0 var(--space-6) 0;
}

.gt-stage-interactive .hero-title {
    grid-area: 1 / 1; 
    font-family: var(--font-display);
    font-size: var(--fs-3xl);
    font-weight: 600;
    line-height: var(--lh-snug);
    color: var(--color-white);
    margin: 0;
    opacity: 0;
    transition: opacity var(--duration-base) var(--ease);
    /* Evita righe asimmetriche e parole singole a capo */
    text-wrap: balance; 
}

.gt-stage-interactive .hero-title.is-active { 
    opacity: 1; 
    z-index: 2; 
}

/* --- PANNELLO DATI UX (Glassmorphism) --- */
.gt-stage-interactive .gt-hero-route-summary {
    display: flex;
    gap: var(--space-6);
    /* Ridotto leggermente il padding per renderlo più compatto */
    padding: var(--space-5) var(--space-6); 
    border-radius: var(--radius-md);
    background: rgba(255, 255, 255, 0.1); 
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    border: 1px solid rgba(255, 255, 255, 0.15); 
    opacity: 0; 
    transition: opacity var(--duration-base) var(--ease);
    /* min-height in pixel rimosso. L'altezza ora è dettata organicamente dal contenuto e dal padding */
    align-items: center;
}

.gt-stage-interactive .hero-stat-mode { display: flex; align-items: center; gap: var(--space-3); }
/* Convertito in rem (circa 28px invece di 32px), per non far sembrare l'icona enorme */
.gt-stage-interactive .hero-stat-mode-icon { color: var(--color-red); width: 1.75rem; height: 1.75rem; }
/* Ridotto da fs-lg a fs-base per un look più pulito */
.gt-stage-interactive .hero-stat-mode-label { font-family: var(--font-display); font-size: var(--fs-base); color: var(--color-white); line-height: 1; white-space: nowrap; }

/* Altezza convertita in rem (circa 32px invece di 40px) */
.gt-stage-interactive .hero-stat-divider { width: 1px; height: 2rem; background-color: rgba(255, 255, 255, 0.2); }
.gt-stage-interactive .hero-stat-box { display: flex; flex-direction: column; gap: var(--space-1); }

/* Lettere spaziate con 'em' relativo al font-size, invece dei pixel rigidi */
.gt-stage-interactive .hero-stat-label { font-size: var(--fs-xs); text-transform: uppercase; letter-spacing: 0.1em; color: var(--color-cream); font-weight: 600; white-space: nowrap; }
/* Ridotto da fs-2xl a fs-xl: i numeri ora sono leggibili ma non opprimenti */
.gt-stage-interactive .hero-stat-value { font-family: var(--font-body); font-size: var(--fs-xl); font-weight: 700; line-height: 1; color: var(--color-white); display: flex; align-items: baseline; gap: var(--space-1); white-space: nowrap; }
.gt-stage-interactive .hero-stat-unit { font-size: var(--fs-sm); font-weight: 600; color: var(--color-white); }

/* --- COLONNA DESTRA (Mappa SVG) --- */
.gt-stage-interactive .gt-hero-right {
    display: flex;
    justify-content: flex-end;
    align-items: center;
}

.gt-stage-map-container {
    position: relative;
    width: 100%;
    max-width: 42rem; 
    filter: drop-shadow(0 15px 30px rgba(0,0,0,0.5));
    display: grid; 
}

.gt-stage-map-svg { 
    width: 100%; 
    height: auto; 
    display: block; 
    grid-area: 1 / 1; 
    opacity: 0; 
    transition: opacity 0.5s ease-in-out;
	filter: drop-shadow(0 15px 30px rgba(0,0,0,0.5));
}

.gt-stage-map-svg.is-active { 
    opacity: 1; 
    z-index: 2; 
}

/* Hitbox per la navigazione interattiva */
.gt-stage-interactive .hitbox {
    position: absolute;
    z-index: 10;
    cursor: pointer;
    display: block;
}
.gt-stage-interactive .hitbox-t1 { top: 35%; left: 36%; width: 28%; height: 39%; }
.gt-stage-interactive .hitbox-t2 { top: 53%; left: 3%; width: 30%; height: 44%; }
.gt-stage-interactive .hitbox-t3 { top: 5%; left: 13%; width: 23%; height: 46%; }
.gt-stage-interactive .hitbox-t4 { top: 13%; left: 40%; width: 47%; height: 15%; }
.gt-stage-interactive .hitbox-t5-a { top: 28%; left: 65%; width: 35%; height: 27%; }
.gt-stage-interactive .hitbox-t5-b { top: 13%; left: 90%; width: 10%; height: 15%; }

/* --- RESPONSIVE HERO DASHBOARD (Fase 1: Zona d'ombra 1200px - 1025px) --- */
@media (max-width: 1200px) and (min-width: 1025px) {
	
	/* 1. Ribilanciamo la griglia: 60% ai testi, 40% alla mappa */
	.gt-stage-interactive .gt-hero-content-grid {
		gap: var(--space-4);
		grid-template-columns: 60% 40%;
	}

	/* 2. Scaliamo leggermente la colonna destra (Mappa SVG) per farla respirare */
	.gt-stage-interactive .gt-hero-right {
		transform: scale(0.9);
		transform-origin: center right;
	}
}

/* --- IL PONTE DELLO SWITCHER --- */
/* Incastriamo lo switcher esattamente a cavallo tra la fine dell'immagine e l'inizio del testo bianco */
.gt-switcher-bridge {
    position: relative;
    width: 100%;
    z-index: 10;
    margin-top: calc(var(--space-10) * -1); 
    display: flex;
    justify-content: center;
}

.gt-switcher-bridge .gt-switcher-nav {
    display: flex;
    align-items: center;
    gap: var(--space-4);
    background-color: var(--color-white); 
    padding: var(--space-2);
    border-radius: 50px;
    box-shadow: 0 10px 25px rgba(0,0,0,0.08);
    border: 1px solid rgba(0,0,0,0.03);
}

.gt-switcher-bridge .btn-switcher {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    padding: var(--space-3) var(--space-6);
    background: transparent;
    border: 1px solid transparent;
    border-radius: var(--radius-pill);
    font-family: var(--font-body);
    font-size: var(--fs-base);
    font-weight: 600;
    color: var(--color-light-black);
    cursor: pointer;
    transition: all var(--duration-base) var(--ease);
}

.gt-switcher-bridge .btn-switcher:hover { color: var(--color-red); }
.gt-switcher-bridge .btn-switcher.is-active {
    background-color: var(--color-red);
    color: var(--color-white);
    border-color: var(--color-red);
}

.gt-switcher-bridge .switcher-icon { width: 20px; height: 20px; }

/* --- PRESENTAZIONE PERCORSO (Intro Editoriale) --- */
.gt-route-presentation {
	padding-top: var(--space-16);
	padding-bottom: var(--space-8);
	display: flex;
	flex-direction: column;
	gap: var(--space-12);
}

.gt-intro-content {
	max-width: 65ch;
	font-size: var(--fs-md);
	line-height: var(--lh-normal);
	color: var(--color-black);
}

.gt-intro-content p,
.gt-intro-content ul,
.gt-intro-content li {
	font-size: inherit; /* Forza il tag <p> a ereditare la grandezza della scatola genitore (fs-lg) */
	line-height: inherit; /* Forza anche l'altezza della riga per non "schiacciare" il testo più grande */
	margin-bottom: var(--space-4);
}

.gt-intro-content p:last-child {
	margin-bottom: 0;
}

.gt-route-kicker {
	display: block;
	font-family: var(--font-body);
	font-size: var(--fs-sm);
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.1em;
	color: var(--color-light-black);
	border-bottom: 1px solid var(--color-cream);
	padding-bottom: var(--space-4);
}

/* --- GRIGLIA INTRODUTTIVA (Testo/Download + Video) --- */
.gt-route-intro-grid {
	display: grid;
	grid-template-columns: 1fr; /* Su mobile: tutto in colonna */
	gap: var(--space-8);
	margin-bottom: var(--space-12); /* Respiro prima del kicker "Esplora le tappe" */
}

@media (min-width: 1025px) {
	.gt-route-intro-grid {
		grid-template-columns: 1fr 1fr; /* Su desktop: 55% Testo, 45% Video */
		align-items: center; /* Allinea tutto perfettamente al centro verticale */
		gap: var(--space-12);
	}
}

/* --- ACTION BAR & BOTTONI GHOST --- */
.gt-action-bar {
	flex-wrap: wrap; /* Se lo schermo è piccolo, i bottoni vanno a capo */
}

.gt-btn-ghost {
	padding: var(--space-3) var(--space-6);
	border: 1px solid var(--color-red);
	color: var(--color-red);
	border-radius: var(--radius-sm);
	font-family: var(--font-body);
	font-size: var(--fs-sm);
	font-weight: 600;
	text-decoration: none;
	background-color: transparent;
	transition: background-color var(--duration-base) var(--ease), color var(--duration-base) var(--ease);
}

.gt-btn-ghost:hover {
	background-color: var(--color-red);
	color: var(--color-white);
}

.gt-btn-ghost svg {
	flex-shrink: 0;
}

/* --- MINIATURA VIDEO CINEMATOGRAFICA --- */
.gt-route-intro-media {
	width: 100%;
}

.gt-video-trigger {
	position: relative;
	width: 100%;
	aspect-ratio: 16 / 9; /* Aggiornato per la tua nuova copertina */
	border-radius: var(--radius-lg);
	overflow: hidden;
	cursor: pointer;
	box-shadow: var(--shadow-sm);
	transition: transform var(--duration-base) var(--ease), box-shadow var(--duration-base) var(--ease);
}

.gt-video-trigger:hover {
	transform: translateY(-4px);
	box-shadow: var(--shadow-md);
}

.gt-video-cover {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	transition: transform var(--duration-slow) var(--ease);
}

.gt-video-trigger:hover .gt-video-cover {
	transform: scale(1.05);
}

/* Overlay scuro per dare profondità */
.gt-video-trigger::after {
	content: '';
	position: absolute;
	inset: 0;
	background-color: rgba(0, 0, 0, 0.1); 
	transition: background-color var(--duration-base) var(--ease);
	z-index: 1;
}

.gt-video-trigger:hover::after {
	background-color: rgba(0, 0, 0, 0.1); 
}

/* --- NUOVO LOGO IN OVERLAY --- */
.gt-video-logo {
	position: absolute;
	top: var(--space-6);
	right: var(--space-6);
	width: 120px; /* Dimensione elegante e non invadente */
	height: auto;
	z-index: 2; /* Sta sopra all'overlay */
	opacity: 0.9;
	transition: opacity var(--duration-base) var(--ease);
}

.gt-video-trigger:hover .gt-video-logo {
	opacity: 1; /* Si illumina completamente al passaggio del mouse */
}

/* --- NUOVO PLAY BUTTON: GLASSMORPHISM --- */
.gt-play-btn {
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
	width: 72px; /* Leggermente più grande per esaltare l'effetto vetro */
	height: 72px;
	background-color: rgba(255, 255, 255, 0.15); /* Bianco quasi trasparente */
	backdrop-filter: blur(8px); /* Magia Apple: Sfoca lo sfondo dietro il bottone */
	-webkit-backdrop-filter: blur(8px); /* Supporto Safari */
	border: 1px solid rgba(255, 255, 255, 0.3); /* Bordino sottilissimo per delineare il cerchio */
	border-radius: 50%;
	color: var(--color-white); /* Il triangolo ora è bianco candido */
	z-index: 2;
	transition: transform var(--duration-base) var(--ease), background-color var(--duration-base) var(--ease);
}

.gt-play-btn svg {
	margin-left: 4px; /* Centratura ottica del triangolo */
}

.gt-video-trigger:hover .gt-play-btn {
	transform: translate(-50%, -50%) scale(1.1);
	background-color: rgba(255, 255, 255, 0.25); /* Il vetro diventa leggermente più opaco all'hover */
}

/* --- FASE 4: LIGHTBOX VIDEO A TUTTO SCHERMO --- */
.gt-video-lightbox {
	position: fixed;
	inset: 0;
	z-index: 99999;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: var(--space-4);
}

.gt-lightbox-overlay {
	position: absolute;
	inset: 0;
	background-color: rgba(0, 0, 0, 0.85);
	backdrop-filter: blur(12px);
	-webkit-backdrop-filter: blur(12px);
}

/* Scatola Base: Formato 16:9 per On The Road e video standard */
.gt-lightbox-content {
    position: relative;
    z-index: 100000;
    width: 100%;
    max-width: 1400px;
    aspect-ratio: 16 / 9; 
    background-color: #000;
    border-radius: var(--radius-lg);
    overflow: hidden;
    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.8);
}

/* Modificatore Javascript: Formato Ultra-Wide per la Bicicletta */
.gt-lightbox-content.is-cinema {
    aspect-ratio: 2.35 / 1;
}

.gt-video-player {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.gt-lightbox-close {
	position: absolute;
	top: var(--space-6); /* Più respiro dal bordo del monitor */
	right: var(--space-6);
	z-index: 100001;
	width: 56px; /* Leggermente più grande, target perfetto per il mouse */
	height: 56px;
	background-color: rgba(255, 255, 255, 0.15); /* Base Glassmorphism */
	backdrop-filter: blur(8px); /* Effetto vetro sfocato */
	-webkit-backdrop-filter: blur(8px);
	border: 1px solid rgba(255, 255, 255, 0.3); /* Bordino luminoso */
	border-radius: 50%;
	color: var(--color-white);
	display: flex;
	align-items: center;
	justify-content: center;
	cursor: pointer;
	transition: transform var(--duration-base) var(--ease), background-color var(--duration-base) var(--ease);
}

.gt-lightbox-close:hover {
	transform: scale(1.1);
	background-color: rgba(255, 255, 255, 0.25); /* Nessun rosso, solo vetro che si illumina */
}

@media (max-width: 768px) {
	.gt-lightbox-content {
		aspect-ratio: 16 / 9;
	}
	.gt-lightbox-close {
		top: var(--space-4);
		right: var(--space-4);
		width: 48px;
		height: 48px;
	}
}

/* ============================================================
   14.2 DASHBOARD TECNICA BICI (Mantenuto Organico)
   ============================================================ */
.gt-bici-dashboard {
	margin-top: var(--space-2);
	flex-wrap: wrap; 
}

.gt-badge {
	display: inline-flex;
	align-items: center;
	padding: var(--space-1) var(--space-3);
	background-color: transparent; 
	border: 1px solid var(--color-grey); 
	border-radius: var(--radius-pill); 
	font-family: var(--font-body);
	font-size: var(--fs-sm); 
	font-weight: 600; 
	letter-spacing: 0.05em;
	color: var(--color-black);
	line-height: var(--lh-tight);
}

/* ============================================================
   14.3 TIMELINE VERTICALE (Mantenuto Organico)
   ============================================================ */
.gt-stepper-wrapper {
	--pin-size: 1.25rem; /* Ridotto: crea l'eleganza del "nodo di transito" (circa 20px) */
	--pin-border: 0.25rem; /* Bordo spesso e moderno (circa 4px) */
	position: relative;
	padding-left: calc(var(--pin-size) + var(--space-6)); 
	margin-top: var(--space-8);
}

.gt-stepper-wrapper::before {
	content: '';
	position: absolute;
	top: 0.5rem; /* Allineato all'inizio del nuovo anello più piccolo */
	bottom: 0;
	left: calc(var(--pin-size) / 2 - 1px); 
	width: 2px;
	background-color: var(--color-cream);
	z-index: 0;
}

.gt-stepper-node {
	position: relative;
	margin-bottom: var(--space-12);
}

.gt-stepper-pin {
	position: absolute;
	top: 0.125rem; /* Micro-aggiustamento per allinearlo visivamente all'eyebrow "TAPPA 1" */
	left: calc((var(--pin-size) + var(--space-6)) * -1); 
	width: var(--pin-size);
	height: var(--pin-size);
	background-color: var(--color-background); /* Maschera la linea di base che gli passa dietro */
	border: var(--pin-border) solid var(--color-red); 
	border-radius: var(--radius-pill); 
	z-index: 2;
	transition: background-color var(--duration-base) var(--ease), transform var(--duration-base) var(--ease);
}

/* Stato Attivo: quando l'utente apre la tappa, l'anello vuoto si riempie e si espande leggermente */
.gt-stepper-node.is-open .gt-stepper-pin {
	background-color: var(--color-red);
	transform: scale(1.15);
}

.gt-stepper-header {
	cursor: pointer;
	padding-bottom: var(--space-4);
	border-bottom: 1px solid var(--color-cream);
	transition: color var(--duration-base) var(--ease);
}

.gt-stepper-header:hover .gt-tappa-title { color: var(--color-red); }

.gt-tappa-title {
	font-family: var(--font-display);
	font-size: var(--fs-xl);
	font-weight: 600;
	margin: 0 0 var(--space-2) 0;
	line-height: var(--lh-snug);
}

.gt-tappa-eyebrow {
	font-size: var(--fs-sm);
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.1em;
	color: var(--color-light-black);
	line-height: 1;
	margin-bottom: var(--space-2); /* Aggiunto respiro SOTTO il sopracciglio */
	display: block; /* Sicurezza per applicare correttamente il margine */
}

.gt-tappa-subtitle {
	font-size: var(--fs-base);
	font-weight: 500;
	color: var(--color-light-black);
	line-height: 1.2;
	/* Trasformiamo il contenitore in una riga flex pulita */
	display: flex;
	align-items: center;
	flex-wrap: wrap; /* Se su mobile non c'è spazio, va a capo con grazia */
	gap: 0.5rem; /* Spaziatura tra città, freccia e km */
}

/* Stiliamo l'icona SVG direttamente da CSS senza sporcare l'HTML */
.gt-tappa-subtitle svg {
	color: var(--color-red);
	opacity: 0.9;
}

/* Stiliamo il pallino divisore */
.gt-tappa-subtitle .gt-bullet {
	opacity: 0.4;
}

.gt-tappa-km {
	font-family: var(--font-body);
	font-size: var(--fs-base);
	font-weight: 600;
	color: var(--color-light-black);
}

.gt-btn-pdf {
	color: var(--color-red);
	transition: transform var(--duration-base) var(--ease);
	display: inline-flex;
}

.gt-btn-pdf:hover { transform: translateY(-2px); }

.gt-tappa-excerpt {
	font-family: var(--font-body);
	font-size: var(--fs-base);
	color: var(--color-light-black);
	line-height: var(--lh-normal);
	margin: 0;
	max-width: 85ch; 
	padding-right: var(--space-4); 
	text-wrap: balance; 
}

/* Allineamento pulito per l'intestazione della tappa */
.gt-tappa-header-inner {
	align-items: flex-start;
}

/* Margine pulito e a norma di sistema per la action zone (freccia e PDF) */
.gt-stepper-node .gt-tappa-meta {
	margin-top: var(--space-6);
}

/* --- AFFORDANCE E ANIMAZIONI ACCORDION TAPPE --- */

/* 1. Assicuriamoci che l'intera intestazione faccia capire che è cliccabile */
.gt-tappa-header {
    cursor: pointer;
    transition: opacity var(--duration-base) var(--ease);
}

/* 2. Effetto Hover: la riga diventa appena più chiara */
.gt-tappa-header:hover {
    opacity: 0.8;
}

/* 3. Stile base per il contenitore della freccia */
.gt-accordion-indicator {
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--color-red); 
    /* Transizione per l'effetto hover (rimbalzo) */
    transition: transform 0.3s ease;
}

/* 4. Transizione fluida applicata DIRETTAMENTE all'icona SVG per la rotazione */
.gt-accordion-indicator svg {
    transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

/* 5. Effetto Hover: la freccia "rimbalza" leggermente verso il basso */
.gt-tappa-header:hover .gt-accordion-indicator {
    transform: translateY(0.2rem);
}

/* 6. STATO ATTIVO: Quando la tappa ha la classe .is-open, l'SVG ruota di 180 gradi! */
.gt-stepper-node.is-open .gt-accordion-indicator svg {
    transform: rotate(180deg);
}

/* ============================================================
   14.4 HIGHLIGHTS & CARDS (Mantenuto Organico)
   ============================================================ */
.gt-stepper-content {
	display: none;
	overflow: hidden; 
}

.gt-highlights-grid { padding-top: var(--space-6); padding-bottom: var(--space-12); }

.gt-highlight-card {
	background-color: var(--color-white);
	border-radius: var(--radius-lg); 
	overflow: hidden;
	border: 1px solid rgba(0, 0, 0, 0.04);
	box-shadow: 0 6px 16px rgba(0, 0, 0, 0.08);
}

.gt-highlight-img {
	width: 100%;
	aspect-ratio: 3/2; 
	object-fit: cover; 
	display: block;
}

.gt-highlight-title {
	font-family: var(--font-display);
	font-size: var(--fs-lg);
	font-weight: 600;
	line-height: var(--lh-normal);
	padding: var(--space-6) var(--space-6) 0;
	margin: 0;
}

.gt-highlight-text {
	padding: 0 var(--space-6) var(--space-6);
	color: var(--color-light-black); 
	font-size: var(--fs-base); 
	line-height: var(--lh-relaxed); 
}

@media (min-width: 769px) {
	.gt-highlights-grid {
		display: grid;
		gap: var(--space-6);
		grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); 
	}
}

@media (max-width: 768px) {
	.gt-highlights-grid {
		display: flex; 
		flex-wrap: nowrap; 
		gap: var(--space-4);
		overflow-x: auto; 
		scroll-snap-type: x mandatory; 
		padding-bottom: var(--space-10);
		padding-right: var(--space-4);
		-webkit-overflow-scrolling: touch; 
		scrollbar-width: none; 
	}
	.gt-highlights-grid::-webkit-scrollbar { display: none; }
	.gt-highlight-card { 
		flex: 0 0 100%; 
		scroll-snap-align: start;
	}
}

/* --- AFFORDANCE SCROLL: INDICATORI A SEGMENTO (Mobile) --- */
.gt-slider-indicators {
	margin-top: var(--space-4); /* Dà respiro tra l'ombra delle card e i trattini */
	width: 100%;
}

.gt-slider-dot {
	width: 2rem; /* Lunghezza del singolo trattino (32px) */
	height: 0.25rem; /* Spessore elegante (4px) */
	background-color: var(--color-grey); /* Usa il tuo grigio di sistema */
	border-radius: var(--radius-pill); /* Arrotondamento perfetto */
	opacity: 0.4; /* Lo teniamo in secondo piano quando è inattivo */
	transition: opacity var(--duration-fast) var(--ease), background-color var(--duration-fast) var(--ease);
}

.gt-slider-dot.is-active {
	background-color: var(--color-red); /* Si accende col tuo rosso Grand Tour */
	opacity: 1; /* Torna visibile al 100% */
}

@media (min-width: 769px) {
	.gt-slider-indicators {
		display: none;
	}
}

/* ============================================================
   14.5 MOBILE DASHBOARD (DOPPIO DOM & STILI ESCLUSIVI)
   ============================================================ */

/* --- 1. CLASSI DI VISIBILITÀ INCROCIATA --- */
@media (max-width: 1024px) {
    .gt-desktop-only { display: none !important; }
}
@media (min-width: 1025px) {
    .gt-mobile-only { display: none !important; }
}

/* --- 2. HERO MOBILE EDGE-TO-EDGE E 4:3 --- */
@media (max-width: 1024px) {
    /* La hero rompe i margini e tocca i bordi del browser */
    .gt-page-header {
        margin-bottom: 0;
        padding-bottom: var(--space-8);
    }
    
    .gt-hero-wrapper {
        width: 100%; /* Sovrascrive il min() di base.css */
        margin-inline: 0;
		margin-bottom: 0;
    }
    
    .gt-stage-interactive {
        border-radius: 0; /* Squadrata sui bordi */
        aspect-ratio: 1 / 1; /* SPAZIO VERTICALE: Più aria per i testi come concordato */
    }
    
    /* FIX: Forza l'immagine a riempire il formato e azzera l'angolino nero alla radice */
    .gt-stage-interactive .gt-hero-img {
        height: 100%;
        border-radius: 0; 
    }
    
    .gt-stage-interactive .gt-hero-content-grid {
        grid-template-columns: 1fr; /* Colonna singola */
        padding-top: var(--space-8);
        padding-bottom: var(--space-8);
    }
    
    /* Il ponte dello Switcher sale per accavallarsi tra foto e sfondo */
    .gt-switcher-bridge {
        margin-top: calc(var(--space-6) * -1);
    }

	.gt-route-presentation {
        padding-top: var(--space-12); /* Riduce lo spazio superiore su mobile (prima era space-16) */
        gap: var(--space-8); /* Riavvicina leggermente il testo al video */
    }
}

/* --- 3. FASCIA STATISTICHE CREMA E MAPPA (Solo Mobile) --- */
.gt-mobile-dashboard {
    width: 100%;
    display: flex;
    flex-direction: column;
    gap: var(--space-8);
    margin-top: var(--space-10);
    padding-bottom: var(--space-2);
}

/* Box crema con i dati */
.gt-mob-stats-bar {
    border-radius: var(--radius-md);
    padding: var(--space-4) var(--space-5);
    /* Mantengo il blocco allineato ai testi laterali usando la tua variabile di sistema */
    margin-inline: var(--px-container); 
    display: flex;
    align-items: center;
    justify-content: center;
    flex-wrap: wrap;
    gap: var(--space-5);
}

.gt-mob-stat-route {
    font-family: var(--font-display);
    font-weight: 600;
    font-size: var(--fs-sm);
    color: var(--color-black);
}

.gt-mob-stat-route svg {
    color: var(--color-black);
}

/* La stanghetta divisoria */
.gt-mob-stat-divider {
    width: 1px;
    height: 1.5rem;
    background-color: rgba(0,0,0,0.15);
}

.gt-mob-stat-box {
    align-items: center;
    text-align: center;
}

.gt-mob-stat-label {
    font-size: 0.625rem; /* Testo microscopico e uppercase (10px) */
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--color-light-black);
    margin-bottom: 0.125rem;
}

.gt-mob-stat-value {
    font-family: var(--font-body);
    font-size: var(--fs-md);
    font-weight: 700;
    color: var(--color-black);
    line-height: 1;
    display: flex;
    align-items: baseline;
    gap: 0.125rem;
}

.gt-mob-stat-value small {
    font-size: var(--fs-xs);
    font-weight: 600;
}

/* Mappa Mobile: Sovrapposizione Tracciati Neri */
.gt-mobile-map-container {
    position: relative;
    width: 100%;
    max-width: 28rem; /* Contenimento perfetto per non sbordare */
    margin-inline: auto;
    padding-inline: var(--px-container);
    display: grid; /* Magia per sovrapporre le 5 mappe */
}

/* Mappa Mobile: Strati sovrapposti e dissolvenza */
.gt-mob-map-layer {
    width: 100%;
    height: auto;
    display: block;
    grid-area: 1 / 1; /* Allinea perfettamente tutte le mappe nella stessa cella */
}

.gt-mob-map-layer.base {
    position: relative;
    z-index: 1;
}

.gt-mob-map-layer.stage {
    z-index: 2;
    opacity: 0;
    transition: opacity var(--duration-slow) var(--ease);
    pointer-events: none; /* Fondamentale: permette al dito di toccare le hitbox sottostanti */
}

.gt-mob-map-layer.stage.is-active {
    opacity: 1;
}

/* Hitbox Mappa Mobile (Copiate dalla desktop) */
.gt-mobile-map-container .hitbox {
    position: absolute;
    z-index: 10;
    cursor: pointer;
    display: block;
}

/* Titolo di recap */
.gt-mobile-recap {
    margin-top: var(--space-4);
    padding-inline: var(--px-container);
}

.gt-mobile-recap-title {
    font-family: var(--font-display);
    font-size: var(--fs-xl);
    font-weight: 600;
	text-align: left;
    color: var(--color-black);
    line-height: var(--lh-tight);
}

@media (max-width: 380px) {
    /* Ottimizzazione estrema per iPhone vecchi: stanghetta sparisce, icone si compattano */
    .gt-mob-stats-bar { gap: var(--space-3); padding: var(--space-4) var(--space-3); }
    .gt-mob-stat-divider { display: none; }
    .gt-mob-stat-route-text { display: none; } /* Resta solo l'icona */
}

/* --- 4. MICRO-UI SWITCHER (< 560px) - IL TUO CODICE BASE PERFETTO --- */
@media (max-width: 560px) {
    /* Stringiamo il gap del contenitore per farci stare le parole lunghe */
    .gt-switcher-bridge .gt-switcher-nav {
        gap: var(--space-1);
    }

    /* Riduciamo padding e font-size usando rigorosamente le tue variabili */
    .gt-switcher-bridge .btn-switcher {
        padding: var(--space-2) var(--space-4);
        font-size: var(--fs-sm);
    }

    /* Fissiamo le icone a 1rem esatto per bilanciare il testo xs */
    .gt-switcher-bridge .switcher-icon {
        width: 1rem;
        height: 1rem;
    }
}

/* --- 5. SALVATAGGIO SCHERMI PICCOLI (<= 390px) --- */
@media (max-width: 390px) {
    /* 1. Nascondiamo chirurgicamente solo il testo */
    .gt-switcher-bridge .switcher-label {
        display: none;
    }

    /* 2. Ribilanciamo il padding per trasformarli in perfetti "icon-button" da premere col pollice */
    .gt-switcher-bridge .btn-switcher {
        padding: var(--space-3) var(--space-6); 
    }

    /* 3. Ingrandiamo di un millimetro l'icona visto che ora è la protagonista assoluta */
    .gt-switcher-bridge .switcher-icon {
        width: 1.25rem;
        height: 1.25rem;
    }
}

/* --- NAVIGAZIONE GRAND TOUR (Cards Correlate) --- */

/* 1. Comportamento Mobile: Evita lo schiacciamento e attiva lo swipe nativo */
.hp-cards-track.gt-related-track .gt-stage-card {
    flex: 0 0 80vw; /* Su mobile occupa l'80% dello schermo per far intravedere la card successiva */
    max-width: 320px; /* Evita che diventi troppo grande sui tablet */
    scroll-snap-align: start; /* Si aggancia fluidamente durante lo swipe */
}

/* 2. Tuning Tipografico e Allineamento Altezze */
.hp-cards-track.gt-related-track .gt-stage-title {
    font-size: var(--fs-lg);
    display: -webkit-box;
    -webkit-line-clamp: 2; /* Blocca l'altezza massima a 2 righe */
    -webkit-box-orient: vertical;
    overflow: hidden;
    min-height: 2.8em; /* Assicura allineamento anche se il titolo è di 1 sola riga */
}

.hp-cards-track.gt-related-track .gt-stage-label {
    font-size: var(--fs-xs);
}

.hp-cards-track.gt-related-track .gt-stage-desc {
    font-size: var(--fs-sm);
}

/* 3. Layout Desktop: 4 Colonne Perfette */
@media (min-width: 1024px) {
    .hp-cards-track.gt-related-track {
        display: grid !important; /* Sovrascrive il flex mobile del tuo framework */
        grid-template-columns: repeat(4, 1fr);
        gap: var(--space-4);
    }
    
    /* Reset della singola card per farla adattare alla colonna della griglia */
    .hp-cards-track.gt-related-track .gt-stage-card {
        flex: none;
        width: 100%;
        max-width: none;
    }
}

/* ─────────────────────────────────────────
   15. WIZARD "INIZIA IL VIAGGIO" (Grid Stacking)
   ───────────────────────────────────────── */
/* --- 15.1 TITOLI SEZIONI WIZARD --- */
.wizard-section-heading {
    display: flex;
    flex-direction: column;
    margin-bottom: var(--space-6);
}

.wizard-section-heading .wizard-kicker {
    display: block;
    font-size: var(--fs-sm);
    font-weight: 600;
    color: var(--color-red);
    letter-spacing: 0.05em;
    margin-bottom: var(--space-3);
    text-transform: uppercase;
}

.wizard-section-heading h2 {
    font-family: var(--font-display);
    font-weight: 600;
    color: var(--color-black);
    line-height: var(--lh-snug);
    margin-bottom: var(--space-4);
}

/* Ottimizzazione Mobile per il titolo Wizard */
@media (max-width: 768px) {
    .wizard-section-heading {
        margin-bottom: var(--space-8);
    }
    .wizard-section-heading h2 {
        font-size: var(--fs-xl);
    }
}

.cat-wizard-section {
    position: relative;
    z-index: 50;
    padding-top: var(--space-20);
    padding-bottom: var(--space-24);
}
.cat-wizard-intro .wizard-kicker { display: block; font-size: var(--fs-sm); text-transform: uppercase; font-weight: 600; letter-spacing: 0.05em; color: var(--color-red); margin-bottom: var(--space-3); }
.cat-wizard-intro { text-align: center; max-width: var(--w-article); margin: 0 auto var(--space-12) auto; }
.cat-wizard-title { font-family: var(--font-display); font-size: var(--fs-2xl); font-weight: 600; line-height: var(--lh-snug); margin: 0 0 var(--space-4) 0; color: var(--color-black); }
.cat-wizard-desc { font-size: var(--fs-md); line-height: var(--lh-normal); color: var(--color-text-body); text-wrap: pretty; max-width: 50ch; margin-inline: auto; }
/* FIX WIZARD PAGESPEED: Rimosso background CSS, inserita immagine fisica sotto l'overlay */
.cat-wizard-visual { position: relative; width: 100%; height: 36rem; border-radius: var(--radius-lg); }
.cat-wizard-bg-img { position: absolute; top: 0; left: 0; width: 100%; height: 100%; object-fit: cover; border-radius: var(--radius-lg); pointer-events: none; }
.cat-wizard-visual::after { content: ''; position: absolute; inset: 0; background: rgba(0,0,0,0.1); border-radius: var(--radius-lg); pointer-events: none; }

/* --- Desktop Wizard Bar --- */
.cat-wizard-bar {
    position: absolute; bottom: 0; left: 50%; transform: translate(-50%, 50%); z-index: 10;
    background: var(--color-white); border: 1px solid rgba(0,0,0,0.05); width: 90%; max-width: 56.25rem;
    border-radius: var(--radius-pill); display: flex; align-items: center; padding: 0.375rem;
    box-shadow: 0 0.9375rem 2.1875rem rgba(0,0,0,0.08); transition: box-shadow var(--duration-base) var(--ease);
}
.cat-wizard-bar:hover { box-shadow: 0 1rem 2.5rem rgba(0,0,0,0.12); }
.cat-wizard-segment { flex: 1; padding: 0.75rem 1.5rem; height: 100%; display: flex; flex-direction: column; justify-content: center; cursor: pointer; border-radius: var(--radius-pill); transition: background var(--duration-base) var(--ease), box-shadow var(--duration-base) var(--ease); }
.cat-wizard-segment:hover:not(.is-open) { background: #EBEBEB; }
.cat-wizard-segment.is-open { background: var(--color-white); box-shadow: 0 0.5rem 1.5rem rgba(0,0,0,0.1); }
.cat-wizard-segment::after { display: none !important; }
.cat-wizard-label { font-size: var(--fs-xs); font-weight: 700; color: var(--color-black); line-height: var(--lh-tight); margin-bottom: var(--space-2); letter-spacing: 0.05em; }
.cat-wizard-value { font-size: var(--fs-sm); font-weight: 500; color: var(--color-light-black); line-height: var(--lh-snug); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cat-wizard-value.is-selected { color: var(--color-red); font-weight: 600; }

/* --- Dropdown Custom --- */
.cat-wizard-dropdown {
    position: absolute; top: calc(100% + 0.75rem); left: 0; width: 100% !important;
    background: var(--color-white); border-radius: 1.5rem; box-shadow: 0 1rem 3rem rgba(0,0,0,0.12);
    padding: 2rem; display: none; z-index: var(--z-dropdown, 20); border: 1px solid rgba(0,0,0,0.05);
    animation: panelFadeIn 0.3s ease forwards;
}
@keyframes panelFadeIn { from { opacity: 0; transform: translateY(-10px); } to { opacity: 1; transform: translateY(0); } }
.cat-wizard-dropdown.is-active { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 1rem; }
.cat-wizard-option { padding: 0.75rem 1.5rem; border-radius: var(--radius-pill); font-size: var(--fs-base); color: var(--color-black); text-align: center; background: transparent; border: 1px solid rgba(0,0,0,0.1); transition: all var(--duration-fast) var(--ease); }
.cat-wizard-option:hover { color: var(--color-red); }
.cat-wizard-submit { background: var(--color-red); color: var(--color-white); height: 4rem; padding-inline: 2rem; border-radius: var(--radius-pill); display: flex; align-items: center; justify-content: center; text-decoration: none; font-weight: 600; margin-left: 0.5rem; transition: transform var(--duration-fast) var(--ease), background-color var(--duration-fast) var(--ease), box-shadow var(--duration-fast) var(--ease); }
.cat-wizard-submit:hover { background-color: var(--color-red-deep); }

/* --- Fast-Track Loader --- */
.wizard-main.is-fast-track #wizard-track { display: none; }
.wizard-main.is-fast-track #wizard-loader { display: flex !important; opacity: 1 !important; visibility: visible !important; }

/* --- Mobile Bottom Sheet Modal --- */
.cat-wizard-modal { display: contents; }
.cat-wizard-mobile-trigger, .cat-wizard-backdrop, .cat-wizard-modal-header { display: none; }
.cat-wizard-segment-header { display: flex; flex-direction: column; }

@media (max-width: 1024px) {
    .cat-wizard-visual { aspect-ratio: 4 / 3; height: auto; min-height: 0; padding: 0; margin-bottom: var(--space-12); position: relative; overflow: visible; z-index: 5; }
    .cat-wizard-mobile-trigger { -webkit-appearance: none; appearance: none; display: flex; align-items: center; gap: var(--space-3); position: absolute; bottom: 0; left: 50%; transform: translate(-50%, 50%); background-color: var(--color-red); color: var(--color-white); padding: var(--space-4) var(--space-6); border-radius: var(--radius-pill); border: none; box-shadow: var(--shadow-lg); z-index: 99; cursor: pointer; white-space: nowrap; }
    .cat-wizard-mobile-trigger-icon { color: var(--color-white); display: flex; align-items: center; justify-content: center; width: 1.25rem; height: 1.25rem; flex-shrink: 0; }
    .cat-wizard-mobile-trigger-icon svg { width: 100%; height: 100%; display: block; fill: currentColor; }
    .cat-wizard-mobile-trigger-text { font-family: var(--font-body); font-weight: 600; font-size: 1rem; color: var(--color-white) !important; text-decoration: none; }
    .cat-wizard-backdrop { display: block; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0,0,0,0.6); z-index: 10000; opacity: 0; visibility: hidden; pointer-events: none; transition: opacity 0.4s ease, visibility 0.4s; backdrop-filter: blur(4px); }
    .cat-wizard-backdrop.is-active { opacity: 1; visibility: visible; pointer-events: auto; }
    .cat-wizard-modal { display: flex; flex-direction: column; position: fixed; bottom: 0; left: 0; width: 100%; height: auto; max-height: 85vh; background-color: var(--color-background); z-index: 10001; border-radius: 1.5rem 1.5rem 0 0; transform: translateY(100%); visibility: hidden; pointer-events: none; transition: transform 0.4s cubic-bezier(0.32, 0.72, 0, 1), visibility 0.4s; overflow-y: auto; box-shadow: 0 -4px 24px rgba(0,0,0,0.15); }
    .cat-wizard-modal.is-active { transform: translateY(0); visibility: visible; pointer-events: auto; }
    .cat-wizard-modal-header { display: flex; align-items: center; justify-content: space-between; padding: var(--space-5) var(--space-6); border-bottom: 1px solid rgba(0, 0, 0, 0.08); position: sticky; top: 0; background: var(--color-background); z-index: 2; }
    .cat-wizard-modal-title { font-family: var(--font-display); font-size: 1.25rem; font-weight: 600; }
    .cat-wizard-modal-close { -webkit-appearance: none; appearance: none; background: rgba(0,0,0,0.05); color: var(--color-text-body); border: none; width: 2.25rem; height: 2.25rem; border-radius: 50%; display: flex; align-items: center; justify-content: center; cursor: pointer; }
    .cat-wizard-modal-close svg { stroke: currentColor; }
    .cat-wizard-modal .cat-wizard-bar { display: block; position: static !important; transform: none !important; left: auto; bottom: auto; background: transparent; box-shadow: none; border: none; padding: var(--space-4) var(--space-6); width: 100%; max-width: none; height: auto; }
    .cat-wizard-modal .cat-wizard-segment { width: 100%; border-right: none; border-bottom: 1px solid rgba(0, 0, 0, 0.08); padding: var(--space-5) 0; cursor: pointer; display: grid; grid-template-columns: 1.5rem 1fr; grid-template-rows: auto auto auto; column-gap: var(--space-4); border-radius: 0; background-color: transparent; box-shadow: none; }
    .cat-wizard-modal .cat-wizard-segment:hover, .cat-wizard-modal .cat-wizard-segment.is-open { background-color: transparent; box-shadow: none; }
    .cat-wizard-modal .cat-wizard-segment::after { display: none; }
    .cat-wizard-modal .cat-wizard-segment::before { content: attr(data-step); grid-column: 1; grid-row: 1 / 3; display: flex; align-items: center; justify-content: center; width: 1.5rem; height: 1.5rem; border-radius: 50%; border: 2px solid rgba(0,0,0,0.15); background-color: transparent; color: var(--color-text-body); font-size: 0.75rem; font-weight: 700; margin-top: 0.125rem; transition: background-color 0.3s ease, border-color 0.3s ease, color 0.3s ease; }
    .cat-wizard-modal .cat-wizard-label { grid-column: 2; grid-row: 1; display: block; font-size: var(--fs-md); margin-bottom: var(--space-1); color: var(--color-text-body); transform: translateZ(0); }
    .cat-wizard-modal .cat-wizard-value { grid-column: 2; grid-row: 2; display: block; font-size: var(--fs-base); font-weight: 600; line-height: var(--lh-snug); color: var(--color-light-black); transform: translateZ(0); }
    .cat-wizard-modal .cat-wizard-segment.is-open::before { background-color: var(--color-red); border-color: var(--color-red); color: var(--color-white); }
    .cat-wizard-modal .cat-wizard-segment:has(.is-selected)::before { content: ""; background-color: var(--color-red); border-color: var(--color-red); background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E"); background-size: 60%; background-position: center; background-repeat: no-repeat; }
    .cat-wizard-modal .cat-wizard-dropdown { grid-column: 2; grid-row: 3; position: static; display: none; width: 100% !important; box-shadow: none; border: none; padding: var(--space-2) 0 0 0; background: transparent; transform: none; }
    .cat-wizard-modal .cat-wizard-segment.is-open .cat-wizard-dropdown { display: block; }
    .cat-wizard-modal .cat-wizard-option { display: block; width: 100%; text-align: left; padding: var(--space-4) 0; font-size: var(--fs-base); font-weight: 500; color: var(--color-black); background: transparent; border: none; border-radius: 0; margin-bottom: 0; transition: color 0.2s ease; }
    .cat-wizard-modal .cat-wizard-option:active, .cat-wizard-modal .cat-wizard-option.is-selected { color: var(--color-red); background: transparent; font-weight: 600; }
    .cat-wizard-modal .cat-wizard-submit-wrapper { padding: var(--space-8) 0; width: 100%; display: block; }
    .cat-wizard-modal .cat-wizard-submit { width: 100%; justify-content: center; height: 3.5rem; margin-left: 0; }
}

/* --- WIZARD RISULTATI (UI Step) --- */
.wizard-main { position: relative; background-color: var(--color-background); min-height: calc(100vh - var(--header-height)); display: flex; flex-direction: column; }
.wizard-window { position: relative; width: 100%; flex-grow: 1; display: block; }
.wizard-track { position: relative; width: 100%; display: grid; overflow-x: hidden; overflow-y: visible; }
.wizard-step { grid-area: 1 / 1; align-self: start; height: auto; opacity: 0; visibility: hidden; display: none; padding-bottom: 2rem; z-index: 1; flex-direction: row; gap: var(--space-8); align-items: stretch; }
.wizard-step.is-active { display: flex; opacity: 1; visibility: visible; position: relative; z-index: 2; }
.btn-back { display: inline-flex; align-items: center; gap: var(--space-2); background: transparent; border: none; padding: 0; margin-top: var(--space-8); margin-bottom: var(--space-8); color: var(--color-light-black); font-family: var(--font-body); font-size: var(--fs-sm); font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; cursor: pointer; transition: color var(--duration-fast) var(--ease), transform var(--duration-fast) var(--ease); opacity: 0; pointer-events: none; }
.btn-back.is-visible { opacity: 1; pointer-events: auto; }
.btn-back:hover { color: var(--color-black); transform: translateX(-4px); }
.step-left-col { flex: 0 0 38%; display: flex; flex-direction: column; justify-content: space-between; padding-right: var(--space-4); }
.step-intro { font-family: var(--font-display); font-style: italic; color: var(--color-light-black); font-size: var(--fs-md); margin: 0 0 var(--space-4) 0; line-height: var(--lh-snug); }
.step-title { font-family: var(--font-display); font-size: var(--fs-2xl); font-weight: 600; line-height: var(--lh-snug); margin: 0 0 var(--space-16) 0; color: var(--color-black); }

/* --- Stepper Verticale --- */
.vertical-stepper { position: relative; display: flex; flex-direction: column; --stepper-row-height: 8.75rem; }
.v-line-track { position: absolute; top: 1rem; left: 0.9375rem; width: 2px; height: calc(var(--stepper-row-height) * 2); z-index: 1; }
.v-line-bg { position: absolute; inset: 0; background: repeating-linear-gradient(to bottom, rgba(0,0,0,0.15) 0, rgba(0,0,0,0.15) 8px, transparent 8px, transparent 16px); }
.v-line-fill { position: absolute; top: 0; left: 0; right: 0; background: repeating-linear-gradient(to bottom, var(--color-red) 0, var(--color-red) 8px, transparent 8px, transparent 16px); transition: height var(--duration-slow) var(--ease); }
.v-line-fill--0 { height: 0%; } .v-line-fill--50 { height: 50%; } .v-line-fill--100 { height: 100%; }
.stepper-row { display: flex; gap: var(--space-6); align-items: flex-start; position: relative; z-index: 2; height: var(--stepper-row-height); }
.v-pin { flex-shrink: 0; width: 2rem; height: 2rem; background-color: var(--color-background); border: 2px solid rgba(0,0,0,0.15); border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: var(--fs-sm); font-weight: 700; color: var(--color-light-black); transition: all var(--duration-fast) var(--ease); }
.v-pin.is-active, .v-pin.is-done { background-color: var(--color-red); border-color: var(--color-red); color: var(--color-white); }
.v-pin.is-active { box-shadow: 0 0 0 4px rgba(227, 6, 19, 0.15); }
.v-pin svg { width: 0.875rem; height: 0.875rem; stroke-width: 3px; }
.stepper-content { flex-grow: 1; }
.step-kicker { display: block; font-family: var(--font-display); font-size: var(--fs-md); font-weight: 600; letter-spacing: 0.05em; color: var(--color-red); margin-bottom: var(--space-2); }
.step-seo-text { font-size: var(--fs-base); color: var(--color-light-black); line-height: var(--lh-relaxed); margin: 0; }
.summary-label { display: block; font-size: var(--fs-xs); text-transform: uppercase; letter-spacing: 0.1em; color: var(--color-light-black); margin-bottom: 0.2rem; }
.summary-value { display: block; font-family: var(--font-display); font-size: var(--fs-lg); font-style: italic; color: var(--color-black); }

/* --- Tip Box --- */
.step-tip { background-color: var(--color-white); padding: var(--space-6); border-radius: var(--radius-lg); border-left: 4px solid var(--color-red); box-shadow: 0 1px 4px rgba(0,0,0,0.06); }
.step-tip-title { font-family: var(--font-display); font-size: var(--fs-lg); color: var(--color-black); margin: 0 0 var(--space-2) 0; }
.step-tip-text { font-size: var(--fs-sm); color: var(--color-light-black); line-height: var(--lh-relaxed); margin: 0; font-style: italic; }

/* --- Griglie Risultati --- */
.step-cards { flex: 1; display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--space-10) var(--space-6); align-content: start; }
.wizard-step .cat-event-card { cursor: pointer; height: 100%; }
.wizard-step .cat-event-card__desc { font-size: var(--fs-sm); color: var(--color-light-black); line-height: var(--lh-relaxed); margin: 0; }

.wizard-loader { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; background-color: var(--color-background); z-index: 100; opacity: 0; visibility: hidden; }
.wizard-loader .spinner { width: 50px; height: 50px; border: 3px solid rgba(0,0,0,0.1); border-top-color: var(--color-red); border-radius: 50%; animation: wizard-spin 1s linear infinite; }
@keyframes wizard-spin { 100% { transform: rotate(360deg); } }

.results-header { max-width: 58rem; margin-inline: auto; margin-top: var(--space-8); margin-bottom: 5rem; text-align: center; }
.results-header .step-intro { margin-bottom: var(--space-4); }
.results-header .step-title { margin-bottom: 3rem; }
.btn-ghost { background: transparent; border: 1px solid var(--color-black); color: var(--color-black); padding: 0.8rem 1.75rem; border-radius: var(--radius-sm); font-family: var(--font-body); font-weight: 500; font-size: 1rem; cursor: pointer; transition: background 0.3s ease, color 0.3s ease; margin-top: 2.5rem; display: inline-flex; align-items: center; gap: 0.5rem; }
.btn-ghost:hover { background: var(--color-red); border: 1px solid var(--color-red); color: var(--color-white); }

/* --- Responsive Wizard Results --- */
@media (max-width: 1024px) {
    .wizard-step { flex-direction: column; gap: var(--space-8); padding-top: var(--space-8); padding-bottom: var(--space-12); }
    .step-left-col { display: contents; }
    .step-sticky-content { order: 1; position: static; }
    .step-cards { order: 2; grid-template-columns: repeat(2, 1fr); gap: var(--space-6); }
    .step-tip { order: 3; margin-top: var(--space-4); }
    .vertical-stepper { flex-direction: row; justify-content: space-between; align-items: flex-start; margin-bottom: var(--space-4); }
    .stepper-row { flex: 0 0 5.5rem; flex-direction: column; align-items: center; height: auto; gap: 0.5rem; }
    .v-line-track { top: 1rem; left: 2.75rem; width: calc(100% - 5.5rem); height: 2px; }
    .v-line-bg { background: repeating-linear-gradient(to right, rgba(0,0,0,0.15) 0, rgba(0,0,0,0.15) 8px, transparent 8px, transparent 16px); }
    .v-line-fill { height: 100%; background: repeating-linear-gradient(to right, var(--color-red) 0, var(--color-red) 8px, transparent 8px, transparent 16px); transition: width var(--duration-slow) var(--ease); }
    .v-line-fill--0 { width: 0%; height: 100%; } .v-line-fill--50 { width: 50%; height: 100%; } .v-line-fill--100 { width: 100%; height: 100%; }
    .stepper-content { padding-top: 0; text-align: center; display: flex; flex-direction: column; align-items: center; }
    .step-kicker, .step-seo-text { display: none; }
    .summary-label { font-size: 0.6rem; margin-bottom: 0.1rem; }
    .summary-value { font-size: 0.8rem; line-height: 1.1; }
}

@media (max-width: 768px) {
    .step-cards { grid-template-columns: 1fr; }
    .step-title { font-size: var(--fs-2xl); margin-bottom: var(--space-8); }
    .btn-back .btn-back-text { display: none; }
    .btn-back { margin-top: var(--space-4); margin-bottom: var(--space-4); }
    .btn-back svg { width: 24px; height: 24px; }
    .wizard-step { padding-top: var(--space-4); }
    .results-header { margin-top: var(--space-4); margin-bottom: 3rem; padding-inline: var(--space-4); }
    .results-header .step-title { font-size: var(--fs-2xl); margin-bottom: 2rem; }
    .result-block { margin-bottom: 3rem; margin-top: 3rem !important; }
}

/* ─────────────────────────────────────────
   16. CONTATTI E PRESS AREA
   ───────────────────────────────────────── */
.contact-section { padding-block: var(--space-20); }

.contact-grid {
    display: grid;
    column-gap: var(--space-20);
    row-gap: var(--space-12);
    align-items: start;
}

.contact-title { grid-area: contact-title; }
.contact-text  { grid-area: contact-text; }
.contact-form  { grid-area: contact-form; }
.contact-image { grid-area: contact-image; }

@media (min-width: 1025px) {
    .contact-grid {
        grid-template-columns: 1.1fr 0.9fr;
        grid-template-areas: 
            "contact-title contact-text"
            "contact-form  contact-image";
    }
    .contact-title .hp-section-title { text-align: left; margin-bottom: 0; }
    .contact-text { margin-left: var(--space-20); }
}

@media (max-width: 1024px) {
    .contact-grid {
        grid-template-columns: 1fr;
        grid-template-areas: 
            "contact-title"
            "contact-text"
            "contact-form"
            "contact-image";
        gap: var(--space-10);
    }
    .contact-title .hp-section-title { text-align: left; font-size: var(--fs-2xl); }
    .contact-text { margin-left: 0; }
}

.contact-image img { width: 100%; height: auto; object-fit: cover; border-radius: var(--radius-lg); box-shadow: 0 1rem 3rem rgba(0,0,0,0.05); }
.contact-form-wrapper { padding-top: var(--space-4); }

/* --- FORM CONTATTI (Mailchimp MC4WP) --- */
.cat-contact-form { display: flex; flex-direction: column; gap: var(--space-6); width: 100%; }
.cat-contact-row { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-4); }
@media (max-width: 768px) { .cat-contact-row { grid-template-columns: 1fr; } }

.cat-contact-field-wrap { position: relative; display: flex; align-items: center; width: 100%; }
.cat-contact-icon { position: absolute; left: 1.25rem; display: flex; align-items: center; justify-content: center; color: var(--color-light-black); pointer-events: none; }

.cat-contact-input, .cat-contact-textarea {
    width: 100%; background-color: var(--color-cream); border: 1px solid transparent; border-radius: var(--radius-md); font-family: inherit; font-size: 1rem; color: var(--color-black); transition: all var(--duration-base) var(--ease);
}
.cat-contact-input::placeholder, .cat-contact-textarea::placeholder { color: var(--color-light-black); opacity: 1; }
.cat-contact-input { padding: 1rem 1rem 1rem 3.5rem; }
.cat-contact-textarea { padding: 1.25rem; resize: vertical; min-height: 7.5rem; }
.cat-contact-input:focus, .cat-contact-textarea:focus { outline: none; background-color: #ffffff; border-color: var(--color-light-black); box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.05); }

.cat-contact-disclaimer p { font-size: var(--fs-xs); color: var(--color-light-black); line-height: 1.5; margin: 0; }

/* CHECKBOX PRIVACY CUSTOM */
.cat-contact-consent { display: flex; align-items: flex-start; gap: 0.75rem; cursor: pointer; position: relative; }
.cat-contact-consent input[type="checkbox"] { position: absolute; opacity: 0; width: 1.25rem; height: 1.25rem; z-index: -1; }
.cat-contact-checkmark { flex-shrink: 0; width: 1.25rem; height: 1.25rem; background-color: var(--color-cream); border: 1px solid rgba(0,0,0,0.1); border-radius: 4px; display: flex; align-items: center; justify-content: center; transition: all 0.2s ease; margin-top: 0.15rem; }
.cat-contact-consent input[type="checkbox"]:checked ~ .cat-contact-checkmark { background-color: var(--color-red); border-color: var(--color-red); }
.cat-contact-consent input[type="checkbox"]:checked ~ .cat-contact-checkmark::after { content: ""; width: 5px; height: 10px; border: solid white; border-width: 0 2px 2px 0; transform: rotate(45deg); margin-bottom: 2px; }
.cat-contact-consent-text { font-size: var(--fs-sm); color: var(--color-light-black); }
.cat-contact-consent-text a { text-decoration: underline; text-underline-offset: 2px; }
.cat-contact-submit-wrap { margin-top: var(--space-4); display: flex; justify-content: flex-start; }

/* ==========================================================================
   SOVRASCRITTURE: CHECKBOX PRIVACY DENTRO LA CTA FOOTER
   ========================================================================== */

.cat-footer-cta-full .cat-contact-consent {
    margin-bottom: var(--space-8);
}

.cat-footer-cta-full .cat-contact-consent-text {
    color: var(--color-text-body);
}

.cat-footer-cta-full .cat-contact-checkmark {
    border-color: rgba(0, 0, 0, 0.6);
}

/* Sovrascrive il colore di tutti gli alert MC4WP (successo, errore, info) solo nel footer */
.cat-footer-cta-full .mc4wp-response p,
.cat-footer-cta-full .mc4wp-alert p {
    color: var(--color-text-body) !important;
    margin-bottom: 1rem; /* Diamo un po' di respiro tra il messaggio e il campo email */
}

/* Sovrascrive il colore di tutti gli alert MC4WP (successo, errore, info) nella Landing Newsletter */
.nl-form-inner .mc4wp-response p,
.nl-form-inner .mc4wp-alert p {
    color: var(--color-text-body) !important;
    margin-bottom: 1.5rem; /* Diamo spazio tra il messaggio e il primo campo del form */
}

/* --- TENDINA CUSTOM PRESS AREA --- */
.custom-select-container { position: relative; }
.custom-select-trigger { display: flex; align-items: center; justify-content: space-between; cursor: pointer; font-weight: 400; user-select: none; }
.cat-select-chevron { display: flex; align-items: center; margin-left: var(--space-3); color: var(--color-light-black); transition: transform var(--duration-base) var(--ease); }
#press-type-wrapper .custom-dropdown { display: none; position: absolute; left: 0; right: 0; top: calc(100% + 4px); z-index: 100; background: var(--color-background); border: 1px solid rgba(0, 0, 0, 0.08); border-radius: var(--radius-sm); box-shadow: 0 0.25rem 0.75rem rgba(0,0,0,0.05); }
#press-type-wrapper .cat-list { margin: 0; padding: var(--space-2); list-style: none; }
#press-type-wrapper .cat-list li { padding: var(--space-2) var(--space-3); cursor: pointer; border-radius: 2px; transition: background-color 0.2s ease; }
#press-type-wrapper .cat-list li:hover { background-color: var(--color-cream); }

/* ==========================================================================
   [ PARTE 4: FOOTER & EXTRA ]
   ========================================================================== */

/* ─────────────────────────────────────────
   17. CTA LONELY PLANET (Breakout Effect)
   ───────────────────────────────────────── */
.cat-footer-cta-full { background-color: var(--color-cream); width: 100%; margin-top: var(--space-32); padding-top: var(--space-20); margin-bottom: var(--space-32); }
.cat-cta-grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-10); align-items: center; width: 100%; padding-bottom: var(--space-20); }
.cat-cta-content { width: 100%; max-width: 37.5rem; }
.cat-cta-kicker { display: block; font-size: var(--fs-sm); font-weight: 700; text-transform: uppercase; letter-spacing: 0.12em; line-height: 1; color: var(--color-red); margin-bottom: 0.5rem; }
.cat-cta-title { font-family: var(--font-display); font-size: var(--fs-2xl); color: var(--color-black); font-weight: 600; margin: 0 0 0.5rem 0; line-height: var(--lh-snug); }
.cat-cta-subtitle { display: block; font-size: clamp(1.25rem, 2vw, 1.5rem); font-style: italic; font-weight: 700; color: var(--color-black); margin-bottom: 1.5rem; }
.cat-cta-desc { font-size: var(--fs-md); color: var(--color-black); margin-bottom: 2.5rem; line-height: 1.5; }

.cat-cta-form-container { position: relative; width: 100%; max-width: 35rem; }
.cat-form-wrapper { position: relative; width: 100%; overflow: hidden; }
.cat-input-group-trigger { display: flex; align-items: stretch; width: 100%; height: 3.5rem; border-radius: var(--radius-md); background: var(--color-white); box-shadow: 0 0.5rem 1.5rem rgba(0, 0, 0, 0.08); position: relative; z-index: 10; cursor: text; }
.cat-input-main, .cat-input-sub { font-family: inherit; font-size: 1rem; color: var(--color-black); background: var(--color-white); border: 1px solid transparent; outline: none; padding: 0 1.25rem; box-sizing: border-box; }
.cat-input-main { flex-grow: 1; height: 100%; border-radius: var(--radius-md) 0 0 var(--radius-md); }
.cat-input-main::placeholder, .cat-input-sub::placeholder { color: var(--color-grey); }
.cat-fake-button { display: flex; align-items: center; justify-content: center; height: 100%; background-color: var(--color-red); color: var(--color-white); padding: 0 1.5rem; border-radius: 0 var(--radius-md) var(--radius-md) 0; cursor: pointer; overflow: hidden; white-space: nowrap; flex-shrink: 0; }
.cat-btn-text { font-weight: 700; font-size: 0.875rem; letter-spacing: 0.05em; }
.cat-hidden-fields { height: 0; opacity: 0; overflow: hidden; }
.cat-fields-inner { padding-top: var(--space-5); }
.cat-row-inputs { display: flex; gap: 1rem; margin-bottom: 1rem; }
.cat-input-sub { width: 100%; height: 3.5rem; border-radius: var(--radius-md); box-shadow: 0 0.25rem 1rem rgba(0, 0, 0, 0.05); }
.cat-input-sub:focus, .cat-input-main:focus { border: 1px solid var(--color-grey); }
.cat-submit-btn { width: 100%; height: 3.5rem; background-color: var(--color-red); color: var(--color-white); font-family: inherit; font-weight: 700; font-size: 1rem; letter-spacing: 0.05em; border: none; border-radius: var(--radius-md); cursor: pointer; transition: opacity 0.3s ease, transform 0.2s ease; box-shadow: 0 0.25rem 1rem rgba(218, 41, 28, 0.3); }
.cat-submit-btn:hover { opacity: 0.9; transform: translateY(-2px); }

.cat-cta-visual { display: flex; justify-content: center; align-items: center; width: 100%; transform: translateY(15%); }
.cat-guide-composition { display: grid; grid-template-areas: "stack"; place-items: center; width: 100%; max-width: 38rem; }
.cat-guide-composition img { grid-area: stack; display: block; height: auto; border-radius: var(--radius-md); transition: transform 0.3s ease; }
.cat-img-left { width: 42%; z-index: 1; transform: translate(-60%, -20%); box-shadow: 0 1rem 2rem rgba(0,0,0,0.15); }
.cat-img-right { width: 42%; z-index: 1; transform: translate(65%, 20%); box-shadow: 0 1rem 2rem rgba(0,0,0,0.15); }
.cat-img-center { width: 52%; z-index: 10; box-shadow: 0 2rem 4rem rgba(0,0,0,0.25); }

@media (max-width: 1024px) {
    .cat-cta-grid { grid-template-columns: 1fr; gap: var(--space-12); }
    .cat-cta-content { text-align: center; display: flex; flex-direction: column; align-items: center; margin-inline: auto; max-width: 65ch; }
    .cat-cta-visual { display: flex; justify-content: center; margin-top: var(--space-4); }
}
@media (max-width: 768px) {
    .cat-footer-cta-full { padding-block: var(--space-12) var(--space-16); }
    .cat-guide-composition { max-width: 90%; margin-inline: auto; }
}

/* ─────────────────────────────────────────
   FIX RESPONSIVE CTA (Sotto 479px) - FORM FORZATO APERTO E IN COLONNA
   Sovrascriviamo GSAP per schermi piccolissimi, incolonnando tutto subito.
   ───────────────────────────────────────── */
@media (max-width: 479px) {
    /* 1. Normalizziamo il calcolo degli ingombri */
    .cat-cta-form-container,
    .cat-cta-form-container * {
        box-sizing: border-box;
    }

    /* 2. FIX iOS ZOOM e LARGHEZZA PIENA */
    .cat-cta-form-container input.cat-input-main,
    .cat-cta-form-container input.cat-input-sub {
        font-size: 16px;
        width: 100% !important;
        min-width: 0; 
    }

    /* 3. DISINTEGRIAMO IL FINTO BOTTONE
       Non serve più, il form è già aperto. */
    .cat-cta-form-container .cat-fake-button {
        display: none !important;
    }

    /* 4. SGANCIAMO IL GRUPPO EMAIL
       Rompiamo il flex orizzontale e ripristiniamo i bordi arrotondati
       che GSAP toglieva per attaccarci il finto bottone. */
    .cat-cta-form-container #catTriggerGroup {
        display: block !important;
        margin-bottom: 0.75rem; 
    }
    
    .cat-cta-form-container #catEmailInput {
        border-radius: 0.375rem !important; 
    }

    /* 5. FORZIAMO L'APERTURA DEI CAMPI NASCOSTI
       Battiamo le regole inline (opacity:0, height:0) scritte da GSAP */
    .cat-cta-form-container .cat-hidden-fields {
        opacity: 1 !important;
        height: auto !important;
        overflow: visible !important;
    }

    .cat-cta-form-container .cat-fields-inner {
        transform: none !important;
        translate: none !important;
        scale: none !important;
    }

    /* 6. MANTENIAMO IL MOTORE GRID PER NOME/COGNOME
       Impila perfettamente i campi in una colonna. */
    .cat-cta-form-container .cat-row-inputs {
        display: grid;
        grid-template-columns: 1fr;
        gap: var(--space-5);
        width: 100%;
        margin-bottom: 0.75rem;
    }

    /* 7. BOTTONE REALE E CHECKBOX */
    .cat-cta-form-container .cat-submit-btn {
        width: 100%;
        margin-top: 1rem;
    }
    
    /* Assicuriamoci che su schermi minuscoli la spunta della privacy sia allineata in alto al testo */
    .cat-cta-form-container .cat-contact-consent {
        align-items: flex-start; 
    }
}

/* ─────────────────────────────────────────
   18. FOOTER ISTITUZIONALE
   ───────────────────────────────────────── */
.site-footer { position: relative; color: var(--color-black); }
.site-footer::before { content: ""; position: absolute; top: 0; left: 50%; transform: translateX(-50%); width: calc(100% - (var(--space-6) * 2)); max-width: 1440px; height: 1px; background-color: rgba(0, 0, 0, 0.15); z-index: 1; }
.cat-footer-main { background-color: var(--color-background); padding: var(--space-20) 0 var(--space-12); }
.cat-footer-grid { display: grid; gap: var(--space-12); grid-template-columns: 2fr 1fr 1fr 1fr; }
.cat-footer-info { display: flex; flex-direction: column; gap: var(--space-6); }
.footer-logo-main { max-width: 17.5rem; height: auto; display: block; }
.cat-footer-desc { font-size: var(--fs-xs); line-height: 1.6; color: var(--color-black); opacity: 0.8; max-width: 45ch; text-wrap: pretty; margin: 0; }
.cat-footer-heading { font-family: var(--font-body); font-size: var(--fs-base); font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: var(--space-4); color: var(--color-black); }
.cat-footer-links { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: var(--space-3); }
.cat-footer-links a { color: var(--color-black); text-decoration: none; font-size: var(--fs-sm); transition: color var(--duration-fast) var(--ease); }
.cat-footer-links a:hover { color: var(--color-red); }
.cat-footer-bottom { background-color: var(--color-cream); padding: var(--space-6) 0; border-top: 1px solid rgba(0, 0, 0, 0.03); }
.cat-footer-bottom-flex { display: flex; flex-direction: column; align-items: center; text-align: center; gap: var(--space-2); }
.cat-footer-copy, .cat-footer-vat { margin: 0; font-size: var(--fs-xs); color: var(--color-text-body); }

@media (min-width: 768px) { .cat-footer-bottom-flex { flex-direction: row; justify-content: space-between; text-align: left; } }
@media (max-width: 1024px) {
    .cat-footer-grid { grid-template-columns: repeat(3, 1fr); gap: var(--space-10) var(--space-6); }
    .cat-footer-info { grid-column: 1 / -1; border-bottom: 1px solid rgba(0,0,0,0.05); padding-bottom: var(--space-8); margin-bottom: var(--space-4); }
}

@media (max-width: 768px) {
    .cat-footer-grid { 
        grid-template-columns: repeat(2, 1fr); 
        gap: var(--space-8); 
    }

    /* 1. Logo/Info: Sempre al primo posto e occupa 2 colonne */
    .cat-footer-info { 
        order: 1; 
        grid-column: 1 / -1; 
        text-align: left; 
    }
    .footer-logo-main { margin-inline: 0; }

    /* 2. Scopri (2° figlio): Resta al secondo posto (prima colonna riga 2) */
    .cat-footer-col:nth-child(2) { 
        order: 2; 
    }

    /* 3. Seguici (4° figlio): Sale visivamente al terzo posto (seconda colonna riga 2) */
    .cat-footer-col:nth-child(4) { 
        order: 3; 
    }

    /* 4. Legale (3° figlio): Scende al quarto posto e occupa 2 colonne in chiusura */
    .cat-footer-col:nth-child(3) { 
        order: 4; 
        grid-column: 1 / -1; 
    }
}

/* ─────────────────────────────────────────
   19. ANIMAZIONI, PREFERITI E PERFORMANCE
   ───────────────────────────────────────── */
.card-fav-remove {
    position: absolute; top: 1rem; right: 1rem; z-index: 10; width: 2.25rem; height: 2.25rem; border-radius: 50%; display: flex; align-items: center; justify-content: center;
    background: rgba(255, 255, 255, 0.75); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); border: 1px solid rgba(255, 255, 255, 0.4); box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.08); color: var(--color-black); cursor: pointer; transition: all var(--duration-base) var(--ease);
}
.card-fav-remove:hover { background: rgba(255, 255, 255, 0.95); transform: scale(1.05); }

.cat-reveal-up { opacity: 0; transform: translateY(1.5rem); will-change: opacity, transform; }
.cat-fade-in { opacity: 0; will-change: opacity; }

.gsap-hero-title { opacity: 0; will-change: transform, opacity; }
.gsap-hero-subtitle { opacity: 0; transform: none; will-change: opacity; }
.gsap-scale-in { opacity: 0; transform: scale(1.05); will-change: transform, opacity; }

.megamenu, .megamenu-inner, .mobile-nav-overlay, .mobile-nav-panel, .search-overlay-inner { will-change: transform, opacity; }

/* ─────────────────────────────────────────
   20. PAGINA CHI SIAMO (ISTITUZIONALE)
   ───────────────────────────────────────── */

.about-page-content {
    background-color: var(--color-background);
}

/* 20.1 Manifesto Tipografico (Layout Asimmetrico) */
.about-manifesto-grid {
    display: grid;
    grid-template-columns: 4fr 6fr; /* 40% Vision, 60% Mission */
    gap: var(--space-12);
    align-items: start;
}

.about-vision-text {
    font-family: var(--font-display);
    font-size: var(--fs-2xl);
    font-weight: 600;
    line-height: var(--lh-snug);
    color: var(--color-black);
    /* Allineamento a sinistra per layout asimmetrico */
    text-align: left;
}

.about-mission-content {
    font-size: var(--fs-lg);
    color: var(--color-grey);
    line-height: 1.6;
}

/* Spaziatura tra i paragrafi del WYSIWYG */
.about-mission-content p {
    margin-bottom: var(--space-4);
}

.about-mission-content p:last-child {
    margin-bottom: 0;
}

.about-vision-cta {
    margin-top: var(--space-8);
}

/* Responsive Mobile */
@media (max-width: 1024px) {
    .about-manifesto-grid {
        grid-template-columns: 1fr; /* Una colonna su mobile */
        gap: var(--space-8);
    }
    
    .about-vision-text {
        font-size: var(--fs-xl);
    }
}

/* 20.2 I Tre Pilastri (Box Bordati) */
.about-pillars-section h2 {
	text-align: center;
}

.about-pillars-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: var(--space-8);
    margin-top: var(--space-8);
}

.about-pillar-card {
    padding: var(--space-8) var(--space-4);
    border: 2px solid var(--color-red);
    border-radius: var(--radius-lg);
    text-align: center;
    transition: transform var(--duration-base) var(--ease);
}

.about-pillar-card:hover { 
    transform: translateY(-5px); 
}

.about-pillar-kicker {
    display: block;
    font-size: var(--fs-sm);
    font-weight: 700;
    color: var(--color-red);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    margin-bottom: var(--space-3);
}

.about-pillar-title {
    font-family: var(--font-display);
    font-size: var(--fs-lg);
    font-weight: 600;
    margin-bottom: var(--space-4);
}

/* 20.3 Layout Box CTA (Solo padding e radius) */
.about-cta-box {
    padding: var(--space-12) var(--space-8);
    border-radius: var(--radius-lg);
}

.about-cta-title {
    font-family: var(--font-display);
    font-size: var(--fs-2xl);
    font-weight: 600;
    margin-bottom: var(--space-8);
}

/* 20.4 Responsive */
@media (max-width: 1024px) {
    .about-vision-text { font-size: var(--fs-xl); }
    .about-pillars-grid { grid-template-columns: 1fr; gap: var(--space-4); }
    .about-cta-box { padding: var(--space-8) var(--space-4); }
}

/* ─────────────────────────────────────────
   21. PAGINA INFORMAZIONI PRATICHE
   ───────────────────────────────────────── */

/* 21.1 Override Allineamento Card (Tutto a sinistra) */
.info-card {
    text-align: left; /* Sovrascrive il text-align: center di .about-pillar-card */
}

/* 21.2 Dimensionamento e Stile Icone SVG */
.info-card-icon {
    margin-bottom: var(--space-4);
    display: inline-flex; /* Mantiene l'icona compatta a sinistra */
}

.info-card-icon svg {
    width: 3rem; /* Dimensione di circa 48px, ben visibile ma non invadente */
    height: 3rem;
    
    /* Gestione del colore: forziamo il rosso del brand */
    fill: var(--color-red); 
    color: var(--color-red);
}

/* Se le tue icone SVG sono disegnate con delle "linee" (stroke) 
   invece che con dei riempimenti (fill), decommenta la riga sotto: */
/* .info-card-icon svg * { stroke: var(--color-red); } */

/* 21.3 Ottimizzazione spaziature interne per il nuovo allineamento */
.info-card .about-pillar-title {
    margin-bottom: var(--space-4);
    font-size: var(--fs-xl); /* Leggermente più grande per staccare dal testo */
}

/* 21.4 Stile Link Interni alle Card (Replica estetica editoriale) */
.info-card .about-pillar-desc a {
    color: var(--color-black);
    font-weight: 500;
    text-decoration: underline;
    text-underline-offset: 3px;
    transition: color var(--duration-fast) var(--ease), text-decoration-color var(--duration-fast) var(--ease);
}

.info-card .about-pillar-desc a:hover {
    color: var(--color-red);
    text-decoration-color: var(--color-red);
}

/* Rimuoviamo il margine dell'ultimo paragrafo generato dal WYSIWYG per non sballare la card */
.about-pillar-desc p:last-child {
    margin-bottom: 0;
}

/* ─────────────────────────────────────────
   22. PAGINA NEWSLETTER
   ───────────────────────────────────────── */

/* 22.1 Hero Grid System (Quello originale e funzionante) */
.nl-hero-wrapper {
    display: grid;
    grid-template-columns: 1.1fr 0.9fr; /* Risolve l'overflow sottraendo il gap */
    gap: var(--space-8);
    align-items: center;
}

/* L'immagine copre l'intera griglia su Desktop */
.nl-hero-bg {
    grid-column: 1 / -1;
    grid-row: 1 / -1;
    width: 100%;
    height: 100%;
    margin: 0;
    position: relative;
    border-radius: var(--radius-lg);
    overflow: hidden;
}

.nl-hero-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg, rgba(0,0,0,0.85) 0%, rgba(0,0,0,0.3) 50%, rgba(0,0,0,0) 100%);
    z-index: 1;
}

/* Coordinate Elementi Desktop */
.nl-hero-text {
    grid-column: 1;
    grid-row: 1;
    z-index: 2;
    padding-block: var(--space-16);
    padding-inline-start: max(var(--px-container), 3rem);
    color: var(--color-white);
}

.nl-hero-form {
    grid-column: 2;
    grid-row: 1;
    z-index: 2;
    padding-block: var(--space-16);
    padding-inline-end: max(var(--px-container), 3rem);
	scroll-margin-top: 8rem;
}

/* Tipografia Hero */
.nl-kicker {
    display: block;
    font-family: var(--font-body);
    font-size: var(--fs-sm);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    margin-bottom: var(--space-3);
}

.nl-hero-text .hp-title-primary {
    font-size: 3rem;
    margin-bottom: var(--space-4);
    text-align: left;
    color: var(--color-white);
}

.nl-hero-text .hp-subtitle-primary {
    text-align: left;
    margin-inline: 0;
    color: var(--color-white);
	max-width: 42ch;
    text-wrap-style: pretty;
}

/* 22.2 Glass Panel & Form Styles */
.glass-form-panel {
    background: var(--color-white);
    border: 0.0625rem solid rgba(255, 255, 255, 0.5);
    border-radius: var(--radius-lg);
    padding: var(--space-12);
    box-shadow: 0 1.25rem 2.5rem rgba(0,0,0,0.1);
}

/* * I campi di input e la checkbox ereditano ora le classi globali di page-contatti
 * (.cat-contact-field-wrap, .cat-contact-consent). 
 * Qui aggiungiamo solo il layout specifico per la colonna newsletter.
 */
.nl-form-inner {
    display: flex;
    flex-direction: column;
    gap: var(--space-6);
}

.nl-form-submit-wrap {
    margin-top: var(--space-2);
}

.nl-submit-btn {
    width: 100%;
    display: block;
    text-align: center;
}

/* 22.3 Highlights Guide Section */
.nl-guide-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--space-12);
    align-items: center;
}

/* Protezione immagine da deformazioni */
.nl-guide-visual {
    align-self: center;
}

.nl-guide-mockup {
    width: 100%;
    height: auto;
    object-fit: contain;
    border-radius: var(--radius-lg);
}

/* 22.4 Bullet Nuovi (Isolati e Sicuri) */
.nl-highlights-list {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: var(--space-4);
}

.nl-list-item {
    display: flex;
    align-items: flex-start;
    gap: 1rem;
}

.nl-custom-bullet {
    width: 0.625rem; /* 10px */
    height: 0.625rem;
    background-color: var(--color-gold);
    border-radius: 50%;
    flex-shrink: 0;
    margin-top: 0.4rem;
}

.nl-list-text {
    font-size: var(--fs-base);
    line-height: 1.5;
    color: var(--color-black);
}

/* SOSTITUTI PER CLASSI MB-6 E TEXT-GREY RIMOSSE */
.nl-guide-text,
.nl-cta-text {
    font-size: var(--fs-md);
    margin-bottom: var(--space-6);
}

/* 22.5 Responsive (La Magia della Griglia) */
@media (max-width: 64rem) {
    .nl-hero-wrapper {
        grid-template-columns: 1fr;
        grid-template-rows: auto auto; /* Due righe: Immagine e Sotto-Immagine */
        gap: 0;
    }
    
    .nl-hero-bg {
        grid-column: 1;
        grid-row: 1; /* L'immagine fa da sfondo SOLO alla prima riga (Testo) */
        border-radius: 0;
    }

    .nl-hero-overlay {
        background: linear-gradient(180deg, rgba(0,0,0,0.8) 0%, rgba(0,0,0,0.4) 50%, rgba(0,0,0,0.1) 100%);
    }

    .nl-hero-text {
        grid-column: 1;
        grid-row: 1; /* Il testo sta sopra l'immagine */
        padding-block: var(--space-12);
        padding-inline: var(--px-container);
    }

    .nl-hero-form {
        grid-column: 1;
        grid-row: 2; /* Il form scivola magicamente SOTTO l'immagine */
        padding-block: var(--space-8);
        padding-inline: var(--px-container);
    }

    .nl-guide-grid {
        grid-template-columns: 1fr;
    }
    
    .nl-guide-visual {
        order: -1;
    }
}

/* ==========================================================================
   LANDING PAGE BIKE FESTIVAL (Lead Generation)
   ========================================================================== */

/* 1. Sfondo a Tutto Schermo (Viewport) */
.landing-bike-festival .landing-full-bg {
    position: relative;
    width: 100%;
    min-height: 100vh; /* Forza l'altezza minima a coprire tutto lo schermo */
    background-size: cover; /* L'immagine fa da contenitore adattivo */
    background-position: center center;
    background-repeat: no-repeat;
    display: flex;
    flex-direction: column;
}

/* 1.1 Calibrazione Focus Immagine su Mobile/Tablet */
@media (max-width: 1024px) {
    .landing-bike-festival .landing-full-bg {
        /* Il primo valore è l'asse orizzontale (X), il secondo è verticale (Y).
           - 0% allinea tutto a sinistra.
           - 100% allinea tutto a destra.
           - 30% o 33% manterrà il focus esattamente sul primo terzo a sinistra! 
        */
        background-position: 22% center; 
    }
}

/* 2. Overlay Scuro (Garantisce leggibilità dei testi su sfondi chiari) */
.landing-bike-festival .landing-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, rgba(0,0,0,0.3) 0%, rgba(0,0,0,0.7) 100%);
    z-index: 1;
}

/* 3. Struttura e Allineamento Verticale */
.landing-bike-festival .landing-wrapper {
    position: relative;
    z-index: 2;
    display: flex;
    flex-direction: column;
    flex-grow: 1;
    padding-top: var(--space-6);
    padding-bottom: var(--space-6);
}

.landing-bike-festival .landing-logo-top {
    width: 100%;
    display: flex;
    justify-content: center; /* Forza la centratura orizzontale */
    padding-top: var(--space-10); /* Lo abbassa leggermente dal bordo superiore (circa 40-50px) */
    margin-bottom: var(--space-8);
    position: relative;
    z-index: 10;
}

.landing-bike-festival .landing-logo-top img {
    display: block;
    margin: 0 auto; /* Centratura di sicurezza se l'immagine diventa block */
    height: auto;
}

/* --- IL BLOCCO CONTENUTO E TESTI MODIFICATO --- */
.landing-bike-festival .landing-content {
    margin-top: 8vh; /* POSIZIONAMENTO MANUALE: Aumenta o diminuisci questo valore per alzare o abbassare tutto il blocco centrale */
    margin-left: auto;
    margin-right: auto;
    margin-bottom: var(--space-10);
    width: 100%;
    max-width: 600px; /* Larghezza mobile/tablet verticale */
    text-align: center;
    color: #ffffff;
    display: flex;
    flex-direction: column;
    align-items: center; /* Mantiene titolo e form centrati verticalmente nella loro colonna */
}

.landing-bike-festival .landing-title {
    font-size: var(--fs-3xl);
    font-weight: 600;
    line-height: var(--lh-snug);
    margin-bottom: var(--space-4);
    color: var(--color-white);
    max-width: 20ch;
    display: inline-block;
}

.landing-bike-festival .landing-description p {
    font-size: var(--fs-lg);
    color: var(--color-white);
    margin-bottom: var(--space-16); /* AUMENTATO: Questo margine stacca fisicamente il testo dal box di vetro sottostante */
}

/* 4. Il Box Glassmorphism (Vetro) */
.landing-bike-festival .landing-glass-form-box {
    width: 100%; /* Si assicura di prendere tutta la larghezza del contenitore */
    background: rgba(255, 255, 255, 0.2);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
	border: 1px solid rgba(255, 255, 255, 0.4);
    border-radius: var(--radius-lg);
    padding: var(--space-12); /* Aumentato il padding per far respirare il form al suo interno */
    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.15);
    text-align: left; /* Il form va letto da sinistra a destra */
}

/* 5. Override dei Campi Form (Versione Testo Bianco su Vetro) */
.landing-bike-festival .landing-glass-form-box .cat-contact-field-wrap {
    background: transparent; 
    border: none;
    /* Linea sotto bianca semi-trasparente invece che grigia */
    border-bottom: 2px solid rgba(255, 255, 255, 0.5); 
    border-radius: 0; 
    margin-bottom: var(--space-4); 
    box-shadow: none;
}

.landing-bike-festival .landing-glass-form-box .cat-contact-input {
    background: transparent !important; 
    border: none;
    color: var(--color-white); /* Testo dell'utente BIANCO */
}

/* Cambia il colore del placeholder (il testo suggerito) in bianco opaco */
.landing-bike-festival .landing-glass-form-box .cat-contact-input::placeholder {
    color: rgba(255, 255, 255, 0.7);
    opacity: 1; /* Necessario per Firefox */
}

/* Colore BIANCO per icone (omino/busta) e testo privacy */
.landing-bike-festival .landing-glass-form-box .cat-contact-icon,
.landing-bike-festival .landing-glass-form-box .cat-contact-consent-text {
    color: var(--color-white);
}

/* 6. Layout Desktop (Campi Allineati in Orizzontale) */
@media (min-width: 1024px) {
    .landing-bike-festival .landing-content {
        max-width: 1000px; /* Allargo il contenitore su PC per far respirare i campi */
    }

    .landing-bike-festival .nl-form-inner {
        display: grid;
        grid-template-columns: repeat(3, 1fr); /* Crea 3 colonne perfette */
        gap: 0 var(--space-4); /* Niente gap verticale, solo orizzontale */
        align-items: end; /* Allinea le linee dei campi tutte in basso */
    }

    .landing-bike-festival .landing-glass-form-box .cat-contact-field-wrap {
        margin-bottom: 0; /* Il margine lo gestisce la griglia */
    }

    /* La checkbox e il bottone devono prendere tutta la larghezza sotto i campi */
    .landing-bike-festival .cat-contact-consent {
        grid-column: 1 / -1; 
        margin-top: var(--space-6);
        margin-bottom: var(--space-4);
    }

    .landing-bike-festival .nl-form-submit-wrap {
        grid-column: 1 / -1;
        text-align: center;
    }
}

/* 7. Footer Informativo (Testo piccolo in fondo) */
.landing-bike-festival .landing-footer-info {
    margin-top: auto; /* Lo spinge categoricamente in fondo al contenitore */
    padding-top: var(--space-8);
    text-align: center;
    width: 100%;
}

.landing-bike-festival .landing-footer-info p {
    font-size: var(--fs-xs); /* Molto piccolo */
    color: rgba(255, 255, 255, 0.7); /* Bianco con trasparenza per non essere invasivo */
    letter-spacing: 0.02em;
}

.landing-bike-festival .landing-footer-info a {
    color: var)--color-white); /* Il link è un po' più acceso */
    text-decoration: underline;
    transition: opacity 0.3s ease;
}

.landing-bike-festival .landing-footer-info a:hover {
    opacity: 0.8;
}

/* Fix per Mobile: assicura che ci sia spazio dal bordo inferiore */
@media (max-width: 767px) {
    .landing-bike-festival .landing-footer-info {
        padding-bottom: var(--space-4);
    }
}

/* 8. Ottimizzazioni specifiche per Mobile */
@media (max-width: 767px) {
    .landing-bike-festival .landing-title {
        font-size: var(--fs-2xl); /* Riduce il font da 3xl a 2xl su smartphone */
    }
}

.mc4wp-alert.mc4wp-success p {
	color: var(--color-white);
}
/* ==========================================================================
   HUB STORIE E ITINERARI (Filtri e Griglia Dinamica)
   ========================================================================== */

/* ─────────────────────────────────────────
   1. LAYOUT PRINCIPALE (Desktop)
   ───────────────────────────────────────── */
.hub-layout-wrapper {
    display: flex;
    align-items: flex-start;
    gap: var(--space-8);
}

/* La Sidebar su Desktop rimane fissa (Sticky) mentre si scorrono gli articoli */
.hub-sidebar-filters {
    width: 15rem; /* 240px */
    flex-shrink: 0;
    position: -webkit-sticky;
    position: sticky;
    top: 6.25rem; /* Si aggancia sotto l'header principale */
    max-height: calc(100vh - 8rem);
    overflow-y: auto;
    /* Nasconde la scrollbar estetica ma mantiene la funzionalità */
    scrollbar-width: none; 
}
.hub-sidebar-filters::-webkit-scrollbar {
    display: none; 
}

.hub-results-column {
    flex-grow: 1;
    min-width: 0; /* Previene il collasso del flex child */
}

/* Nasconde il tasto Chiudi su Desktop mantenendo intatto l'allineamento Flex dell'header */
.hub-mobile-close-btn {
    display: none;
}

/* ─────────────────────────────────────────
   2. STILE DEI FILTRI E TOUCH TARGETS
   ───────────────────────────────────────── */
.hub-filters-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: var(--space-6);
    padding-bottom: var(--space-4);
    border-bottom: 1px solid rgba(0, 0, 0, 0.08); /* Token standard del tuo design system */
}

.hub-filters-reset {
    background: transparent;
    border: none;
    font-size: var(--fs-sm);
    cursor: pointer;
    text-decoration: underline;
    padding: 0;
}

.hub-filter-group {
    margin-bottom: var(--space-6);
}

.hub-filter-group-title {
    font-size: var(--fs-base);
    font-weight: 600;
    margin-bottom: var(--space-4);
}

.hub-filter-group-list {
    list-style: none;
    padding: 0;
    margin: 0;
}

/* Area di Tap Allargata: Limitata rigorosamente agli elementi visibili */
.hub-checkbox-label {
    display: inline-flex; /* Trasformato in inline-flex per non occupare il 100% della riga */
    align-items: center;
    min-height: 1.75rem; 
    cursor: pointer;
    gap: var(--space-3);
    width: fit-content; /* Magia UX: L'area cliccabile finisce esattamente dove finisce il testo */
}

.hub-checkbox-input {
    width: 1rem; /* 20px */
    height: 1rem;
    accent-color: var(--color-red); /* Usa il rosso del tuo design system */
    cursor: pointer;
}

.hub-checkbox-text {
    font-size: var(--fs-sm);
    color: var(--color-black);
}

/* ─────────────────────────────────────────
   3. GRIGLIA MATEMATICA E CARD SPECIALI
   ───────────────────────────────────────── */
.hub-posts-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: var(--space-12) var(--space-6);
	grid-auto-flow: dense;
}

/* Espande il contenitore della griglia */
.hub-grid-item {
    display: flex;
    flex-direction: column;
}

/* Forza la card e il tag <a> a occupare il 100% dell'altezza della riga */
.hub-grid-item .cat-related-card,
.hub-grid-item .cat-related-card__link {
    display: flex;
    flex-direction: column;
    width: 100%;
    height: 100%;
}

/* Il contenitore del testo si espande (flex-grow: 1) spingendo tutto fluidamente */
.hub-grid-item .cat-related-card__content {
    display: flex;
    flex-direction: column;
    flex-grow: 1;
}

/* La Card Speciale (4° e 10°) occupa 2/3 dello spazio (2 colonne su 3) */
.hub-grid-item.is-featured-card {
    grid-column: span 2;
}

/* Forziamo ESCLUSIVAMENTE l'immagine della card grande al formato 16/9 nativo */
.hub-grid-item.is-featured-card .cat-related-card__visual {
    aspect-ratio: 16 / 9;
}

/* Assicuriamoci che l'immagine copra perfettamente l'area senza deformarsi */
.hub-grid-item.is-featured-card .cat-related-card__img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* 6. OTTIMIZZAZIONE TIPOGRAFICA HUB (Solo Desktop) */
@media (min-width: 1025px) {
    /* Riduciamo il font del titolo solo dentro la griglia di questa pagina */
    .hub-posts-grid .cat-related-card__title {
        font-size: var(--fs-md);
    }
}

/* ─────────────────────────────────────────
   4. RESPONSIVE MOBILE & TABLET
   ───────────────────────────────────────── */

/* Trigger Mobile nascosto su Desktop */
.hub-mobile-filter-bar {
    display: none; 
}

@media (max-width: 1024px) {
    /* GRIGLIA TABLET: Da 3 a 2 colonne */
    .hub-posts-grid {
        grid-template-columns: repeat(2, 1fr);
    }
    
    /* Su Tablet la card speciale spezza occupando l'intera riga */
    .hub-grid-item.is-featured-card {
        grid-column: 1 / -1;
    }

    /* TRIGGER MOBILE (Sticky) - Ascolta la variabile dinamica del tuo JS main */
    .hub-mobile-filter-bar {
        display: block;
        position: -webkit-sticky;
        position: sticky;
        top: var(--filter-bar-top, 4.5rem); /* Si adatta automaticamente allo scroll dell'header */
        z-index: 50;
        background-color: var(--color-background);
        padding: var(--space-4) 0;
        border-bottom: 1px solid rgba(0, 0, 0, 0.08);
        margin-bottom: var(--space-6);
        transition: top var(--duration-base) var(--ease); /* Rende fluido il movimento */
    }

    /* Quando l'header scompare, la barra scivola elegantemente in cima */
    .hub-mobile-filter-bar.is-header-hidden {
        top: 0;
    }

    /* Supporto per la barra di amministrazione di WordPress */
    body.admin-bar .hub-mobile-filter-bar.is-header-hidden {
        top: 46px; 
    }

    .hub-mobile-trigger-btn {
        width: 100%;
        display: flex;
        justify-content: center;
        align-items: center;
        gap: var(--space-2);
        background-color: transparent;
        border: 1px solid var(--color-black);
        color: var(--color-black);
        padding: var(--space-3);
        border-radius: 3rem; /* Bottone a pillola */
        font-size: var(--fs-base);
        font-weight: 600;
        cursor: pointer;
    }

    .filter-count-badge {
        color: var(--color-red);
    }

	/* Mostra il tasto Chiudi solo su Mobile/Tablet dentro l'overlay */
    .hub-mobile-close-btn {
        display: block;
    }

    /* PREPARAZIONE MODAL (Per il prossimo step JS) */
    /* La sidebar viene staccata dal layout e trasformata in overlay fullscreen */
    /* PREPARAZIONE MODAL (Fullscreen Overlay) */
    .hub-sidebar-filters {
        position: fixed;
        top: 0;
        left: 0;
        width: 100%;
        height: 100vh; /* Fallback per browser datati */
        height: 100dvh; /* Risolve il taglio della barra di Safari/Chrome */
        background-color: var(--color-white);
        z-index: 9999;
        padding: var(--space-6);
        padding-bottom: calc(var(--space-6) + env(safe-area-inset-bottom, 1rem)); /* Protegge dalla home bar dell'iPhone */
        overflow-y: auto; /* Permette lo scorrimento interno se ci sono tanti filtri */
        -webkit-overflow-scrolling: touch; /* Scorrimento fluido su iOS */
        overscroll-behavior: contain; /* Impedisce che lo scroll del modal muova la pagina sotto */
        
        /* Nascosta di default in basso */
        visibility: hidden;
        transform: translateY(100%);
        transition: transform 0.4s cubic-bezier(0.32, 0.72, 0, 1), visibility 0.4s ease;
    }

    /* La classe che aggiungeremo col JS */
    .hub-sidebar-filters.is-open {
        visibility: visible;
        transform: translateY(0);
    }
    
    /* Header fisso dentro il modal per chiudere/resettare comodamente */
    .hub-filters-header {
        position: -webkit-sticky;
        position: sticky;
        top: 0;
        background-color: var(--color-white);
        z-index: 10;
        padding-top: var(--space-2);
    }

	/* ─────────────────────────────────────────
       LAYOUT FILTRI A 2 COLONNE (Solo Mobile/Tablet)
       ───────────────────────────────────────── */
    
    /* 1. Il form contenitore diventa una griglia 2x2 perfetta per i 4 gruppi */
    #hub-filter-form {
        display: grid;
        grid-template-columns: repeat(2, 1fr); 
        gap: var(--space-6) var(--space-4); 
        align-items: start; 
    }

    /* 2. Sicurezza UI: L'header del form (Titolo e Chiudi) e i bottoni extra occupano 2 colonne (100%) */
    #hub-filter-form .hub-filters-header,
    #hub-filter-form .hub-filters-actions,
    #hub-filter-form > button {
        grid-column: 1 / -1;
    }

    /* 3. Sicurezza Testo Lungo: Gestione della voce "più lunga" per evitare sbordamenti */
    #hub-filter-form .hub-checkbox-label {
        max-width: 100%; 
        align-items: flex-start; 
        word-wrap: break-word; 
        hyphens: auto;
    }
}

@media (max-width: 767px) {
    /* GRIGLIA MOBILE: 1 Colonna (Il muro spezzato) */
    .hub-posts-grid {
        grid-template-columns: 1fr;
    }
    
    /* MOBILE: La magia del 4/5 sulle Card Speciali */
    /* Sovrascrive il 16/9 e fa diventare la card fisicamente dominante in altezza */
    .hub-grid-item.is-featured-card .cat-related-card__visual {
        aspect-ratio: 4 / 5; 
    }
}

/* ==========================================================================
   WPFORMS BRIDGE: ADATTA I CAMPI AL NOSTRO DESIGN CUSTOM
   ========================================================================== */

/* 1. Applichiamo lo stile dei nostri input custom agli input di WPForms */
/* Puoi copiare qui dentro le stesse regole CSS che hai già per .cat-contact-input (es. border, padding, background, font) */
.cat-contact-input input[type="text"],
.cat-contact-input input[type="email"],
.cat-contact-textarea textarea {
    width: 100%;
    background-color: var(--color-cream);
    border: 1px solid transparent;
    border-radius: var(--radius-md);
    font-family: inherit;
    font-size: 1rem;
    color: var(--color-black);
    transition: all var(--duration-base) var(--ease);
}

.cat-contact-textarea textarea {
	padding: 0 1.25rem;
}

/* 2. Pulizia dei margini di default di WPForms */
.wpforms-container .wpforms-field {
    margin-bottom: 1.5rem; /* Gestiamo noi la spaziatura tra i campi */
}
.wpforms-container .wpforms-field-layout {
    margin-bottom: 0 !important;
}

/* 3. Nascondiamo definitivamente le etichette (WPForms a volte lascia uno spazio vuoto) */
.wpforms-container .wpforms-label-hide {
    display: none !important;
}

/* 4. Sistemiamo il contenitore del Bottone */
.wpforms-container .wpforms-submit-container {
    margin-top: 2rem;
}

/* ==========================================================================
   WPFORMS ICONE SVG (TRAMITE CSS MASKS)
   ========================================================================== */

/* 1. Prepariamo il contenitore per accogliere l'icona */
.wpforms-container .cat-contact-input {
    position: relative;
}

/* 2. Facciamo spazio a sinistra dentro l'input affinché il testo non vada sopra l'icona */
.wpforms-container .cat-contact-input input {
    padding-left: 2.5rem !important; /* Regola questo valore se serve più o meno spazio */
}

/* 3. Creiamo l'icona (Pseudo-elemento base) */
.wpforms-container .cat-contact-input::before {
    content: '';
    position: absolute;
	left: 0.75rem; /* Distanza dell'icona dal bordo sinistro */
    top: 50%;
    transform: translateY(-50%);
    width: 20px;
    height: 20px;
    background-color: var(--color-text-body, #333); /* Il colore dell'icona! Cambialo con la tua variabile preferita */
    -webkit-mask-size: contain;
    mask-size: contain;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-position: center;
    mask-position: center;
    z-index: 10;
    pointer-events: none; /* Fondamentale: impedisce che l'icona blocchi il click del mouse */
}

/* 4. Assegniamo l'SVG "Omino" ai campi Nome e Cognome */
.wpforms-container .wpforms-field-name.cat-contact-input::before {
    -webkit-mask-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2'/%3E%3Ccircle cx='12' cy='7' r='4'/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2'/%3E%3Ccircle cx='12' cy='7' r='4'/%3E%3C/svg%3E");
}

/* 5. Assegniamo l'SVG "Busta" al campo Email */
.wpforms-container .wpforms-field-email.cat-contact-input::before {
    -webkit-mask-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z'/%3E%3Cpolyline points='22,6 12,13 2,6'/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z'/%3E%3Cpolyline points='22,6 12,13 2,6'/%3E%3C/svg%3E");
}

/* OPZIONALE: Se vuoi che l'icona cambi colore quando l'utente clicca sul campo (Effetto Focus) */
.wpforms-container .cat-contact-input:focus-within::before {
    background-color: var(--color-red); /* Metti il colore primario del tuo brand */
}

/* ==========================================================================
   WPFORMS: RIMOZIONE FOCUS BLU DI DEFAULT E PERSONALIZZAZIONE
   ========================================================================== */

/* Disattiviamo l'outline nativo del browser e applichiamo il nostro stile */
.wpforms-container .wpforms-form .cat-contact-input input[type="text"]:focus,
.wpforms-container .wpforms-form .cat-contact-input input[type="email"]:focus,
.wpforms-container .wpforms-form .cat-contact-textarea textarea:focus,
.wpforms-container .wpforms-form .cat-contact-input input[type="text"]:focus-visible,
.wpforms-container .wpforms-form .cat-contact-input input[type="email"]:focus-visible,
.wpforms-container .wpforms-form .cat-contact-textarea textarea:focus-visible {
    
    /* Uccidiamo il bordo blu e le eventuali ombre di WPForms */
    outline: none;
    box-shadow: none;
    
    /* (Opzionale ma super consigliato) Cambiamo il colore del bordo per il feedback visivo */
    border-color: var(--color-red); /* Cambia questa variabile col colore che preferisci! */
    
    /* Aggiungiamo una transizione morbida per un effetto premium */
    transition: border-color 0.3s ease;
}

/* WPForms: Spazio tra il messaggio di successo e il form ricaricato */
.wpforms-container .wpforms-confirmation-container-full {
    margin-bottom: 2rem;
    /* Se vuoi personalizzare l'aspetto del box di conferma, puoi farlo qui! */
}

/* ==========================================================================
   WPFORMS: MESSAGGIO DI CONFERMA CUSTOM
   ========================================================================== */

/* Il contenitore che sostituisce il form */
.cat-success-message-wrap {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    /* Usa un colore di sfondo leggero dal tuo tema, o lascialo trasparente se preferisci */
    background-color: rgba(0, 0, 0, 0.03); 
    border: 1px solid rgba(0, 0, 0, 0.05);
    border-radius: 12px;
    padding: 3.5rem 2rem;
    animation: catFadeInUp 0.6s ease forwards;
}

/* L'icona SVG */
.cat-success-icon {
    width: 4rem;
    height: 4rem;
    color: var(--color-red); /* Il tuo colore primario */
    margin-bottom: 1.5rem;
}

.cat-success-icon svg {
    width: 100%;
    height: 100%;
}

/* I testi */
.cat-success-content h3 {
    font-size: var(--fs-2xl);
    color: var(--color-black);
    margin-bottom: 1rem;
}

.cat-success-content p {
    color: var(--color-text-body);
    margin: 0;
}

/* L'animazione per farlo apparire dolcemente dal basso */
@keyframes catFadeInUp {
    from {
        opacity: 0;
        transform: translateY(20px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}
