/* ==========================================================================
   EXPLORICA 3.0 — "Oltre i confini"
   Brand dal logo: antracite #4E4949 + verde globo #6AAD64 su superfici chiare.
   Tipografia: Archivo variabile (larghezze 62–125, pesi 100–900), self-hosted.
   ========================================================================== */

/* ---------- Font ---------- */
@font-face {
	font-family: 'Archivo';
	src: url('../fonts/Archivo-Variable.woff2') format('woff2');
	font-weight: 400 800;
	font-stretch: 62% 125%;
	font-style: normal;
	font-display: swap;
}

/* ---------- Token ---------- */
:root {
	--antracite: #4E4949;     /* testo, dal lettering del logo */
	--antracite-2: #6B6565;   /* testo secondario su chiaro */
	--carbone: #3A3535;       /* superfici scure: footer, booking */
	--carbone-2: #474242;     /* superficie scura rialzata */
	--bianco: #FFFFFF;
	--neve: #F6F5F3;          /* fondo alternato caldo */
	--linea: #E6E3E1;
	--header-h: 111px;      /* topbar 39 + barra 72: l'hero della home ci si sottrae */
	--linea-scura: #5D5757;
	--grigio: #B9B5B3;        /* grigio tagline, testo tenue su scuro */
	--verde: #6AAD64;         /* verde globo: azioni */
	--verde-scuro: #477A42;   /* verde testo/link su chiaro */
	--verde-chiaro: #8FC48A;  /* verde su superfici scure */
	--ok-l: #477A42;   --ok-d: #8FC48A;
	--warn-l: #8A6116; --warn-d: #E3AC4F;
	--no-l: #A8433A;   --no-d: #E48379;
	--neutro-l: #7C7676; --neutro-d: #A9A4A2;
	--info-l: #2C6E8F; --info-d: #8FC6DF;   /* primi iscritti: il gruppo si e mosso */
	--f-display: 'Archivo', 'Arial', sans-serif;
	--f-body: 'Archivo', system-ui, -apple-system, sans-serif;
	--f-mono: 'Archivo', system-ui, sans-serif;
	--container: 1280px;
	--gutter: clamp(1.25rem, 4vw, 3rem);
	--sez: clamp(4rem, 8vw, 7rem);
	--r-chip: 999px;
	--tr: .28s cubic-bezier(.22, .61, .36, 1);
}

/* ---------- Reset / base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
	margin: 0;
	font-family: var(--f-body);
	font-size: 1.0625rem;
	line-height: 1.65;
	color: var(--antracite);
	background: var(--bianco);
	-webkit-font-smoothing: antialiased;
}
img { max-width: 100%; height: auto; display: block; }
/* L'attributo hidden perde contro qualunque regola d'autore che imposta display,
   perche il foglio del browser viene applicato prima: senza !important qui vince
   l'ultima regola scritta e l'elemento resta visibile, senza nessun errore. Con
   questa riga il caso e chiuso una volta per tutte e i componenti non devono piu
   ridirlo ognuno per conto suo. Le regole `:not([hidden])` continuano a valere. */
[hidden] { display: none !important; }
a { color: inherit; }
button { font: inherit; cursor: pointer; }
h1, h2, h3, h4 {
	font-family: var(--f-display); font-weight: 700; font-stretch: 112%;
	line-height: 1.08; margin: 0 0 .6em; letter-spacing: .005em;
}
h2 { font-size: clamp(1.8rem, 3.6vw, 2.7rem); }
h3 { font-size: clamp(1.2rem, 2vw, 1.5rem); }
p { margin: 0 0 1em; }
ul { padding-left: 1.2em; }
:focus-visible { outline: 3px solid var(--verde-scuro); outline-offset: 2px; }
::selection { background: var(--verde); color: #fff; }

.screen-reader-text {
	position: absolute; width: 1px; height: 1px; overflow: hidden;
	clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap;
}
.exp-skip {
	position: absolute; left: -9999px; top: 0; z-index: 200;
	background: var(--verde-scuro); color: #fff; padding: .6rem 1rem;
	text-transform: uppercase; font-size: .8rem; font-weight: 600; letter-spacing: .08em; text-decoration: none;
}
.exp-skip:focus { left: 0; }

.exp-container { max-width: var(--container); margin: 0 auto; padding-left: var(--gutter); padding-right: var(--gutter); }

/* kicker: eco della tagline del logo — leggero, spaziato, maiuscolo */
.exp-eyebrow {
	font-family: var(--f-body); font-size: .74rem; letter-spacing: .26em;
	text-transform: uppercase; font-weight: 500;
}
.exp-code {
	font-size: .78rem; letter-spacing: .1em; text-transform: uppercase; font-weight: 600;
}

/* ---------- Reveal on scroll ---------- */
.rv { opacity: 0; transform: translateY(22px); transition: opacity .7s ease, transform .7s cubic-bezier(.22, .61, .36, 1); }
.rv.is-in { opacity: 1; transform: none; }

/* ---------- Header ---------- */
.exp-header {
	position: sticky; top: 0; z-index: 100;
	background: var(--bianco); color: var(--antracite);
	border-bottom: 1px solid var(--linea);
	transition: box-shadow var(--tr);
}
.exp-header.is-scrolled {
	box-shadow: 0 10px 30px rgba(58, 53, 53, .12);
	background: rgba(255, 255, 255, .85);
	-webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px);
}

/* topbar contatti: striscia scura, collassa allo scroll */
.exp-topbar {
	background: var(--carbone); color: #D9D6D4;
	max-height: 44px; overflow: hidden;
	transition: max-height .4s cubic-bezier(.22, .61, .36, 1);
}
.exp-header.is-scrolled .exp-topbar { max-height: 0; }
/* header a fascia larga (1680): il menu a 8 voci non entra nel container 1280 —
   il resto della pagina resta a 1280, l'header respira su una cornice più ampia */
.exp-topbar__inner {
	max-width: 1680px; margin: 0 auto; padding: 0 var(--gutter);
	display: flex; align-items: center; justify-content: space-between; gap: 1.2rem;
	min-height: 38px;
}
.exp-topbar a {
	display: inline-flex; align-items: center; gap: .45em; white-space: nowrap;
	color: #D9D6D4; text-decoration: none;
	font-size: .72rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase;
	transition: color var(--tr);
}
.exp-topbar a:hover, .exp-topbar a:focus-visible { color: var(--verde-chiaro); }
.exp-topbar svg { width: 15px; height: 15px; flex: none; }
.exp-topbar__contacts { display: flex; align-items: center; gap: clamp(1rem, 2.5vw, 2rem); }
.exp-topbar__right { display: flex; align-items: center; gap: 1.2rem; }
.exp-topbar__utility {
	display: flex; align-items: center; gap: 1.1rem;
	padding-right: 1.2rem; border-right: 1px solid var(--linea-scura);
}
.exp-topbar__social { display: flex; align-items: center; gap: .9rem; }
.exp-topbar__social svg { width: 16px; height: 16px; }
/* Da telefono la striscia si vede tutta: nessuna voce viene tagliata, va a capo
   su due righe — contatti sopra, utilità e social sotto — e collassa allo scroll
   come su desktop. Le etichette che non entrano si accorciano (resta il numero
   del WhatsApp, l'indirizzo mail diventa la sola icona), non spariscono i link. */
@media (max-width: 760px) {
	.exp-topbar { max-height: 88px; }
	.exp-topbar__inner {
		flex-wrap: wrap; justify-content: center; gap: 0;
		min-height: 0; padding-top: .15rem; padding-bottom: .15rem;
	}
	.exp-topbar__contacts,
	.exp-topbar__right { flex: 1 0 100%; justify-content: center; min-height: 34px; }
	.exp-topbar__contacts { gap: 1.1rem; }
	.exp-topbar__right { gap: .9rem; }
	.exp-topbar .exp-topbar__utility { gap: 1rem; padding-right: .9rem; }
	.exp-topbar a span { font-size: .66rem; }
	/* «WhatsApp» davanti al numero raddoppia la voce: da telefono l'icona verde
	   dice già di cosa si tratta. */
	.exp-topbar__wa-lbl { display: none; }
	/* specificità: deve battere ".exp-topbar a" */
	.exp-topbar a.exp-topbar__mail { display: inline-flex; }
	/* l'indirizzo per esteso non entra accanto ai due numeri: resta la busta, con
	   il testo che continua a esistere per chi naviga con lo screen reader */
	.exp-topbar a.exp-topbar__mail span {
		position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0;
		overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
	}
}
@media (max-width: 400px) {
	.exp-topbar a span { font-size: .6rem; }
	.exp-topbar__contacts { gap: .8rem; }
	.exp-topbar__right { gap: .7rem; }
	.exp-topbar .exp-topbar__utility { gap: .75rem; padding-right: .7rem; }
	.exp-topbar__social { gap: .7rem; }
}

.exp-header__inner {
	max-width: 1680px; margin: 0 auto;
	padding: 0 var(--gutter);
	display: flex; align-items: center; justify-content: space-between; gap: 1.5rem;
	min-height: 72px;
}
.exp-logo { display: flex; align-items: center; text-decoration: none; flex: none; }
.exp-logo img { width: 152px; height: auto; }

.exp-header__cta { padding: .68rem 1.15rem; font-size: .76rem; gap: .45em; flex: none; }
.exp-header__cta svg { width: 14px; height: 14px; transition: transform var(--tr); }
.exp-header__cta:hover svg { transform: translate(2px, -2px); }
@media (max-width: 1319px) {
	.exp-header__cta { margin-left: auto; margin-right: 1rem; }
}
@media (max-width: 760px) {
	/* specificità: deve battere ".exp-btn", definito più avanti nel file */
	.exp-header .exp-header__cta { display: none; }
}

.exp-nav__list { display: flex; gap: clamp(.35rem, 1vw, .8rem); list-style: none; margin: 0; padding: 0; align-items: center; }
.exp-nav__list a {
	font-size: .8rem; font-weight: 600; letter-spacing: .07em; text-transform: uppercase;
	color: var(--antracite); text-decoration: none; padding: .5rem .85rem; position: relative; display: inline-block;
	white-space: nowrap; border-radius: var(--r-chip);
	transition: background var(--tr), color var(--tr);
}
.exp-nav__list > li > a:hover, .exp-nav__list > li > a:focus-visible,
.exp-nav__list > .current-menu-item > a { background: var(--neve); color: var(--verde-scuro); }

/* sottomenu (Stili di viaggio) */
.exp-nav__list .menu-item-has-children { position: relative; }
.exp-nav__list .menu-item-has-children > a::before {
	content: ''; display: inline-block; width: .45em; height: .45em; margin-left: .5em;
	border-right: 2px solid var(--verde-scuro); border-bottom: 2px solid var(--verde-scuro);
	transform: rotate(45deg) translateY(-2px); float: right; margin-top: .45em;
	transition: transform var(--tr);
}
.exp-nav__list .menu-item-has-children:hover > a::before,
.exp-nav__list .menu-item-has-children:focus-within > a::before,
.exp-nav__list .menu-item-has-children.is-open > a::before { transform: rotate(225deg) translateY(-2px); }

/* nav compatta 1320-1579px: le pill piene entrano solo da 1580px in su */
@media (min-width: 1320px) and (max-width: 1579px) {
	.exp-nav__list { gap: .25rem; }
	.exp-nav__list a { font-size: .74rem; letter-spacing: .04em; padding: .5rem .55rem; }
}
.exp-nav .sub-menu {
	position: absolute; top: 100%; left: -1.2rem; min-width: 220px;
	background: var(--bianco); border: 1px solid var(--linea); border-top: 2px solid var(--verde);
	box-shadow: 0 14px 34px rgba(58, 53, 53, .14);
	list-style: none; margin: 0; padding: .5rem 0;
	opacity: 0; visibility: hidden; transform: translateY(8px);
	transition: opacity var(--tr), transform var(--tr), visibility var(--tr);
}
.exp-nav .menu-item-has-children:hover > .sub-menu,
.exp-nav .menu-item-has-children:focus-within > .sub-menu,
.exp-nav .menu-item-has-children.is-open > .sub-menu { opacity: 1; visibility: visible; transform: none; }
.exp-nav .sub-menu a { display: block; padding: .55rem 1.2rem; text-transform: none; letter-spacing: .02em; font-size: .92rem; font-weight: 500; }
.exp-nav .sub-menu a:hover, .exp-nav .sub-menu a:focus-visible { color: var(--verde-scuro); background: var(--neve); }

/* le voci di servizio in fondo al pannello del menu: esistono solo sul telefono,
   dove la topbar tiene la sola Newsletter */
.exp-nav__extra { display: none; }
.exp-nav-toggle {
	display: none; background: none; border: 1px solid var(--linea);
	padding: .65rem .6rem; flex-direction: column; gap: 5px;
}
.exp-nav-toggle__bar { width: 22px; height: 2px; background: var(--antracite); transition: transform var(--tr), opacity var(--tr); }
.exp-nav-toggle[aria-expanded="true"] .exp-nav-toggle__bar:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.exp-nav-toggle[aria-expanded="true"] .exp-nav-toggle__bar:nth-child(2) { opacity: 0; }
.exp-nav-toggle[aria-expanded="true"] .exp-nav-toggle__bar:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

@media (max-width: 1319px) {
	.exp-nav-toggle { display: flex; }
	.exp-nav {
		display: none; position: absolute; top: 100%; left: 0; right: 0;
		background: var(--bianco); border-bottom: 1px solid var(--linea);
		box-shadow: 0 18px 30px rgba(58, 53, 53, .12);
		/* Il pannello e ancorato a un header sticky: quello che esce dallo schermo
		   non si raggiunge scorrendo la pagina, perche l'header non si muove. Con
		   molte voci le ultime restavano irraggiungibili. Scorre da solo.
		   --exp-header-h la scrive main.js: l'header cambia altezza quando la
		   topbar collassa (.is-scrolled). */
		max-height: calc(100vh - var(--exp-header-h, 76px));
		max-height: calc(100dvh - var(--exp-header-h, 76px));
		overflow-y: auto;
		overscroll-behavior: contain;
		-webkit-overflow-scrolling: touch;
	}
	.exp-nav.is-open { display: block; }
	.exp-nav__list { flex-direction: column; align-items: stretch; gap: 0; padding: .5rem 0; }
	.exp-nav__list a { display: block; padding: .85rem var(--gutter); font-size: .9rem; border-radius: 0; }
	.exp-nav__list .menu-item-has-children > a::before { content: none; }
	.exp-nav .sub-menu {
		position: static; opacity: 1; visibility: visible; transform: none;
		border: none; box-shadow: none; padding: 0 0 .4rem; min-width: 0;
	}
	.exp-nav .sub-menu a { padding: .55rem calc(var(--gutter) + 1.2rem); color: var(--antracite-2); }
}
@media (max-width: 760px) {
	.exp-nav__extra {
		display: block; list-style: none; margin: 0; padding: .2rem 0 .6rem;
		border-top: 1px solid var(--linea);
	}
	.exp-nav__extra a {
		display: block; padding: .85rem var(--gutter); text-decoration: none;
		font-size: .78rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase;
		color: var(--antracite-2);
	}
	.exp-nav__extra a:hover, .exp-nav__extra a:focus-visible { color: var(--verde-scuro); background: var(--neve); }
}

/* ---------- Bottoni ---------- */
.exp-btn {
	display: inline-flex; align-items: center; justify-content: center; gap: .6em;
	font-size: .82rem; font-weight: 700;
	letter-spacing: .09em; text-transform: uppercase; text-decoration: none;
	padding: 1rem 1.7rem; border: 1px solid var(--antracite); color: var(--antracite);
	background: transparent;
	transition: background var(--tr), color var(--tr), border-color var(--tr);
}
.exp-btn:hover { background: var(--antracite); color: #fff; }
.exp-btn--primary { background: var(--verde); color: #322E2E; border-color: var(--verde); }
.exp-btn--primary:hover { background: var(--verde-scuro); border-color: var(--verde-scuro); color: #fff; }
.exp-btn--ghost { border-color: var(--antracite); color: var(--antracite); background: transparent; }
.exp-btn--ghost:hover { background: var(--antracite); color: #fff; }
/* ghost su superfici scure o su foto */
.fp-slider .exp-btn--ghost, .fp-sez--ink .exp-btn--ghost, .exp-booking .exp-btn--ghost, .exp-hero .exp-btn--ghost {
	border-color: #fff; color: #fff;
}
.fp-slider .exp-btn--ghost:hover, .fp-sez--ink .exp-btn--ghost:hover, .exp-booking .exp-btn--ghost:hover, .exp-hero .exp-btn--ghost:hover {
	background: #fff; color: var(--antracite);
}
.exp-btn--block { width: 100%; }
.exp-btn--solo-mobile { display: none; }

/* ---------- Stati: chip ---------- */
.exp-badge {
	display: inline-flex; align-items: center; gap: .45em;
	font-size: .68rem; font-weight: 700;
	letter-spacing: .1em; text-transform: uppercase;
	padding: .32em .8em; border-radius: var(--r-chip);
	border: 1px solid currentColor; background: transparent;
}
.exp-badge::before { content: ''; width: 7px; height: 7px; border-radius: 50%; background: currentColor; flex: none; }
.exp-badge--confermato { color: var(--ok-l); }
.exp-badge--in_esaurimento { color: var(--warn-l); }
.exp-badge--in_esaurimento::before { animation: exp-pulse 1.6s ease-in-out infinite; }
.exp-badge--sold_out { color: var(--no-l); }
.exp-badge--partito { color: var(--neutro-l); }
/* Le due scale si leggono a coppie: aperta (neutra) -> primi iscritti (blu) ->
   in conferma (ambra) -> confermata (verde); al completo (rosso) -> annullata
   (grigia tratteggiata). Prima «iscrizioni aperte» e «primi iscritti» erano lo
   stesso grigio e «al completo» e «annullata» lo stesso rosso (Marco, 22/09). */
.exp-badge--nuovo { color: var(--antracite-2); }
.exp-badge--primi_iscritti { color: var(--info-l); }
.exp-badge--garantita { color: var(--ok-l); border-style: dashed; }
.exp-badge--garantita::before { content: none; }
/* varianti su superficie scura (booking / carta d'imbarco) */
.exp-dark .exp-badge--confermato, .exp-board .exp-badge--confermato { color: var(--ok-d); }
.exp-dark .exp-badge--in_esaurimento, .exp-board .exp-badge--in_esaurimento { color: var(--warn-d); }
.exp-dark .exp-badge--sold_out, .exp-board .exp-badge--sold_out { color: var(--no-d); }
.exp-dark .exp-badge--partito, .exp-board .exp-badge--partito { color: var(--neutro-d); }
.exp-dark .exp-badge--nuovo, .exp-board .exp-badge--nuovo { color: var(--grigio); }
.exp-dark .exp-badge--primi_iscritti, .exp-board .exp-badge--primi_iscritti { color: var(--info-d); }
.exp-dark .exp-badge--garantita, .exp-board .exp-badge--garantita { color: var(--ok-d); }
/* chip su foto: fondo bianco pieno */
.exp-card__media .exp-badge { background: #fff; border-color: #fff; }

@keyframes exp-pulse {
	0%, 100% { opacity: 1; }
	50% { opacity: .25; }
}

/* ---------- Meter posti ---------- */
.exp-meter {
	display: inline-block; width: 74px; height: 6px; vertical-align: middle;
	background: color-mix(in srgb, currentColor 18%, transparent); position: relative; overflow: hidden;
	border-radius: 3px;
}
.exp-meter__bar { position: absolute; inset: 0 auto 0 0; background: currentColor; border-radius: 3px; }
.exp-meter__label { font-size: .7rem; letter-spacing: .06em; margin-left: .55em; text-transform: uppercase; font-weight: 600; }
.exp-meter__conferma { display: block; font-size: .72rem; letter-spacing: .03em; margin-top: .25rem; color: var(--no-l); font-weight: 700; }
.exp-meter--pieno { color: var(--no-l); }
.exp-dark .exp-meter__conferma, .exp-board .exp-meter__conferma,
.exp-dark .exp-meter--pieno, .exp-board .exp-meter--pieno { color: var(--no-d); }

/* ---------- HERO front page: slider cinematico ----------
   Transizioni a sipario (clip-path) con bordo verde, Ken Burns,
   parallasse mouse/scroll, tipografia cinetica sull'asse width di Archivo. */
.fp-slider {
	position: relative; overflow: hidden;
	height: calc(100vh - var(--header-h));
	height: calc(100svh - var(--header-h));
	min-height: 480px;
	background: var(--carbone); color: #fff;
	--wipe: 1.05s cubic-bezier(.77, 0, .18, 1);
	--fp-delay: 6.5s; /* deve combaciare con DELAY in main.js */
}
.fp-slider__stage {
	position: absolute; inset: 0;
	transform: translate3d(calc(var(--mx, 0) * 14px), calc(var(--my, 0) * 9px + var(--sy, 0px)), 0) scale(1.03);
	transition: transform .7s cubic-bezier(.22, .61, .36, 1);
}
.fp-slide { position: absolute; inset: 0; z-index: 0; visibility: hidden; }
.fp-slide.is-active { visibility: visible; z-index: 2; }
.fp-slide.was-active { visibility: visible; z-index: 1; }
.fp-slide__media { position: absolute; inset: 0; overflow: hidden; }
.fp-slide__media img { width: 100%; height: 100%; object-fit: cover; }
.fp-slide.is-active .fp-slide__media img { animation: fp-kb 8s cubic-bezier(.22, .61, .36, 1) both; }
.fp-slide.was-active .fp-slide__media img { transform: scale(1.03); }
@keyframes fp-kb { from { transform: scale(1.14); } to { transform: scale(1.03); } }

/* sipario direzionale + bordo verde in testa alla wipe */
.fp-slide.is-entering.from-right { animation: fp-wipe-r var(--wipe) both; }
.fp-slide.is-entering.from-left { animation: fp-wipe-l var(--wipe) both; }
@keyframes fp-wipe-r { from { clip-path: inset(0 0 0 100%); } to { clip-path: inset(0); } }
@keyframes fp-wipe-l { from { clip-path: inset(0 100% 0 0); } to { clip-path: inset(0); } }
/* varietà: rotazione ciclica wipe → up → zoom → circle (vedi FX in main.js) */
.fp-slide.is-entering.fx-up { animation: fp-wipe-u var(--wipe) both; }
@keyframes fp-wipe-u { from { clip-path: inset(100% 0 0 0); } to { clip-path: inset(0); } }
.fp-slide.is-entering.fx-zoom { animation: fp-fx-zoom var(--wipe) both; }
@keyframes fp-fx-zoom { from { opacity: 0; transform: scale(1.18); } to { opacity: 1; transform: scale(1); } }
.fp-slide.is-entering.fx-circle { animation: fp-fx-circle var(--wipe) both; }
@keyframes fp-fx-circle { from { clip-path: circle(0% at 50% 50%); } to { clip-path: circle(75% at 50% 50%); } }
/* bordo verde in testa al sipario: solo wipe orizzontali, mai su up/zoom/circle */
.fp-slide.is-entering.from-right::after, .fp-slide.is-entering.from-left::after {
	content: ''; position: absolute; top: 0; bottom: 0; width: 3px;
	background: var(--verde); z-index: 3;
}
.fp-slide.is-entering.from-right::after { left: 0; animation: fp-edge-r var(--wipe) both; }
.fp-slide.is-entering.from-left::after { right: 0; animation: fp-edge-l var(--wipe) both; }
@keyframes fp-edge-r { from { transform: translateX(100vw); opacity: 1; } 88% { opacity: 1; } to { transform: translateX(0); opacity: 0; } }
@keyframes fp-edge-l { from { transform: translateX(-100vw); opacity: 1; } 88% { opacity: 1; } to { transform: translateX(0); opacity: 0; } }

.fp-slider__grain {
	position: absolute; inset: 0; z-index: 2; pointer-events: none; opacity: .07;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E");
}
.fp-slider__scrim {
	position: absolute; inset: 0; z-index: 3; pointer-events: none;
	background:
		linear-gradient(0deg, rgba(42, 38, 38, .58) 0%, rgba(42, 38, 38, 0) 36%),
		linear-gradient(78deg, rgba(42, 38, 38, .72) 0%, rgba(42, 38, 38, .34) 46%, rgba(42, 38, 38, .06) 72%);
}

/* diario di bordo: claim per slide, in alto a destra */
.fp-slider__claims { position: absolute; top: clamp(1.6rem, 4vh, 3rem); right: var(--gutter); z-index: 4; }
.fp-claim {
	position: absolute; top: 0; right: 0; margin: 0;
	display: flex; align-items: baseline; gap: .7em; white-space: nowrap;
	opacity: 0; visibility: hidden;
}
.fp-claim.is-active { position: relative; opacity: 1; visibility: visible; }
.fp-claim__idx {
	font-size: .72rem; font-weight: 700; letter-spacing: .18em;
	color: var(--verde-chiaro); text-shadow: 0 1px 3px rgba(0, 0, 0, .5);
}
.fp-claim__idx::after { content: ''; display: inline-block; width: 26px; height: 1px; background: var(--verde-chiaro); vertical-align: middle; margin-left: .7em; }
.fp-claim__mask { display: inline-block; overflow: hidden; vertical-align: bottom; }
.fp-claim__txt {
	display: inline-block;
	font-size: .8rem; letter-spacing: .22em; text-transform: uppercase; font-weight: 500;
	text-shadow: 0 1px 3px rgba(0, 0, 0, .5);
}
.fp-claim.is-active .fp-claim__txt { animation: fp-word .85s .3s cubic-bezier(.16, 1, .3, 1) both; }

.fp-slider__overlay {
	position: absolute; inset: auto 0 0 0; z-index: 4;
	max-width: var(--container); margin: 0 auto;
	padding: 0 var(--gutter) clamp(4.6rem, 10vh, 6.4rem);
}
.fp-slider__eyebrow { color: #fff; margin-bottom: 1.1rem; text-shadow: 0 1px 3px rgba(0, 0, 0, .4); }
.fp-slider__title {
	font-size: clamp(2.8rem, 7.5vw, 5.8rem);
	font-weight: 800; font-stretch: 122%; line-height: .98; letter-spacing: .01em;
	text-transform: uppercase; margin: 0 0 1rem;
	text-shadow: 0 2px 10px rgba(0, 0, 0, .35);
}
.fp-w { display: inline-block; overflow: hidden; vertical-align: bottom; }
.fp-w__in { display: inline-block; }
.fp-slider__sub {
	max-width: 46ch; font-size: clamp(1rem, 1.4vw, 1.18rem); line-height: 1.55;
	margin: 0 0 1.8rem; text-shadow: 0 1px 4px rgba(0, 0, 0, .45);
}
.fp-slider__cta { display: flex; gap: .9rem; flex-wrap: wrap; }

/* coreografia di ingresso: stati nascosti solo con JS attivo (html.js) */
html.js .fp-slider:not(.is-loaded) .fp-w__in { transform: translateY(112%); }
html.js .fp-slider:not(.is-loaded) :is(.fp-slider__eyebrow, .fp-slider__sub, .fp-slider__cta, .fp-slider__rail, .fp-slider__foot) { opacity: 0; }
.fp-slider.is-loaded .fp-w:nth-child(1) .fp-w__in { animation: fp-word .95s .15s cubic-bezier(.16, 1, .3, 1) both; }
.fp-slider.is-loaded .fp-w:nth-child(2) .fp-w__in { animation: fp-word .95s .27s cubic-bezier(.16, 1, .3, 1) both; }
.fp-slider.is-loaded .fp-w:nth-child(3) .fp-w__in { animation: fp-word .95s .39s cubic-bezier(.16, 1, .3, 1) both; }
.fp-slider.is-loaded .fp-slider__eyebrow { animation: fp-fade .9s .1s ease both; }
/* espansione asse width e tracking: solo desktop — su mobile il titolo cambierebbe
   numero di righe durante l'animazione (layout shift, CLS) */
@media (min-width: 761px) {
	html.js .fp-slider:not(.is-loaded) .fp-slider__title { font-stretch: 62%; }
	.fp-slider.is-loaded .fp-slider__title { animation: fp-stretch 1.5s .15s cubic-bezier(.16, 1, .3, 1) both; }
	.fp-slider.is-loaded .fp-slider__eyebrow { animation: fp-track .9s .1s cubic-bezier(.22, .61, .36, 1) both; }
}
.fp-slider.is-loaded .fp-slider__sub { animation: fp-rise .8s .6s cubic-bezier(.22, .61, .36, 1) both; }
.fp-slider.is-loaded .fp-slider__cta { animation: fp-rise .8s .75s cubic-bezier(.22, .61, .36, 1) both; }
.fp-slider.is-loaded .fp-slider__rail { animation: fp-fade .8s .95s ease both; }
.fp-slider.is-loaded .fp-slider__foot { animation: fp-fade .8s 1.05s ease both; }
@keyframes fp-word { from { transform: translateY(112%); } to { transform: translateY(0); } }
@keyframes fp-stretch { from { font-stretch: 62%; } to { font-stretch: 122%; } }
@keyframes fp-track { from { opacity: 0; letter-spacing: .1em; } to { opacity: 1; letter-spacing: .26em; } }
@keyframes fp-rise { from { opacity: 0; transform: translateY(26px); } to { opacity: 1; transform: translateY(0); } }
@keyframes fp-fade { from { opacity: 0; } to { opacity: 1; } }

/* rail di navigazione: numeri + barre di avanzamento autoplay */
.fp-slider__rail {
	position: absolute; right: var(--gutter); top: 50%; transform: translateY(-50%); z-index: 5;
	display: flex; flex-direction: column; gap: 1.1rem;
}
.fp-rail__item {
	background: none; border: none; padding: .2rem 0;
	display: flex; align-items: center; gap: .6rem; color: #fff;
	opacity: .55; transition: opacity var(--tr);
}
.fp-rail__item:hover, .fp-rail__item[aria-current="true"] { opacity: 1; }
.fp-rail__num { font-size: .72rem; font-weight: 700; letter-spacing: .12em; text-shadow: 0 1px 3px rgba(0, 0, 0, .5); }
.fp-rail__bar { display: block; width: 44px; height: 2px; background: rgba(255, 255, 255, .3); position: relative; overflow: hidden; }
.fp-rail__fill { position: absolute; inset: 0; display: block; background: var(--verde); transform: scaleX(0); transform-origin: left; }
.fp-rail__item[aria-current="true"] .fp-rail__fill { animation: fp-fill var(--fp-delay) linear both; }
.fp-slider.is-paused .fp-rail__fill { animation-play-state: paused; }
.fp-slider.no-autoplay .fp-rail__item[aria-current="true"] .fp-rail__fill { animation: none; transform: scaleX(1); }
@keyframes fp-fill { from { transform: scaleX(0); } to { transform: scaleX(1); } }

/* barra a fondo hero: contatore, scroll cue, frecce */
.fp-slider__foot {
	position: absolute; left: 0; right: 0; bottom: 1.3rem; z-index: 5;
	max-width: var(--container); margin: 0 auto; padding: 0 var(--gutter);
	display: flex; align-items: center; gap: 1.5rem; pointer-events: none;
}
.fp-slider__foot > * { pointer-events: auto; }
.fp-slider__count {
	margin: 0; display: flex; align-items: baseline; gap: .4em;
	font-size: .74rem; letter-spacing: .14em; color: rgba(255, 255, 255, .85);
}
.fp-slider__count b { font-size: 1.1rem; font-weight: 800; color: var(--verde-chiaro); }
.fp-slider__scrollcue {
	position: absolute; left: 50%; transform: translateX(-50%); bottom: 0;
	display: inline-flex; flex-direction: column; align-items: center; gap: .5em;
	color: #fff; text-decoration: none;
	font-size: .66rem; font-weight: 600; letter-spacing: .26em; text-transform: uppercase;
	text-shadow: 0 1px 3px rgba(0, 0, 0, .5);
}
.fp-slider__scrollcue i { display: block; width: 1px; height: 32px; background: rgba(255, 255, 255, .35); position: relative; overflow: hidden; }
.fp-slider__scrollcue i::after {
	content: ''; position: absolute; left: 0; top: -100%; width: 100%; height: 100%; background: #fff;
	animation: fp-cue 1.9s cubic-bezier(.45, 0, .55, 1) infinite;
}
@keyframes fp-cue { to { transform: translateY(200%); } }
.fp-slider__arrows { display: flex; gap: .6rem; margin-left: auto; }
.fp-slider__arrow {
	width: 46px; height: 46px; border: 1px solid rgba(255, 255, 255, .4);
	background: rgba(42, 38, 38, .3); color: #fff; display: grid; place-items: center;
	backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px);
	transition: background var(--tr), border-color var(--tr), color var(--tr);
}
.fp-slider__arrow:hover { background: var(--verde); border-color: var(--verde); color: #322E2E; }
.fp-slider__arrow svg { width: 20px; height: 20px; }

@media (max-width: 760px) {
	.fp-slider {
		height: calc(100vh - var(--header-h));
		height: calc(100svh - var(--header-h));
		min-height: 480px;
	}
	.fp-slider__claims { display: none; }
	.fp-slider__foot { display: none; }
	.fp-slider__overlay { padding-bottom: 3.6rem; }
	.fp-slider__rail {
		top: auto; bottom: 1.15rem; right: auto; left: 50%; transform: translateX(-50%);
		flex-direction: row; gap: 1rem;
	}
	.fp-rail__num { display: none; }
	.fp-rail__bar { width: 34px; }
}

@media (prefers-reduced-motion: reduce) {
	.fp-slider *, .fp-slider *::before, .fp-slider *::after { animation: none !important; transition: none !important; }
	html.js .fp-slider:not(.is-loaded) .fp-w__in { transform: none; }
	html.js .fp-slider:not(.is-loaded) :is(.fp-slider__eyebrow, .fp-slider__sub, .fp-slider__cta, .fp-slider__rail, .fp-slider__foot) { opacity: 1; }
	html.js .fp-slider:not(.is-loaded) .fp-slider__title { font-stretch: 122%; }
	.fp-slider__stage { transform: none; }
	.fp-rail__item[aria-current="true"] .fp-rail__fill { transform: scaleX(1); }
}

/* ---------- Tabellone partenze (superficie chiara) ---------- */
.fp-partenze { padding: var(--sez) 0; }
.fp-board { max-width: var(--container); margin: 0 auto; padding: 0 var(--gutter); }
.fp-board__caption { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; border-bottom: 3px solid var(--verde); padding-bottom: .7rem; margin-bottom: 0; }
.fp-board__caption h2 { font-size: clamp(1.5rem, 2.8vw, 2.2rem); margin: 0; text-transform: uppercase; letter-spacing: .02em; }
.fp-board__caption .exp-eyebrow { color: var(--antracite-2); }

.fp-board__labels, .fp-row {
	display: grid;
	grid-template-columns: 84px 116px minmax(0, 1.2fr) minmax(0, 1fr) 52px 172px 160px 40px;
	gap: 1rem; align-items: center;
}
.fp-board__labels {
	padding: .8rem 0 .55rem;
	font-size: .64rem; letter-spacing: .18em; text-transform: uppercase; font-weight: 600; color: var(--antracite-2);
	border-bottom: 1px solid var(--linea);
}
.fp-row {
	text-decoration: none; color: var(--antracite);
	padding: 1.15rem 0; border-bottom: 1px solid var(--linea);
	position: relative; transition: background var(--tr), padding var(--tr);
}
.fp-row:hover, .fp-row:focus-visible { background: var(--neve); padding-left: .8rem; padding-right: .2rem; }
.fp-row__foto { display: block; overflow: hidden; border-radius: 10px; background: var(--neve); aspect-ratio: 4 / 3; }
.fp-row__foto img { width: 100%; height: 100%; object-fit: cover; display: block; }
.fp-row__data { font-size: .84rem; font-weight: 600; line-height: 1.45; letter-spacing: .04em; }
.fp-row__data small { display: block; color: var(--antracite-2); font-size: .7rem; font-weight: 500; }
.fp-row__dest { font-family: var(--f-display); font-weight: 700; font-stretch: 115%; font-size: clamp(1.1rem, 2vw, 1.55rem); text-transform: uppercase; letter-spacing: .015em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.fp-row__viaggio { color: var(--antracite-2); font-size: .88rem; line-height: 1.4; overflow: hidden; }
.fp-row__viaggio .exp-code { color: var(--verde-scuro); display: block; font-size: .62rem; margin-top: .15rem; }
.fp-row__gg { font-size: .8rem; font-weight: 600; color: var(--antracite-2); }
.fp-row__posti { font-size: 0; color: var(--verde-scuro); }
.fp-row__posti .exp-meter__label { color: var(--antracite-2); }
.fp-row__stato { justify-self: start; }
.fp-row__go {
	font-size: 1.5rem; line-height: 1; justify-self: end; font-weight: 600;
	color: var(--verde-scuro); transition: transform var(--tr);
}
.fp-row:hover .fp-row__go { transform: translateX(6px); }

.fp-board__foot { padding-top: 1.4rem; display: flex; justify-content: space-between; align-items: center; gap: 1rem; flex-wrap: wrap; }
.fp-board__foot .exp-eyebrow { color: var(--antracite-2); letter-spacing: .12em; }

/* legenda dei 3 stati sotto il tabellone */
.fp-legend {
	list-style: none; margin: 1.8rem 0 0; padding: 1.1rem 0 0;
	border-top: 1px solid var(--linea);
	display: flex; flex-wrap: wrap; gap: .7rem 2.2rem;
}
.fp-legend li {
	display: flex; align-items: center; gap: .7em;
	font-size: .8rem; color: var(--antracite-2);
}
.fp-legend .exp-badge { flex: none; }
@media (max-width: 760px) { .fp-legend { flex-direction: column; align-items: flex-start; } }

/* cascata iniziale del tabellone */
.fp-row { animation: fp-drop .55s cubic-bezier(.22, .61, .36, 1) backwards; }
.fp-row:nth-child(2) { animation-delay: .08s; }
.fp-row:nth-child(3) { animation-delay: .16s; }
.fp-row:nth-child(4) { animation-delay: .24s; }
.fp-row:nth-child(5) { animation-delay: .32s; }
.fp-row:nth-child(6) { animation-delay: .40s; }
.fp-row:nth-child(7) { animation-delay: .48s; }
@keyframes fp-drop {
	from { opacity: 0; transform: translateY(-14px); }
	to { opacity: 1; transform: none; }
}

@media (max-width: 1020px) {
	.fp-board__labels { display: none; }
	.fp-row { grid-template-columns: 84px 100px minmax(0, 1fr) 150px 40px; grid-template-areas: "foto data dest stato go" "foto data viaggio posti go"; row-gap: .35rem; }
	.fp-row__foto { grid-area: foto; align-self: center; }
	.fp-row__data { grid-area: data; }
	.fp-row__dest { grid-area: dest; }
	.fp-row__viaggio { grid-area: viaggio; }
	.fp-row__gg { display: none; }
	.fp-row__posti { grid-area: posti; }
	.fp-row__stato { grid-area: stato; justify-self: start; }
	.fp-row__go { grid-area: go; }
}
@media (max-width: 640px) {
	.fp-row { grid-template-columns: 76px minmax(0, 1fr) 32px; gap: .8rem; grid-template-areas: "foto data go" "foto dest go" "foto viaggio go" "foto stato go" "foto posti go"; }
	.fp-row__foto { align-self: start; aspect-ratio: 1; }
}

/* ---------- Sezioni front page ---------- */
.fp-sez { padding: var(--sez) 0; }
.fp-sez--neve { background: var(--neve); }
.fp-sez--ink { background: var(--carbone); color: #fff; }
.fp-sez__head { display: flex; justify-content: space-between; align-items: flex-end; gap: 1.5rem; margin-bottom: clamp(2rem, 4vw, 3.2rem); flex-wrap: wrap; }
.fp-sez__head h2 { margin: 0; text-transform: uppercase; letter-spacing: .01em; }
.fp-sez__head .exp-eyebrow { display: block; color: var(--verde-scuro); margin-bottom: .8rem; }
.fp-sez--ink .fp-sez__head .exp-eyebrow { color: var(--verde-chiaro); }
.fp-sez__all {
	font-size: .78rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase;
	color: inherit; text-decoration: none; border-bottom: 2px solid var(--verde); padding-bottom: .25rem; white-space: nowrap;
}
.fp-sez__all:hover { color: var(--verde-scuro); }
.fp-sez--ink .fp-sez__all:hover { color: var(--verde-chiaro); }

/* intro di sezione (coordinatori) */
.fp-lead {
	color: var(--antracite-2); font-size: 1.05rem; line-height: 1.7;
	max-width: 72ch; margin: -1.2rem 0 clamp(2rem, 4vw, 3rem);
}

/* griglie */
.exp-grid { display: grid; gap: clamp(1.2rem, 2.5vw, 2rem); }
.exp-grid--3 { grid-template-columns: repeat(3, 1fr); }
.exp-grid--4 { grid-template-columns: repeat(4, 1fr); }
@media (max-width: 960px) { .exp-grid--3, .exp-grid--4 { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px) { .exp-grid--3, .exp-grid--4 { grid-template-columns: 1fr; } }

/* ---------- Card viaggio / generica ---------- */
.exp-card { position: relative; }
.exp-card__link { display: block; text-decoration: none; color: inherit; }
.exp-card__media { position: relative; aspect-ratio: 4 / 3; overflow: hidden; background: var(--neve); }
/* card viaggio: le copertine sono 2:1, il 4:3 ne tagliava un terzo */
.exp-card__media--viaggio { aspect-ratio: 2 / 1; }
.exp-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s cubic-bezier(.22, .61, .36, 1); }
.exp-card__link:hover .exp-card__media img,
.exp-card__link:focus-visible .exp-card__media img { transform: scale(1.045); }
/* velo al piede della foto: appoggio per i badge */
.exp-card__media::after {
	content: ''; position: absolute; inset: 0; z-index: 1; pointer-events: none;
	background: linear-gradient(180deg, rgba(58, 53, 53, 0) 62%, rgba(58, 53, 53, .28) 100%);
	transition: opacity var(--tr);
}
.exp-card__media .exp-badge { position: absolute; top: .9rem; right: .9rem; z-index: 2; }
.exp-card__body { padding: 1.1rem 0 0; }
.exp-card__dest { font-size: .68rem; letter-spacing: .18em; text-transform: uppercase; font-weight: 600; color: var(--verde-scuro); display: block; margin-bottom: .35rem; }
.exp-card__title { font-size: clamp(1.2rem, 2vw, 1.5rem); text-transform: uppercase; margin: 0 0 .4rem; }
.exp-card__link:hover .exp-card__title,
.exp-card__link:focus-visible .exp-card__title { color: var(--verde-scuro); }
.exp-card__excerpt { color: var(--antracite-2); font-size: .92rem; margin: 0 0 .6rem; }
.exp-card__meta { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; font-size: .78rem; font-weight: 600; letter-spacing: .05em; text-transform: uppercase; border-top: 1px solid var(--linea); padding-top: .7rem; }
.exp-card__price { font-weight: 800; }
/* stato del gruppo e Explorer Pro nel corpo della card (richiesta cliente 6/9) */
.exp-card__stato { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem .7rem; margin: 0 0 .45rem; font-size: .82rem; color: var(--antracite-2); }
.exp-card__data small { font-size: .8em; opacity: .75; }
.exp-card__posti { font-weight: 600; }
.exp-card__coord { display: flex; flex-wrap: wrap; gap: .3rem 1rem; margin: 0 0 .75rem; font-size: .84rem; color: var(--antracite-2); }
.exp-card__coord strong { font-weight: 700; color: inherit; }
.exp-trek__nota { margin: .6rem 0 0; font-size: .86rem; color: var(--antracite-2); }
.fp-sez--ink .exp-card__dest { color: var(--verde-chiaro); }
.fp-sez--ink .exp-card__excerpt { color: var(--grigio); }
.fp-sez--ink .exp-card__meta { border-top-color: var(--linea-scura); }
.fp-sez--ink .exp-card__stato, .fp-sez--ink .exp-card__coord { color: var(--grigio); }
.fp-sez--ink .exp-card__link:hover .exp-card__title,
.fp-sez--ink .exp-card__link:focus-visible .exp-card__title { color: var(--verde-chiaro); }

/* ---------- Card partenza: vetrina "gruppi in formazione" ---------- */
.exp-pcard { position: relative; display: flex; }
.exp-pcard__link { display: flex; flex-direction: column; flex: 1; text-decoration: none; color: inherit; }
/* card partenza: le copertine sono 2:1, il 4:3 ne tagliava un terzo */
.exp-pcard__media { position: relative; aspect-ratio: 2 / 1; overflow: hidden; background: var(--neve); }
.exp-pcard__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s cubic-bezier(.22, .61, .36, 1); }
.exp-pcard__link:hover .exp-pcard__media img,
.exp-pcard__link:focus-visible .exp-pcard__media img { transform: scale(1.045); }
/* pannello prezzo appoggiato all'angolo della foto, come il listino cartaceo */
.exp-pcard__price {
	position: absolute; right: 0; bottom: 0; z-index: 2; margin: 0;
	background: rgba(58, 53, 53, .92); color: var(--bianco);
	padding: .5rem .85rem .55rem; text-align: right; line-height: 1.15;
}
.exp-pcard__price s { display: block; font-size: .74rem; color: var(--grigio); }
.exp-pcard__price strong { display: block; font-size: 1.3rem; font-weight: 800; color: var(--verde-chiaro); }
.exp-pcard__price em { display: block; font-style: italic; font-size: .68rem; color: var(--grigio); }
.exp-pcard__body { padding: 1.05rem 0 0; display: flex; flex-direction: column; flex: 1; }
.exp-pcard__dest { font-size: .68rem; letter-spacing: .18em; text-transform: uppercase; font-weight: 600; color: var(--verde-scuro); display: block; margin-bottom: .3rem; }
.exp-pcard__title { font-size: clamp(1.1rem, 1.7vw, 1.32rem); text-transform: uppercase; margin: 0 0 .4rem; }
.exp-pcard__link:hover .exp-pcard__title,
.exp-pcard__link:focus-visible .exp-pcard__title { color: var(--verde-scuro); }
.exp-pcard__date { font-weight: 700; font-size: .95rem; margin: 0 0 .12rem; }
.exp-pcard__durata { font-size: .72rem; letter-spacing: .1em; text-transform: uppercase; color: var(--antracite-2); margin: 0 0 .7rem; }
.exp-pcard__facts { margin: 0 0 .8rem; padding: .7rem 0 0; border-top: 1px solid var(--linea); display: grid; gap: .28rem; }
.exp-pcard__facts > div { display: flex; align-items: baseline; justify-content: space-between; gap: .6rem; }
.exp-pcard__facts dt { margin: 0; font-size: .66rem; letter-spacing: .12em; text-transform: uppercase; color: var(--antracite-2); }
.exp-pcard__facts dd { margin: 0; font-size: .85rem; font-weight: 700; color: var(--verde-scuro); text-align: right; }
.exp-pcard__stato { display: flex; flex-wrap: wrap; align-items: center; gap: .45rem; margin: auto 0 0; }
.exp-pcard__posti { font-size: .72rem; letter-spacing: .08em; text-transform: uppercase; font-weight: 600; color: var(--antracite-2); }
/* «2 altre date al completo»: informa senza rubare la scena al badge dello stato. */
.exp-pcard__piene { font-size: .72rem; letter-spacing: .08em; text-transform: uppercase; font-weight: 600; color: var(--warn-l); }
.exp-pcard__nota, .exp-pcard__cta { font-size: .72rem; letter-spacing: .08em; text-transform: uppercase; font-weight: 700; margin: .55rem 0 0; }
.exp-pcard__nota { color: var(--warn-l); }
.exp-pcard__cta { color: var(--verde-scuro); }
.exp-pcard__link:hover .exp-pcard__cta,
.exp-pcard__link:focus-visible .exp-pcard__cta { text-decoration: underline; }
/* al completo: la foto si spegne, il posto resta occupato anche visivamente */
.exp-pcard--sold_out .exp-pcard__media img { filter: grayscale(.6); }
.exp-pcard--sold_out .exp-pcard__price strong { color: var(--grigio); }
.fp-sez--ink .exp-pcard__dest { color: var(--verde-chiaro); }
.fp-sez--ink .exp-pcard__durata, .fp-sez--ink .exp-pcard__posti, .fp-sez--ink .exp-pcard__facts dt { color: var(--grigio); }
.fp-sez--ink .exp-pcard__facts { border-top-color: var(--linea-scura); }
.fp-sez--ink .exp-pcard__facts dd, .fp-sez--ink .exp-pcard__cta { color: var(--verde-chiaro); }
.fp-sez--ink .exp-pcard__nota { color: var(--warn-d); }

/* ---------- Stili di viaggio: strisce tipografiche ---------- */
.fp-stili { border-top: 1px solid var(--linea); }
.exp-stile {
	display: grid; grid-template-columns: 3.2rem minmax(0, 1fr) auto; align-items: center; gap: 1.2rem;
	padding: clamp(1.1rem, 2.5vw, 1.8rem) 0; border-bottom: 1px solid var(--linea);
	text-decoration: none; color: inherit; transition: padding var(--tr);
}
/* La colonna della foto esiste solo nella vetrina della home: il blocco Gutenberg
   «stili» emette due sole celle e con quattro colonne finirebbe fuori squadra. */
.fp-stili .exp-stile { grid-template-columns: 120px 3.2rem minmax(0, 1fr) auto; }
.exp-stile__foto { display: block; width: 120px; aspect-ratio: 4 / 3; overflow: hidden; background: var(--neve); }
.exp-stile__foto:empty { background: none; }
.exp-stile__img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform var(--tr); }
.exp-stile:hover .exp-stile__img, .exp-stile:focus-visible .exp-stile__img { transform: scale(1.05); }
.exp-stile:hover, .exp-stile:focus-visible { padding-left: 1rem; }
.exp-stile__idx { font-size: .74rem; font-weight: 600; color: var(--verde-scuro); letter-spacing: .1em; }
.exp-stile__name {
	font-family: var(--f-display); font-weight: 800; font-stretch: 118%; text-transform: uppercase;
	font-size: clamp(1.8rem, 5vw, 3.6rem); line-height: 1;
	color: transparent; -webkit-text-stroke: 1.5px var(--antracite); transition: color var(--tr);
}
.exp-stile:hover .exp-stile__name,
.exp-stile:focus-visible .exp-stile__name { color: var(--antracite); -webkit-text-stroke-color: transparent; }
.exp-stile__desc { color: var(--antracite-2); font-size: .9rem; max-width: 26ch; text-align: right; }
@media (max-width: 700px) {
	.exp-stile { grid-template-columns: 2.2rem minmax(0, 1fr); }
	.exp-stile__desc { display: none; }
	.exp-stile__name { -webkit-text-stroke-width: 1px; }
	/* In home il payoff ora e corto: sta sotto il nome invece di sparire. */
	.fp-stili .exp-stile { grid-template-columns: 64px 2.2rem minmax(0, 1fr); gap: .5rem .8rem; }
	.fp-stili .exp-stile__foto { width: 64px; grid-row: span 2; }
	.fp-stili .exp-stile__desc { display: block; grid-column: 2 / -1; text-align: left; max-width: none; font-size: .82rem; }
}

/* ---------- Manifesto / proposte individuali ---------- */
.fp-manifesto__txt {
	font-family: var(--f-display); font-weight: 600; font-stretch: 108%;
	font-size: clamp(1.5rem, 3.2vw, 2.6rem); line-height: 1.22; letter-spacing: 0;
	max-width: 26ch; margin: 0 0 2rem;
}
.fp-manifesto__txt strong { font-weight: 700; color: var(--verde-chiaro); }
/* banda scura "Diventa Explorer Pro" */
.fp-pro__txt { color: var(--grigio); font-size: 1.02rem; line-height: 1.75; max-width: 66ch; margin: 0 0 2.2rem; }

/* ---------- Blocchi narrativi stili (sezione tipografica, no immagini) ---------- */
.fp-nar__grid {
	display: grid; grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 0 clamp(2rem, 5vw, 4.5rem);
}
.fp-nar__item {
	padding: clamp(1.8rem, 3.5vw, 2.6rem) 0;
	border-top: 1px solid var(--linea);
}
.fp-nar__stile {
	font-size: .7rem; font-weight: 600; letter-spacing: .22em; text-transform: uppercase;
	color: var(--antracite-2); margin: 0 0 .7rem;
}
.fp-nar__claim {
	font-family: var(--f-display); font-weight: 800; font-stretch: 115%;
	font-size: clamp(1.45rem, 2.6vw, 2.1rem); line-height: 1.12; text-transform: uppercase;
	color: var(--verde-scuro); margin: 0 0 .9rem; letter-spacing: .005em;
}
.fp-nar__txt { color: var(--antracite-2); font-size: .96rem; line-height: 1.7; margin: 0 0 1.1rem; max-width: 52ch; }
.fp-nar__link {
	font-size: .78rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase;
	color: var(--antracite); text-decoration: none;
	border-bottom: 2px solid var(--verde); padding-bottom: .25rem;
	transition: color var(--tr);
}
.fp-nar__link:hover, .fp-nar__link:focus-visible { color: var(--verde-scuro); }
@media (max-width: 860px) { .fp-nar__grid { grid-template-columns: 1fr; } }

/* ---------- Slideshow prima del footer (CPT slide) ---------- */
.fp-emo { padding-bottom: clamp(2.4rem, 5vw, 3.6rem); }
.fp-emo__stage {
	position: relative; margin-top: clamp(1.4rem, 3vw, 2.2rem);
	height: clamp(380px, 36vw, 560px); overflow: hidden; background: var(--carbone);
}
.fp-emo__slide {
	position: absolute; inset: 0; opacity: 0; visibility: hidden;
	transition: opacity .7s ease, visibility .7s;
}
.fp-emo__slide.is-active { opacity: 1; visibility: visible; }
.fp-emo__media { position: absolute; inset: 0; }
.fp-emo__media img {
	width: 100%; height: 100%; object-fit: cover; display: block;
	transform: scale(1.06); transition: transform 8s ease-out;
}
.fp-emo__slide.is-active .fp-emo__media img { transform: scale(1); }
.fp-emo__scrim {
	position: absolute; inset: 0;
	background: linear-gradient(90deg, rgba(31,28,28,.86) 0%, rgba(31,28,28,.62) 42%, rgba(31,28,28,.12) 78%, rgba(31,28,28,0) 100%);
}
.fp-emo__caption {
	position: absolute; inset: auto auto 0 0; width: min(46ch, 84%);
	padding: clamp(1.6rem, 4vw, 3rem) clamp(1.25rem, 4vw, 3.4rem) clamp(2rem, 4vw, 3.2rem);
	color: var(--bianco);
}
.fp-emo__eyebrow {
	font-size: .7rem; font-weight: 600; letter-spacing: .22em; text-transform: uppercase;
	color: var(--verde-chiaro); margin: 0 0 .7rem;
}
.fp-emo__claim {
	font-family: var(--f-display); font-weight: 800; font-stretch: 115%;
	font-size: clamp(1.5rem, 3.1vw, 2.5rem); line-height: 1.1; text-transform: uppercase;
	margin: 0 0 .9rem; color: var(--bianco); letter-spacing: .005em;
}
.fp-emo__txt { color: var(--grigio); font-size: .95rem; line-height: 1.7; margin: 0 0 1.4rem; }
.fp-emo__cta { display: inline-flex; }
.fp-emo__nav {
	display: flex; align-items: center; justify-content: center; gap: 1.2rem;
	margin-top: 1.4rem;
}
.fp-emo__arrow {
	width: 44px; height: 44px; border-radius: 50%; border: 1px solid var(--linea);
	background: transparent; color: var(--antracite); cursor: pointer;
	display: inline-flex; align-items: center; justify-content: center;
	transition: background var(--tr), color var(--tr), border-color var(--tr);
}
.fp-emo__arrow svg { width: 20px; height: 20px; }
.fp-emo__arrow:hover, .fp-emo__arrow:focus-visible { background: var(--verde); border-color: var(--verde); color: var(--bianco); }
.fp-emo__dots { display: flex; align-items: center; gap: .5rem; }
.fp-emo__dot {
	width: 10px; height: 10px; padding: 0; border-radius: 50%; cursor: pointer;
	border: 1px solid var(--antracite-2); background: transparent;
	transition: background var(--tr), transform var(--tr);
}
.fp-emo__dot[aria-current="true"] { background: var(--verde); border-color: var(--verde); transform: scale(1.3); }
.fp-emo--single .fp-emo__nav { display: none; }
@media (max-width: 700px) {
	.fp-emo__stage { height: clamp(380px, 92vw, 520px); }
	.fp-emo__caption { width: 100%; }
	.fp-emo__scrim { background: linear-gradient(180deg, rgba(31,28,28,.15) 0%, rgba(31,28,28,.55) 45%, rgba(31,28,28,.9) 100%); }
}
@media (prefers-reduced-motion: reduce) {
	.fp-emo__slide { transition: none; }
	.fp-emo__media img, .fp-emo__slide.is-active .fp-emo__media img { transition: none; transform: none; }
}

/* ---------- Coordinatori Explorer Pro ---------- */
.exp-coord { display: block; text-decoration: none; color: inherit; text-align: left; }
.exp-coord img, .exp-coord__img { aspect-ratio: 4 / 5; width: 100%; object-fit: cover; background: var(--neve); }
.exp-coord__name { display: block; font-family: var(--f-display); font-weight: 700; font-stretch: 112%; font-size: 1.25rem; text-transform: uppercase; margin-top: .9rem; }
.exp-coord:hover .exp-coord__name, .exp-coord:focus-visible .exp-coord__name { color: var(--verde-scuro); }
.exp-coord__role { display: block; font-size: .7rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: var(--antracite-2); margin-top: .3rem; }
.fp-sez--ink .exp-coord__role { color: var(--grigio); }

/* ---------- News list ---------- */
.exp-news {
	display: grid; grid-template-columns: 110px minmax(0, 1fr); gap: 1.2rem; align-items: baseline;
	padding: 1.2rem 0; border-bottom: 1px solid var(--linea);
	text-decoration: none; color: inherit; transition: padding var(--tr);
}
.exp-news:first-child { border-top: 1px solid var(--linea); }
.exp-news:hover, .exp-news:focus-visible { padding-left: .8rem; background: var(--bianco); }
.exp-news img { display: none; }
.exp-news__date { font-size: .7rem; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--antracite-2); }
.exp-news__title { font-family: var(--f-display); font-weight: 600; font-size: clamp(1.05rem, 2vw, 1.35rem); }
.exp-news:hover .exp-news__title,
.exp-news:focus-visible .exp-news__title { color: var(--verde-scuro); }
@media (max-width: 640px) { .exp-news { grid-template-columns: minmax(0, 1fr); } }

/* ---------- Footer ---------- */
.exp-footer { background: var(--carbone); color: var(--grigio); margin-top: 0; }
.exp-footer__inner {
	max-width: var(--container); margin: 0 auto; padding: clamp(3rem, 6vw, 4.5rem) var(--gutter) 2.2rem;
	display: grid; grid-template-columns: 1.6fr 1fr 1fr 1fr 1.1fr; gap: clamp(1.4rem, 3vw, 2.6rem);
}
.exp-footer__contatti li { font-size: .92rem; line-height: 1.6; margin-bottom: .7rem; }
.exp-footer__contatti span { display: block; font-size: .64rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: var(--grigio); }
@media (max-width: 1280px) and (min-width: 1021px) { .exp-footer__inner { grid-template-columns: 1.4fr 1fr 1fr; } }
@media (max-width: 1020px) and (min-width: 861px) { .exp-footer__inner { grid-template-columns: 1fr 1fr; } }
.exp-footer__logo { width: 168px; height: auto; margin-bottom: 1.1rem; }
.exp-footer__col p { font-size: .92rem; max-width: 40ch; line-height: 1.7; }
.exp-footer__claim { letter-spacing: .26em; text-transform: uppercase; font-size: .7rem; font-weight: 500; color: #fff; margin-top: 1.2rem; }
.exp-footer__title { font-size: .72rem; font-weight: 600; letter-spacing: .22em; text-transform: uppercase; color: #fff; margin-bottom: 1.1rem; }
.exp-footer ul { list-style: none; margin: 0; padding: 0; }
.exp-footer li { margin-bottom: .55rem; }
.exp-footer a { color: var(--grigio); text-decoration: none; transition: color var(--tr); }
.exp-footer a:hover { color: var(--verde-chiaro); }
.exp-footer :focus-visible { outline-color: var(--verde-chiaro); }
.exp-footer__legal {
	border-top: 1px solid var(--linea-scura);
	padding: 1.3rem var(--gutter); text-align: center;
	font-size: .7rem; letter-spacing: .12em; text-transform: uppercase;
}
.exp-footer__legal p { margin: 0; }
.exp-footer__legali {
	list-style: none; margin: 0 0 .9rem; padding: 0;
	display: flex; flex-wrap: wrap; justify-content: center; gap: .5rem 1.6rem;
}
.exp-footer__legali a { text-decoration: none; opacity: .85; }
.exp-footer__legali a:hover, .exp-footer__legali a:focus-visible { opacity: 1; text-decoration: underline; }
@media (max-width: 860px) { .exp-footer__inner { grid-template-columns: 1fr; gap: 2rem; } }

/* ---------- Breadcrumbs ---------- */
.exp-breadcrumbs { font-size: .7rem; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; margin: 1.6rem 0; color: var(--antracite-2); }
.exp-breadcrumbs a { color: inherit; text-decoration: none; }
.exp-breadcrumbs a:hover { color: var(--verde-scuro); }
/* su foto: bianco pieno + ombra locale */
.exp-vhero .exp-breadcrumbs { color: #fff; margin: 0 0 1.2rem; text-shadow: 0 1px 2px rgba(30, 27, 27, .65), 0 0 14px rgba(30, 27, 27, .5); }
.exp-vhero .exp-breadcrumbs a:hover { color: var(--verde-chiaro); }

/* ---------- Archivi ---------- */
.exp-archive-head { padding: clamp(2.5rem, 5vw, 4rem) 0 1.5rem; }
.exp-page-title { font-size: clamp(1.75rem, 5.5vw, 4rem); font-weight: 800; font-stretch: 118%; text-transform: uppercase; letter-spacing: .01em; margin-bottom: .3em; overflow-wrap: break-word; hyphens: auto; }
.exp-archive-head .exp-lead, .exp-archive-desc, .exp-archive-head__sub { color: var(--antracite-2); max-width: 60ch; font-size: 1.05rem; }
.exp-filtri__reset { font-size: .72rem; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: var(--antracite-2); align-self: center; }
.exp-filtri__reset:hover { color: var(--verde-scuro); }

.exp-filtri {
	display: flex; flex-wrap: wrap; gap: 1rem; align-items: flex-end;
	background: var(--neve); border: 1px solid var(--linea); padding: 1.4rem; margin: 1.2rem 0 2.5rem;
	/* Dopo «Filtra» la pagina si ricarica: senza questo si torna in cima, sopra
	   la fascia dei numeri, e i risultati restano fuori schermo. */
	scroll-margin-top: 140px;
}
.exp-filtri__item { display: flex; flex-direction: column; gap: .45rem; flex: 1 1 160px; }
.exp-filtri__item span { font-size: .64rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: var(--antracite-2); }
.exp-filtri select {
	font-family: var(--f-body); font-size: .9rem; color: var(--antracite);
	background: var(--bianco); border: 1px solid var(--linea); padding: .7rem .8rem;
	appearance: none;
}
.exp-filtri select:focus { outline: 2px solid var(--verde-scuro); }
.exp-filtri button { flex: 0 0 auto; }

/* ---------- Hero viaggio singolo ---------- */
.exp-vhero { position: relative; background: var(--carbone); color: #fff; min-height: min(72vh, 620px); display: flex; align-items: flex-end; isolation: isolate; }
.exp-vhero__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: -2; }
.exp-vhero::after { content: ''; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, rgba(46, 42, 42, .38) 0%, rgba(46, 42, 42, .78) 78%, var(--carbone) 100%); }
.exp-vhero__overlay { width: 100%; padding: clamp(5rem, 10vw, 8rem) 0 clamp(1.8rem, 4vw, 3rem); }
.exp-vhero .exp-code { color: var(--verde-chiaro); font-weight: 700; text-shadow: 0 1px 2px rgba(30, 27, 27, .6); }
.exp-vhero__title { font-size: clamp(1.7rem, 4vw, 3rem); font-weight: 800; font-stretch: 116%; text-transform: uppercase; letter-spacing: .01em; margin: .3rem 0 1rem; max-width: 18ch; text-shadow: 0 2px 8px rgba(30, 27, 27, .4); }
.exp-vhero__meta { display: flex; flex-wrap: wrap; gap: .8rem 1.4rem; align-items: center; font-size: .78rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: #fff; text-shadow: 0 1px 2px rgba(30, 27, 27, .65), 0 0 14px rgba(30, 27, 27, .5); }

/* layout scheda */
.exp-viaggio__layout { display: grid; grid-template-columns: minmax(0, 1fr) 400px; gap: clamp(2rem, 4vw, 3.5rem); padding-top: clamp(2rem, 4vw, 3rem); padding-bottom: var(--sez); align-items: start; }
@media (max-width: 1020px) { .exp-viaggio__layout { grid-template-columns: minmax(0, 1fr); } }
.exp-viaggio__main section { margin-bottom: clamp(2.5rem, 5vw, 3.8rem); }
.exp-viaggio__main h2 { font-size: clamp(1.4rem, 2.4vw, 1.9rem); text-transform: uppercase; border-bottom: 2px solid var(--verde); padding-bottom: .45rem; margin-bottom: 1.2rem; }

/* facts */
.exp-facts { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 1px; background: var(--linea); border: 1px solid var(--linea); }
.exp-facts__item { background: var(--neve); padding: 1rem 1.1rem; }
.exp-facts__label { display: block; font-size: .62rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: var(--antracite-2); margin-bottom: .35rem; }
.exp-facts__value { font-family: var(--f-display); font-weight: 700; font-size: 1.05rem; }
.exp-livello i { display: inline-block; width: 12px; height: 12px; border-radius: 50%; border: 1.5px solid var(--antracite); margin-right: 4px; }
.exp-livello i.on { background: var(--verde); border-color: var(--verde); }

/* highlights */
.exp-highlights ul { list-style: none; padding: 0; display: grid; grid-template-columns: repeat(2, 1fr); gap: .8rem; }
.exp-highlights li { background: var(--neve); border-left: 3px solid var(--verde); padding: .85rem 1rem; font-size: .95rem; }
@media (max-width: 640px) { .exp-highlights ul { grid-template-columns: 1fr; } }

/* accordion */
.exp-acc { border: 1px solid var(--linea); border-bottom: none; background: var(--bianco); }
.exp-acc:last-of-type { border-bottom: 1px solid var(--linea); }
.exp-acc summary {
	display: flex; align-items: center; gap: .9rem; cursor: pointer;
	padding: 1rem 1.2rem; font-family: var(--f-display); font-weight: 600; font-size: 1.02rem;
	list-style: none;
}
.exp-acc summary::-webkit-details-marker { display: none; }
.exp-acc summary::after { content: '+'; margin-left: auto; font-size: 1.2rem; font-weight: 600; color: var(--verde-scuro); transition: transform var(--tr); }
.exp-acc[open] summary::after { transform: rotate(45deg); }
/* Il campo «giorno» dei viaggi legacy contiene a volte l'intero titolo: il badge
   deve poter stringersi e andare a capo, o sfonda la pagina in orizzontale. */
.exp-acc__day { font-size: .68rem; font-weight: 700; letter-spacing: .06em; background: var(--verde-scuro); color: #fff; padding: .3em .6em; flex: 0 1 auto; min-width: 0; overflow-wrap: anywhere; }
.exp-acc__body { padding: 0 1.2rem 1.2rem; color: var(--antracite); font-size: .95rem; }
.exp-acc__meta { color: var(--antracite-2); font-size: .85rem; }

/* quota include / non include */
.exp-quota { display: grid; grid-template-columns: 1fr 1fr; gap: 2rem; }
@media (max-width: 700px) { .exp-quota { grid-template-columns: 1fr; } }
.exp-list { list-style: none; padding: 0; }
.exp-list li { padding: .5rem 0 .5rem 1.7rem; position: relative; border-bottom: 1px dashed var(--linea); font-size: .95rem; }
.exp-list--si li::before { content: '✓'; position: absolute; left: 0; color: var(--ok-l); font-weight: 700; }
.exp-list--no li::before { content: '✕'; position: absolute; left: 0; color: var(--no-l); font-weight: 700; }

/* attività, note, alert */
.exp-attivita { list-style: none; padding: 0; }
.exp-attivita li { display: flex; justify-content: space-between; gap: 1rem; padding: .7rem 0; border-bottom: 1px solid var(--linea); }
.exp-attivita__prezzo { font-weight: 700; }
.exp-nota-box { background: var(--neve); border: 1px solid var(--linea); padding: 1.3rem 1.5rem; }
.exp-nota-box--warn { border-left: 3px solid var(--warn-l); }
.exp-alert { padding: 1rem 1.2rem; font-size: .88rem; font-weight: 600; margin-bottom: 1.5rem; }
.exp-alert--ok { background: var(--carbone); color: var(--verde-chiaro); }
.exp-alert--error { background: var(--carbone); color: var(--no-d); }

/* gallery / mappa / video */
.exp-gallery { display: grid; grid-template-columns: repeat(3, 1fr); gap: .7rem; }
@media (max-width: 700px) { .exp-gallery { grid-template-columns: 1fr 1fr; } }
.exp-gallery__img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.exp-mappa iframe { width: 100%; min-height: 380px; border: 0; }
.exp-video__link { position: relative; display: block; max-width: 480px; }
.exp-video__play { position: absolute; inset: 0; display: grid; place-items: center; font-size: 2.6rem; color: #fff; background: rgba(46, 42, 42, .35); transition: background var(--tr); }
.exp-video__link:hover .exp-video__play { background: rgba(46, 42, 42, .15); }

/* ---------- Booking ---------- */
.exp-viaggio__side { position: sticky; top: 96px; }
.exp-booking { background: var(--carbone); color: #fff; padding: 1.6rem 1.5rem 1.5rem; }
.exp-booking :focus-visible { outline-color: var(--verde-chiaro); }
.exp-booking__title { font-size: 1.15rem; text-transform: uppercase; letter-spacing: .04em; color: #fff; border-bottom: 2px solid var(--verde); padding-bottom: .55rem; margin-bottom: 1.1rem; }
.exp-board { display: flex; flex-direction: column; gap: .6rem; margin-bottom: 1.3rem; }
.exp-board__row {
	display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: .4rem .9rem; align-items: center;
	border: 1px solid var(--linea-scura); padding: .85rem 1rem; cursor: pointer;
	transition: border-color var(--tr), background var(--tr); position: relative;
}
.exp-board__row:hover { border-color: var(--grigio); }
.exp-board__row:has(input:checked) { border-color: var(--verde); background: var(--carbone-2); }
.exp-board__row input { position: absolute; opacity: 0; pointer-events: none; }
.exp-board__date .exp-code { font-weight: 700; font-size: .85rem; color: #fff; display: block; }
.exp-board__rientro { font-size: .68rem; color: var(--grigio); }
.exp-board__info { display: flex; flex-direction: column; gap: .45rem; align-items: flex-start; font-size: 0; color: var(--verde-chiaro); }
.exp-board__info .exp-meter__label { color: var(--grigio); }
.exp-board__price { text-align: right; }
.exp-board__price s { color: var(--grigio); font-size: .72rem; display: block; }
.exp-board__price strong { font-size: 1rem; }

.exp-booking__field { margin-bottom: .9rem; }
.exp-booking__field label { display: block; font-size: .64rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: var(--grigio); margin-bottom: .35rem; }
.exp-booking input[type="text"], .exp-booking input[type="email"], .exp-booking input[type="tel"], .exp-booking select {
	width: 100%; font-family: var(--f-body); font-size: .95rem; color: #fff;
	background: var(--carbone-2); border: 1px solid var(--linea-scura); padding: .75rem .85rem;
}
.exp-booking input:focus, .exp-booking select:focus { outline: 2px solid var(--verde-chiaro); outline-offset: 0; border-color: var(--verde-chiaro); }
.exp-booking__opzioni { border: 1px solid var(--linea-scura); padding: 1rem 1.1rem; margin: 0 0 1rem; }
.exp-booking__opzioni legend { font-size: .64rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: var(--grigio); padding: 0 .4em; }
.exp-check { display: flex; gap: .6rem; align-items: baseline; font-size: .88rem; margin-bottom: .6rem; }
.exp-check small { color: var(--grigio); }
.exp-check input { accent-color: var(--verde); }
.exp-booking__saldo { display: block; font-size: .88rem; }
.exp-booking__saldo select { margin-top: .45rem; font-size: .85rem; }

.exp-totale { border-top: 1px dashed var(--grigio); padding-top: 1rem; margin: 1.2rem 0 1.1rem; }
.exp-totale__row { display: flex; justify-content: space-between; gap: 1rem; font-size: .84rem; padding: .28rem 0; color: var(--grigio); }
.exp-totale__row--tot { color: #fff; font-size: 1rem; border-top: 1px solid var(--linea-scura); margin-top: .4rem; padding-top: .7rem; }
.exp-totale__row--tot strong { color: var(--verde-chiaro); font-size: 1.25rem; }
.exp-totale__note { font-size: .78rem; color: var(--grigio); margin: .7rem 0 0; }
.exp-booking__demo { font-size: .68rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--grigio); text-align: center; margin: .8rem 0 0; }
.exp-booking__demo a { color: var(--verde-chiaro); }

.exp-soldout h3 { text-transform: uppercase; font-size: 1.05rem; margin-top: 1.4rem; }
.exp-soldout__list { list-style: none; padding: 0; margin: 1rem 0; display: flex; flex-direction: column; gap: .5rem; }
.exp-soldout__list li { display: flex; justify-content: space-between; align-items: center; gap: 1rem; border: 1px solid var(--linea-scura); padding: .6rem .9rem; }
.exp-soldout__msg { color: #fff; }
.exp-soldout p { color: var(--grigio); font-size: .92rem; }
/* box su misura (viaggio Individuale senza partenze): la quota «da €» al posto delle date */
.exp-sumisura__quota { display: flex; flex-wrap: wrap; align-items: baseline; gap: .35rem .6rem; margin: 0 0 .9rem; }
.exp-sumisura__quota span { color: var(--grigio); font-size: .92rem; }
.exp-sumisura__quota strong { color: #fff; font-size: 1.6rem; line-height: 1; }
.exp-sumisura p a { color: #fff; text-decoration: underline; }

/* form info / lista attesa (superficie chiara) */
.exp-form-section { background: var(--neve); border: 1px solid var(--linea); padding: clamp(1.5rem, 3vw, 2.2rem); }
.exp-form-section h2 { border-bottom: none !important; margin-bottom: .4rem !important; }
.exp-form-section > p { color: var(--antracite-2); }
.exp-form { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.exp-form__field--full { grid-column: 1 / -1; }
.exp-form label { display: block; font-size: .64rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: var(--antracite-2); margin-bottom: .35rem; }
.exp-form input, .exp-form textarea {
	width: 100%; font-family: var(--f-body); font-size: .95rem;
	background: var(--bianco); border: 1px solid var(--linea); padding: .75rem .85rem; color: var(--antracite);
}
.exp-form input:focus, .exp-form textarea:focus { outline: 2px solid var(--verde-scuro); border-color: var(--verde-scuro); }
.exp-form .exp-btn { grid-column: 1 / -1; justify-self: start; }
.exp-form__privacy { grid-column: 1 / -1; font-size: .78rem; color: var(--antracite-2); margin: 0; }
.exp-form__desc { display: block; font-size: .76rem; color: var(--antracite-2); margin-top: .3rem; text-transform: none; letter-spacing: 0; font-weight: 400; }
.exp-req { color: var(--verde-scuro); }

/* ---- Proposte dal Cruscotto ----
   I due moduli stanno dentro un <details>: il Cruscotto resta una pagina di
   card corte e il form si apre solo a chi lo sta compilando. */
.exp-proposta-blocco { border: 1px solid var(--linea); background: var(--neve); margin-bottom: 1.5rem; }
.exp-proposta-blocco > summary { cursor: pointer; padding: 1.1rem 1.3rem; font-weight: 700; text-transform: uppercase; letter-spacing: .09em; font-size: .82rem; list-style: none; }
.exp-proposta-blocco > summary::-webkit-details-marker { display: none; }
.exp-proposta-blocco > summary::after { content: "+"; float: right; font-size: 1.2rem; line-height: 1; }
.exp-proposta-blocco[open] > summary::after { content: "\2212"; }
.exp-proposta-blocco > .exp-proposta-blocco__corpo { padding: 0 1.3rem 1.4rem; }
.exp-proposte__tab { width: 100%; border-collapse: collapse; font-size: .88rem; }
.exp-proposte__tab th { text-align: left; font-size: .68rem; letter-spacing: .14em; text-transform: uppercase; color: var(--antracite-2); border-bottom: 2px solid var(--linea); padding: .5rem .6rem; }
.exp-proposte__tab td { border-bottom: 1px solid var(--linea); padding: .7rem .6rem; vertical-align: top; }
.exp-proposte__tipo { font-size: .76rem; color: var(--antracite-2); }
.exp-proposte__badge { display: inline-block; background: var(--carbone); color: var(--verde-chiaro); font-size: .68rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; padding: .3rem .55rem; }
.exp-proposte__vuoto { color: var(--antracite-2); }
@media (max-width: 640px) { .exp-proposte { overflow-x: auto; } .exp-proposte__tab { min-width: 34rem; } }
@media (max-width: 640px) { .exp-form { grid-template-columns: 1fr; } }
/* lista attesa dentro il booking scuro */
.exp-booking .exp-form input, .exp-booking .exp-form textarea { background: var(--carbone-2); border-color: var(--linea-scura); color: #fff; }
.exp-booking .exp-form label { color: var(--grigio); }
.exp-booking .exp-form__privacy { color: var(--grigio); }

/* ---------- Blocchi plugin (landing) ---------- */
.exp-hero { background: var(--carbone); color: #fff; padding: clamp(4rem, 9vw, 7rem) 0; position: relative; overflow: hidden; }
.exp-hero--image .exp-hero__bg { position: absolute; inset: 0; object-fit: cover; width: 100%; height: 100%; opacity: .42; }
.exp-hero__inner { position: relative; max-width: var(--container); margin: 0 auto; padding: 0 var(--gutter); }
.exp-hero__title { font-size: clamp(2.4rem, 6.5vw, 5rem); font-weight: 800; font-stretch: 118%; text-transform: uppercase; letter-spacing: .01em; max-width: 16ch; margin-bottom: .4em; }
.exp-hero__subtitle { color: var(--grigio); max-width: 50ch; font-size: 1.1rem; margin-bottom: 2rem; }

.exp-section { padding: clamp(2.8rem, 6vw, 4.5rem) 0; }
.exp-section__head { display: flex; justify-content: space-between; align-items: baseline; gap: 1.5rem; margin-bottom: 1.8rem; flex-wrap: wrap; }
.exp-section__head h2 { margin: 0; text-transform: uppercase; font-size: clamp(1.5rem, 2.8vw, 2.2rem); }
.exp-section__all { font-size: .78rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: inherit; text-decoration: none; border-bottom: 2px solid var(--verde); padding-bottom: .25rem; }
.exp-section__all:hover { color: var(--verde-scuro); }
.exp-section--stili .exp-grid--4 { display: block; }
.exp-section--stili .exp-stile:first-child { border-top: 1px solid var(--linea); }
.exp-stile__name { transition: color var(--tr); }

/* ---------- Contenuto prose / pagine ---------- */
.exp-content { max-width: 68ch; }
.exp-content h2 { border-bottom: none !important; }
.exp-prose { max-width: 68ch; padding: clamp(2rem, 4vw, 3rem) 0 var(--sez); }
.exp-prose h1 { font-size: clamp(2.2rem, 5vw, 3.4rem); font-weight: 800; font-stretch: 116%; text-transform: uppercase; }
.exp-prose img { margin: 1.5rem 0; }

/* ---------- Pagination ---------- */
.exp-pagination { display: flex; justify-content: center; padding: 2.5rem 0; font-size: .9rem; font-weight: 600; }
.exp-pagination ul { display: flex; flex-wrap: wrap; gap: .5rem; justify-content: center; list-style: none; margin: 0; padding: 0; }
.exp-pagination a, .exp-pagination span { display: block; padding: .55rem .9rem; border: 1px solid var(--linea); text-decoration: none; }
.exp-pagination .current { background: var(--verde-scuro); color: #fff; border-color: var(--verde-scuro); }
.exp-pagination a:hover { border-color: var(--antracite); }
.exp-pagination .dots { border-color: transparent; }

/* ---------- 404 ---------- */
.exp-404 { text-align: center; padding: var(--sez) var(--gutter); }
.exp-404 .exp-page-title { font-size: clamp(1.8rem, 4.5vw, 3rem); max-width: 20ch; margin: 0 auto .6em; }
.exp-404 p:last-child { display: flex; gap: 1rem; justify-content: center; flex-wrap: wrap; }

/* ---------- Archivio spacing di cortesia ---------- */
.exp-main > .exp-container:last-child { padding-bottom: var(--sez); }

/* ---------- Riduzione movimento ---------- */
@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	*, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
	.rv { opacity: 1; transform: none; }
}

/* Blocco prenotazione: righe non prenotabili, riepilogo esteso, lista d'attesa */
.exp-board__row--off { opacity: .55; cursor: default; }
.exp-board__row--off:hover { border-color: var(--linea-scura); }
.exp-board__row--off .exp-code { text-decoration: line-through; }
.exp-board__attesa { font-size: .8rem; font-weight: 600; color: var(--verde-chiaro); text-decoration: underline; }
.exp-board__off { font-size: .7rem; letter-spacing: .06em; text-transform: uppercase; color: var(--grigio); }
.exp-booking__hint { margin: .4rem 0 0; font-size: .78rem; line-height: 1.45; color: var(--grigio); }
.exp-totale__row--extra { font-size: .8rem; }
.exp-attesa { margin-top: 1.6rem; padding-top: 1.4rem; border-top: 1px solid var(--linea-scura); }
.exp-attesa h3 { text-transform: uppercase; font-size: 1.05rem; color: #fff; margin: 0 0 .35rem; }
.exp-attesa p { margin: 0 0 1rem; font-size: .9rem; color: var(--grigio); }
.exp-recap { margin: 1.6rem 0; padding: 1.4rem 1.6rem; background: var(--neve); border-radius: 14px; }
.exp-recap__title { margin: 0 0 .9rem; font-size: 1.15rem; }
.exp-recap__list { list-style: none; margin: 0; padding: 0; display: grid; gap: .5rem; }
.exp-recap__list li { display: flex; justify-content: space-between; gap: 1rem; flex-wrap: wrap; border-bottom: 1px dashed var(--linea); padding-bottom: .5rem; }
.exp-recap__list li > span { color: var(--antracite-2); font-size: .9rem; }
.exp-recap__note { margin: .9rem 0 0; font-size: .8rem; color: var(--antracite-2); }
.exp-recap__istruzioni { margin: 1.1rem 0 0; padding: 1rem 1.2rem; background: #fff; border: 1px solid var(--linea); border-radius: 12px; }
.exp-recap__istruzioni h3 { margin: 0 0 .5rem; font-size: 1rem; }
.exp-recap__istruzioni p { margin: 0 0 .5rem; font-size: .9rem; line-height: 1.55; }
.exp-recap__istruzioni p:last-child { margin-bottom: 0; }
.exp-hubspot-slot { margin-top: 1.6rem; padding: 1rem 1.2rem; border: 1px dashed var(--linea); border-radius: 12px; font-size: .82rem; color: var(--antracite-2); }

/* ==========================================================================
   Pagina Explorer Pro (single-coordinatore) — 3.4.0
   Ritratto grande a sinistra, identita e numeri a destra; poi biografia con
   colonna laterale di tag, board delle partenze, viaggi, percorso e domande.
   ========================================================================== */
.exp-container--narrow { max-width: 860px; }

.exp-cohero { background: var(--neve); padding-bottom: clamp(2.5rem, 5vw, 4rem); }
.exp-cohero .exp-breadcrumbs { padding-top: 1.4rem; }
.exp-cohero__grid {
	display: grid; grid-template-columns: minmax(0, 420px) minmax(0, 1fr);
	gap: clamp(1.8rem, 4vw, 3.5rem); align-items: start;
}
.exp-cohero__media { position: relative; }
.exp-cohero__img, .exp-cohero__media img {
	width: 100%; aspect-ratio: 4 / 5; object-fit: cover; background: var(--linea);
}
/* Il timbro "Explorer Pro" e decorativo: il ruolo vero e nel testo accanto. */
.exp-cohero__stamp {
	position: absolute; left: 0; bottom: 0;
	background: var(--verde); color: #322E2E;
	font-family: var(--f-display); font-weight: 700; font-stretch: 112%;
	font-size: .72rem; letter-spacing: .18em; text-transform: uppercase;
	padding: .55rem 1.1rem;
}
.exp-cohero__body { padding-top: clamp(0rem, 1vw, 1rem); }
.exp-cohero__name {
	font-size: clamp(2.4rem, 6vw, 4.2rem); text-transform: uppercase;
	font-stretch: 118%; margin: .2rem 0 .35rem;
}
.exp-cohero__role {
	font-size: 1.05rem; font-weight: 600; color: var(--verde-scuro);
	letter-spacing: .02em; margin: 0 0 1.4rem;
}
.exp-cohero__facts { display: flex; flex-wrap: wrap; gap: 0 2.5rem; margin: 0 0 1.6rem; }
.exp-cohero__facts dt {
	font-size: .68rem; font-weight: 700; letter-spacing: .16em;
	text-transform: uppercase; color: var(--antracite-2);
}
.exp-cohero__facts dd { margin: .15rem 0 0; font-weight: 600; }
.exp-cohero__cta { display: flex; flex-wrap: wrap; gap: .8rem; margin: 0 0 1.2rem; }
.exp-cohero__social { display: flex; flex-wrap: wrap; gap: 1.2rem; margin: 0; }
.exp-cohero__social a {
	font-size: .74rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase;
	text-decoration: none; border-bottom: 2px solid var(--verde); padding-bottom: .2rem;
}
.exp-cohero__social a:hover { color: var(--verde-scuro); }

.exp-costats {
	list-style: none; margin: 0 0 1.8rem; padding: 1.2rem 0 0;
	border-top: 1px solid var(--linea);
	display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: 1rem 1.5rem;
}
.exp-costats strong {
	display: block; font-family: var(--f-display); font-weight: 700; font-stretch: 118%;
	font-size: clamp(1.8rem, 3.4vw, 2.6rem); line-height: 1;
}
.exp-costats span {
	display: block; margin-top: .3rem; font-size: .7rem; font-weight: 600;
	letter-spacing: .12em; text-transform: uppercase; color: var(--antracite-2);
}

.exp-cobio { padding: clamp(3rem, 6vw, 5rem) 0 clamp(1rem, 2vw, 2rem); }
.exp-cobio__grid {
	display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 320px);
	gap: clamp(2rem, 5vw, 4rem); align-items: start;
}
.exp-cobio__title { text-transform: uppercase; font-size: clamp(1.5rem, 2.8vw, 2.2rem); }
.exp-coquote {
	margin: 2.2rem 0 0; padding: 1.6rem 0 0; border-top: 3px solid var(--verde);
}
.exp-coquote p {
	font-family: var(--f-display); font-weight: 600; font-stretch: 108%;
	font-size: clamp(1.25rem, 2.4vw, 1.8rem); line-height: 1.25; margin: 0 0 .7rem;
}
.exp-coquote cite {
	font-style: normal; font-size: .7rem; font-weight: 700;
	letter-spacing: .16em; text-transform: uppercase; color: var(--antracite-2);
}

.exp-cobox { border: 1px solid var(--linea); padding: 1.3rem 1.4rem; margin-bottom: 1.2rem; }
.exp-cobox h3 {
	font-size: .72rem; font-weight: 700; letter-spacing: .16em;
	text-transform: uppercase; color: var(--antracite-2); margin: 0 0 .9rem;
}
.exp-cobox .exp-list li:last-child { border-bottom: none; padding-bottom: 0; }

.exp-chips { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: .5rem; }
.exp-chips li {
	border: 1px solid var(--verde); color: var(--verde-scuro);
	border-radius: var(--r-chip); padding: .35rem .85rem;
	font-size: .78rem; font-weight: 600; line-height: 1.3;
}
.exp-chips--alt li { border-color: var(--linea); color: var(--antracite); background: var(--neve); }

.exp-copartenze { padding: clamp(2.5rem, 5vw, 4rem) 0; }
.exp-copartenze .fp-board__caption h2 { text-transform: uppercase; }

.exp-coviaggi { background: var(--neve); }

.exp-copercorso { padding: clamp(3rem, 6vw, 5rem) 0; }
.exp-copercorso h2 { text-transform: uppercase; margin-bottom: 2rem; }
.exp-timeline { list-style: none; margin: 0; padding: 0; display: grid; gap: 0; }
.exp-timeline__item {
	position: relative; padding: 1.4rem 0 1.4rem 2.2rem;
	border-bottom: 1px solid var(--linea);
}
.exp-timeline__item:first-child { border-top: 1px solid var(--linea); }
.exp-timeline__item::before {
	content: ''; position: absolute; left: 0; top: 2rem;
	width: 9px; height: 9px; background: var(--verde); border-radius: 50%;
}
.exp-timeline__item::after {
	content: ''; position: absolute; left: 4px; top: 2.6rem; bottom: -.6rem;
	width: 1px; background: var(--linea);
}
.exp-timeline__item:last-child::after { display: none; }
.exp-timeline__anno {
	display: block; font-size: .7rem; font-weight: 700; letter-spacing: .16em;
	text-transform: uppercase; color: var(--verde-scuro); margin-bottom: .3rem;
}
.exp-timeline__titolo { font-size: 1.15rem; margin: 0 0 .35rem; }
.exp-timeline__item p { margin: 0; color: var(--antracite-2); font-size: .95rem; max-width: 68ch; }

.exp-cogallery { padding: 0 0 clamp(3rem, 6vw, 5rem); }
.exp-cogallery h2 { text-transform: uppercase; font-size: clamp(1.5rem, 2.8vw, 2.2rem); }

.exp-codomande { background: var(--neve); padding: clamp(3rem, 6vw, 5rem) 0; }
.exp-codomande h2 { text-transform: uppercase; margin-bottom: 1.6rem; }

.exp-cocta { padding: clamp(3rem, 6vw, 5rem) 0; }
.exp-cocta__box {
	background: var(--carbone); color: #fff;
	padding: clamp(2rem, 4vw, 3.2rem);
	display: grid; grid-template-columns: minmax(0, 1fr) auto;
	gap: 1.6rem 2.5rem; align-items: center;
}
.exp-cocta__box h2 { color: #fff; text-transform: uppercase; margin: 0 0 .6rem; }
.exp-cocta__box p { margin: 0; color: var(--grigio); max-width: 60ch; }
.exp-cocta__actions { display: flex; flex-wrap: wrap; gap: .8rem; }
.exp-cocta__box .exp-btn--ghost { border-color: var(--grigio); color: #fff; }
.exp-cocta__box .exp-btn--ghost:hover { background: #fff; color: var(--carbone); border-color: #fff; }

.exp-coaltri { background: var(--neve); }

@media (max-width: 960px) {
	.exp-cohero__grid { grid-template-columns: minmax(0, 320px) minmax(0, 1fr); }
	.exp-cobio__grid { grid-template-columns: 1fr; }
	.exp-cocta__box { grid-template-columns: 1fr; }
}
@media (max-width: 700px) {
	.exp-cohero__grid { grid-template-columns: 1fr; }
	.exp-cohero__img, .exp-cohero__media img { aspect-ratio: 3 / 2; }
	.exp-costats { grid-template-columns: 1fr 1fr; }
}

/* Indice Explorer Pro: la card porta ruolo, biografia breve e tag, cosi la
   lista risponde gia alla domanda "chi mi accompagna" senza aprire la scheda. */
.exp-coordlist { align-items: stretch; }
.exp-coord--rich { display: flex; flex-direction: column; gap: .7rem; height: 100%; }
.exp-coord__link { display: block; text-decoration: none; color: inherit; }
.exp-coord--rich .exp-coord__name { margin-top: .9rem; }
.exp-coord__bio { margin: 0; font-size: .92rem; color: var(--antracite-2); }
.exp-coord__foot {
	display: flex; flex-wrap: wrap; gap: 0 1.2rem; margin: 0;
	font-size: .7rem; font-weight: 600; letter-spacing: .12em;
	text-transform: uppercase; color: var(--antracite-2);
}
.exp-coord__cta {
	margin-top: auto; align-self: start;
	font-size: .74rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase;
	text-decoration: none; border-bottom: 2px solid var(--verde); padding-bottom: .2rem;
}
.exp-coord__cta:hover { color: var(--verde-scuro); }

/* ==========================================================================
   Pagina Assistenza / Contatti — 3.4.1
   ========================================================================== */
.exp-ico { width: 26px; height: 26px; color: var(--verde-scuro); flex: none; }

.exp-cthero { background: var(--neve); padding-bottom: clamp(2.5rem, 5vw, 4rem); }
.exp-cthero .exp-breadcrumbs { padding-top: 1.4rem; }
.exp-cthero__grid {
	display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr);
	gap: clamp(1.5rem, 4vw, 4rem); align-items: end;
}
.exp-cthero__title {
	font-size: clamp(2.1rem, 5vw, 3.9rem); text-transform: uppercase;
	font-stretch: 118%; margin: .3rem 0 0; overflow-wrap: break-word;
}
.exp-cthero__grid > * { min-width: 0; }
/* Nel modulo assistenza le righe si sciolgono nella griglia del form: due campi
   per riga davvero affiancati, invece di due colonne impilate. */
.exp-ctmodulo .exp-form__row { display: contents; }
/* Il modulo del viaggio su misura vive su una pagina normale, non dentro il box
   di Contatti: senza questa riga le sue coppie di campi diventano una cella sola
   della griglia e finiscono incolonnate a due a due invece che affiancate. */
.exp-form--sumisura .exp-form__row { display: contents; }
.exp-cthero__lead .exp-content { max-width: none; }
.exp-cthero__lead p { font-size: 1.1rem; }
.exp-cthero__cta { display: flex; flex-wrap: wrap; gap: .8rem; margin: 1.4rem 0 0; }

.exp-ctcanali { padding: clamp(3rem, 6vw, 4.5rem) 0 0; }
.exp-ctgrid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1px; background: var(--linea); border: 1px solid var(--linea); }
.exp-ctcard {
	background: var(--bianco); padding: 1.6rem 1.5rem 1.7rem;
	display: flex; flex-direction: column; gap: .35rem;
	text-decoration: none; color: inherit; transition: background var(--tr);
}
.exp-ctcard:hover, .exp-ctcard:focus-visible { background: var(--neve); }
.exp-ctcard .exp-ico { margin-bottom: .5rem; }
.exp-ctcard__eyebrow {
	font-size: .66rem; font-weight: 700; letter-spacing: .16em;
	text-transform: uppercase; color: var(--antracite-2);
}
.exp-ctcard__titolo {
	font-family: var(--f-display); font-weight: 700; font-stretch: 112%;
	font-size: 1.15rem; text-transform: uppercase; line-height: 1.1;
}
.exp-ctcard__valore { font-weight: 600; color: var(--verde-scuro); word-break: break-word; }
.exp-ctcard__nota { font-size: .87rem; color: var(--antracite-2); margin-top: .3rem; }

.exp-ctappuntamenti { padding: clamp(2.5rem, 5vw, 4rem) 0; }
.exp-ctapp__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1.5rem; }
.exp-ctapp__box { border: 1px solid var(--linea); padding: clamp(1.5rem, 3vw, 2.4rem); }
.exp-ctapp__box h2 { font-size: clamp(1.3rem, 2.2vw, 1.7rem); text-transform: uppercase; margin: .9rem 0 .6rem; }
.exp-ctapp__box p { color: var(--antracite-2); max-width: 52ch; }
.exp-ctapp__box .exp-btn { margin-top: .6rem; }

.exp-ctconsulenza { padding: 0 0 clamp(2.5rem, 5vw, 4rem); }
/* L'header e sticky e si accorcia allo scroll: senza margine l'ancora
   «Prenota una videocall» atterra sotto la barra, con il titolo fuori schermo. */
.exp-ctconsulenza .exp-consulenza { max-width: 860px; margin: 0 auto; scroll-margin-top: 140px; }
.exp-ctconsulenza .exp-consulenza h2 { margin-top: 0; }
/* Sulla pagina Contatti i calendari sono due, uno sotto l'altro: senza una riga
   di stacco i due riquadri del consenso sembrano un blocco solo. */
.exp-ctconsulenza + .exp-ctconsulenza .exp-consulenza { border-top: 1px solid var(--linea); padding-top: clamp(2rem, 4vw, 3rem); }
.exp-ctmodulo { background: var(--neve); padding: clamp(3rem, 6vw, 5rem) 0; }
.exp-ctmodulo__grid {
	display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 380px);
	gap: clamp(2rem, 4vw, 3.5rem); align-items: start;
}
.exp-ctmodulo__form { background: var(--bianco); padding: clamp(1.6rem, 3vw, 2.6rem); }
.exp-ctmodulo__form h2 { text-transform: uppercase; margin-bottom: .5rem; }
.exp-ctmodulo__intro { color: var(--antracite-2); max-width: 58ch; }
.exp-ctmodulo__side .exp-cobox { background: var(--bianco); }
.exp-ctdato { margin: 0 0 .8rem; line-height: 1.6; }
.exp-ctdato a { font-weight: 600; color: var(--verde-scuro); text-decoration: none; }
.exp-ctdato a:hover { text-decoration: underline; }
.exp-ctdato span { font-size: .68rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--antracite-2); }
.exp-ctnota { margin: 0; font-size: .84rem; color: var(--antracite-2); }
.exp-ctorari { list-style: none; margin: 0 0 .9rem; padding: 0; }
.exp-ctorari li { display: flex; justify-content: space-between; gap: 1rem; flex-wrap: wrap; padding: .45rem 0; border-bottom: 1px dashed var(--linea); }
.exp-ctorari li:last-child { border-bottom: none; }
.exp-ctorari span { font-size: .8rem; color: var(--antracite-2); }
.exp-ctorari strong { font-size: .87rem; }

.exp-ctrapide { padding: clamp(3rem, 6vw, 5rem) 0; }
.exp-ctrapide__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.6rem 2.5rem; }
.exp-ctrapida { border-top: 3px solid var(--verde); padding-top: 1rem; }
.exp-ctrapida h3 { font-size: 1.1rem; margin: 0 0 .4rem; }
.exp-ctrapida p { margin: 0; color: var(--antracite-2); font-size: .95rem; }

.exp-ctpro { background: var(--neve); }

.exp-ctmappa { padding: 0 0 clamp(3rem, 6vw, 5rem); }
.exp-ctmappa__box {
	background: var(--carbone); color: #fff;
	display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr);
	gap: 0; align-items: stretch;
}
.exp-ctmappa__box > div { padding: clamp(1.8rem, 4vw, 3rem); align-self: center; }
.exp-ctmappa__box h2 { color: #fff; text-transform: uppercase; margin: .4rem 0 .7rem; }
.exp-ctmappa__box p { color: var(--grigio); max-width: 46ch; }
.exp-ctmappa__box .exp-eyebrow { color: var(--verde-chiaro); }
.exp-ctmappa__box .exp-btn--ghost { border-color: var(--grigio); color: #fff; margin-top: .5rem; }
.exp-ctmappa__box .exp-btn--ghost:hover { background: #fff; color: var(--carbone); border-color: #fff; }
.exp-ctmappa__frame { width: 100%; height: 100%; min-height: 340px; border: 0; display: block; filter: grayscale(.35); }
/* la mappa dietro il consenso: il riquadro prende il posto dell'iframe */
.exp-ctmappa__box > .exp-consenso { padding: 0; align-self: stretch; display: flex; flex-direction: column; min-height: 340px; }
.exp-ctmappa__box > .exp-consenso > * { flex: 1; }
.exp-ctmappa__box .exp-consenso__facciata { border: 0; border-radius: 0; }
.exp-ctmappa__box .exp-consenso__facciata p { color: var(--antracite); max-width: 40ch; }

@media (max-width: 1024px) {
	.exp-ctgrid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 880px) {
	.exp-cthero__grid { grid-template-columns: 1fr; align-items: start; }
	.exp-ctapp__grid { grid-template-columns: 1fr; }
	.exp-ctmodulo__grid { grid-template-columns: 1fr; }
	.exp-ctrapide__grid { grid-template-columns: 1fr; }
	.exp-ctmappa__box { grid-template-columns: 1fr; }
	.exp-ctmappa__frame { min-height: 280px; }
}
@media (max-width: 560px) {
	.exp-ctgrid { grid-template-columns: 1fr; }
}

/* ==========================================================================
   Su di noi e FAQ — 3.4.3
   ========================================================================== */
.exp-cshero { position: relative; min-height: clamp(360px, 46vw, 560px); display: flex; align-items: flex-end; overflow: hidden; }
.exp-cshero__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.exp-cshero__overlay { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(35,32,32,.34) 0%, rgba(35,32,32,.5) 40%, rgba(35,32,32,.82) 76%, rgba(35,32,32,.92) 100%); }
.exp-cshero__inner { position: relative; padding-top: 4rem; padding-bottom: clamp(2rem, 4vw, 3.4rem); color: #fff; }
.exp-cshero .exp-eyebrow { color: var(--verde-chiaro); }
.exp-cshero__title { color: #fff; font-size: clamp(2.2rem, 5.6vw, 4.4rem); text-transform: uppercase; font-stretch: 118%; margin: .3rem 0 .8rem; }
.exp-cshero__claim { max-width: 56ch; color: #EDEBEA; font-size: 1.08rem; margin: 0; }

.exp-csnumeri { background: var(--carbone); color: #fff; }
.exp-csnumeri__lista {
	list-style: none; margin: 0; padding: clamp(2rem, 4vw, 3rem) 0;
	display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1.5rem;
}
.exp-csnumeri__lista strong {
	display: block; font-family: var(--f-display); font-weight: 700; font-stretch: 118%;
	font-size: clamp(2rem, 4vw, 3.2rem); line-height: 1; color: var(--verde-chiaro);
}
.exp-csnumeri__lista span { display: block; margin-top: .45rem; font-size: .78rem; letter-spacing: .06em; color: var(--grigio); }

.exp-csmanifesto { padding: clamp(3rem, 6vw, 5rem) 0; }
.exp-csmanifesto__grid { display: grid; grid-template-columns: minmax(0, 300px) minmax(0, 1fr); gap: clamp(1.5rem, 4vw, 4rem); align-items: start; }
.exp-csmanifesto__grid h2 { text-transform: uppercase; font-size: clamp(1.5rem, 2.8vw, 2.2rem); margin: 0; }
.exp-csmanifesto .exp-content { max-width: 70ch; }
.exp-csmanifesto .exp-content h2 { font-size: 1.25rem; text-transform: uppercase; margin-top: 2rem; }
.exp-csmanifesto .exp-content > h2:first-child { margin-top: 0; }

.exp-csmetodo { background: var(--neve); padding: clamp(3rem, 6vw, 5rem) 0; }
.exp-csmetodo__lista { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 2rem 2.5rem; }
.exp-csmetodo__lista li { border-top: 3px solid var(--verde); padding-top: 1.1rem; }
.exp-csmetodo__idx { display: block; font-family: var(--f-display); font-weight: 700; font-size: .8rem; letter-spacing: .18em; color: var(--verde-scuro); margin-bottom: .5rem; }
.exp-csmetodo__lista h3 { font-size: 1.2rem; margin: 0 0 .45rem; }
.exp-csmetodo__lista p { margin: 0; color: var(--antracite-2); font-size: .95rem; }

.exp-csstile {
	display: flex; flex-direction: column; gap: .5rem; height: 100%;
	border: 1px solid var(--linea); padding: 1.5rem 1.4rem; text-decoration: none; color: inherit;
	transition: background var(--tr), border-color var(--tr);
}
.exp-csstile:hover { background: var(--neve); border-color: var(--verde); }
.exp-csstile__nome { font-family: var(--f-display); font-weight: 700; font-stretch: 112%; font-size: 1.25rem; text-transform: uppercase; }
.exp-csstile__desc { font-size: .9rem; color: var(--antracite-2); }
.exp-csstile__go { margin-top: auto; color: var(--verde-scuro); font-size: 1.2rem; }

.exp-cspro { background: var(--neve); }

.exp-csgaranzie { padding: clamp(3rem, 6vw, 5rem) 0; }
.exp-csgaranzie__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.6rem 2.5rem; }
.exp-csgaranzia { border-left: 3px solid var(--verde); padding: .2rem 0 .2rem 1.2rem; }
.exp-csgaranzia h3 { font-size: 1.1rem; margin: 0 0 .4rem; }
.exp-csgaranzia p { margin: 0; color: var(--antracite-2); font-size: .95rem; }
.exp-csmetodo__testo p + p, .exp-csgaranzia__testo p + p { margin-top: .5rem; }
.exp-csmetodo__testo ul, .exp-csgaranzia__testo ul, .exp-csmetodo__testo ol, .exp-csgaranzia__testo ol { margin: .5rem 0 0; padding-left: 1.15rem; color: var(--antracite-2); font-size: .95rem; }
.exp-csmetodo__testo li, .exp-csgaranzia__testo li { margin: 0 0 .25rem; }
.exp-csmetodo__testo a, .exp-csgaranzia__testo a { color: var(--verde-scuro); font-weight: 600; }

.exp-faqhero { background: var(--neve); padding-bottom: clamp(2.2rem, 4vw, 3.4rem); }
.exp-faqhero .exp-breadcrumbs { padding-top: 1.4rem; }
.exp-faqhero__grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(1.5rem, 4vw, 4rem); align-items: end; }
.exp-faqhero__title { font-size: clamp(2.1rem, 5vw, 3.9rem); text-transform: uppercase; font-stretch: 118%; margin: .3rem 0 0; }
.exp-faqhero__lead p { font-size: 1.05rem; }
.exp-faqhero__cta { display: flex; flex-wrap: wrap; gap: .8rem; margin: 1.2rem 0 0; }
.exp-faqlista { padding: clamp(2.5rem, 5vw, 4rem) 0; }
.exp-faqlista .exp-acc summary { font-size: 1.05rem; }
.exp-faqlista .exp-acc__body p:last-child { margin-bottom: 0; }
.exp-faqaiuto { padding: 0 0 clamp(3rem, 6vw, 5rem); }

@media (max-width: 900px) {
	.exp-csnumeri__lista { grid-template-columns: 1fr 1fr; }
	.exp-csmanifesto__grid { grid-template-columns: 1fr; }
	.exp-csmetodo__lista { grid-template-columns: 1fr; }
	.exp-csgaranzie__grid { grid-template-columns: 1fr; }
	.exp-faqhero__grid { grid-template-columns: 1fr; align-items: start; }
}

/* ---------- Pagine stile di viaggio ---------- */
.exp-stswitch {
	border-bottom: 1px solid var(--linea);
	background: var(--bianco);
	position: relative; z-index: 2;
}
.exp-stswitch__inner {
	display: flex; align-items: center; flex-wrap: wrap; gap: .6rem 1.6rem;
	padding-top: .95rem; padding-bottom: .95rem;
}
.exp-stswitch__eti {
	font-size: .7rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase;
	color: var(--antracite-2);
}
.exp-stswitch ul { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: .4rem .5rem; }
.exp-stswitch a {
	display: block; padding: .38rem .95rem; border: 1px solid var(--linea);
	border-radius: 999px; text-decoration: none; color: var(--antracite);
	font-size: .78rem; font-weight: 600; letter-spacing: .04em;
	transition: background .18s ease, border-color .18s ease, color .18s ease;
}
.exp-stswitch a:hover, .exp-stswitch a:focus-visible { border-color: var(--verde-scuro); color: var(--verde-scuro); }
.exp-stswitch a[aria-current="page"] {
	background: var(--antracite); border-color: var(--antracite); color: #fff;
}

.exp-stmatch { padding: var(--sez) 0; }
.exp-stmatch__grid {
	display: grid; grid-template-columns: repeat(2, 1fr); gap: 1.6rem;
}
.exp-stmatch__col {
	border: 1px solid var(--linea); border-top: 3px solid var(--linea);
	padding: 1.7rem 1.8rem 1.9rem; background: var(--bianco);
}
.exp-stmatch__col--si { border-top-color: var(--verde); }
.exp-stmatch__col--no { border-top-color: var(--antracite-2); }
.exp-stmatch__col h3 {
	margin: 0 0 1.1rem; font-size: 1.05rem; letter-spacing: .01em;
}
.exp-stmatch__col ul { list-style: none; margin: 0; padding: 0; display: grid; gap: .8rem; }
.exp-stmatch__col li { position: relative; padding-left: 1.7rem; line-height: 1.55; }
.exp-stmatch__col li::before {
	position: absolute; left: 0; top: -.05em; font-weight: 700;
}
.exp-stmatch__col--si li::before { content: "\2713"; color: var(--verde-scuro); }
.exp-stmatch__col--no li::before { content: "\2014"; color: var(--antracite-2); }
.exp-stmatch__alt { margin: 1.3rem 0 0; font-size: .9rem; color: var(--antracite-2); }

.exp-stvuoto {
	border: 1px dashed var(--linea); background: var(--neve);
	padding: 2.6rem 2rem; text-align: center;
}
.exp-stvuoto h3 { margin: 0 0 .8rem; font-size: 1.25rem; }
.exp-stvuoto p { max-width: 58ch; margin: 0 auto; color: var(--antracite-2); line-height: 1.6; }
.exp-stvuoto__actions {
	display: flex; flex-wrap: wrap; justify-content: center; gap: .8rem; margin: 1.6rem 0 0;
}
.exp-stfaq { padding-bottom: var(--sez); }

@media (max-width: 780px) {
	.exp-stmatch__grid { grid-template-columns: 1fr; }
	.exp-stswitch__inner { padding-top: .8rem; padding-bottom: .8rem; }
}
.exp-stilepage .exp-csmetodo__lista { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 2rem; }
@media (max-width: 1080px) { .exp-stilepage .exp-csmetodo__lista { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 620px) { .exp-stilepage .exp-csmetodo__lista { grid-template-columns: 1fr; } }

/* ---------- Archivio viaggi individuali ---------- */
.exp-itinpage .exp-csmetodo__lista { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 2rem; }
.exp-itinlista__intro {
	max-width: 68ch; margin: 0 0 2.2rem; color: var(--antracite-2); line-height: 1.65;
}
.exp-itindest { margin-top: 3rem; border-top: 1px solid var(--linea); padding-top: 1.9rem; }
.exp-itindest h3 {
	margin: 0 0 1rem; font-size: .78rem; font-weight: 700;
	letter-spacing: .14em; text-transform: uppercase; color: var(--antracite-2);
}
.exp-itindest p { margin: 1.1rem 0 0; font-size: .9rem; color: var(--antracite-2); }
.exp-chips a { text-decoration: none; color: inherit; }
.exp-chips li:has(a):hover { border-color: var(--verde-scuro); color: var(--verde-scuro); }
@media (max-width: 1080px) { .exp-itinpage .exp-csmetodo__lista { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 620px) { .exp-itinpage .exp-csmetodo__lista { grid-template-columns: 1fr; } }

/* ---------- Archivio Explorer Pro ---------- */
.exp-propage .exp-csmetodo__lista { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 2rem; }
.exp-prolista__intro { max-width: 68ch; margin: 0 0 2.2rem; color: var(--antracite-2); line-height: 1.65; }
@media (max-width: 1080px) { .exp-propage .exp-csmetodo__lista { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 620px) { .exp-propage .exp-csmetodo__lista { grid-template-columns: 1fr; } }

/* ---------- Pagine di tassonomia ---------- */
.exp-taxfiltri { margin-top: 3rem; border-top: 1px solid var(--linea); padding-top: 1.9rem; }
.exp-taxfiltri h3 {
	margin: 0 0 1rem; font-size: .78rem; font-weight: 700;
	letter-spacing: .14em; text-transform: uppercase; color: var(--antracite-2);
}
.exp-taxcoord { padding-top: 0; }
.exp-cshero--piatto { background: var(--carbone); min-height: clamp(260px, 30vw, 380px); }
.exp-cshero--piatto .exp-cshero__overlay { background: none; }

/* ---------- Blog: indice e categorie ---------- */
.exp-blognav { display: flex; flex-wrap: wrap; gap: .5rem; margin: 0 0 2.4rem; }
.exp-blognav__voce {
	font-size: .74rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase;
	padding: .5rem .95rem; border: 1px solid var(--linea); color: var(--antracite-2);
	text-decoration: none; transition: border-color .2s, color .2s;
}
.exp-blognav__voce:hover { border-color: var(--verde-scuro); color: var(--verde-scuro); }
.exp-blognav__voce.is-attiva { background: var(--carbone); border-color: var(--carbone); color: #fff; }

.exp-artbig {
	display: grid; grid-template-columns: 1.15fr 1fr; gap: clamp(1.5rem, 3vw, 2.8rem);
	align-items: center; text-decoration: none; color: inherit;
	padding-bottom: clamp(2.2rem, 4vw, 3.2rem); margin-bottom: clamp(2.2rem, 4vw, 3.2rem);
	border-bottom: 1px solid var(--linea);
}
.exp-artbig__media { aspect-ratio: 16 / 10; overflow: hidden; background: var(--neve); }
.exp-artbig__img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; }
.exp-artbig:hover .exp-artbig__img { transform: scale(1.03); }
.exp-artbig__title {
	margin: .4rem 0 .8rem; text-transform: uppercase;
	font-size: clamp(1.5rem, 2.8vw, 2.3rem); line-height: 1.1;
}
.exp-artbig:hover .exp-artbig__title { color: var(--verde-scuro); }
.exp-artbig__excerpt { margin: 0 0 1.1rem; color: var(--antracite-2); line-height: 1.65; max-width: 52ch; }
.exp-artbig__meta,
.exp-artcard__kicker {
	display: flex; flex-wrap: wrap; align-items: center; gap: .3rem 1.15rem;
	margin: 0; font-size: .72rem; font-weight: 700;
	letter-spacing: .1em; text-transform: uppercase; color: var(--antracite-2);
}
.exp-artcard__cat { color: var(--verde-scuro); }
.exp-artbig__more {
	display: inline-block; margin-top: 1.2rem; font-size: .78rem; font-weight: 700;
	letter-spacing: .1em; text-transform: uppercase;
	border-bottom: 2px solid var(--verde); padding-bottom: .25rem;
}

.exp-artcard { display: flex; }
.exp-artcard__link { display: flex; flex-direction: column; text-decoration: none; color: inherit; width: 100%; }
.exp-artcard__media { aspect-ratio: 3 / 2; overflow: hidden; background: var(--neve); margin-bottom: 1.1rem; }
.exp-artcard__img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; }
.exp-artcard__link:hover .exp-artcard__img { transform: scale(1.04); }
.exp-artcard__body { display: flex; flex-direction: column; flex: 1; }
.exp-artcard__title { margin: .5rem 0 .6rem; font-size: 1.18rem; line-height: 1.25; text-transform: uppercase; }
.exp-artcard__link:hover .exp-artcard__title { color: var(--verde-scuro); }
.exp-artcard__excerpt { margin: 0 0 1.1rem; color: var(--antracite-2); line-height: 1.6; font-size: .95rem; }
.exp-artcard__more {
	margin-top: auto; font-size: .74rem; font-weight: 700; letter-spacing: .1em;
	text-transform: uppercase; color: var(--verde-scuro);
}

@media (max-width: 860px) {
	.exp-artbig { grid-template-columns: 1fr; }
}

/* ---------- Blog: scheda articolo ---------- */
.exp-postpage .exp-cshero .exp-eyebrow a { color: var(--verde-chiaro); text-decoration: none; border-bottom: 1px solid transparent; }
.exp-postpage .exp-cshero .exp-eyebrow a:hover { border-bottom-color: currentColor; }
.exp-postmeta {
	display: flex; flex-wrap: wrap; gap: .5rem; margin: 1.3rem 0 0;
	font-size: .74rem; font-weight: 700; letter-spacing: .1em;
	text-transform: uppercase; color: var(--grigio);
}
.exp-postbody .exp-breadcrumbs { margin-top: 0; }
.exp-postbody__testo { margin: .6rem 0 0; }
.exp-postbody__testo > *:first-child { margin-top: 0; }
.exp-postbody__testo p { line-height: 1.75; margin: 0 0 1.25rem; }
.exp-postbody__testo h2 {
	margin: 2.6rem 0 1rem; font-size: clamp(1.25rem, 2.2vw, 1.6rem);
	text-transform: uppercase; line-height: 1.2;
}
.exp-postbody__testo ul, .exp-postbody__testo ol { margin: 0 0 1.5rem; padding-left: 1.2rem; }
.exp-postbody__testo li { line-height: 1.7; margin-bottom: .6rem; }
.exp-postbody__testo li::marker { color: var(--verde-scuro); }
.exp-postbody__testo strong { font-weight: 700; color: var(--antracite); }
.exp-postbody__testo a { color: var(--verde-scuro); }
.exp-postbody__testo img { max-width: 100%; height: auto; margin: 1.8rem 0; }

.exp-postfirma {
	max-width: 68ch; margin-top: clamp(2.4rem, 5vw, 3.4rem);
	border-top: 1px solid var(--linea); padding-top: 1.8rem;
}
.exp-postfirma p { margin: .5rem 0 0; color: var(--antracite-2); line-height: 1.65; }
.exp-postfirma .exp-eyebrow { color: var(--verde-scuro); }
.exp-postfirma__actions { margin-top: 1.2rem !important; }
.exp-postvicini { padding-top: 0; }

/* ---------- Archivio viaggi di gruppo ---------- */
.exp-viaggipage .exp-csmetodo__lista { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 2rem; }
.exp-viaggilista .exp-breadcrumbs { margin-top: 0; }
.exp-viaggilista .exp-filtri { margin-bottom: clamp(1.8rem, 3vw, 2.6rem); }
.exp-viaggicome { background: var(--neve); }
.exp-viaggistili { padding: clamp(2rem, 4vw, 3rem) 0 clamp(1rem, 2vw, 1.6rem); }
@media (max-width: 1080px) { .exp-viaggipage .exp-csmetodo__lista { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 620px) { .exp-viaggipage .exp-csmetodo__lista { grid-template-columns: 1fr; } }

.exp-facts__link { display: inline-block; text-decoration: none; border-bottom: 1px dashed var(--linea); padding-bottom: 2px; }
.exp-facts__link:hover i { border-color: var(--verde); }
.exp-list--doc li { position: relative; padding-left: 1.4rem; margin-bottom: .35rem; }
.exp-list--doc li::before { content: '\25C6'; position: absolute; left: 0; color: var(--verde); font-size: .7em; top: .25em; }
.exp-nota-box__nota { font-size: .82rem; color: var(--antracite-2); margin-top: .9rem; }

/* ---------- Pagina di tassonomia: tappe, highlight, filtri incrociati ---------- */
.exp-stfigli { padding: clamp(1.6rem, 3vw, 2.4rem) 0 0; }
.exp-stfigli__titolo {
	font-family: var(--f-display); font-weight: 700; font-stretch: 108%;
	font-size: clamp(1.05rem, 1.8vw, 1.3rem); text-transform: uppercase;
	letter-spacing: .04em; color: var(--antracite); margin: 0 0 .9rem;
}
.exp-stfigli .exp-chips li a span { opacity: .6; font-size: .8em; margin-left: .3em; }
.exp-sthigh { padding: clamp(2.4rem, 5vw, 4rem) 0; background: var(--neve); }
.exp-sthigh__grid {
	display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
	gap: clamp(1.4rem, 3vw, 2.4rem);
}
.exp-sthigh__item { border-top: 2px solid var(--verde); padding-top: 1.1rem; }
.exp-sthigh__idx {
	display: block; font-size: .72rem; font-weight: 700; letter-spacing: .18em;
	color: var(--verde-scuro); margin-bottom: .5rem;
}
.exp-sthigh__item h3 {
	font-family: var(--f-display); font-weight: 700; font-stretch: 108%;
	font-size: 1.12rem; line-height: 1.25; margin: 0 0 .5rem; color: var(--antracite);
}
.exp-sthigh__item p { margin: 0; color: var(--antracite-2); font-size: .93rem; line-height: 1.65; }
.exp-stincroci__gruppo { margin-bottom: 1.8rem; }
.exp-stincroci__gruppo h3 {
	font-size: .74rem; font-weight: 700; letter-spacing: .18em; text-transform: uppercase;
	color: var(--antracite-2); margin: 0 0 .7rem;
}

/* ---------- Mappa mondiale dei viaggi ---------- */
.exp-mappamondo__box {
	position: relative;
	height: clamp(360px, 58vh, 620px);
	border-radius: 14px;
	overflow: hidden;
	background: var(--neve);
	border: 1px solid var(--linea);
	z-index: 0;
}
.exp-mappamondo__attesa {
	position: absolute;
	inset: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	margin: 0;
	color: var(--antracite-2);
	font-size: .95rem;
	text-align: center;
	padding: 1rem;
}
.exp-pin span {
	display: block;
	width: 16px;
	height: 16px;
	margin: 3px;
	border-radius: 50%;
	background: var(--verde);
	border: 3px solid var(--bianco);
	box-shadow: 0 1px 6px rgba(0, 0, 0, .35);
}
.exp-cluster {
	display: flex;
	align-items: center;
	justify-content: center;
	border-radius: 50%;
	background: var(--verde);
	color: var(--bianco);
	font-weight: 700;
	font-size: .9rem;
	border: 3px solid var(--bianco);
	box-shadow: 0 2px 10px rgba(0, 0, 0, .3);
}
.exp-cluster--xl { background: var(--verde-scuro); }
.exp-mappapop { width: 240px; }
.exp-mappapop img { width: 100%; height: 130px; object-fit: cover; }
.exp-mappapop__body { padding: .75rem .85rem .85rem; display: grid; gap: .3rem; }
.exp-mappapop__dest { font-size: .72rem; letter-spacing: .08em; text-transform: uppercase; color: var(--antracite-2); }
.exp-mappapop__title { font-family: var(--f-display); font-weight: 700; font-size: 1rem; line-height: 1.25; text-decoration: none; color: var(--antracite); }
.exp-mappapop__title:hover { color: var(--verde-scuro); }
.exp-mappapop__meta { font-size: .85rem; color: var(--antracite-2); }
.exp-mappapop__prezzo { font-weight: 700; color: var(--verde-scuro); }
.leaflet-popup-content { margin: 0; }
.leaflet-popup-content-wrapper { padding: 0; border-radius: 12px; overflow: hidden; }

/* ---------- Scheda viaggio: navigazione e classificazioni ---------- */
.exp-schedanav {
	position: sticky;
	/* La topbar non e sticky: scrollando sopra resta solo l'header (72px). */
	top: 72px;
	z-index: 5;
	margin: 0 0 1.5rem;
	background: var(--bianco);
	border-bottom: 1px solid var(--linea);
}
.exp-schedanav ul {
	display: flex;
	gap: .25rem;
	margin: 0;
	padding: 0;
	list-style: none;
	overflow-x: auto;
	scrollbar-width: none;
}
.exp-schedanav ul::-webkit-scrollbar { display: none; }
.exp-viaggio__layout [id] { scroll-margin-top: 140px; }
.exp-faqlista [id] { scroll-margin-top: 140px; }
.exp-schedanav a {
	display: block;
	white-space: nowrap;
	padding: .85rem .85rem .75rem;
	font-size: .82rem;
	letter-spacing: .06em;
	text-transform: uppercase;
	font-weight: 600;
	color: var(--antracite-2);
	text-decoration: none;
	border-bottom: 2px solid transparent;
}
.exp-schedanav a:hover { color: var(--antracite); }
.exp-schedanav a.is-attiva { color: var(--verde-scuro); border-bottom-color: var(--verde); }

.exp-classif {
	display: flex;
	flex-wrap: wrap;
	gap: .5rem;
	margin: 0 0 2rem;
}
.exp-classif__voce {
	display: grid;
	gap: .1rem;
	padding: .5rem .85rem;
	border: 1px solid var(--linea);
	border-radius: 10px;
	text-decoration: none;
	background: var(--bianco);
	transition: border-color var(--tr), background var(--tr);
}
.exp-classif__voce:hover { border-color: var(--verde); background: var(--neve); }
.exp-classif__occhiello { font-size: .68rem; letter-spacing: .09em; text-transform: uppercase; color: var(--antracite-2); }
.exp-classif__nome { font-weight: 600; font-size: .93rem; }

/* ---------- Scheda viaggio: il viaggio in breve ---------- */
.exp-breve { margin: 0 0 2.5rem; }
.exp-breve__title { margin-top: 0; }
.exp-breve__chips {
	display: flex;
	flex-wrap: wrap;
	gap: .5rem;
	margin: 0 0 1.5rem;
	padding: 0;
	list-style: none;
}
.exp-breve__chips li a,
.exp-breve__chips li {
	display: inline-flex;
	align-items: center;
	gap: .4rem;
	padding: .4rem .8rem;
	border: 1px solid var(--linea);
	border-radius: var(--r-chip);
	font-size: .87rem;
	color: var(--antracite);
	text-decoration: none;
}
.exp-breve__chips li { padding: 0; border: 0; }
.exp-breve__chips li a:hover { border-color: var(--verde); color: var(--verde-scuro); }
.exp-ico { flex: none; color: var(--verde-scuro); }

.exp-breve__dati { margin: 0; border-top: 1px solid var(--linea); }
.exp-breve__riga {
	display: grid;
	grid-template-columns: minmax(160px, 34%) 1fr;
	gap: 1rem;
	padding: .7rem 0;
	border-bottom: 1px solid var(--linea);
}
.exp-breve__riga dt {
	font-size: .74rem;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--antracite-2);
	font-weight: 600;
}
.exp-breve__riga dd { margin: 0; }
@media (max-width: 640px) {
	.exp-breve__riga { grid-template-columns: 1fr; gap: .15rem; }
}

/* ---------- Scheda viaggio: dettagli tecnici, servizi, sostenibilita ---------- */
.exp-trek { list-style: none; margin: .5rem 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 1.5rem; }
.exp-trek li { display: grid; gap: .1rem; }
.exp-trek span { font-size: .72rem; letter-spacing: .08em; text-transform: uppercase; color: var(--antracite-2); }
.exp-programma { list-style: none; margin: .5rem 0 0; padding: 0; display: grid; gap: .55rem; }
.exp-programma li { display: flex; gap: .6rem; align-items: baseline; }
.exp-programma__ico { font-size: 1.05rem; line-height: 1; }
.exp-programma__testo { display: grid; gap: .1rem; }
.exp-programma__testo small { font-size: .86rem; color: var(--antracite-2); }
.exp-link { color: var(--verde-scuro); font-weight: 600; }

.exp-servizi { margin: 2.5rem 0; }
.exp-servizi__intro { color: var(--antracite-2); margin-top: -.5rem; }
.exp-servizi__grid { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }
.exp-servizio { border: 1px solid var(--linea); border-radius: 12px; padding: 1.1rem; display: grid; gap: .4rem; align-content: start; }
.exp-servizio h3 { margin: 0; font-size: 1.02rem; }
.exp-servizio p { margin: 0; font-size: .92rem; color: var(--antracite-2); }
.exp-servizio__ico { font-size: 1.4rem; line-height: 1; }
.exp-servizio__cta { color: var(--verde-scuro); font-weight: 600; text-decoration: none; font-size: .9rem; }
.exp-servizio__cta:hover { text-decoration: underline; }

.exp-sost { margin: 2.5rem 0; background: var(--neve); border-radius: 14px; padding: 1.5rem; }
.exp-sost h2 { margin-top: 0; }
.exp-sost__lista { list-style: none; margin: 0; padding: 0; display: grid; gap: 1.1rem; }
.exp-sost__lista li { display: flex; gap: .8rem; }
.exp-sost__ico { font-size: 1.3rem; line-height: 1.3; flex: none; }
.exp-sost__lista h3 { margin: 0 0 .2rem; font-size: 1rem; }
.exp-sost__lista p { margin: 0; font-size: .92rem; color: var(--antracite-2); }

/* ---------- Consenso: facciata degli embed ---------- */
.exp-consenso { position: relative; }
.exp-consenso__facciata {
	position: relative;
	display: grid;
	place-items: center;
	gap: 1rem;
	min-height: 240px;
	aspect-ratio: var(--exp-ratio, auto);
	padding: 1.5rem;
	/* aspect-ratio + min-height ricavano la larghezza dall'altezza: senza questo
	   la facciata resta larga 427px anche in una colonna da 335. */
	max-width: 100%;
	text-align: center;
	background: var(--neve);
	border: 1px dashed var(--linea);
	border-radius: 14px;
	overflow: hidden;
}
.exp-consenso__facciata > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; filter: saturate(.5) brightness(.8); }
.exp-consenso__testo { position: relative; display: grid; gap: .4rem; max-width: 44ch; }
.exp-consenso__facciata > img ~ .exp-consenso__testo { background: rgba(255, 255, 255, .92); padding: 1.1rem; border-radius: 12px; }
.exp-consenso__titolo { margin: 0; font-weight: 700; }
.exp-consenso__nota { margin: 0; font-size: .9rem; color: var(--antracite-2); }
.exp-consenso__azioni { margin: .4rem 0 0; display: flex; flex-wrap: wrap; gap: .5rem; justify-content: center; align-items: center; }
.exp-consenso__prefs {
	background: none;
	border: 0;
	padding: .4rem .2rem;
	color: var(--antracite-2);
	text-decoration: underline;
	font-size: .88rem;
}
.exp-consenso__prefs:hover { color: var(--antracite); }

/* ---------- Consenso: banner ---------- */
.exp-consenso-banner {
	position: fixed;
	left: 50%;
	bottom: 1rem;
	transform: translateX(-50%);
	width: min(920px, calc(100vw - 2rem));
	z-index: 200;
	background: var(--bianco);
	border: 1px solid var(--linea);
	border-radius: 14px;
	box-shadow: 0 12px 40px rgba(0, 0, 0, .18);
	padding: 1.1rem 1.25rem;
}
.exp-consenso-banner__inner { display: grid; gap: .9rem; grid-template-columns: 1fr auto; align-items: center; }
.exp-consenso-banner__title { margin: 0 0 .25rem; font-weight: 700; }
.exp-consenso-banner p { margin: 0; font-size: .92rem; color: var(--antracite-2); }
.exp-consenso-banner__azioni { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; }
.exp-consenso-pannello { margin-top: 1rem; border-top: 1px solid var(--linea); padding-top: 1rem; }
.exp-consenso-pannello fieldset { border: 0; margin: 0; padding: 0; display: grid; gap: .7rem; }
.exp-consenso-pannello legend { font-weight: 700; padding: 0 0 .5rem; }
.exp-consenso-voce { display: grid; grid-template-columns: auto 1fr; gap: .6rem; align-items: start; font-size: .9rem; color: var(--antracite-2); }
.exp-consenso-voce--fissa { opacity: .8; }
@media (max-width: 720px) {
	.exp-consenso-banner__inner { grid-template-columns: 1fr; }
	.exp-consenso-banner__azioni .exp-btn { flex: 1 1 auto; }
}

/* ---------- Recensioni ---------- */
.exp-recensioni { margin: 2.5rem 0; }
.exp-recensioni__head { display: flex; flex-wrap: wrap; gap: .75rem; align-items: baseline; justify-content: space-between; }
.exp-recensioni__media { font-size: .92rem; color: var(--antracite-2); }
.exp-recensioni__nota { flex: 1 0 100%; margin: .25rem 0 0; font-size: .92rem; color: var(--antracite-2); }
.exp-recensioni__grid { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); margin-top: 1rem; }

/* Il nastro: una pista larga il doppio del contenuto che trasla di meta. La
   seconda copia delle card entra da destra mentre la prima esce, e il giro non
   ha ne inizio ne fine. La maschera ai lati evita il taglio netto sul bordo. */
.exp-nastro { overflow: hidden; margin-top: 1rem; -webkit-mask-image: linear-gradient(90deg, transparent, #000 4%, #000 96%, transparent); mask-image: linear-gradient(90deg, transparent, #000 4%, #000 96%, transparent); }
.exp-nastro__pista { display: flex; gap: 1rem; width: max-content; animation: exp-nastro var(--durata, 40s) linear infinite; }
.exp-nastro__pista--inv { animation-direction: reverse; }
.exp-nastro:hover .exp-nastro__pista, .exp-nastro:focus-within .exp-nastro__pista { animation-play-state: paused; }
.exp-nastro--fermo { overflow: visible; -webkit-mask-image: none; mask-image: none; }
.exp-nastro--fermo .exp-nastro__pista { width: auto; flex-wrap: wrap; animation: none; }
@keyframes exp-nastro { from { transform: translate3d(0, 0, 0); } to { transform: translate3d(-50%, 0, 0); } }
/* Chi ha chiesto meno animazioni al sistema si scorre il nastro a mano. */
@media (prefers-reduced-motion: reduce) {
	.exp-nastro { overflow-x: auto; }
	.exp-nastro__pista { animation: none; }
}

.exp-recensione { border: 1px solid var(--linea); border-radius: 14px; padding: 1.2rem 1.3rem; display: flex; flex-direction: column; gap: .5rem; align-content: start; background: var(--bianco); }
.exp-nastro .exp-recensione { flex: 0 0 300px; width: 300px; }
.exp-recensione h3 { margin: 0; font-size: 1rem; line-height: 1.35; }
.exp-recensione p { margin: 0; font-size: .93rem; color: var(--antracite-2); }
/* Le recensioni sono lunghe una riga o dieci: senza un tetto le card diventano
   di altezze diverse e il nastro sembra una pila di foglietti. */
.exp-recensione__testo { display: -webkit-box; -webkit-line-clamp: 6; -webkit-box-orient: vertical; overflow: hidden; }
.exp-recensione__firma { margin-top: auto !important; padding-top: .35rem; }
.exp-recensione__firma { font-size: .85rem; font-weight: 600; }
.exp-recensione__nota { font-weight: 400; color: var(--antracite-2); }
.exp-recensione__nota a { color: inherit; }
.exp-footer__tp { margin: 0 0 .7rem; font-size: .9rem; }
.exp-footer__tp a { color: inherit; text-decoration: underline; }

.exp-stelle i { font-style: normal; color: var(--linea); letter-spacing: .05em; }
.exp-stelle i.on { color: var(--warn-l); }
.exp-recensioni__widget { margin-top: 1.5rem; }
.exp-recensioni__profilo { margin-top: 1rem; }

/* ---------- Prenotazione: codice sconto, consenso, lista d'attesa ---------- */
.exp-coupon__riga { display: flex; gap: .5rem; }
.exp-coupon__riga input { flex: 1 1 auto; min-width: 0; text-transform: uppercase; }
.exp-coupon__esito { margin: .4rem 0 0; font-size: .85rem; color: var(--ok-d); min-height: 1.2em; }
.exp-coupon__esito.is-ko { color: var(--no-d); }
.exp-totale__row--sconto span:last-child { color: var(--ok-d); font-weight: 600; }
.exp-check--consenso { display: grid; gap: .2rem; }
.exp-check--consenso small { display: block; opacity: .75; font-size: .8rem; line-height: 1.4; }
.exp-booking__label { display: block; font-weight: 600; margin-bottom: .35rem; }
.exp-attesa-box { margin-top: 1.5rem; padding-top: 1.25rem; border-top: 1px solid var(--linea-scura); }
.exp-attesa-box__titolo { font-weight: 700; margin: 0 0 .3rem; }
.exp-attesa-box p { font-size: .9rem; }

/* ---------- Partecipanti ---------- */
.exp-partecipanti { margin: 2.5rem 0; }
.exp-partecipanti__stato { color: var(--antracite-2); }
.exp-partecipanti__nomi { list-style: none; display: flex; flex-wrap: wrap; gap: .5rem; margin: 1rem 0 .5rem; padding: 0; }
.exp-partecipanti__nomi li { padding: .35rem .8rem; border-radius: var(--r-chip); background: var(--neve); border: 1px solid var(--linea); font-size: .9rem; font-weight: 600; }
.exp-partecipanti__nota { font-size: .85rem; color: var(--antracite-2); margin: .5rem 0 0; }

/* ---------- Footer: pagamenti, ATTA, recensioni ---------- */
.exp-footer__loghi { list-style: none; display: flex; flex-wrap: wrap; gap: .4rem; margin: .6rem 0 1.5rem; padding: 0; }
.exp-footer__loghi img { display: block; border-radius: 4px; background: var(--bianco); }
.exp-footer__paga { margin-bottom: .5rem; }
.exp-footer__atta img { max-width: 250px; height: auto; }
.exp-footer__recensioni { margin-top: 1.25rem; }
.exp-footer__recensioni .exp-consenso__facciata { min-height: 0; padding: 1rem; background: rgba(255, 255, 255, .06); border-color: var(--linea-scura); }
.exp-footer__contatti em { opacity: .75; }
.exp-footer__contatti strong { display: inline-block; margin-top: .35rem; }
.exp-footer__prefs { background: none; border: 0; padding: 0; color: inherit; text-decoration: underline; font-size: inherit; }

/* ---- Secondo giro (3.11.0): box prenotazione snello, checkout dedicato, stato programmato ---- */
.exp-honeypot { position: absolute; left: -9999px; width: 1px; height: 1px; opacity: 0; }
.exp-badge--programmato { color: var(--neutro-l); border-style: dotted; }
.exp-board .exp-badge--programmato { color: var(--grigio); }
.exp-board__row--programmato { cursor: default; border-style: dashed; }
.exp-board__row--programmato:hover { border-color: var(--linea-scura); }
.exp-booking select { width: 100%; font-family: var(--f-body); font-size: .95rem; background: var(--carbone-2); border: 1px solid var(--linea-scura); padding: .7rem .8rem; color: #fff; }
.exp-booking .exp-form select { width: 100%; font-family: var(--f-body); font-size: .95rem; background: var(--carbone-2); border: 1px solid var(--linea-scura); padding: .7rem .8rem; color: #fff; }
.exp-form select { width: 100%; font-family: var(--f-body); font-size: .95rem; background: var(--bianco); border: 1px solid var(--linea); padding: .75rem .85rem; color: var(--antracite); }
.exp-form select:focus { outline: 2px solid var(--verde-scuro); border-color: var(--verde-scuro); }
.exp-form--compact { grid-template-columns: 1fr; }

.exp-checkout { padding-top: clamp(1.5rem, 3vw, 2.5rem); padding-bottom: var(--sez); }
.exp-checkout .exp-page-title { margin-bottom: .4rem; }
.exp-checkout__intro { max-width: 60ch; color: var(--antracite-2); margin: 0 0 1.8rem; }
.exp-checkout__vuoto { background: var(--neve); border: 1px solid var(--linea); padding: clamp(1.5rem, 3vw, 2.2rem); max-width: 720px; }
.exp-checkout__vuoto p:last-child { display: flex; flex-wrap: wrap; gap: .7rem; margin: 1.2rem 0 0; }
.exp-checkout__layout { display: grid; grid-template-columns: minmax(0, 1fr) 380px; gap: clamp(2rem, 4vw, 3.5rem); align-items: start; }
.exp-checkout__side { position: sticky; top: 96px; }
.exp-checkout__sez { background: var(--bianco); border: 1px solid var(--linea); padding: clamp(1.2rem, 2.5vw, 1.8rem); margin-bottom: 1.2rem; }
.exp-checkout__sez h2 { font-size: 1.05rem; text-transform: uppercase; letter-spacing: .04em; border-bottom: 2px solid var(--verde); padding-bottom: .45rem; margin: 0 0 1rem; }
.exp-checkout__viaggio { display: grid; grid-template-columns: 120px minmax(0, 1fr); gap: 1rem; align-items: center; margin-bottom: 1.1rem; }
/* senza miniatura titolo e date finivano nella colonna della foto, a 90 px */
.exp-checkout__viaggio.exp-checkout__viaggio--senza-foto { grid-template-columns: minmax(0, 1fr); }
.exp-checkout__foto { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.exp-checkout__titolo-viaggio { font-family: var(--f-display); font-weight: 700; font-stretch: 112%; text-transform: uppercase; font-size: 1.05rem; margin: 0 0 .3rem; }
.exp-checkout__titolo-viaggio a { color: inherit; text-decoration: none; }
.exp-checkout__data { margin: 0; font-size: .9rem; color: var(--antracite-2); display: flex; flex-wrap: wrap; gap: .4rem .7rem; align-items: center; }
.exp-checkout__griglia { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.exp-checkout__campo { margin-bottom: .9rem; }
.exp-checkout__griglia .exp-checkout__campo { margin-bottom: 0; }
.exp-checkout__campo--full { grid-column: 1 / -1; }
.exp-checkout__campo label, .exp-coupon > label { display: block; font-size: .64rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: var(--antracite-2); margin-bottom: .35rem; }
.exp-checkout__campo label small { text-transform: none; letter-spacing: 0; font-weight: 400; }
.exp-checkout__form input[type="text"], .exp-checkout__form input[type="email"], .exp-checkout__form input[type="tel"], .exp-checkout__form select, .exp-checkout__form textarea {
	width: 100%; font-family: var(--f-body); font-size: .95rem; background: var(--bianco); border: 1px solid var(--linea); padding: .75rem .85rem; color: var(--antracite);
}
.exp-checkout__form input:focus, .exp-checkout__form select:focus, .exp-checkout__form textarea:focus { outline: 2px solid var(--verde-scuro); outline-offset: 0; border-color: var(--verde-scuro); }
.exp-checkout__form input:user-invalid { border-color: var(--no-l); }
.exp-checkout__fieldset { border: 1px solid var(--linea); padding: .9rem 1rem .4rem; margin: 0 0 1rem; }
.exp-checkout__fieldset legend { font-size: .64rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: var(--antracite-2); padding: 0 .4em; }
.exp-checkout__form .exp-check { color: var(--antracite); }
.exp-checkout__form .exp-check small { color: var(--antracite-2); }
.exp-check--extra span { display: block; }
.exp-check__desc { display: block; font-size: .8rem; margin-top: .15rem; }
.exp-check--consenso { grid-template-columns: auto minmax(0, 1fr); column-gap: .6rem; align-items: flex-start; padding: .7rem .8rem; border: 1px solid var(--linea); background: var(--neve); font-size: .84rem; line-height: 1.5; }
.exp-check--consenso input { margin-top: .3rem; flex: none; }
.exp-check--consenso a { color: var(--verde-scuro); font-weight: 600; }
.exp-check__versione { display: block; font-size: .68rem; color: var(--neutro-l); margin-top: .25rem; }
.exp-check__doc { white-space: nowrap; }
.exp-checkout__hint { margin: .4rem 0 0; font-size: .78rem; line-height: 1.45; color: var(--antracite-2); }
.exp-checkout__viaggiatore { min-inline-size: 0; margin: 0 0 .9rem; }
.exp-checkout__hint + [data-viaggiatori],
.exp-checkout__hint + .exp-checkout__campo,
.exp-checkout__hint + .exp-checkout__griglia { margin-top: .8rem; }
.exp-checkout__viaggiatore .exp-checkout__griglia { margin-bottom: .5rem; }
.exp-checkout__viaggiatore .exp-checkout__campo { min-width: 0; }
.exp-checkout__viaggiatore textarea { min-height: 3.2rem; }
.exp-checkout__griglia > * { min-width: 0; }
.exp-checkout__sez .exp-coupon { margin: 0 0 1rem; }
.exp-checkout .exp-coupon__esito { font-size: .82rem; margin: .5rem 0 0; color: var(--ok-l); min-height: 1em; }
.exp-checkout .exp-coupon__esito.is-ko { color: var(--no-l); }
.exp-checkout__azioni { padding: .4rem 0; }
.exp-checkout__azioni .exp-btn { font-size: 1.05rem; padding: 1rem 1.4rem; }
.exp-checkout__azioni .exp-btn:disabled, .exp-checkout__azioni .exp-btn.is-disabilitato { opacity: .5; cursor: not-allowed; }
.exp-checkout__demo { font-size: .68rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--antracite-2); text-align: center; margin: .8rem 0 0; }
.exp-checkout__autosave { font-size: .78rem; color: var(--antracite-2); text-align: center; margin: .6rem 0 0; min-height: 1.2em; }
.exp-riep { background: var(--carbone); color: #fff; padding: 1.6rem 1.5rem 1.5rem; }
.exp-riep__titolo { font-size: 1.15rem; text-transform: uppercase; letter-spacing: .04em; color: #fff; border-bottom: 2px solid var(--verde); padding-bottom: .55rem; margin: 0 0 1rem; }
.exp-riep__lista { list-style: none; margin: 0; padding: 0; }
.exp-riep__lista li { display: flex; justify-content: space-between; gap: 1rem; font-size: .86rem; padding: .35rem 0; color: var(--grigio); border-bottom: 1px dashed var(--linea-scura); }
.exp-riep__lista li strong { color: #fff; text-align: right; }
.exp-riep__lista li small { font-size: .72rem; }
.exp-riep__sconto strong { color: var(--verde-chiaro) !important; }
.exp-riep__totale { color: #fff !important; font-weight: 600; }
.exp-riep__ora { color: #fff !important; font-size: 1rem !important; border-bottom: 0 !important; padding-top: .8rem !important; }
.exp-riep__ora strong { color: var(--verde-chiaro) !important; font-size: 1.35rem; }
.exp-riep__nota { font-size: .78rem; color: var(--grigio); margin: .9rem 0 0; }
.exp-riep__cassa { color: #fff !important; flex-wrap: wrap; row-gap: .15rem; }
.exp-riep__cassa strong { white-space: nowrap; }
.exp-riep__cassa small { flex: 0 0 100%; font-weight: 400; font-size: .72rem; line-height: 1.35; color: var(--grigio); text-transform: none; letter-spacing: 0; }
.exp-riep__saldo { flex-wrap: wrap; row-gap: .1rem; }
.exp-riep__saldo small { flex: 0 0 100%; text-align: right; color: #fff; }
@media (max-width: 1020px) {
	.exp-checkout__layout { grid-template-columns: minmax(0, 1fr); }
	.exp-checkout__side { position: static; order: -1; }
	.exp-riep__lista li:not(.exp-riep__ora):not(.exp-riep__totale):not(.exp-riep__cassa) { display: none; }
	.exp-riep { padding: 1rem 1.2rem; }
	.exp-riep__titolo { font-size: .95rem; margin-bottom: .4rem; }
	.exp-riep__nota { display: none; }
}
@media (max-width: 640px) {
	.exp-checkout__griglia { grid-template-columns: 1fr; }
	.exp-checkout__viaggio { grid-template-columns: 90px minmax(0, 1fr); }
	.exp-checkout__form input, .exp-checkout__form select, .exp-checkout__form textarea { font-size: 16px; }
	.exp-checkout__azioni .exp-btn { position: sticky; bottom: .6rem; z-index: 5; box-shadow: 0 6px 24px rgba(30, 27, 27, .25); }
}

/* ---- Scheda viaggio (3.11.1): colonna laterale, livelli, Explorer Pro per partenza, gruppo ----
   3.37.34: la colonna non scorre piu dentro di se (il modulo si vedeva a pezzi).
   Se e piu alta dello schermo scorre con la pagina finche il fondo entra, poi
   resta ferma: --exp-side-h e la sua altezza, misurata in main.js. */
@media (min-width: 1021px) {
	.exp-viaggio__side { top: min(96px, calc(100vh - var(--exp-side-h, 0px) - 16px)); }
}
.exp-form-section--side { margin-top: 1.5rem; background: var(--neve); border: 1px solid var(--linea); padding: 1.3rem 1.4rem; }
.exp-form-section--side h2 { font-size: 1.15rem; text-transform: uppercase; margin: 0 0 .3rem; }
.exp-form-section--side > p { margin: 0 0 1rem; font-size: .92rem; color: var(--antracite-2); }
.exp-breve__sub { font-size: .72rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: var(--antracite-2); margin: 1.3rem 0 .6rem; }
.exp-breve .exp-facts { margin-bottom: 1.4rem; }
.exp-explorer__intro { margin: -.6rem 0 1.2rem; color: var(--antracite-2); }
.exp-explorer__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.2rem; }
.exp-coordcard { display: grid; grid-template-columns: 96px minmax(0, 1fr); gap: 1rem; align-items: start; background: var(--neve); border: 1px solid var(--linea); padding: 1rem; }
.exp-coordcard__media { display: block; aspect-ratio: 1 / 1; overflow: hidden; border-radius: 50%; background: var(--linea); }
.exp-coordcard__media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.exp-coordcard__body { min-width: 0; }
.exp-coordcard__occhiello { display: block; font-size: .62rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: var(--verde-scuro); margin-bottom: .25rem; }
.exp-coordcard__occhiello:empty { display: none; }
.exp-coordcard__name { display: block; font-family: var(--f-display); font-weight: 700; font-stretch: 112%; font-size: 1.15rem; text-transform: uppercase; text-decoration: none; color: inherit; line-height: 1.15; }
.exp-coordcard__name:hover, .exp-coordcard__name:focus-visible { color: var(--verde-scuro); }
.exp-coordcard__role { display: block; font-size: .68rem; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--antracite-2); margin-top: .25rem; }
.exp-coordcard__role:empty { display: none; }
.exp-coordcard__bio { margin: .6rem 0 0; font-size: .88rem; color: var(--antracite-2); }
.exp-partecipanti__nomi li { display: inline-flex; align-items: baseline; gap: .4rem; }
.exp-partecipanti__nomi small { font-weight: 500; font-size: .74rem; color: var(--antracite-2); }
@media (max-width: 640px) {
	.exp-explorer__grid { grid-template-columns: 1fr; }
	.exp-coordcard { grid-template-columns: 72px minmax(0, 1fr); }
}

/* ---- Card partenza ---- */
.exp-grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.exp-pcard--senza-partenza .exp-pcard__stato:empty { display: none; }
.exp-badge--richiesta { color: var(--antracite-2); }
.exp-dark .exp-badge--richiesta, .exp-board .exp-badge--richiesta { color: var(--grigio); }

/* ---- Footer con blocchi fiducia, pagine Paga online / Liste evento (3.11.2) ---- */
.exp-footer__fiducia { max-width: var(--max, 1240px); margin: 0 auto; padding: 0 clamp(1rem, 4vw, 2.5rem) 2.2rem; }
.exp-footer__blocchi { list-style: none; margin: 0; padding: 1.6rem 0 0; border-top: 1px solid var(--linea-scura); display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 1rem 2rem; }
.exp-footer__blocchi li { margin: 0; }
.exp-footer__blocco { display: flex; align-items: center; gap: .9rem; text-decoration: none; color: inherit; }
/* Larghezza libera: qui ci finisce sia un'iconcina quadrata sia il badge ATTA,
   che e orizzontale e a 64px fissi diventava illeggibile. */
.exp-footer__blocco img { width: auto; max-width: 132px; height: auto; max-height: 42px; object-fit: contain; flex: none; }
.exp-footer__blocco-icona { font-size: 1.6rem; line-height: 1; flex: none; width: 2.2rem; text-align: center; }
.exp-footer__blocco-testo strong { display: block; color: #fff; font-size: .82rem; letter-spacing: .06em; text-transform: uppercase; }
.exp-footer__blocco-testo small { display: block; font-size: .8rem; color: var(--grigio); margin-top: .15rem; }
a.exp-footer__blocco:hover strong { color: var(--verde-chiaro); }
/* La fila dei circuiti di pagamento: i loghi sono su fondo chiaro, quindi
   prendono una pastiglia bianca per non sparire sul footer scuro. */
.exp-footer__blocco-testo .exp-footer__tp--blocco { display: block; margin: .3rem 0 0; font-size: .8rem; color: var(--grigio); line-height: 1.5; }
.exp-footer__blocco-testo .exp-footer__tp--blocco strong { display: inline; text-transform: none; letter-spacing: 0; font-size: inherit; color: #fff; }
.exp-footer__blocco-testo .exp-footer__tp--blocco .exp-stelle { vertical-align: baseline; }
.exp-footer__blocco-loghi { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem; margin-top: .45rem; }
.exp-footer__blocco-loghi img { width: 34px; height: 24px; max-width: none; max-height: none; object-fit: contain; background: #fff; border-radius: 3px; padding: 2px; flex: none; }

.exp-plpage__layout { display: grid; grid-template-columns: minmax(0, 1fr) 380px; gap: clamp(2rem, 4vw, 3.5rem); align-items: start; }
.exp-plpage__main h2 { font-size: clamp(1.3rem, 2.2vw, 1.7rem); text-transform: uppercase; border-bottom: 2px solid var(--verde); padding-bottom: .4rem; margin: 1.6rem 0 1rem; }
.exp-plpage__main .exp-nota-box h2, .exp-plpage__side .exp-nota-box h2 { font-size: 1rem; border-bottom: 0; margin: 0 0 .5rem; }
.exp-plpage__side { position: sticky; top: 96px; display: grid; gap: 1.2rem; }
.exp-plpage__testo { margin-bottom: 1.5rem; }
.exp-plform { background: var(--neve); border: 1px solid var(--linea); padding: clamp(1.2rem, 3vw, 2rem); }
/* Metodi online: riquadri cliccabili a tutta riga. Senza queste regole il fieldset
   restava grezzo e il radio, preso da «.exp-form input» a width 100%, finiva centrato
   sopra la scritta. */
.exp-plform__metodi { grid-column: 1 / -1; border: 0; margin: 0; padding: 0; min-inline-size: 0; }
.exp-plform__metodi legend { padding: 0; margin-bottom: .5rem; font-size: .64rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: var(--antracite-2); }
.exp-form .exp-plform__metodo { display: inline-flex; align-items: center; gap: .65rem; margin: 0 .6rem .6rem 0; padding: .8rem 1.1rem; background: var(--bianco); border: 1px solid var(--linea); font-size: .72rem; letter-spacing: .1em; color: var(--antracite); cursor: pointer; transition: border-color var(--tr), box-shadow var(--tr); }
.exp-form .exp-plform__metodo:hover { border-color: var(--antracite-2); }
.exp-form .exp-plform__metodo:has(input:checked) { border-color: var(--verde-scuro); box-shadow: inset 0 0 0 1px var(--verde-scuro); }
.exp-form .exp-plform__metodo input { width: auto; margin: 0; padding: 0; accent-color: var(--verde-scuro); }
.exp-form--inline .exp-form__field { margin-bottom: .6rem; }
.exp-form--inline input { text-transform: uppercase; }
.exp-listepage__intro { font-size: 1.05rem; max-width: 60ch; }
.exp-liste { margin-top: 1rem; }
.exp-lista-card { background: var(--bianco); border: 1px solid var(--linea); }
.exp-lista-card__link { display: flex; flex-direction: column; height: 100%; text-decoration: none; color: inherit; }
.exp-lista-card__media { aspect-ratio: 16 / 10; overflow: hidden; background: var(--neve); }
.exp-lista-card__media img { width: 100%; height: 100%; object-fit: cover; }
.exp-lista-card__body { padding: 1rem 1.1rem 1.2rem; display: flex; flex-direction: column; flex: 1; }
.exp-lista-card__data { font-size: .68rem; letter-spacing: .16em; text-transform: uppercase; font-weight: 600; color: var(--verde-scuro); }
.exp-lista-card__body h3 { margin: .3rem 0 .2rem; font-size: 1.15rem; text-transform: uppercase; }
.exp-lista-card__chi { margin: 0; font-weight: 600; }
.exp-lista-card__viaggio { margin: .2rem 0 0; color: var(--antracite-2); font-size: .9rem; }
.exp-lista-card__cta { margin-top: auto; padding-top: .8rem; font-size: .74rem; letter-spacing: .08em; text-transform: uppercase; font-weight: 700; color: var(--verde-scuro); }
.exp-lista-card__link:hover h3, .exp-lista-card__link:hover .exp-lista-card__cta { color: var(--verde-scuro); text-decoration: underline; }
.exp-listapage__foto { margin-bottom: 1.5rem; }
.exp-listapage__foto img { max-width: 420px; width: 100%; height: auto; display: block; }
.exp-listapage__viaggio { font-size: 1.05rem; margin: 1rem 0 1.6rem; }
.exp-listapage__viaggio span { display: block; font-size: .66rem; letter-spacing: .16em; text-transform: uppercase; color: var(--antracite-2); }
.exp-listapage__box .exp-alert { margin-bottom: 1rem; }
.exp-listapage__quanti { font-weight: 600; color: var(--verde-scuro); }
.exp-listapage__box .exp-form--book input, .exp-listapage__box .exp-form--book textarea { width: 100%; }
@media (max-width: 1020px) {
	.exp-plpage__layout { grid-template-columns: minmax(0, 1fr); }
	.exp-plpage__side { position: static; }
}

/* ---- Collaudo mobile/desktop (3.11.3): prezzo del pulsante checkout su una riga, nav scheda compatta a 1021-1440px, colonna laterale statica sotto 1020px ---- */
.exp-checkout__azioni .exp-btn [data-riep="paga_ora_btn"] { white-space: nowrap; }
@media (max-width: 640px) {
	.exp-checkout__azioni .exp-btn { flex-wrap: wrap; justify-content: center; text-align: center; column-gap: .35em; }
}
@media (max-width: 1020px) {
	.exp-viaggio__side { position: static; }
}

/* ---------- Pulsante WhatsApp ---------- */
.exp-wa {
	position: fixed;
	right: 1rem;
	bottom: 1rem;
	z-index: 190;
	display: inline-flex;
	align-items: center;
	gap: .55rem;
	max-width: 56px;
	padding: 0;
	height: 56px;
	border-radius: 999px;
	background: #25D366;
	color: #fff;
	text-decoration: none;
	box-shadow: 0 10px 28px rgba(0, 0, 0, .22);
	overflow: hidden;
	transition: max-width var(--tr), background var(--tr), box-shadow var(--tr), opacity var(--tr), transform var(--tr);
}
.exp-wa__icona {
	flex: 0 0 56px;
	display: grid;
	place-items: center;
	width: 56px;
	height: 56px;
}
.exp-wa__icona svg { width: 28px; height: 28px; display: block; }
.exp-wa__testo {
	white-space: nowrap;
	padding-right: 1.15rem;
	font-weight: 600;
	font-size: .95rem;
}
.exp-wa:hover, .exp-wa:focus-visible { background: #1DA851; color: #fff; box-shadow: 0 14px 34px rgba(0, 0, 0, .28); }
.exp-wa:focus-visible { outline: 3px solid var(--carbone); outline-offset: 3px; }

/* L'etichetta si apre solo dove c e spazio e un puntatore: sul telefono resta il cerchio. */
@media (hover: hover) and (min-width: 900px) {
	.exp-wa:hover, .exp-wa:focus-visible { max-width: 22rem; }
}

/* Il banner dei consensi ha la precedenza: finche e aperto il pulsante sparisce. */
body:has(.exp-consenso-banner:not([hidden])) .exp-wa {
	opacity: 0;
	pointer-events: none;
	transform: translateY(.5rem);
}

@media (prefers-reduced-motion: reduce) {
	.exp-wa { transition: none; }
	body:has(.exp-consenso-banner:not([hidden])) .exp-wa { transform: none; }
}

/* ---------- Pagine editoriali: card, badge, passi, avvisi ---------- */
/* Il blocco Gruppo di WordPress infila un contenitore interno fra il div con la
   classe e i suoi figli: senza questa riga la griglia avrebbe un solo elemento. */
.exp-ed-hero > .wp-block-group__inner-container,
.exp-ed-grid > .wp-block-group__inner-container,
.exp-ed-card > .wp-block-group__inner-container,
.exp-ed-card__head > .wp-block-group__inner-container,
.exp-ed-box > .wp-block-group__inner-container,
.exp-ed-alert > .wp-block-group__inner-container,
.exp-ed-cta > .wp-block-group__inner-container { display: contents; }

.exp-ed-hero {
	background: linear-gradient(135deg, rgba(106, 173, 100, .10) 0%, var(--bianco) 100%);
	border: 1px solid var(--linea);
	border-left: 6px solid var(--verde);
	border-radius: 16px;
	padding: clamp(1.4rem, 3vw, 2rem);
	margin: 0 0 2rem;
}
.exp-ed-hero > :first-child, .exp-ed-hero > * > :first-child { margin-top: 0; }
.exp-ed-hero > :last-child, .exp-ed-hero > * > :last-child { margin-bottom: 0; }

.exp-ed-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr));
	gap: 1.4rem;
	margin: 0 0 2.2rem;
}
.exp-ed-card {
	background: var(--bianco);
	border: 1px solid var(--linea);
	border-radius: 16px;
	padding: clamp(1.2rem, 2.4vw, 1.7rem);
	display: flex;
	flex-direction: column;
	gap: .6rem;
}
.exp-ed-card > :first-child, .exp-ed-card > * > :first-child { margin-top: 0; }
.exp-ed-card > :last-child, .exp-ed-card > * > :last-child { margin-bottom: 0; }
.exp-ed-card > :last-child:has(.exp-btn), .exp-ed-card > * > :last-child:has(.exp-btn) { margin-top: auto; }
.exp-ed-card h3, .exp-ed-card h4 { margin: 0; font-size: 1.1rem; letter-spacing: 0; text-transform: none; }
.exp-ed-card p { margin: 0; font-size: .95rem; }
.exp-ed-card__head {
	display: flex; align-items: center; justify-content: space-between;
	gap: .8rem; flex-wrap: wrap; margin: 0 0 .2rem;
}

.exp-ed-tag {
	display: inline-block; margin: 0;
	font-size: .72rem; font-weight: 700; line-height: 1.3;
	letter-spacing: .04em; white-space: nowrap;
	padding: .3rem .6rem; border-radius: 6px;
	background: var(--neve); color: var(--antracite-2); border: 1px solid var(--linea);
}
.exp-ed-tag--verde   { background: rgba(106, 173, 100, .12); color: var(--verde-scuro); border-color: rgba(106, 173, 100, .4); }
.exp-ed-tag--blu     { background: #eff6ff; color: #1d4ed8; border-color: #bfdbfe; }
.exp-ed-tag--arancio { background: #fff7ed; color: #b4460f; border-color: #fed7aa; }

.exp-ed-check, .exp-ed-steps { list-style: none; margin: 0; padding: 0; }
.exp-ed-steps { margin-bottom: 2.2rem; }
.exp-ed-card .exp-ed-steps { margin-bottom: 0; }
.exp-ed-check li, .exp-ed-steps li { position: relative; margin: 0 0 .5rem; font-size: .93rem; line-height: 1.5; }
.exp-ed-check li { padding-left: 1.5rem; }
.exp-ed-check li::before { content: "✓"; position: absolute; left: 0; top: 0; color: var(--verde-scuro); font-weight: 700; }
.exp-ed-steps { counter-reset: exed; }
.exp-ed-steps li { counter-increment: exed; padding-left: 2.1rem; min-height: 1.5rem; }
.exp-ed-steps li::before {
	content: counter(exed); position: absolute; left: 0; top: .05rem;
	width: 1.45rem; height: 1.45rem; border-radius: 50%;
	background: var(--verde); color: #fff;
	font-size: .78rem; font-weight: 700;
	display: grid; place-items: center;
}

.exp-ed-box {
	background: var(--neve); border: 1px solid var(--linea);
	border-radius: 12px; padding: .9rem 1rem; margin: .4rem 0 0;
}
.exp-ed-box > :first-child, .exp-ed-box > * > :first-child { margin-top: 0; }
.exp-ed-box > :last-child, .exp-ed-box > * > :last-child { margin-bottom: 0; }
.exp-ed-box h4 { font-size: .88rem; margin: 0 0 .3rem; }
.exp-ed-box p { font-size: .88rem; margin: 0; }
.exp-ed-box p + p { margin-top: .55rem; }

.exp-ed-note {
	margin: .9rem 0 0; padding: .7rem 0 0;
	border-top: 1px solid var(--linea);
	font-size: .78rem; line-height: 1.45; color: var(--antracite-2);
}

.exp-ed-alert {
	display: flex; gap: .9rem; align-items: flex-start;
	background: rgba(106, 173, 100, .08);
	border: 1px solid rgba(106, 173, 100, .35);
	border-radius: 14px; padding: 1.1rem 1.2rem; margin: 0 0 2.2rem;
}
.exp-ed-alert > :first-child, .exp-ed-alert > * > :first-child { margin-top: 0; }
.exp-ed-alert > :last-child, .exp-ed-alert > * > :last-child { margin-bottom: 0; }
.exp-ed-alert p { margin: 0; font-size: .95rem; }
.exp-ed-alert__icona { flex: none; font-size: 1.4rem; line-height: 1.2; }

.exp-ed-tiles {
	list-style: none; margin: 0 0 2.2rem; padding: 0;
	display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr)); gap: .9rem;
}
.exp-ed-tiles li {
	margin: 0; padding: .9rem 1.1rem;
	background: var(--neve); border: 1px solid var(--linea); border-radius: 12px;
	font-weight: 600; font-size: .95rem;
}

.exp-ed-cta {
	background: var(--carbone); color: #fff;
	border-radius: 18px; padding: clamp(1.5rem, 3vw, 2.2rem);
	margin: 2.4rem 0 2.2rem; text-align: center;
}
.exp-ed-cta > :first-child, .exp-ed-cta > * > :first-child { margin-top: 0; }
.exp-ed-cta > :last-child, .exp-ed-cta > * > :last-child { margin-bottom: 0; }
.exp-ed-cta h2, .exp-ed-cta h3 { color: #fff; margin: 0 0 .6rem; }
.exp-ed-cta p { color: var(--grigio); margin: 0 0 1.1rem; }
.exp-ed-cta .exp-btn--ghost { color: #fff; border-color: var(--linea-scura); }
.exp-ed-cta .exp-btn--ghost:hover { border-color: var(--verde-chiaro); color: var(--verde-chiaro); }
.exp-ed-cta .exp-ed-check { display: inline-block; text-align: left; }
.exp-ed-cta p:has(.exp-btn) { display: flex; flex-wrap: wrap; gap: .6rem; justify-content: center; }

/* ============================================================
   Terzo giro cliente (3.17.0)
   ============================================================ */

/* ---- Hero della scheda: slideshow delle foto del viaggio ----
   Le slide stanno allo stesso z-index dell'immagine singola che sostituiscono
   (-2), cosi lo scrim ::after (-1) continua a passare sopra e il titolo bianco
   resta leggibile anche su una foto chiara. I comandi invece sono fuori dallo
   strato immagini, o sarebbero anche loro a -2 e non cliccabili. */
.exp-vhero__slides { position: absolute; inset: 0; z-index: -2; }
.exp-vhero__slide {
	position: absolute; inset: 0; margin: 0;
	opacity: 0; visibility: hidden;
	transition: opacity .7s ease, visibility .7s;
}
.exp-vhero__slide.is-active { opacity: 1; visibility: visible; }
.exp-vhero__zoom { display: block; width: 100%; height: 100%; padding: 0; border: 0; background: none; cursor: zoom-in; }
/* Il bottone della foto sta a z-index -2, sotto lo scrim e sotto l'overlay del
   titolo: senza queste tre righe il clic sulla foto finisce sempre sull'overlay
   e il lightbox non si apre mai. Testo e link restano cliccabili e selezionabili:
   ad aprire la foto e solo lo spazio vuoto attorno. */
.exp-vhero::after { pointer-events: none; }
.exp-vhero__overlay { pointer-events: none; }
.exp-vhero__overlay a,
.exp-vhero__overlay button,
.exp-vhero__title,
.exp-vhero__meta,
.exp-vhero .exp-code { pointer-events: auto; }
/* batte .exp-vhero__img { position: absolute } o l'immagine si aggancia all'hero
   invece che alla sua slide e le foto si sovrappongono tutte insieme */
.exp-vhero__slides .exp-vhero__img { position: static; }
.exp-vhero__nav {
	position: absolute; right: clamp(1rem, 4vw, 3rem); bottom: clamp(1.1rem, 3vw, 2rem);
	z-index: 1; display: flex; align-items: center; gap: .7rem;
}
.exp-vhero__arrow {
	width: 42px; height: 42px; border-radius: 50%; cursor: pointer; padding: 0;
	border: 1px solid rgba(255, 255, 255, .55); background: rgba(30, 27, 27, .38); color: #fff;
	display: inline-flex; align-items: center; justify-content: center;
	transition: background var(--tr), border-color var(--tr);
}
.exp-vhero__arrow svg { width: 20px; height: 20px; }
.exp-vhero__arrow:hover, .exp-vhero__arrow:focus-visible { background: var(--verde); border-color: var(--verde); }
.exp-vhero__dots { display: flex; gap: .4rem; }
.exp-vhero__dot {
	width: 9px; height: 9px; padding: 0; border-radius: 50%; cursor: pointer;
	border: 1px solid rgba(255, 255, 255, .75); background: transparent;
	transition: background var(--tr), transform var(--tr);
}
.exp-vhero__dot[aria-current="true"] { background: #fff; transform: scale(1.3); }
@media (max-width: 760px) {
	/* a 390 px l'hero si accorcia, ma il titolo non si taglia: e l'overlay a
	   ridurre il proprio respiro, non l'altezza a mangiare il testo */
	.exp-vhero { min-height: min(56vh, 420px); }
	.exp-vhero__overlay { padding: clamp(3.2rem, 14vw, 4.5rem) 0 3.6rem; }
	.exp-vhero__nav { left: 0; right: 0; bottom: .7rem; justify-content: center; }
	.exp-vhero__arrow { width: 38px; height: 38px; }
}
@media (prefers-reduced-motion: reduce) { .exp-vhero__slide { transition: none; } }

/* ---- Lightbox condiviso: hero, gallery, e qualunque foto futura ---- */
.exp-gallery__btn { display: block; width: 100%; padding: 0; border: 0; background: none; cursor: zoom-in; }
.exp-gallery__btn:focus-visible { outline: 2px solid var(--verde); outline-offset: 2px; }
.exp-gallery__btn .exp-gallery__img { display: block; transition: filter var(--tr); }
.exp-gallery__btn:hover .exp-gallery__img { filter: brightness(1.07); }

.exp-lb-aperto { overflow: hidden; }
.exp-lb {
	position: fixed; inset: 0; z-index: 9000; background: rgba(20, 18, 18, .95);
	display: flex; align-items: center; justify-content: center; gap: clamp(.5rem, 2vw, 1.5rem);
	padding: clamp(3.2rem, 6vw, 4rem) clamp(1rem, 4vw, 3rem);
}
.exp-lb__fig { margin: 0; max-width: 100%; max-height: 100%; display: flex; flex-direction: column; gap: .8rem; min-width: 0; }
.exp-lb__img { max-width: 100%; max-height: 78vh; width: auto; height: auto; object-fit: contain; display: block; margin: 0 auto; }
.exp-lb__cap { color: #d8d4d2; font-size: .85rem; text-align: center; }
.exp-lb__contatore {
	position: absolute; top: clamp(1rem, 2vw, 1.7rem); left: 50%; transform: translateX(-50%);
	color: #d8d4d2; font-size: .78rem; font-weight: 600; letter-spacing: .12em;
}
.exp-lb__close {
	position: absolute; top: clamp(.7rem, 2vw, 1.3rem); right: clamp(.7rem, 2vw, 1.3rem);
	width: 44px; height: 44px; border-radius: 50%; border: 1px solid rgba(255, 255, 255, .4);
	background: transparent; color: #fff; font-size: 1.7rem; line-height: 1; cursor: pointer;
}
.exp-lb__arrow {
	flex: 0 0 auto; width: 48px; height: 48px; border-radius: 50%; padding: 0;
	border: 1px solid rgba(255, 255, 255, .4); background: transparent; color: #fff; cursor: pointer;
	display: inline-flex; align-items: center; justify-content: center;
}
.exp-lb__arrow svg { width: 22px; height: 22px; }
.exp-lb__close:hover, .exp-lb__arrow:hover,
.exp-lb__close:focus-visible, .exp-lb__arrow:focus-visible { background: var(--verde); border-color: var(--verde); }
@media (max-width: 760px) {
	.exp-lb__arrow { position: absolute; bottom: 1.1rem; background: rgba(30, 27, 27, .55); }
	.exp-lb__arrow--prev { left: 1.1rem; }
	.exp-lb__arrow--next { right: 1.1rem; }
	.exp-lb__img { max-height: 68vh; }
}

/* ---- Box partenze: al completo e gia partita sono righe vive ----
   Stesso ingombro delle altre, badge al suo posto, cursore da scelta: niente
   grigio che le faccia sembrare morte. A spegnersi e il bottone. */
.exp-board__row--soldout,
.exp-board__row--partita { opacity: 1; cursor: pointer; }
.exp-board__row--soldout .exp-code,
.exp-board__row--partita .exp-code { text-decoration: none; }
.exp-board__row--soldout:hover,
.exp-board__row--partita:hover { border-color: var(--grigio); }
.exp-board__row--soldout:has(input:checked),
.exp-board__row--partita:has(input:checked) { border-color: var(--verde); background: var(--carbone-2); }
.exp-board__row--partita { opacity: .82; }
button.exp-board__attesa { background: none; border: 0; padding: 0; font: inherit; cursor: pointer; }
button.exp-board__attesa:hover { color: #fff; }
.exp-booking__form.is-soldout .exp-board__row:not(:has(input:checked)) { opacity: .9; }
.exp-btn[data-book-submit][disabled] { opacity: .45; cursor: not-allowed; }

/* ---- Finestra della lista d'attesa ---- */
.exp-attesa-dialog {
	border: 0; padding: 0; background: transparent;
	max-width: 520px; width: calc(100% - 2rem); max-height: calc(100dvh - 2rem);
}
.exp-attesa-dialog::backdrop { background: rgba(30, 27, 27, .74); }
.exp-attesa-dialog__box {
	background: var(--carbone); color: #fff; padding: 1.7rem 1.5rem 1.5rem;
	position: relative; max-height: calc(100dvh - 2rem); overflow-y: auto;
}
.exp-attesa-dialog__box h3 { font-family: var(--f-display); text-transform: uppercase; font-size: 1.05rem; letter-spacing: .03em; margin: 0 0 .4rem; color: #fff; }
.exp-attesa-dialog__box > p { color: var(--grigio); font-size: .9rem; margin: 0 0 1.1rem; }
.exp-attesa-dialog__chiudi {
	position: absolute; top: .5rem; right: .6rem; width: 36px; height: 36px;
	background: none; border: 0; color: var(--grigio); font-size: 1.6rem; line-height: 1; cursor: pointer;
}
.exp-attesa-dialog__chiudi:hover { color: #fff; }
.exp-attesa-dialog .exp-form__field label { color: var(--grigio); }
.exp-attesa-dialog .exp-form__privacy { color: var(--grigio); }
/* Con l'embed HubSpot il modulo sta dentro un iframe del portale: i nostri
   stili non lo raggiungono e i suoi testi sono scuri. Percio la finestra si
   veste di chiaro, altrimenti si legge scuro su scuro (segnalato il 21/09).
   Le regole sotto valgono solo se un giorno l'embed tornasse in pagina. */
.exp-attesa-dialog--hs .exp-attesa-dialog__box { background: #fff; color: var(--carbone); }
.exp-attesa-dialog--hs .exp-attesa-dialog__box h3 { color: var(--carbone); }
.exp-attesa-dialog--hs .exp-attesa-dialog__box > p { color: #55504e; }
.exp-attesa-dialog--hs .exp-attesa-dialog__chiudi { color: #55504e; }
.exp-attesa-dialog--hs .exp-attesa-dialog__chiudi:hover { color: var(--carbone); }
.exp-attesa-dialog--hs .exp-hs-form { min-height: 320px; }
.exp-attesa-ripiego__nota { color: var(--grigio); font-size: .85rem; margin: 0 0 .9rem; }

.exp-attesa-dialog .exp-hs-form { color: #fff; }
.exp-attesa-dialog .exp-hs-form form label,
.exp-attesa-dialog .exp-hs-form form legend { color: var(--grigio); font-size: .72rem; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; }
.exp-attesa-dialog .exp-hs-form form input[type="text"],
.exp-attesa-dialog .exp-hs-form form input[type="email"],
.exp-attesa-dialog .exp-hs-form form input[type="tel"],
.exp-attesa-dialog .exp-hs-form form select,
.exp-attesa-dialog .exp-hs-form form textarea {
	width: 100%; font-family: var(--f-body); font-size: .95rem; color: #fff;
	background: var(--carbone-2); border: 1px solid var(--linea-scura); padding: .7rem .8rem;
	border-radius: 0; box-sizing: border-box;
}
.exp-attesa-dialog .exp-hs-form form input:focus,
.exp-attesa-dialog .exp-hs-form form select:focus,
.exp-attesa-dialog .exp-hs-form form textarea:focus { outline: 2px solid var(--verde-chiaro); }
.exp-attesa-dialog .exp-hs-form form .hs-form-field { margin-bottom: .9rem; }
.exp-attesa-dialog .exp-hs-form form input[type="submit"],
.exp-attesa-dialog .exp-hs-form form .hs-button {
	width: 100%; font-family: var(--f-display); font-size: .8rem; font-weight: 700;
	letter-spacing: .1em; text-transform: uppercase; cursor: pointer;
	background: var(--verde); color: #fff; border: 0; padding: .95rem 1.2rem;
}
.exp-attesa-dialog .exp-hs-form form .hs-error-msg,
.exp-attesa-dialog .exp-hs-form form .hs-error-msgs label { color: var(--no-d); text-transform: none; letter-spacing: 0; }

/* ---- Barra tab: a 1366 ci stanno tutte, a 390 scorre con l'attiva in vista ---- */
.exp-schedanav ul { gap: 0; scroll-snap-type: x proximity; scroll-padding-left: 1rem; }
.exp-schedanav li { flex: 0 0 auto; scroll-snap-align: start; }
.exp-schedanav a { padding: .8rem .62rem .7rem; font-size: clamp(.68rem, .82vw, .78rem); letter-spacing: .035em; }
@media (max-width: 1020px) {
	/* il segno che la barra scorre: senza, la scrollbar e nascosta e sembra
	   che le voci oltre il bordo non esistano */
	.exp-schedanav { -webkit-mask-image: linear-gradient(90deg, #000 calc(100% - 26px), transparent); mask-image: linear-gradient(90deg, #000 calc(100% - 26px), transparent); }
	.exp-schedanav a { font-size: .74rem; padding: .8rem .7rem .7rem; }
}

/* ---- Scheda da mobile: il box prenotazione sale sotto l'hero ----
   display:contents scioglie l'aside, cosi il box sale e il modulo «Richiesta
   info» resta in fondo: sono due item della griglia, non un blocco unico. */
@media (max-width: 1020px) {
	.exp-viaggio__side { display: contents; }
	.exp-viaggio__layout > .exp-viaggio__main { order: 2; }
	.exp-viaggio__side > .exp-booking { order: 1; }
	.exp-viaggio__side > .exp-form-section--side { order: 3; margin-top: 0; }
	.exp-booking { padding: 1.3rem 1.2rem 1.2rem; }
	.exp-booking .exp-btn--block { width: 100%; }
	.exp-btn--solo-mobile { display: inline-flex; }
}

/* ---- Barra di prenotazione che compare quando il box esce dallo schermo ---- */
.exp-bookbar {
	position: fixed; left: 0; right: 0; bottom: 0; z-index: 185;
	display: none; align-items: center; justify-content: space-between; gap: 1rem;
	padding: .7rem 1rem calc(.7rem + env(safe-area-inset-bottom));
	background: var(--carbone); color: #fff; border-top: 1px solid var(--linea-scura);
	box-shadow: 0 -8px 24px rgba(30, 27, 27, .28);
}
.exp-bookbar__prezzo { font-size: .95rem; line-height: 1.2; }
.exp-bookbar__prezzo small { display: block; font-size: .62rem; letter-spacing: .14em; text-transform: uppercase; color: var(--grigio); }
.exp-bookbar__cta { flex: 0 0 auto; }
@media (max-width: 1020px) { .exp-bookbar:not([hidden]) { display: flex; } }

/* ---- Barra flottante del telefono: icona piu etichetta di una parola ---- */
.exp-mbar { display: none; }
@media (max-width: 760px) {
	.exp-mbar {
		display: grid; grid-auto-flow: column; grid-auto-columns: 1fr;
		position: fixed; left: 0; right: 0; bottom: 0; z-index: 180;
		background: var(--bianco); border-top: 1px solid var(--linea);
		box-shadow: 0 -6px 20px rgba(58, 53, 53, .12);
		padding-bottom: env(safe-area-inset-bottom);
	}
	.exp-mbar__voce {
		display: flex; flex-direction: column; align-items: center; justify-content: center;
		gap: .22rem; min-height: 56px; padding: .5rem .2rem;
		background: none; border: 0; color: var(--antracite); text-decoration: none; cursor: pointer;
	}
	.exp-mbar__voce svg { width: 20px; height: 20px; }
	.exp-mbar__voce span { font-size: .6rem; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; line-height: 1; }
	.exp-mbar__voce--wa { color: #128C4A; }
	.exp-mbar__voce:active { background: var(--neve); }
	/* la barra copre l'ultima riga del footer se il documento non le fa posto */
	body { padding-bottom: 60px; }
	/* e copriva anche l'ultima voce del menu aperto («Accedi»): il pannello
	   scorre fin sopra la barra (29/09/2026) */
	.exp-nav { padding-bottom: calc(60px + env(safe-area-inset-bottom)); }
	/* il FAB e il banner dei consensi si alzano sopra la barra */
	.exp-wa { bottom: calc(60px + .75rem); }
	.exp-consenso-banner { bottom: calc(60px + .75rem); }
	/* due barre sovrapposte su 390px non ci stanno: quando compare quella di
	   prenotazione, le scorciatoie scendono */
	body.has-bookbar .exp-mbar { transform: translateY(100%); }
	body.has-bookbar .exp-wa { bottom: calc(60px + .75rem); }
	.exp-mbar { transition: transform var(--tr); }
}

/* ---- Home: la ricerca sotto l'hero, solo il mese ---- */
.fp-cerca { background: var(--neve); border-bottom: 1px solid var(--linea); padding: clamp(1.2rem, 3vw, 1.8rem) 0; }
.fp-cerca__inner { display: flex; flex-wrap: wrap; gap: .8rem 1.6rem; align-items: flex-end; }
.fp-cerca__inner .exp-eyebrow { margin: 0 0 .1rem; flex: 0 0 100%; }
.fp-cerca__form { display: flex; gap: .8rem; align-items: flex-end; flex-wrap: wrap; }
.fp-cerca__campo { display: flex; flex-direction: column; gap: .45rem; min-width: 220px; }
.fp-cerca__campo span { font-size: .64rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: var(--antracite-2); }
.fp-cerca__campo select {
	font-family: var(--f-body); font-size: .9rem; color: var(--antracite);
	background: var(--bianco); border: 1px solid var(--linea); padding: .7rem .8rem;
	appearance: none; min-height: 44px;
}
.fp-cerca__campo select:focus { outline: 2px solid var(--verde-scuro); }
.fp-cerca__form .exp-btn { min-height: 44px; }
.fp-cerca__misura { font-size: .8rem; font-weight: 600; letter-spacing: .04em; color: var(--verde-scuro); align-self: flex-end; padding-bottom: .7rem; }
.fp-cerca__misura:hover { text-decoration: underline; }
@media (max-width: 700px) {
	.fp-cerca__form { width: 100%; }
	.fp-cerca__campo { flex: 1 1 100%; }
	.fp-cerca__form .exp-btn { width: 100%; }
	.fp-cerca__misura { padding-bottom: 0; }
}

/* ---- FAQ: i gruppi del sito storico ---- */
.exp-faqgruppo { margin-bottom: clamp(2rem, 4vw, 3rem); }
.exp-faqgruppo:last-child { margin-bottom: 0; }
.exp-faqgruppo__titolo {
	font-family: var(--f-display); font-weight: 700; font-stretch: 112%;
	font-size: clamp(1.2rem, 2.4vw, 1.55rem); text-transform: uppercase; letter-spacing: .01em;
	margin: 0 0 1rem; padding-bottom: .5rem; border-bottom: 2px solid var(--verde);
}

/* ---- Template «Pagina larga» ----
   Il contenitore torna quello standard da 1280px, ma paragrafi, elenchi e
   titoli restano a misura di lettura: si allargano solo i blocchi. */
.exp-widepage .exp-content { max-width: none; }
/* Il template «Pagina larga» lo scelgono i documenti lunghi (regolamento, T&C,
   polizze, guide): tenere i paragrafi a 68ch lasciava la pagina identica a prima
   e il testo schiacciato a meta contenitore. Chi sceglie «larga» vuole il testo
   largo, non solo i blocchi. */
.exp-widepage .exp-content > p,
.exp-widepage .exp-content > ul,
.exp-widepage .exp-content > ol,
.exp-widepage .exp-content > h2,
.exp-widepage .exp-content > h3,
.exp-widepage .exp-content > h4,
.exp-widepage .exp-content > blockquote { max-width: none; }

/* ---------- Giro visivo terzo giro (3.17.1) ---------- */
/* I select dei filtri avevano appearance:none senza icona di sostituzione:
   sembravano campi di testo. Gli altri select del sito tengono la freccia
   nativa, quindi qui ne va ridisegnata una uguale nello spirito. */
.exp-filtri select,
.fp-cerca__campo select {
	background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='none' stroke='%235a5a55' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round' d='M1 1.5 6 6.5 11 1.5'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right .8rem center;
	padding-right: 2.2rem;
}

/* Riga partenza: la pill dello stato sfora la sua colonna e finiva incollata
   all'azione a destra («Sold out»/«Lista d'attesa», «Partito»/«Non
   prenotabile»). Serve aria vera, non solo il gap della griglia. */
.exp-board__info { min-width: 0; padding-right: .5rem; }
.exp-board__price { min-width: 0; }
/* La colonna centrale era minmax(0, 1fr) e poteva scendere sotto la pill
   dello stato, che allora sforava sopra l'azione a destra. Con min-content
   la griglia le riserva sempre almeno la sua larghezza e il gap torna vero. */
@media (min-width: 481px) {
	.exp-board__row--soldout,
	.exp-board__row--partita { grid-template-columns: auto minmax(min-content, 1fr) auto; }
}
@media (max-width: 480px) {
	.exp-board__row--soldout,
	.exp-board__row--partita { grid-template-columns: auto minmax(0, 1fr); }
	.exp-board__row--soldout .exp-board__price,
	.exp-board__row--partita .exp-board__price { grid-column: 1 / -1; text-align: left; margin-top: .2rem; }
}

/* In home il titolo delle recensioni era l'unico H2 di sezione non maiuscolo:
   sulla scheda lo diventa per via di .exp-viaggio__main, in home no. */
.exp-recensioni__head h2 { text-transform: uppercase; }
/* Senza la barra davanti, l'etichetta dei posti non deve restare rientrata. */
.exp-meter__label:first-child { margin-left: 0; }

/* Portale clienti (3.18.0) */
.exp-portale { margin: 1.6rem 0 0; padding: 1.3rem 1.4rem; border: 1px solid var(--linea); border-radius: 14px; background: #fff; }
.exp-portale__title { margin: 0 0 .5rem; font-size: 1.05rem; }
.exp-portale__testo { margin: 0 0 1rem; color: var(--antracite-2); font-size: .95rem; }
.exp-portale__cta { display: inline-flex; }
.exp-checkout__campo .exp-checkout__hint { display: block; margin-top: .35rem; color: var(--antracite-2); font-size: .82rem; line-height: 1.45; }

/* ---- Quarto giro: miniature sotto l'hero della scheda ---- */
.exp-vthumbs { background: var(--bianco); border-bottom: 1px solid var(--linea); }
.exp-vthumbs__inner { display: flex; align-items: center; gap: 1rem; padding-top: .6rem; padding-bottom: .6rem; }
.exp-vthumbs__strip { flex: 1 1 auto; min-width: 0; display: flex; gap: .6rem; overflow-x: auto; scroll-snap-type: x proximity; scrollbar-width: none; padding: 2px; }
.exp-vthumbs__strip::-webkit-scrollbar { display: none; }
.exp-vthumbs__btn { flex: 0 0 auto; width: 240px; height: 120px; padding: 0; border: 2px solid transparent; border-radius: 6px; background: var(--neve); cursor: zoom-in; overflow: hidden; scroll-snap-align: start; opacity: .72; transition: opacity var(--tr), border-color var(--tr); }
/* Le foto del sito storico sono 2:1 e molte hanno il bollino Scalapay stampato in basso a destra:
   miniatura 2:1 e foto intera, o il ritaglio lo taglia via. */
.exp-vthumbs__btn img { width: 100%; height: 100%; object-fit: contain; display: block; }
.exp-vthumbs__btn:hover, .exp-vthumbs__btn:focus-visible { opacity: 1; }
.exp-vthumbs__btn[aria-current="true"] { opacity: 1; border-color: var(--verde); }
.exp-vthumbs__all { flex: 0 0 auto; display: inline-flex; align-items: center; gap: .45rem; padding: .6rem .95rem; border: 1px solid var(--linea); border-radius: 999px; background: var(--bianco); color: var(--antracite); font: 600 .74rem/1 var(--f-body); letter-spacing: .05em; text-transform: uppercase; cursor: pointer; transition: border-color var(--tr), color var(--tr); }
.exp-vthumbs__all svg { width: 16px; height: 16px; }
.exp-vthumbs__all:hover, .exp-vthumbs__all:focus-visible { border-color: var(--verde); color: var(--verde-scuro); }
@media (max-width: 760px) {
	.exp-vthumbs__inner { gap: .6rem; }
	.exp-vthumbs__btn { width: 160px; height: 80px; }
	.exp-vthumbs__all { padding: .55rem; border-radius: 50%; }
	.exp-vthumbs__all span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
}

/* ---- Quarto giro: barra delle sezioni con icone sul telefono ---- */
/* Sesto giro: l'icona sta anche da desktop, in riga accanto all'etichetta lunga. */
.exp-schedanav__b { display: none; }
.exp-schedanav a { display: inline-flex; align-items: center; gap: .42rem; }
.exp-schedanav__ico { display: block; width: 17px; height: 17px; flex: 0 0 auto; opacity: .7; }
.exp-schedanav a:hover .exp-schedanav__ico { opacity: 1; }
.exp-schedanav a.is-attiva .exp-schedanav__ico { opacity: 1; color: var(--verde); }
@media (min-width: 761px) {
	/* l'icona ruba larghezza a otto voci: si recupera dai fianchi, non dal testo */
	.exp-schedanav a { padding-left: .55rem; padding-right: .55rem; }
}
@media (max-width: 760px) {
	.exp-schedanav ul { gap: 0; }
	.exp-schedanav li { flex: 1 0 auto; min-width: 3.3rem; }
	.exp-schedanav a { display: flex; flex-direction: column; align-items: center; gap: .24rem; padding: .55rem .35rem .45rem; font-size: .62rem; letter-spacing: 0; text-transform: none; font-weight: 600; }
	.exp-schedanav__t { display: none; }
	.exp-schedanav__ico { display: block; width: 20px; height: 20px; }
	.exp-schedanav__b { display: block; white-space: nowrap; line-height: 1; }
	.exp-schedanav a.is-attiva { color: var(--verde-scuro); border-bottom-color: var(--verde); font-weight: 700; }
	.exp-schedanav a.is-attiva .exp-schedanav__ico { color: var(--verde); }
}

/* ---- Quarto giro: terzo blocco «la cassa comune include» ---- */
.exp-quota--tre { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.5rem; }
@media (max-width: 1020px) { .exp-quota--tre { grid-template-columns: 1fr 1fr; } }
@media (max-width: 700px) { .exp-quota--tre { grid-template-columns: 1fr; } }
.exp-list--cassa li::before { content: '€'; position: absolute; left: 0; color: var(--verde-scuro); font-weight: 700; }
.exp-quota__nota { font-size: .82rem; color: var(--antracite-2); margin-top: .9rem; }

/* ---- Quarto giro: Viaggiare Sicuri ---- */
.exp-sicuri__lista { list-style: none; padding: 0; margin: 1rem 0 0; display: flex; flex-wrap: wrap; gap: .6rem; }
.exp-sicuri__link { display: inline-flex; align-items: center; gap: .4rem; }

/* ---------- Quinto giro (6/9): footer societario, video nella scheda, coda tipologie ---------- */
.exp-footer__societa { margin: 0 0 .7rem; line-height: 1.8; letter-spacing: .06em; opacity: .85; }
.exp-video .exp-consenso { max-width: 720px; }
/* Il video di uno stile di viaggio: stesso player della scheda, centrato nella
   colonna stretta della pagina editoriale. */
.exp-stvideo .exp-consenso { margin-inline: auto; }
.exp-stvideo .exp-section__head { text-align: center; }
.exp-video .exp-consenso__facciata img { width: 100%; height: 100%; object-fit: cover; }
.exp-taxcoda { padding-top: 0; }
.exp-taxcoda .exp-content { max-width: none; }
.exp-taxcoda .exp-ed-hero h2, .exp-taxcoda .exp-ed-cta h2 { margin-top: 0; }
.exp-footer__col ul li.menu-item { margin: 0; }

/* ---------- Sesto giro (7/9) ---------- */
/* Le colonne della quota: i titoli vanno a capo un numero diverso di volte e le
   liste partivano ad altezze diverse. Con subgrid la riga del titolo e una sola
   per tutte e tre, alta quanto il titolo piu lungo, e i corpi ripartono in linea.
   Dove subgrid manca resta il comportamento di prima: nulla si rompe. */
.exp-quota__col > h2 { font-size: clamp(1.05rem, 1.5vw, 1.3rem); line-height: 1.25; }
@supports (grid-template-rows: subgrid) {
	.exp-quota__col { display: grid; grid-template-rows: subgrid; grid-row: span 2; row-gap: 0; }
}
/* Il gruppo annullato: stesso rosso del sold out, senza il pallino pieno che in
   legenda vuol dire «posti finiti». */
.exp-badge--annullato { color: var(--neutro-l); border-style: dashed; }
.exp-badge--annullato::before { background: transparent; box-shadow: inset 0 0 0 2px currentColor; }
.exp-dark .exp-badge--annullato, .exp-board .exp-badge--annullato { color: var(--neutro-d); }

/* Form della password di WordPress: senza queste regole il cruscotto degli
   Explorer Pro si apre con il modulo grezzo, che su un sito con una sua
   grafica sembra una pagina rotta. */
.post-password-form { max-width: 30rem; margin: 2.5rem auto 4rem; text-align: center; }
.post-password-form p { margin: 0 0 1.1rem; color: var(--grigio-scuro, #55605e); }
.post-password-form label { display: block; text-align: left; font-size: .82rem; font-weight: 700; letter-spacing: .09em; text-transform: uppercase; }
.post-password-form input[type="password"] {
	display: block; width: 100%; margin: .5rem 0 1.1rem;
	padding: .9rem 1rem; font-size: 1rem; font-family: inherit;
	border: 1px solid var(--linea, #d8ded9); background: #fff; color: var(--antracite);
}
.post-password-form input[type="password"]:focus { outline: none; border-color: var(--antracite); }
.post-password-form input[type="submit"] {
	display: inline-flex; align-items: center; justify-content: center;
	font-size: .82rem; font-weight: 700; letter-spacing: .09em; text-transform: uppercase;
	padding: 1rem 1.7rem; border: 1px solid var(--antracite); color: var(--antracite);
	background: transparent; cursor: pointer;
	transition: background var(--tr), color var(--tr);
}
.post-password-form input[type="submit"]:hover { background: var(--antracite); color: #fff; }

/* ---------- Undicesimo giro (8/9): le tre colonne guardano la colonna, non la finestra ----------
   Sulla scheda il riquadro delle partenze si prende 400 px fissi: da 1020 px di finestra in su la
   colonna dei contenuti resta sui 744 px e le tre colonne stavano a ~230 px l'una, con quasi ogni
   voce a capo. Sotto i 1020 px il riquadro va sotto, la colonna diventa larga, ma la vecchia media
   query proprio li' toglieva la terza colonna: era il contrario di quel che serve. Con la container
   query decide la larghezza vera della colonna, non quella della finestra. Le due media query qui
   sopra restano come rete per i browser senza @container. */
.exp-viaggio__main { container-type: inline-size; container-name: colonna; }
.exp-quota--tre { grid-template-columns: 1fr 1fr; }
@container colonna (min-width: 800px) { .exp-quota--tre { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@container colonna (max-width: 520px) { .exp-quota--tre { grid-template-columns: 1fr; } }
/* Con due colonne il terzo blocco resterebbe da solo a sinistra e mezza riga
   vuota a destra: quando la colonna e' stretta la cassa comune prende tutta la
   riga e la sua lista scorre su due incolonnature. Sul telefono, dove le colonne
   sono gia' una sola, questa regola non si applica. */
@container colonna (min-width: 521px) and (max-width: 799.98px) {
	.exp-quota--tre .exp-quota__col--cassa { grid-column: 1 / -1; }
	.exp-quota--tre .exp-quota__col--cassa .exp-list { columns: 2; column-gap: 1.5rem; }
	.exp-quota--tre .exp-quota__col--cassa .exp-list li { break-inside: avoid; }
}


/* Il wrapper serve solo a poter nascondere una card del tabellone senza toccare
   il markup della card: nella griglia deve comportarsi come la card stessa. */
.exp-shuffle__el { display: contents; }

/* Indice dei livelli (/adattamento/ e /impegno-fisico/): le cinque tacche a
   sinistra, il racconto a destra. Stessa scala grafica della scheda viaggio. */
.exp-livpage__lista { list-style: none; margin: 0; padding: 0; display: grid; gap: 1.1rem; }
.exp-livpage__riga { display: grid; grid-template-columns: 110px 1fr; gap: 1.2rem; align-items: start; background: var(--neve); border-radius: 14px; padding: 1.1rem 1.3rem; }
.exp-livpage__riga h3 { margin: 0 0 .35rem; font-size: 1.05rem; }
.exp-livpage__riga h3 a { color: inherit; text-decoration: none; }
.exp-livpage__riga h3 a:hover, .exp-livpage__riga h3 a:focus-visible { color: var(--verde-scuro); }
.exp-livpage__riga p { margin: 0 0 .35rem; }
.exp-livpage__meta { font-size: .85rem; color: var(--antracite); }
.exp-livpage__scala { padding-top: .35rem; }
.exp-livpage__altra { text-align: center; }
@media (max-width: 700px) {
	.exp-livpage__riga { grid-template-columns: 1fr; gap: .5rem; }
	.exp-livpage__scala { padding-top: 0; }
}

/* ---- Quarantaseiesimo giro: la barra delle ancore non si taglia piu ----
   Sopra i 1020px la barra non ha ne scrollbar ne sfumatura sul bordo: le voci
   che non entravano finivano oltre il bordo e per chi guarda non esistevano
   (segnalato da Marco, 12/09). Qui vanno a capo: l'altezza su due righe la
   misura gia il JS delle ancore, quindi l'atterraggio resta giusto. */
@media (min-width: 1021px) {
	.exp-schedanav ul { flex-wrap: wrap; overflow-x: visible; }
}

/* ---- FAQ: ricerca, barra delle categorie, evidenziazione ---- */
.exp-faqcerca { background: var(--neve); padding: 0 0 clamp(1.8rem, 3.5vw, 2.8rem); }
.exp-faqcerca__lab { display: block; font-size: .72rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--antracite-2); margin: 0 0 .5rem; }
.exp-faqcerca__campo { display: flex; align-items: center; gap: .6rem; background: var(--bianco); border: 1px solid var(--linea); padding: 0 .9rem; transition: border-color var(--tr); }
.exp-faqcerca__campo:focus-within { border-color: var(--verde); }
.exp-faqcerca__ico { display: block; width: 18px; height: 18px; flex: 0 0 auto; color: var(--antracite-2); }
.exp-faqcerca__input { flex: 1 1 auto; min-width: 0; border: 0; background: none; padding: .9rem 0; font: inherit; font-size: 1rem; color: var(--antracite); }
.exp-faqcerca__input:focus { outline: none; }
.exp-faqcerca__input::-webkit-search-cancel-button, .exp-faqcerca__input::-webkit-search-decoration { -webkit-appearance: none; appearance: none; }
.exp-faqcerca__x { flex: 0 0 auto; border: 0; background: none; padding: .2rem .25rem; font-size: 1.5rem; line-height: 1; color: var(--antracite-2); cursor: pointer; }
.exp-faqcerca__x:hover { color: var(--antracite); }
.exp-faqcerca__esito { margin: .55rem 0 0; min-height: 1.25em; font-size: .85rem; color: var(--antracite-2); }

.exp-faqnav { position: sticky; top: 72px; z-index: 5; background: var(--bianco); border-bottom: 1px solid var(--linea); margin: 0 0 clamp(1.6rem, 3vw, 2.4rem); }
.exp-faqnav ul { display: flex; gap: .25rem; margin: 0; padding: 0; list-style: none; overflow-x: auto; scrollbar-width: none; }
.exp-faqnav ul::-webkit-scrollbar { display: none; }
.exp-faqnav a { display: block; white-space: nowrap; padding: .85rem .8rem .75rem; font-size: .78rem; letter-spacing: .05em; text-transform: uppercase; font-weight: 600; color: var(--antracite-2); text-decoration: none; border-bottom: 2px solid transparent; transition: color var(--tr); }
.exp-faqnav a:hover { color: var(--antracite); }
.exp-faqnav a.is-attiva { color: var(--verde-scuro); border-bottom-color: var(--verde); }
.exp-faqnav a.is-vuota { opacity: .3; pointer-events: none; }

/* Da tablet in su le sezioni vanno a capo e si vedono tutte: con sette categorie
   la riga unica troncava le ultime («DOCUMENTI, ASSICURAZIONI E R»). Le frecce si
   nascondono da sole, perche la lista non straborda piu. Sotto i 761px resta la
   riga che scorre. */
@media (min-width: 761px) {
	.exp-faqnav ul { flex-wrap: wrap; justify-content: center; gap: .4rem .45rem; overflow: visible; padding: .75rem 0; }
	.exp-faqnav a { padding: .5rem .7rem; font-size: .74rem; border: 1px solid var(--linea); background: var(--bianco); transition: color var(--tr), border-color var(--tr), background-color var(--tr); }
	.exp-faqnav a:hover { border-color: var(--antracite-2); }
	.exp-faqnav a.is-attiva { color: var(--bianco); background: var(--verde-scuro); border-color: var(--verde-scuro); }
}

.exp-faqmark { background: #FDF0A8; color: inherit; padding: 0 .1em; }
.exp-faqlista .exp-acc[hidden], .exp-faqgruppo[hidden] { display: none; }
.exp-faqlista .exp-acc.is-ultima { border-bottom: 1px solid var(--linea); }
.exp-faqvuoto { margin: 0; padding: clamp(1.4rem, 3vw, 2.2rem); border: 1px dashed var(--linea); background: var(--bianco); color: var(--antracite-2); text-align: center; }
.exp-faqvuoto a { color: var(--verde-scuro); font-weight: 600; }

@media (max-width: 760px) {
	.exp-faqnav a { padding: .7rem .6rem .6rem; font-size: .68rem; letter-spacing: .02em; }
	.exp-faqcerca__input { font-size: 16px; padding: .8rem 0; }
	.exp-faqcerca__campo { gap: .45rem; padding: 0 .7rem; }
}

.exp-faqnav__frec { position: absolute; top: 0; bottom: 1px; width: 44px; display: flex; align-items: center; border: 0; padding: 0; margin: 0; cursor: pointer; color: var(--antracite); z-index: 2; }
.exp-faqnav__frec[hidden] { display: none; }
.exp-faqnav__frec svg { display: block; width: 19px; height: 19px; }
.exp-faqnav__frec--prima { left: 0; justify-content: flex-start; padding-left: .35rem; background: linear-gradient(90deg, var(--bianco) 58%, rgba(255, 255, 255, 0)); }
.exp-faqnav__frec--dopo { right: 0; justify-content: flex-end; padding-right: .35rem; background: linear-gradient(270deg, var(--bianco) 58%, rgba(255, 255, 255, 0)); }
.exp-faqnav__frec:hover { color: var(--verde-scuro); }

/* ---------- Modulo lungo del Cruscotto (proposta di viaggio) ----------
   Il form delle proposte riusa .exp-form: qui c'e' solo quello che con
   quaranta campi, sezioni, file e liste a righe non c'era ancora. */
.exp-form > * { min-width: 0; }
.exp-form__sez { grid-column: 1 / -1; border-top: 1px solid var(--linea); padding-top: 1.1rem; margin-top: .6rem; }
.exp-form__sez--prima { border-top: 0; padding-top: 0; margin-top: 0; }
.exp-form__sez h4 { font-family: var(--f-body); font-size: .68rem; font-weight: 700; letter-spacing: .18em; text-transform: uppercase; color: var(--antracite); margin: 0; }
.exp-form__sez p { font-size: .82rem; color: var(--antracite-2); margin: .35rem 0 0; }

.exp-form input[type="file"] { padding: .55rem .6rem; font-size: .86rem; }
.exp-form input[type="file"]::file-selector-button {
	font-family: var(--f-body); font-size: .68rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase;
	padding: .5rem .9rem; margin-right: .8rem; cursor: pointer;
	border: 1px solid var(--antracite); background: transparent; color: var(--antracite);
}
.exp-form input[type="file"]:hover::file-selector-button { background: var(--antracite); color: #fff; }

.exp-form__lista { grid-column: 1 / -1; display: grid; gap: .8rem; }
.exp-form__lista-tit { font-size: .64rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: var(--antracite-2); }
.exp-form__lista-riga { display: grid; grid-template-columns: 1fr 1fr; gap: .8rem; padding: .9rem; border: 1px solid var(--linea); background: var(--bianco); }
.exp-form__lista-riga > * { min-width: 0; }
.exp-form__lista-piu { margin: 0; }
.exp-btn--mini { padding: .55rem 1rem; font-size: .66rem; }
@media (max-width: 640px) { .exp-form__lista-riga { grid-template-columns: 1fr; } }

/* /viaggi/: le destinazioni in righe per continente, il continente in testa. */
.exp-viaggidest__riga + .exp-viaggidest__riga { margin-top: .6rem; }
.exp-chips li.is-radice { border-color: var(--verde); color: var(--verde-scuro); background: transparent; text-transform: uppercase; letter-spacing: .06em; font-weight: 700; }

/* Tabellone partenze: chi accompagna quella data, su tutta la riga. */
.exp-board__coord { grid-column: 1 / -1; font-size: .74rem; color: var(--verde-chiaro); border-top: 1px solid var(--linea-scura); padding-top: .45rem; margin-top: .1rem; }
.exp-board__row--off .exp-board__coord { text-decoration: none; }
