/**
 * BikeFVG — scheda itinerario v0.6.37
 *
 * Principi UX/UI:
 * - titolo e immagine guidano la pagina; i meta informano senza competere;
 * - interfaccia calma: pochi contenitori, linee sottili, niente card decorative inutili;
 * - mappa e profilo sono un unico strumento;
 * - griglie dinamiche: nessun “buco” quando i dati sono pochi;
 * - mobile-first e token del design system BikeFVG.
 */

.bikefvg-route-main {
	padding-inline: 0;
}

.bikefvg-route-main > .wp-block-shortcode {
	max-width: none;
	margin: 0;
}

.bikefvg-route-page {
	width: 100%;
}

/* ---------- Hero ---------- */

.bikefvg-route-page__hero {
	padding-block: var(--bfvg-hero-detail-padding);
}

.bikefvg-route-page__hero-grid {
	display: grid;
	gap: clamp(1.4rem, 3vw, 3.4rem);
	align-items: center;
}

.bikefvg-route-page__hero-copy {
	min-width: 0;
}

.bikefvg-route-page__badges,
.bikefvg-route-page__actions {
	display: flex;
	flex-wrap: wrap;
	gap: .5rem;
}

.bikefvg-route-page__badges {
	margin-bottom: clamp(1rem, 1.8vw, 1.45rem);
}

.bikefvg-route-page__territory-badge {
	color: var(--wp--preset--color--ink-secondary);
}

.bikefvg-route-page__hero .bikefvg-eyebrow {
	margin-bottom: .55rem;
}

.bikefvg-route-page__hero .bikefvg-eyebrow strong {
	color: var(--wp--preset--color--ink);
	font-weight: 800;
}

.bikefvg-route-page__hero h1 {
	max-width: 13ch;
	margin: 0;
	font-size: var(--bfvg-detail-title-size);
	line-height: var(--bfvg-detail-title-line-height);
	letter-spacing: var(--bfvg-detail-title-letter-spacing);
}

.bikefvg-route-page__hero .bikefvg-lead {
	max-width: 54ch;
	margin: clamp(1rem, 1.7vw, 1.45rem) 0 0;
	font-size: var(--wp--custom--type--lead);
	line-height: 1.5;
	color: var(--wp--preset--color--ink-secondary);
}

.bikefvg-route-page__actions {
	margin-top: clamp(1.25rem, 2vw, 1.7rem);
	align-items: center;
	flex-wrap: nowrap;
	gap: .5rem;
	/* I 4 pulsanti restano sempre su un'unica riga, alla stessa altezza: mai
	 * più a-capo e nessuno scroll. Nella colonna testo dell'hero (a due
	 * colonne da 56.25rem in su) lo spazio reale scende anche sotto i
	 * ~505px quando l'immagine occupa già la sua larghezza minima, contro
	 * i ~615px che servirebbero ai 4 pulsanti a piena etichetta/padding —
	 * la @container qui sotto misura lo spazio davvero disponibile (non la
	 * larghezza della finestra) e stringe il padding orizzontale di tutti
	 * e 4 i pulsanti quel poco che basta perché ci stiano sempre, senza
	 * toccare etichette, icone o altezza. */
	container: bikefvg-route-actions / inline-size;
}

.bikefvg-route-page__actions > * {
	flex-shrink: 0;
}

.bikefvg-route-page__actions-secondary {
	display: flex;
	flex-shrink: 0;
	align-items: center;
	gap: .5rem;
}

/* Sulla hero a colonna singola le due azioni primarie e le due personali
 * possono andare su due righe: evita che l'ultima invada la viewport. Il
 * gruppo Preferiti/Condividi resta unito, così la lettura resta 2 + 2.
 * Dalla hero a due colonne in su torna la riga unica, anche quando il
 * padding dei controlli viene compattato dalla container query. */
@media (max-width: 56.249rem) {
	.bikefvg-route-page__actions {
		flex-wrap: wrap;
	}
}


/* CTA itinerario: stessa metrica del submit "Trova itinerari" in homepage.
 * Altezza esplicita (non min-height + padding) per evitare differenze fra link
 * download e link ancora introdotte da stili globali/browser. */
.bikefvg-route-page__gpx,
.bikefvg-route-page__secondary-action {
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	box-sizing: border-box !important;
	min-height: 46px !important;
	max-height: 46px !important;
	height: 46px !important;
	padding: .68rem 1.5rem !important;
	margin: 0 !important;
	border-radius: var(--wp--custom--radius--control) !important;
	font: inherit;
	font-family: var(--wp--preset--font-family--body) !important;
	font-size: var(--wp--preset--font-size--medium) !important;
	font-weight: 800 !important;
	line-height: normal !important;
	white-space: nowrap;
	text-decoration: none;
}

/* Correzione ottica: i glifi di Inter hanno più massa sotto la linea mediana;
 * spostiamo solo il testo, non il box del controllo. */
.bikefvg-route-page__gpx > span,
.bikefvg-route-page__secondary-action > span {
	display: block;
	line-height: 1;
	transform: translateY(-1px);
}

.bikefvg-route-page__gpx {
	border: 0;
	background: var(--wp--preset--color--action);
	color: var(--wp--preset--color--surface);
}

.bikefvg-route-page__gpx:hover {
	background: var(--bfvg-action-hover);
}

.bikefvg-route-page__gpx:active {
	background: var(--bfvg-action-pressed);
}

.bikefvg-route-page__secondary-action {
	border: 1px solid var(--wp--preset--color--ink);
	background: transparent;
	color: var(--wp--preset--color--ink);
}

/* ---------- Preferiti e condivisione (azioni hero) ---------- */

/* Preferiti e Condividi sono <button>, non <a> come Scarica GPX/Vedi mappa:
 * senza azzerare l'aspetto nativo del controllo, alcuni browser mantengono
 * un'altezza minima e un padding verticale propri del pulsante di sistema
 * SOPRA al nostro CSS — risultato: bottoni più alti e disallineati rispetto
 * ai due link, anche con min-height/padding identici dichiarati qui.
 * Stesso reset già usato altrove nel tema per i controlli custom (select
 * del finder, altri pulsanti), qui mancava. */
.bikefvg-route-page__fav,
.bikefvg-share__btn {
	appearance: none;
	-webkit-appearance: none;
	-moz-appearance: none;
	margin: 0;
	gap: .45rem;
	cursor: pointer;
}

/* Sotto questa soglia i 4 pulsanti a piena etichetta non ci stanno più su
 * una riga (misurato: servono ~615px, mentre la colonna testo dell'hero a
 * due colonne può lasciarne solo ~505px quando l'immagine è già alla sua
 * larghezza minima — vedi nota su .bikefvg-route-page__actions). Si stringe
 * solo il padding orizzontale dei 4 pulsanti, non le etichette/icone né
 * l'altezza: a 505px reali servono ~500px, margine verificato. La soglia è
 * lo spazio davvero disponibile per la riga (container query), non la
 * larghezza della finestra: si adatta da sola anche se il rapporto delle
 * colonne dell'hero cambierà in futuro. */
@container bikefvg-route-actions (max-width: 40rem) {
	.bikefvg-route-page__gpx,
	.bikefvg-route-page__secondary-action {
		padding: .68rem .55rem !important;
	}
}

.bikefvg-route-page__fav.bikefvg-fav-toggle[aria-pressed="true"] {
	border-color: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--accent);
}

/* Wrapper di Condividi (serve a posizionare il menu a tendina). display+
 * align-items:center: senza, se il bottone al suo fianco (Preferiti) fosse
 * per qualunque motivo più alto, questo div si allungherebbe di default
 * (stretch, il comportamento predefinito di un figlio flex) e spingerebbe
 * il bottone Condividi in alto invece di lasciarlo centrato — la causa
 * del disallineamento verticale osservato. */
.bikefvg-share {
	position: relative;
	display: inline-flex;
	align-items: center;
}

.bikefvg-share__menu[hidden] {
	display: none;
}

.bikefvg-share__menu {
	position: absolute;
	z-index: 20;
	top: calc(100% + .5rem);
	left: 0;
	display: flex;
	flex-direction: column;
	min-width: 11rem;
	padding: .4rem;
	border: 1px solid var(--bfvg-line);
	border-radius: var(--wp--custom--radius--control);
	background: var(--wp--preset--color--panel);
	box-shadow: 0 .6rem 1.6rem rgba(0, 0, 0, .14);
}

.bikefvg-share__menu-item {
	display: block;
	width: 100%;
	padding: .55rem .7rem;
	border: 0;
	border-radius: calc(var(--wp--custom--radius--control) - .2rem);
	background: transparent;
	color: var(--wp--preset--color--ink);
	font: inherit;
	text-align: left;
	cursor: pointer;
}

.bikefvg-share__menu-item:hover {
	background: var(--wp--preset--color--surface-alt);
}

.bikefvg-share__status {
	margin: .3rem .3rem 0;
	font-size: .8125rem;
	color: var(--wp--preset--color--ink-muted);
	min-height: 1.1em;
}

.bikefvg-route-page__hero-media {
	position: relative;
	margin: 0;
	overflow: hidden;
	border-radius: var(--bfvg-radius-media);
	background: var(--wp--preset--color--surface-alt);
	aspect-ratio: 16 / 10;
}

.bikefvg-route-page__hero-media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/* Caption/credito: presente solo se valorizzato nella Media Library. */
.bikefvg-route-page__hero-media figcaption {
	position: absolute;
	right: .65rem;
	bottom: .65rem;
	max-width: calc(100% - 1.3rem);
	padding: .25rem .45rem;
	background: color-mix(in srgb, var(--wp--preset--color--ink) 76%, transparent);
	color: var(--wp--preset--color--surface);
	font-size: .72rem;
	line-height: 1.25;
}

/* ---------- Dati essenziali ---------- */

.bikefvg-route-page__stats {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 0;
	margin-top: clamp(1.35rem, 2.2vw, 2rem);
	padding: 0;
	background: transparent;
	/* Bordi reali: il fondo esposto di 1px spariva allo zoom frazionario.
	 * I lati complementari delle celle evitano separatori doppi. */
	border-top: 1px solid var(--bfvg-line);
	border-left: 1px solid var(--bfvg-line);
}

.bikefvg-route-page__stat {
	min-width: 0;
	min-height: 5.45rem;
	padding: .8rem 1rem;
	background: var(--wp--preset--color--paper);
	border-right: 1px solid var(--bfvg-line);
	border-bottom: 1px solid var(--bfvg-line);
}

/* Su mobile il min-height lascia un vuoto sotto il valore: il padding è già
 * simmetrico, quindi la cella deve seguire il suo contenuto. Da 42rem in su
 * resta la geometria uniforme della riga tecnica desktop. */
@media (max-width: 41.99rem) {
	.bikefvg-route-page__stat {
		min-height: 0;
	}
}

/* Regola UX: prima la categoria, poi il valore. */
.bikefvg-route-page__stat > .bikefvg-route-page__stat-label {
	display: block;
	margin: 0 0 .52rem;
	color: var(--wp--preset--color--ink-muted);
	font-size: var(--wp--preset--font-size--small);
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: .055em;
}

.bikefvg-route-page__stat > div {
	min-height: 1.5rem;
	font-size: clamp(1.06rem, .98rem + .42vw, 1.38rem);
	font-weight: 700;
	line-height: 1.18;
}

.bikefvg-route-page__stat .bikefvg-route-page__difficulty-label {
	display: inline-block;
	margin-right: .5rem;
	font-family: var(--wp--preset--font-family--body);
	font-weight: 700;
}

.bikefvg-route-page__stat .bikefvg-difficulty {
	display: inline-flex;
	vertical-align: .08em;
}

/* ---------- Avvisi operativi ---------- */

.bikefvg-route-page__notice {
	padding-block: .9rem;
	border-block: 1px solid currentColor;
}

.bikefvg-route-page__notice.is-review {
	color: var(--wp--preset--color--review);
	background: color-mix(in srgb, var(--wp--preset--color--review) 7%, var(--wp--preset--color--paper));
}

.bikefvg-route-page__notice.is-critical {
	color: var(--wp--preset--color--critical);
	background: color-mix(in srgb, var(--wp--preset--color--critical) 7%, var(--wp--preset--color--paper));
}

.bikefvg-route-page__notice p {
	max-width: 76ch;
	margin: .25rem 0 0;
	color: var(--wp--preset--color--ink);
}

/* ---------- Navigazione interna ---------- */

/* ---------- Ritmo delle sezioni ---------- */

.bikefvg-route-page__section {
	margin-block: 0;
	padding-block: clamp(2.5rem, 4vw, 3.5rem);
	border-bottom: 1px solid var(--bfvg-line);
}

/* Keep the section heading as a low-specificity default: shared components
   (for example service cards) must retain their own typography everywhere. */
.bikefvg-route-page__section :where(h2) {
	max-width: none;
	margin: 0 0 1rem;
	font-size: clamp(2rem, 3.4vw, 2.75rem);
}

/* ---------- Mappa + altimetria: un solo strumento ---------- */

.bikefvg-route-page__track-panel {
	overflow: hidden;
	margin-top: clamp(1.05rem, 1.8vw, 1.5rem);
	border: 1px solid var(--bfvg-line);
	border-radius: var(--bfvg-radius-panel);
	background: var(--wp--preset--color--paper);
}

.bikefvg-route-page__map {
	overflow: hidden;
	font-size: 0;
	line-height: 0;
	background: var(--wp--preset--color--panel);
}

/* Waymark può imporre al wrapper l'altezza di default oltre a quella della mappa:
 * azzeriamo ogni spazio residuo così profilo e cartografia risultano contigui. */
.bikefvg-route-page__map :where(.waymark-shortcode, .waymark-container, .waymark-shortcode-map, .waymark-map-wrapper) {
	height: auto !important;
	min-height: 0 !important;
	margin: 0 !important;
	padding: 0 !important;
	border: 0 !important;
	background: transparent !important;
}

.bikefvg-route-page__map :where(.waymark-map, .waymark-map-container),
.bikefvg-route-page__waymark-map {
	display: block;
	width: 100%;
	height: clamp(18rem, 30vw, 22.5rem) !important;
	min-height: clamp(18rem, 30vw, 22.5rem) !important;
	max-height: 22.5rem !important;
	margin: 0 !important;
	padding: 0 !important;
}

.bikefvg-route-page__map > :last-child {
	margin-bottom: 0 !important;
	padding-bottom: 0 !important;
}

.bikefvg-route-page__auto-map { position: relative; }

.bikefvg-route-page__map-status {
	margin: 0;
	padding: .65rem 1rem;
	border-top: 1px solid var(--bfvg-line);
	color: var(--wp--preset--color--ink-muted);
	font-size: var(--wp--preset--font-size--small);
	line-height: 1.4;
}
.bikefvg-route-page__map-status[hidden] { display: none; }
.bikefvg-route-page__map-status.is-error { color: var(--wp--preset--color--critical); }

.bikefvg-route-page__auto-map .waymark-marker-bikefvgstart i,
.bikefvg-route-page__auto-map .waymark-marker-bikefvgfinish i,
.bikefvg-route-page__auto-map .waymark-marker-bikefvgstartfinish i {
	font-family: inherit !important;
	font-size: .78rem !important;
	font-style: normal !important;
	font-weight: 800 !important;
}

.bikefvg-route-page__map-pending {
	padding: clamp(1.2rem, 2vw, 1.8rem);
	background: var(--bfvg-soft);
}
.bikefvg-route-page__map-pending p {
	max-width: 62ch;
	margin: .35rem 0 0;
	color: var(--wp--preset--color--ink-secondary);
}

.bikefvg-route-page__profile-panel {
	padding: .85rem clamp(.85rem, 1.6vw, 1.2rem) .95rem;
	border-top: 1px solid var(--bfvg-line);
	background: var(--wp--preset--color--paper);
}

.bikefvg-route-page__profile-title {
	margin: 0 0 .45rem;
	font-size: .96rem;
	font-weight: 800;
}

.bikefvg-route-page__elevation {
	--bfvg-elevation-height: clamp(10rem, 18vw, 12.5rem);
	position: relative;
	color: var(--wp--preset--color--accent);
}

.bikefvg-route-page__elevation-chart {
	display: grid;
	grid-template-columns: 3.4rem minmax(0, 1fr);
	gap: .55rem;
	align-items: stretch;
}

.bikefvg-route-page__elevation-y-axis {
	position: relative;
	height: var(--bfvg-elevation-height);
	color: var(--wp--preset--color--ink-muted);
	font-family: var(--wp--preset--font-family--mono);
	font-size: .75rem;
	line-height: 1;
	text-align: right;
}
.bikefvg-route-page__elevation-y-axis span {
	position: absolute;
	right: 0;
	transform: translateY(-50%);
	white-space: nowrap;
}

.bikefvg-route-page__elevation-plot {
	position: relative;
	min-width: 0;
	touch-action: pan-y;
}

.bikefvg-route-page__elevation svg {
	display: block;
	width: 100%;
	height: var(--bfvg-elevation-height);
	cursor: crosshair;
}

.bikefvg-route-page__elevation svg:focus-visible {
	outline: 2px solid var(--wp--preset--color--focus);
	outline-offset: 4px;
}

.bikefvg-profile-grade.is-descent-steep { --bfvg-grade-color: var(--wp--custom--elevation--descent-steep); }
.bikefvg-profile-grade.is-descent { --bfvg-grade-color: var(--wp--custom--elevation--descent); }
.bikefvg-profile-grade.is-level { --bfvg-grade-color: var(--wp--custom--elevation--level); }
.bikefvg-profile-grade.is-climb-gentle { --bfvg-grade-color: var(--wp--custom--elevation--climb-gentle); }
.bikefvg-profile-grade.is-climb { --bfvg-grade-color: var(--wp--custom--elevation--climb); }
.bikefvg-profile-grade.is-climb-steep { --bfvg-grade-color: var(--wp--custom--elevation--climb-steep); }
.bikefvg-profile-grade.is-unknown { --bfvg-grade-color: var(--wp--preset--color--ink-muted); }

.bikefvg-route-page__elevation-areas polygon {
	fill: var(--bfvg-grade-color, var(--wp--preset--color--accent));
	fill-opacity: .28;
	stroke: none;
	pointer-events: none;
}
.bikefvg-route-page__elevation-slopes polyline {
	fill: none;
	stroke: var(--bfvg-grade-color, var(--wp--preset--color--accent));
	stroke-width: 2.5;
	stroke-linejoin: round;
	pointer-events: none;
}

.bikefvg-route-page__elevation-grid line {
	stroke: var(--bfvg-line);
	stroke-width: 1;
	stroke-opacity: .68;
	stroke-dasharray: 3 4;
	vector-effect: non-scaling-stroke;
}

.bikefvg-route-page__elevation-line {
	fill: none;
	stroke: currentColor;
	stroke-width: 1;
	stroke-opacity: .25;
}

.bikefvg-route-page__elevation-cursor {
	stroke: var(--wp--preset--color--ink);
	stroke-width: 1.2;
	stroke-dasharray: 4 4;
	opacity: 0;
	pointer-events: none;
}

.bikefvg-route-page__elevation-cursor-dot {
	fill: var(--wp--preset--color--ink);
	stroke: var(--wp--preset--color--paper);
	stroke-width: 3;
	opacity: 0;
	pointer-events: none;
}

.bikefvg-route-page__elevation-cursor.is-visible,
.bikefvg-route-page__elevation-cursor-dot.is-visible { opacity: 1; }

.bikefvg-route-page__elevation-x-axis {
	display: flex;
	justify-content: space-between;
	gap: .3rem;
	margin-top: .3rem;
	color: var(--wp--preset--color--ink-muted);
	font-family: var(--wp--preset--font-family--mono);
	font-size: .7rem;
}

.bikefvg-route-page__elevation-readout {
	position: absolute;
	top: .4rem;
	left: .4rem;
	right: .4rem;
	padding: .28rem .42rem;
	border: 1px solid var(--bfvg-line);
	border-radius: .35rem;
	background: color-mix(in srgb, var(--wp--preset--color--paper) 92%, transparent);
	color: var(--wp--preset--color--ink);
	font-family: var(--wp--preset--font-family--mono);
	font-size: .8125rem;
	line-height: 1.4;
	pointer-events: none;
}

.bikefvg-route-page__elevation-key {
	margin-top: 1.1rem;
	padding-top: .85rem;
	border-top: 1px solid var(--bfvg-line);
	color: var(--wp--preset--color--ink);
}
.bikefvg-route-page__elevation-key-title {
	margin: 0 0 .65rem;
	font-size: .875rem;
	font-weight: 700;
}
.bikefvg-route-page__elevation-legend {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: .75rem 1rem;
	list-style: none;
	margin: 0;
	padding: 0;
}
.bikefvg-route-page__elevation-legend li {
	display: flex;
	align-items: flex-start;
	gap: .45rem;
	min-width: 0;
	margin: 0;
	font-size: .8125rem;
	line-height: 1.45;
}
.bikefvg-route-page__elevation-swatch {
	flex: 0 0 .8rem;
	height: .8rem;
	margin-top: .2rem;
	border-radius: 3px;
	background: var(--bfvg-grade-color, var(--wp--preset--color--accent));
}
.bikefvg-route-page__elevation-legend strong { display: block; font-weight: 600; }
.bikefvg-route-page__elevation-legend strong + span { color: var(--wp--preset--color--ink-secondary); }
.bikefvg-route-page__elevation-note {
	margin: .7rem 0 0;
	color: var(--wp--preset--color--ink-secondary);
	font-size: .8125rem;
	line-height: 1.5;
}
.bikefvg-route-page__elevation-note { margin-top: .25rem; }
@media (min-width: 40rem) {
	.bikefvg-route-page__elevation-legend { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (min-width: 64rem) {
	.bikefvg-route-page__elevation-legend { grid-template-columns: repeat(6, minmax(0, 1fr)); }
}

/* ---------- Panoramica ---------- */

.bikefvg-route-page__overview {
	display: grid;
	grid-template-columns: repeat(6, minmax(0, 1fr));
	gap: 0;
	margin-top: clamp(1.1rem, 2vw, 1.6rem);
	padding: 0;
	/* Gli spazi senza dati restano trasparenti: il fondo non simula i bordi. */
	background: transparent;
	border-top: 1px solid var(--bfvg-line);
	border-left: 1px solid var(--bfvg-line);
}

.bikefvg-route-page__overview > div {
	grid-column: span 2;
	min-width: 0;
	padding: clamp(.9rem, 1.5vw, 1.2rem);
	background: var(--wp--preset--color--paper);
	border-right: 1px solid var(--bfvg-line);
	border-bottom: 1px solid var(--bfvg-line);
}

.bikefvg-route-page__overview.is-count-1 > div { grid-column: span 6; }
.bikefvg-route-page__overview.is-count-2 > div,
.bikefvg-route-page__overview.is-count-4 > div { grid-column: span 3; }
.bikefvg-route-page__overview.is-count-5 > div:nth-child(n + 4),
.bikefvg-route-page__overview.is-count-7 > div:nth-child(n + 4) { grid-column: span 3; }

.bikefvg-route-page__overview span,
.bikefvg-route-page__reliability span,
.bikefvg-route-page__secondary-stats span {
	display: block;
	margin-bottom: .38rem;
	color: var(--wp--preset--color--ink-muted);
	font-size: var(--wp--preset--font-size--small);
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: .045em;
}

.bikefvg-route-page__overview strong,
.bikefvg-route-page__reliability strong {
	display: block;
	font-size: clamp(1.02rem, .98rem + .2vw, 1.16rem);
	line-height: 1.4;
}

.bikefvg-route-page__overview small {
	display: block;
	margin-top: .4rem;
	color: var(--wp--preset--color--ink-secondary);
	font-size: .86rem;
	line-height: 1.45;
}

.bikefvg-route-page__overview .is-positive strong,
.bikefvg-route-page__practical .is-positive h3 {
	color: var(--wp--preset--color--verified);
}

/* ---------- Testo editoriale ---------- */

.bikefvg-route-page__narrow {
	max-width: none;
	width: 100%;
	margin-inline: 0;
}

.bikefvg-route-page__content.bikefvg-prose {
	max-width: none;
}

.bikefvg-route-page__content {
	margin-top: clamp(1rem, 1.8vw, 1.5rem);
}

.bikefvg-route-page__content > :first-child {
	margin-top: 0;
}

.bikefvg-route-page__content img {
	max-width: 100%;
	height: auto;
}

.bikefvg-route-page__description-shell {
	position: relative;
}

.bikefvg-route-page__description-collapse {
	overflow: hidden;
	transition: max-height .42s cubic-bezier(.2,.72,.2,1);
}

.bikefvg-route-page__description-fade {
	position: absolute;
	right: 0;
	bottom: 2.7rem;
	left: 0;
	height: 7rem;
	pointer-events: none;
	opacity: 0;
	background: linear-gradient(to bottom, transparent, var(--wp--preset--color--paper) 84%);
	transition: opacity .22s ease;
}

.bikefvg-route-page__description-shell.is-collapsible:not(.is-expanded) .bikefvg-route-page__description-fade {
	opacity: 1;
}

.bikefvg-route-page__description-toggle {
	display: inline-flex;
	align-items: center;
	gap: .55rem;
	min-height: 2.75rem;
	margin-top: .8rem;
	padding: .35rem 0;
	border: 0;
	border-bottom: 1px solid currentColor;
	background: transparent;
	color: var(--wp--preset--color--ink);
	font: inherit;
	font-weight: 700;
	cursor: pointer;
}

.bikefvg-route-page__description-toggle[hidden] {
	display: none;
}

/* ---------- Difficoltà e fondo ---------- */

.bikefvg-route-page__difficulty-layout {
	display: grid;
	gap: 1.5rem;
}

.bikefvg-route-page__difficulty-main > h2,
.bikefvg-route-page__surface > h3 {
	margin-top: 0;
}

.bikefvg-route-page__difficulty-main > h2 {
	margin-bottom: clamp(1.25rem, 2vw, 1.8rem);
}

.bikefvg-route-page__difficulty-road {
	padding: 1rem 0;
	border-top: 1px solid var(--bfvg-line);
}

.bikefvg-route-page__difficulty-road > span,
.bikefvg-route-page__difficulty-road > strong {
	display: block;
}

.bikefvg-route-page__difficulty-road > span {
	color: var(--wp--preset--color--ink-muted);
	font-size: var(--wp--preset--font-size--small);
	font-weight: 800;
	text-transform: uppercase;
}

.bikefvg-route-page__difficulty-road > strong {
	margin-block: .3rem .55rem;
}

.bikefvg-route-page__difficulty-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 17rem), 1fr));
	gap: 0 1.25rem;
	border-top: 1px solid var(--bfvg-line);
}

.bikefvg-route-page__difficulty-item {
	min-width: 0;
	padding-block: .8rem;
	border-bottom: 1px solid var(--bfvg-line);
}

.bikefvg-route-page__surface h3 {
	margin-bottom: 1rem;
}

.bikefvg-route-page__surface-row {
	margin-bottom: 1rem;
}

.bikefvg-route-page__surface-row > div:first-child {
	display: flex;
	justify-content: space-between;
	gap: 1rem;
}

.bikefvg-route-page__bar {
	height: .45rem;
	margin-top: .4rem;
	overflow: hidden;
	border-radius: var(--wp--custom--radius--pill);
	background: var(--wp--preset--color--surface-alt);
}

.bikefvg-route-page__bar i {
	display: block;
	width: var(--bfvg-route-pct, 0%);
	height: 100%;
	background: var(--wp--preset--color--accent);
}

.bikefvg-route-page__secondary-stats {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 9rem), 1fr));
	margin-top: clamp(1.4rem, 2.5vw, 2rem);
	border-top: 1px solid var(--bfvg-line);
	border-left: 1px solid var(--bfvg-line);
}

.bikefvg-route-page__secondary-stats > div {
	padding: .9rem 1rem;
	border-right: 1px solid var(--bfvg-line);
	border-bottom: 1px solid var(--bfvg-line);
}

/* Stesse proporzioni compatte dei dati essenziali: sui piccoli schermi le
 * statistiche secondarie non hanno bisogno del respiro da pannello desktop.
 * Riduciamo in modo identico sopra e sotto, lasciando invariati colonne e
 * allineamento della griglia. */
@media (max-width: 41.99rem) {
	.bikefvg-route-page__secondary-stats > div {
		padding-block: .6rem;
	}
}

/* ---------- Informazioni pratiche ---------- */

.bikefvg-route-page__practical {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	margin-top: clamp(1.1rem, 2vw, 1.6rem);
	border-top: 1px solid var(--bfvg-line);
	border-left: 1px solid var(--bfvg-line);
}

.bikefvg-route-page__practical article {
	min-width: 0;
	padding: clamp(1rem, 1.8vw, 1.35rem);
	border-right: 1px solid var(--bfvg-line);
	border-bottom: 1px solid var(--bfvg-line);
}

.bikefvg-route-page__practical h3 {
	margin: 0 0 .42rem;
	font-size: clamp(1.15rem, 1.05rem + .45vw, 1.45rem);
}

.bikefvg-route-page__practical p {
	margin: 0;
	color: var(--wp--preset--color--ink-secondary);
}

.bikefvg-route-page__practical .is-note {
	border-left: 2px solid var(--bfvg-line);
	background: color-mix(in srgb, var(--wp--preset--color--panel) 72%, var(--wp--preset--color--paper));
}

.bikefvg-route-page__practical .is-warning {
	border-left: 3px solid var(--wp--preset--color--review);
	background: color-mix(in srgb, var(--wp--preset--color--review) 5%, var(--wp--preset--color--paper));
}

.bikefvg-route-page__weather-days {
	display: flex;
	flex-direction: column;
	gap: .6rem;
}

.bikefvg-route-page__weather-day {
	display: grid;
	grid-template-columns: 28px minmax(0, 1fr);
	grid-template-rows: auto auto;
	column-gap: .6rem;
	row-gap: .12rem;
	align-items: start;
}

.bikefvg-route-page__weather-icon {
	grid-column: 1;
	grid-row: 1;
	width: 28px;
	height: 28px;
	color: var(--wp--preset--color--accent);
}

.bikefvg-route-page__weather-icon-svg {
	display: block;
	width: 100%;
	height: 100%;
}

.bikefvg-route-page__weather-date {
	grid-column: 2;
	grid-row: 1;
	align-self: center;
	display: block;
	margin: 0;
	padding: 0;
	line-height: 1.2;
	color: var(--wp--preset--color--ink);
	font-size: .95em;
	font-weight: 600;
}

.bikefvg-route-page__weather-summary {
	grid-column: 2;
	grid-row: 2;
	display: block;
	margin: 0;
	padding: 0;
	line-height: 1.35;
}

.bikefvg-route-page__weather-source {
	margin-top: 1.1rem;
	padding-top: .1rem;
	font-size: .8125rem;
	color: var(--wp--preset--color--ink-muted);
}

.bikefvg-route-page__weather-source a {
	color: inherit;
}

/* ---------- Servizi ---------- */

.bikefvg-route-page__service-group + .bikefvg-route-page__service-group {
	margin-top: var(--wp--preset--spacing--40);
}

.bikefvg-route-page__service-group > h3 {
	margin-bottom: var(--wp--preset--spacing--20);
}


.bikefvg-route-page__service-group--transport {
	padding: clamp(1rem, 1.5vw, 1.35rem);
	border: 1px solid var(--wp--preset--color--accent);
	border-radius: var(--bfvg-radius-panel);
	background: color-mix(in srgb, var(--wp--preset--color--accent) 5%, var(--wp--preset--color--paper));
}

.bikefvg-route-page__service-group--transport .bikefvg-route-page__service-group-head {
	margin-bottom: var(--wp--preset--spacing--20);
}

/* ---------- Itinerari correlati ---------- */

/* Compact headers keep titles at the top, with real images as small thumbnails. */
.bikefvg-route-page__related-grid { display: grid; grid-template-columns: 1fr; gap: 16px; align-items: stretch; }
.bikefvg-route-page__related-card { min-width: 0; overflow: hidden; border: 1px solid var(--bfvg-line); border-radius: var(--bfvg-radius-card); background: #fff; }
.bikefvg-route-page__related-body { display: flex; flex-direction: column; height: 100%; box-sizing: border-box; padding: 20px; }
.bikefvg-route-page__related-head { display: flex; align-items: flex-start; gap: 12px; }
.bikefvg-route-page__related-head > div:first-child { flex: 1; min-width: 0; }
.bikefvg-route-page__related-media { flex: 0 0 80px; width: 80px; height: 80px; overflow: hidden; border-radius: 8px; }
.bikefvg-route-page .bikefvg-route-page__related-media img { display: block; width: 100%; height: 100%; object-fit: cover; }
.bikefvg-route-page__related-body h3 { margin: 10px 0 0; font-size: 1.18rem; line-height: 1.35; overflow-wrap: anywhere; }
.bikefvg-route-page__related-body h3 a { color: inherit; text-decoration: none; }
.bikefvg-route-page__related-body h3 a:hover { text-decoration: underline; text-underline-offset: .2em; }
.bikefvg-route-page__related-body > p { margin: 12px 0 16px; color: var(--wp--preset--color--ink-secondary); font-size: 1rem; line-height: 1.5; }
.bikefvg-route-page__related-meta { display: flex; flex-wrap: wrap; gap: 8px 14px; align-items: center; margin-top: auto; padding-top: 12px; border-top: 1px solid var(--bfvg-line); font-size: .875rem; }

/* ---------- Attendibilità: fascia discreta, non una sezione protagonista ---------- */

.bikefvg-route-page__reliability {
	margin-block: 0;
	padding-block: .95rem;
	background: var(--bfvg-soft);
	border-top: 1px solid var(--bfvg-line);
}

.bikefvg-route-page__reliability .bikefvg-wrap {
	display: grid;
	grid-template-columns: auto 1fr;
	gap: 1rem 2rem;
	align-items: center;
}

.bikefvg-route-page__reliability .bikefvg-eyebrow {
	margin: 0;
}

.bikefvg-route-page__reliability-grid {
	display: flex;
	flex-wrap: wrap;
	gap: .75rem 2.25rem;
	align-items: center;
}

.bikefvg-route-page__reliability-grid > div {
	min-width: 10rem;
}

/* ---------- Galleria fotografica ---------- */

.bikefvg-route-page__gallery {
	display: grid;
	grid-template-columns: 2fr 1fr 1fr;
	grid-template-rows: repeat(2, minmax(9rem, 12.5rem));
	gap: .7rem;
	margin-top: clamp(1.05rem, 1.8vw, 1.5rem);
}

.bikefvg-route-page__gallery-item {
	position: relative;
	min-width: 0;
	margin: 0;
	overflow: hidden;
	border-radius: var(--bfvg-radius-media);
	background: var(--wp--preset--color--surface-alt);
}

.bikefvg-route-page__gallery-item:first-child { grid-row: 1 / 3; }
.bikefvg-route-page__gallery-item img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.bikefvg-route-page__gallery-item figcaption {
	position: absolute;
	right: .5rem;
	bottom: .5rem;
	max-width: calc(100% - 1rem);
	padding: .24rem .42rem;
	background: color-mix(in srgb, var(--wp--preset--color--ink) 76%, transparent);
	color: var(--wp--preset--color--surface);
	font-size: .7rem;
	line-height: 1.3;
}

.bikefvg-route-page__gallery.is-placeholder .bikefvg-route-page__gallery-item {
	display: grid;
	place-items: center;
	border: 1px dashed color-mix(in srgb, var(--wp--preset--color--ink-muted) 38%, transparent);
	background:
		linear-gradient(135deg, transparent 49.7%, color-mix(in srgb, var(--wp--preset--color--ink-muted) 12%, transparent) 50%, transparent 50.3%),
		var(--bfvg-soft);
	color: var(--wp--preset--color--ink-muted);
	font-size: var(--wp--preset--font-size--small);
	font-weight: 700;
}

.bikefvg-route-page__gallery-editor-note {
	grid-column: 1 / -1;
	margin: .1rem 0 0;
	color: var(--wp--preset--color--ink-muted);
	font-size: var(--wp--preset--font-size--small);
}

/* ---------- Torna su ---------- */

.bikefvg-route-page__back-to-top {
	position: fixed;
	right: clamp(1rem, 2vw, 1.5rem);
	bottom: clamp(1rem, 2vw, 1.5rem);
	z-index: 68;
	display: grid;
	place-items: center;
	width: 2.8rem;
	height: 2.8rem;
	padding: 0;
	border: 1px solid var(--bfvg-line);
	border-radius: 50%;
	background: color-mix(in srgb, var(--wp--preset--color--paper) 94%, transparent);
	color: var(--wp--preset--color--ink);
	box-shadow: 0 5px 18px color-mix(in srgb, var(--wp--preset--color--ink) 13%, transparent);
	font: 800 1.15rem/1 var(--wp--preset--font-family--body);
	cursor: pointer;
	opacity: 0;
	visibility: hidden;
	transform: translateY(.5rem);
	transition: opacity .16s ease, transform .16s ease, visibility .16s ease;
}

.bikefvg-route-page__back-to-top.is-visible {
	opacity: 1;
	visibility: visible;
	transform: translateY(0);
}

.bikefvg-route-page__back-to-top:hover {
	border-color: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--accent);
}

@media (max-width: 41.99rem) {
	.bikefvg-route-page__gallery {
		grid-template-columns: 1fr 1fr;
		grid-template-rows: 12rem 8.5rem 8.5rem;
	}
	.bikefvg-route-page__gallery-item:first-child {
		grid-column: 1 / -1;
		grid-row: auto;
	}
	.bikefvg-route-page__elevation-chart {
		grid-template-columns: 3.4rem minmax(0, 1fr);
		gap: .4rem;
	}
	.bikefvg-route-page__elevation-x-axis span:nth-child(2),
	.bikefvg-route-page__elevation-x-axis span:nth-child(4) { display: none; }
	.bikefvg-route-page__back-to-top {
		bottom: 1rem;
	}

	/* Con cinque dati la griglia 2-colonne lasciava un mezzo riquadro vuoto:
	 * l'ultimo dato occupa l'intera riga, senza fingere una sesta cella. */
	.bikefvg-route-page__stats.is-count-5 .bikefvg-route-page__stat:last-child {
		grid-column: 1 / -1;
	}

	.bikefvg-route-page__overview {
		grid-template-columns: 1fr;
	}

	.bikefvg-route-page__overview > div,
	.bikefvg-route-page__overview.is-count-1 > div,
	.bikefvg-route-page__overview.is-count-2 > div,
	.bikefvg-route-page__overview.is-count-4 > div,
	.bikefvg-route-page__overview.is-count-5 > div:nth-child(n + 4),
	.bikefvg-route-page__overview.is-count-7 > div:nth-child(n + 4) {
		grid-column: 1;
	}

	.bikefvg-route-page__reliability .bikefvg-wrap {
		grid-template-columns: 1fr;
		gap: .65rem;
	}
}

@media (min-width: 42rem) {
	.bikefvg-route-page__stats { grid-template-columns: repeat(5, minmax(0, 1fr)); }
	.bikefvg-route-page__stats.is-count-1 { grid-template-columns: 1fr; }
	.bikefvg-route-page__stats.is-count-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.bikefvg-route-page__stats.is-count-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.bikefvg-route-page__stats.is-count-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }

	.bikefvg-route-page__related-grid.is-count-2 {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.bikefvg-route-page__related-grid.is-count-3 {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

@media (min-width: 56.25rem) {
	.bikefvg-route-page__hero-grid {
		grid-template-columns: minmax(0, 1.22fr) minmax(20rem, .78fr);
	}

}

@media (prefers-reduced-motion: reduce) {
	.bikefvg-route-page__related-media img,
	.bikefvg-route-page__back-to-top,
	.bikefvg-route-page__description-collapse,
	.bikefvg-route-page__description-fade {
		transition: none;
	}
}

/* Quantità ridotte: la galleria si ricompone senza simulare celle mancanti. */
@media (min-width: 42rem) {
	.bikefvg-route-page__gallery.is-count-1 {
		grid-template-columns: 1fr;
		grid-template-rows: minmax(18rem, 28rem);
	}
	.bikefvg-route-page__gallery.is-count-1 .bikefvg-route-page__gallery-item:first-child {
		grid-row: auto;
	}
	.bikefvg-route-page__gallery.is-count-2 {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		grid-template-rows: minmax(15rem, 23rem);
	}
	.bikefvg-route-page__gallery.is-count-2 .bikefvg-route-page__gallery-item:first-child,
	.bikefvg-route-page__gallery.is-count-3 .bikefvg-route-page__gallery-item:first-child {
		grid-row: auto;
	}
	.bikefvg-route-page__gallery.is-count-3 {
		grid-template-columns: 1.5fr 1fr 1fr;
		grid-template-rows: minmax(14rem, 22rem);
	}
}

/* Marker automatici A/B e collisioni con servizi (0.6.59).
 *
 * La coordinata reale resta quella del percorso. Se un servizio cade entro
 * ~30 m da partenza/arrivo, il servizio diventa un badge del marker A/B:
 * non viene spostato e non viene disegnato un secondo marker sovrapposto.
 */
.bikefvg-route-map-pin {
	width: var(--bikefvg-service-marker-size, 34px) !important;
	height: var(--bikefvg-service-marker-size, 34px) !important;
	margin: 0 !important;
	overflow: visible !important;
	border: 0 !important;
	background: transparent !important;
}

.bikefvg-route-map-pin.is-composite {
	width: calc(var(--bikefvg-service-marker-size, 34px) + 14px) !important;
	height: calc(var(--bikefvg-service-marker-size, 34px) + 10px) !important;
}

.bikefvg-route-map-pin__cluster {
	position: relative;
	display: block;
	width: var(--bikefvg-service-marker-size, 34px);
	height: var(--bikefvg-service-marker-size, 34px);
	overflow: visible;
}

.bikefvg-route-map-pin.is-composite .bikefvg-route-map-pin__cluster {
	width: calc(var(--bikefvg-service-marker-size, 34px) + 14px);
	height: calc(var(--bikefvg-service-marker-size, 34px) + 10px);
}

.bikefvg-route-map-pin__core {
	position: absolute;
	top: 0;
	left: 0;
	display: grid;
	place-items: center;
	box-sizing: border-box;
	width: var(--bikefvg-service-marker-size, 34px);
	height: var(--bikefvg-service-marker-size, 34px);
	border: 2px solid var(--wp--preset--color--paper);
	border-radius: 50%;
	background: var(--wp--preset--color--ink);
	color: var(--wp--preset--color--paper);
	box-shadow: 0 2px 7px color-mix(in srgb, var(--wp--preset--color--ink) 28%, transparent);
	font: 800 12px/1 var(--wp--preset--font-family--body);
	letter-spacing: -.02em;
}

.bikefvg-route-map-pin.is-composite .bikefvg-route-map-pin__core {
	top: 8px;
	left: 2px;
}

.bikefvg-route-map-pin.is-start-finish .bikefvg-route-map-pin__core {
	font-size: 10px;
}

.bikefvg-route-map-pin.is-finish .bikefvg-route-map-pin__core {
	background: var(--wp--preset--color--action);
}

.bikefvg-route-map-pin__service {
	position: absolute;
	top: 0;
	right: 0;
	z-index: 2;
	display: block;
	width: 26px;
	height: 26px;
}

.bikefvg-route-map-pin__service .bikefvg-map-service-marker__shell {
	width: 26px;
	height: 26px;
}

.bikefvg-route-map-pin__service .bikefvg-map-service-marker__shell svg,
.bikefvg-route-map-pin__service .bikefvg-map-service-marker__shell img,
.bikefvg-route-map-pin__service .bikefvg-map-service-marker__icon {
	width: 58%;
	height: 58%;
}

.bikefvg-route-map-pin__count {
	position: absolute;
	right: -4px;
	bottom: -2px;
	z-index: 3;
	display: grid;
	place-items: center;
	box-sizing: border-box;
	min-width: 18px;
	height: 18px;
	padding: 0 3px;
	border: 2px solid var(--wp--preset--color--paper);
	border-radius: 999px;
	background: var(--wp--preset--color--ink);
	color: var(--wp--preset--color--paper);
	font: 800 9px/1 var(--wp--preset--font-family--body);
	box-shadow: 0 1px 4px color-mix(in srgb, var(--wp--preset--color--ink) 25%, transparent);
}


/* ---------- Servizi automatici vicini alla traccia (0.6.52) ---------- */

.bikefvg-route-page__service-group-head {
	display: flex;
	align-items: end;
	justify-content: space-between;
	gap: var(--wp--preset--spacing--20);
	margin-bottom: .35rem;
}

.bikefvg-route-page__service-group-head h3 {
	margin: 0;
}

.bikefvg-route-page__service-group-head p {
	max-width: 46rem;
	margin: .4rem 0 0;
	color: var(--wp--preset--color--ink-secondary);
}

.bikefvg-route-page__distance-note {
	margin: 0 0 var(--wp--preset--spacing--30);
	color: var(--wp--preset--color--ink-muted);
	font-size: var(--wp--preset--font-size--small);
}

.bikefvg-route-page__nearby-category + .bikefvg-route-page__nearby-category {
	margin-top: var(--wp--preset--spacing--40);
}

.bikefvg-route-page__nearby-category > h4 {
	margin: 0 0 var(--wp--preset--spacing--20);
	font-size: clamp(1rem, .96rem + .18vw, 1.15rem);
}

.bikefvg-route-nearby-service__meta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: .45rem .65rem;
	margin-bottom: .7rem;
}

.bikefvg-route-nearby-service__distance {
	display: inline-flex;
	align-items: center;
	min-height: 1.75rem;
	padding: .2rem .55rem;
	border: 1px solid var(--bfvg-line);
	border-radius: 999px;
	color: var(--wp--preset--color--ink-secondary);
	font-family: var(--wp--preset--font-family--mono);
	font-size: .72rem;
	font-weight: 700;
	line-height: 1;
}

@media (max-width: 49.99rem) {
	.bikefvg-route-page__service-group-head {
		align-items: start;
		flex-direction: column;
	}
}

/* Itinerary review test.111: utility, consistent spacing and compact service cards. */
.bikefvg-route-page__section > .bikefvg-wrap > .bikefvg-section__head { margin-bottom: 16px; align-items: center; }
.bikefvg-route-page__section .bikefvg-section__head h2 { margin-bottom: 0; }
.bikefvg-route-page__section .bikefvg-eyebrow { margin-top: 0; margin-bottom: 8px; }
.bikefvg-route-page__description-shell { margin-top: 16px; }
.bikefvg-route-page__content > :first-child { margin-top: 0; }
.bikefvg-route-page__difficulty-link { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 8px; color: inherit; text-decoration: none; }
.bikefvg-route-page__difficulty-link:hover .bikefvg-route-page__difficulty-label { text-decoration: underline; text-underline-offset: .2em; }
.bikefvg-route-page__status { padding: 14px 0; border-top: 1px solid var(--bfvg-line); border-bottom: 1px solid var(--bfvg-line); }
.bikefvg-route-page__status-facts { display: flex; flex-wrap: wrap; gap: 8px 18px; align-items: baseline; font-size: .875rem; line-height: 1.5; }
.bikefvg-route-page__status-facts > span > span { color: var(--wp--preset--color--ink-secondary); }
.bikefvg-route-page__manager-link { color: inherit; font-weight: 700; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: .18em; white-space: nowrap; }
.bikefvg-route-page__manager-link:hover { color: var(--wp--preset--color--accent); }
@media (min-width: 64rem) { .bikefvg-route-page__status-facts { flex-wrap: nowrap; white-space: nowrap; } }
.bikefvg-route-page__status.is-critical { border-left: 4px solid var(--wp--preset--color--critical); background: color-mix(in srgb, var(--wp--preset--color--critical) 5%, transparent); }
.bikefvg-route-page__status.is-review { border-left: 4px solid var(--wp--preset--color--review); }
.bikefvg-route-page__status-note { margin-top: 8px; max-width: 80ch; font-size: .94rem; line-height: 1.5; white-space: pre-line; overflow-wrap: anywhere; }
.bikefvg-route-page__practical { align-items: stretch; }
.bikefvg-route-page__practical h3 { font-size: 1.05rem; line-height: 1.35; }
.bikefvg-route-page__practical p { line-height: 1.5; }
.bikefvg-route-page__practical .is-note p,
.bikefvg-route-page__practical .is-warning p { max-width: 90ch; }
.bikefvg-route-page__start-directions { display: inline-flex; align-items: center; min-height: 44px; margin-top: 4px; font-size: .9rem; font-weight: 600; }
.bikefvg-route-page .bikefvg-route-services [hidden] { display: none !important; }
.bikefvg-route-services__filters { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 12px; }
.bikefvg-route-services__filters button,
.bikefvg-route-services__more { box-sizing: border-box; min-height: 44px; border: 1px solid var(--bfvg-line); border-radius: 999px; padding: 10px 16px; background: #fff; color: var(--wp--preset--color--ink); font: 600 .9rem/1.35 var(--wp--preset--font-family--body); cursor: pointer; }
.bikefvg-route-services__filters button { display: inline-flex; align-items: center; gap: 8px; text-align: left; }
.bikefvg-route-services__filters button span { font-variant-numeric: tabular-nums; font-weight: 400; }
.bikefvg-route-services__filters button[aria-pressed="true"] { background: var(--wp--preset--color--ink); color: #fff; border-color: var(--wp--preset--color--ink); }
.bikefvg-route-services__filters button:hover,
.bikefvg-route-services__more:hover { border-color: var(--wp--preset--color--accent); }
.bikefvg-route-services__filters button:focus-visible,
.bikefvg-route-services__more:focus-visible,
.bikefvg-route-page__related-card a:focus-visible,
.bikefvg-route-page__difficulty-link:focus-visible { outline: 2px solid var(--wp--preset--color--accent); outline-offset: 3px; }
.bikefvg-route-services__count { margin: 0 0 12px; font-size: .875rem; color: var(--wp--preset--color--ink-secondary); }
.bikefvg-route-services__list { display: grid; grid-template-columns: minmax(0, 1fr); gap: 16px; align-items: stretch; }
.bikefvg-route-services__more { display: block; margin: 20px auto 0; border-radius: 8px; }
.bikefvg-route-services > .bikefvg-route-page__distance-note { margin: 16px 0 0; max-width: 85ch; font-size: .825rem; line-height: 1.5; }
@media (min-width: 50rem) {
  .bikefvg-route-services__list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .bikefvg-route-services__list.is-single > article:not([hidden]) { grid-column: 1 / -1; }
  .bikefvg-route-page__practical { grid-template-columns: repeat(6, minmax(0, 1fr)); }
  .bikefvg-route-page__practical > article { grid-column: span 2; }
  .bikefvg-route-page__practical:is(.is-count-1,.is-count-2,.is-count-4) > article { grid-column: span 3; }
  .bikefvg-route-page__practical.is-count-1 > article { grid-column: 1 / -1; }
  .bikefvg-route-page__practical.is-count-5 > article:nth-child(n+4) { grid-column: span 3; }
}
@media (min-width: 64rem) {
  .bikefvg-route-services__list { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 39.99rem) {
  .bikefvg-route-page__practical { grid-template-columns: 1fr; }
  .bikefvg-route-page__related-media { flex-basis: 72px; width: 72px; height: 72px; }
}
@media print {
  .bikefvg-route-services__filters, .bikefvg-route-services__more { display: none !important; }
  .bikefvg-route-page .bikefvg-route-services [data-route-service][hidden] { display: flex !important; }
}

/* ---------- Itinerary workspace test.114: content + persistent map ----------
 * Desktop: the map becomes the stable spatial reference while the decision
 * content scrolls alongside it. Mobile/tablet keep the natural single-column
 * reading order: map, profile, overview, difficulty, description, practical.
 */
.bikefvg-route-page__workspace {
	border-bottom: 1px solid var(--bfvg-line);
}

.bikefvg-route-page__workspace-grid,
.bikefvg-route-page__workspace-content,
.bikefvg-route-page__workspace-map {
	min-width: 0;
}

.bikefvg-route-page__workspace-map {
	padding-block: clamp(1.75rem, 3vw, 2.75rem);
	border-bottom: 1px solid var(--bfvg-line);
}

.bikefvg-route-page__workspace-map-head h2 {
	margin: 0;
	font-size: clamp(1.8rem, 3vw, 2.25rem);
}

.bikefvg-route-page__workspace-map .bikefvg-route-page__track-panel,
.bikefvg-route-page__profile-section .bikefvg-route-page__track-panel {
	margin-top: clamp(1.05rem, 1.8vw, 1.5rem);
}

.bikefvg-route-page__profile-section .bikefvg-route-page__profile-panel {
	border-top: 0;
}

.bikefvg-route-page__workspace-section {
	padding-block: clamp(2rem, 3vw, 2.75rem);
}

.bikefvg-route-page__workspace-section:last-child {
	border-bottom: 0;
}

@media (min-width: 75rem) {
	.bikefvg-route-page__workspace.has-sticky-map > .bikefvg-route-page__workspace-wrap {
		width: min(var(--bfvg-content), calc(100% - 2 * var(--bfvg-gutter)));
	}

	.bikefvg-route-page__workspace.has-sticky-map .bikefvg-route-page__workspace-grid {
		display: grid;
		grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr);
		gap: clamp(2rem, 3vw, 3.25rem);
		align-items: stretch;
	}

	.bikefvg-route-page__workspace.has-sticky-map .bikefvg-route-page__workspace-map {
		grid-column: 2;
		grid-row: 1;
		align-self: stretch;
		padding-block: clamp(2rem, 3vw, 2.75rem);
		border-bottom: 0;
	}

	.bikefvg-route-page__workspace.has-sticky-map .bikefvg-route-page__workspace-map-sticky {
		position: sticky;
		top: calc(var(--bfvg-header-height, 0px) + var(--bfvg-admin-offset, var(--wp-admin--admin-bar--height, 0px)) + var(--bfvg-anchor-nav-height, 56px) + 14px);
	}

	.bikefvg-route-page__workspace.has-sticky-map .bikefvg-route-page__workspace-content {
		grid-column: 1;
		grid-row: 1;
	}

	/* The sidebar changes the useful width: preserve readability rather than
	 * forcing the full-width grids into a narrow column. */
	.bikefvg-route-page__workspace.has-sticky-map .bikefvg-route-page__workspace-section h2 {
		font-size: clamp(1.72rem, 2vw, 2.15rem);
	}

	.bikefvg-route-page__workspace.has-sticky-map .bikefvg-route-page__overview {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.bikefvg-route-page__workspace.has-sticky-map .bikefvg-route-page__overview > div,
	.bikefvg-route-page__workspace.has-sticky-map .bikefvg-route-page__overview.is-count-1 > div,
	.bikefvg-route-page__workspace.has-sticky-map .bikefvg-route-page__overview.is-count-2 > div,
	.bikefvg-route-page__workspace.has-sticky-map .bikefvg-route-page__overview.is-count-4 > div,
	.bikefvg-route-page__workspace.has-sticky-map .bikefvg-route-page__overview.is-count-5 > div:nth-child(n + 4),
	.bikefvg-route-page__workspace.has-sticky-map .bikefvg-route-page__overview.is-count-7 > div:nth-child(n + 4) {
		grid-column: auto;
	}

	.bikefvg-route-page__workspace.has-sticky-map .bikefvg-route-page__overview.is-count-1 > div {
		grid-column: 1 / -1;
	}


	.bikefvg-route-page__workspace.has-sticky-map .bikefvg-route-page__surface h3 {
		font-size: clamp(1.05rem, 1.1vw, 1.2rem);
		line-height: 1.3;
	}

	.bikefvg-route-page__workspace.has-sticky-map .bikefvg-route-page__secondary-stats {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.bikefvg-route-page__workspace.has-sticky-map .bikefvg-route-page__practical {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.bikefvg-route-page__workspace.has-sticky-map .bikefvg-route-page__practical > article,
	.bikefvg-route-page__workspace.has-sticky-map .bikefvg-route-page__practical:is(.is-count-1,.is-count-2,.is-count-4) > article,
	.bikefvg-route-page__workspace.has-sticky-map .bikefvg-route-page__practical.is-count-5 > article:nth-child(n+4) {
		grid-column: auto;
	}

	.bikefvg-route-page__workspace.has-sticky-map .bikefvg-route-page__practical.is-count-1 > article,
	.bikefvg-route-page__workspace.has-sticky-map .bikefvg-route-page__practical:is(.is-count-3,.is-count-5,.is-count-7) > article:last-child {
		grid-column: 1 / -1;
	}

	/* Six grade keys are too dense inside the content column even though the
	 * viewport itself is wide. Three columns retain fast scanning. */
	.bikefvg-route-page__workspace.has-sticky-map .bikefvg-route-page__elevation-legend {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

@media print {
	.bikefvg-route-page__workspace.has-sticky-map .bikefvg-route-page__workspace-map-sticky {
		position: static;
	}
}

/* .244 — actual surfaces keep their declared categories and approximate distances. */
.bikefvg-route-page__materials{margin-top:16px;padding-top:16px;border-top:1px solid var(--bikefvg-line,#d4cec5)}
.bikefvg-route-page__materials:first-child{margin-top:0;padding-top:0;border-top:0}
.bikefvg-route-page__materials .bikefvg-route-page__surface-row{margin-bottom:.75rem}
.bikefvg-route-page__materials .bikefvg-route-page__surface-row:last-child{margin-bottom:0}
.bikefvg-route-page__materials .bikefvg-route-page__surface-row>div:first-child{gap:.5rem;align-items:baseline}
.bikefvg-route-page__materials .bikefvg-route-page__surface-row strong{flex:0 0 auto;white-space:nowrap}

/* .250 — ratings above route types and surfaces, inside the map reading column. */
.bikefvg-route-page__surface { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.25rem; align-items: start; }
.bikefvg-route-page__surface > * { min-width: 0; }
.bikefvg-route-page__surface.is-single { grid-template-columns: 1fr; }
.bikefvg-route-page__surface h3 { margin-top: 0; }
.bikefvg-route-page__surface .bikefvg-route-page__materials { margin: 0; padding: 0; border: 0; }
.bikefvg-route-page__surface .bikefvg-route-page__surface-row { margin-bottom: .8rem; }
.bikefvg-route-page__surface-row > div:first-child { gap: .5rem; align-items: baseline; }
.bikefvg-route-page__surface-row strong { flex-shrink: 0; white-space: nowrap; }
.bikefvg-route-page__surface > .bikefvg-route-page__waytypes:empty { display: none; }
.bikefvg-route-page__surface > .bikefvg-route-page__waytypes:empty + .bikefvg-route-page__materials { grid-column: 1 / -1; }
@media (max-width: 26rem) {
  .bikefvg-route-page__surface { grid-template-columns: 1fr; }
}

/* .252 — keep each label, score and description together at the available column width. */
.bikefvg-route-page__difficulty-item > .bikefvg-route-page__itrs-heading {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: .75rem;
	margin: 0;
	padding: 0;
	font-size: 1rem;
	font-weight: 650;
	line-height: 1.35;
}
.bikefvg-route-page__itrs-heading > span { min-width: 0; overflow-wrap: anywhere; }
.bikefvg-route-page__itrs-heading > strong {
	display: inline-flex;
	align-items: center;
	flex: 0 0 auto;
	white-space: nowrap;
	font-size: .875rem;
	font-weight: 500;
}
.bikefvg-route-page__difficulty-item > .bikefvg-route-page__itrs-description {
	margin: .35rem 0 0;
	padding: 0;
	font-size: .9rem;
	line-height: 1.45;
	overflow-wrap: anywhere;
}
.bikefvg-route-page__itrs-guide-link {
	margin: .8rem 0 0;
	padding-bottom: 1.25rem;
	font-size: .875rem;
	line-height: 1.45;
}
.bikefvg-route-page__itrs-guide-link a {
	color: var(--wp--preset--color--ink-secondary, currentColor);
	text-decoration-thickness: 1px;
	text-underline-offset: .2em;
}
.bikefvg-route-page__itrs-guide-link a:hover,
.bikefvg-route-page__itrs-guide-link a:focus-visible {
	color: var(--wp--preset--color--accent, currentColor);
}
/* 0.8.122 — ITRS credit and rating note. */
.bikefvg-route-page__itrs-credit {
	margin: .35rem 0 0;
	padding-bottom: 1.25rem;
	font-size: .75rem;
	line-height: 1.45;
	color: var(--wp--preset--color--ink-secondary, currentColor);
}
.bikefvg-route-page__itrs-guide-link:has(+ .bikefvg-route-page__itrs-credit) { padding-bottom: 0; }


/* ---------- Servizi: fascia funzionale ad alta riconoscibilità (.80) ---------- */
.bikefvg-route-page__services-section {
	padding-block: 0;
	background: var(--wp--preset--color--paper);
}

.bikefvg-route-services__hero {
	position: relative;
	isolation: isolate;
	overflow: hidden;
	padding-block: clamp(2rem, 3.6vw, 3rem);
	background: var(--wp--preset--color--accent);
	color: #fff;
}

.bikefvg-route-services__hero > .bikefvg-wrap {
	position: relative;
	z-index: 1;
}

.bikefvg-route-services__trail {
	position: absolute;
	z-index: 0;
	top: clamp(4.2rem, 6vw, 5.4rem);
	right: clamp(-2.25rem, -1.5vw, -.5rem);
	width: min(34rem, 44vw);
	height: auto;
	overflow: visible;
	color: #fff;
	opacity: .42;
	pointer-events: none;
}

.bikefvg-route-services__trail path,
.bikefvg-route-services__trail circle {
	fill: none;
	stroke: currentColor;
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
	vector-effect: non-scaling-stroke;
}

.bikefvg-route-services__trail > path:first-child {
	stroke-dasharray: 10.4 7.6;
}

.bikefvg-route-services__trail-ring,
.bikefvg-route-services__trail-cross {
	stroke-dasharray: none;
}

.bikefvg-route-services__trail-cross {
	stroke-width: 2.2 !important;
}

.bikefvg-route-services__hero-head {
	display: flex;
	flex-wrap: wrap;
	gap: 1rem 2rem;
	align-items: flex-start;
	justify-content: space-between;
}

.bikefvg-route-page__services-section .bikefvg-route-services__hero h2 {
	margin: 0;
	color: #fff;
	font-size: clamp(2.35rem, 4vw, 3.35rem);
	line-height: 1.02;
}

.bikefvg-route-page__services-section .bikefvg-route-services__hero .bikefvg-eyebrow {
	margin: 0 0 .65rem;
	color: #fff;
}

.bikefvg-route-page__services-section .bikefvg-route-services__hero .bikefvg-eyebrow::before {
	background: currentColor;
}

.bikefvg-route-services__intro {
	max-width: 62ch;
	margin: .9rem 0 0;
	color: rgba(255,255,255,.9);
	font-size: clamp(1rem, .96rem + .18vw, 1.12rem);
	line-height: 1.55;
}

.bikefvg-route-services__archive-link.bikefvg-text-link {
	/* Stessa chip archivio usata nelle testate della homepage, adattata al fondo petrolio. */
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: .45rem;
	flex: 0 0 auto;
	box-sizing: border-box;
	min-height: 40px;
	padding: .55rem .95rem;
	border: 1px solid #fff;
	border-radius: 999px;
	background: #fff;
	color: var(--wp--preset--color--accent);
	font-family: var(--wp--preset--font-family--body);
	font-size: .875rem;
	font-weight: 700;
	line-height: 1.25;
	text-decoration: none;
	box-shadow: 0 2px 5px rgba(14,40,43,.16);
}

.bikefvg-route-services__archive-link.bikefvg-text-link::after {
	color: currentColor;
}

.bikefvg-route-services__archive-link.bikefvg-text-link:hover {
	border-color: #fff;
	background: var(--wp--preset--color--paper);
	color: var(--wp--preset--color--accent);
}

.bikefvg-route-services__filters {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	width: 100%;
	max-width: none;
	margin: clamp(1.4rem, 2.6vw, 2rem) 0 0;
	column-gap: 8px;
	row-gap: 10px;
}

.bikefvg-route-services__filters button {
	flex: 0 0 auto;
	white-space: nowrap;
	border-color: rgba(255,255,255,.5);
	background: rgba(255,255,255,.04);
	color: #fff;
}

.bikefvg-route-services__filters button[aria-pressed="true"] {
	border-color: #fff;
	background: #fff;
	color: var(--wp--preset--color--accent);
}

.bikefvg-route-services__filters button:hover {
	border-color: #fff;
	background: rgba(255,255,255,.12);
}

.bikefvg-route-services__filters button[aria-pressed="true"]:hover {
	background: #fff;
	color: var(--wp--preset--color--accent);
}

.bikefvg-route-services__filters button:focus-visible,
.bikefvg-route-services__archive-link:focus-visible {
	outline-color: #fff;
}

.bikefvg-route-services__body {
	padding-block: clamp(1.65rem, 3vw, 2.5rem) clamp(2.4rem, 4vw, 3.5rem);
}

.bikefvg-route-services__body .bikefvg-route-services__count {
	margin-bottom: 1rem;
}

.bikefvg-route-services__more {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: .45rem;
	transition: border-color .22s ease, background-color .22s ease, color .22s ease, transform .22s ease;
}

.bikefvg-route-services__more:hover {
	transform: translateY(-1px);
}

.bikefvg-route-services__more:active {
	transform: translateY(0);
}

.bikefvg-route-services__more-label {
	transition: opacity .18s ease;
}

.bikefvg-route-services__more-arrow {
	display: inline-block;
	font-size: 1rem;
	line-height: 1;
	transform-origin: 50% 50%;
	transition: transform .34s cubic-bezier(.22, 1, .36, 1);
}

.bikefvg-route-services__more[data-mode="close"] .bikefvg-route-services__more-arrow {
	transform: rotate(180deg);
}

/* Espansione/riduzione morbida della griglia Servizi. */
.bikefvg-route-services__list {
	/* Le righe mantengono sempre la loro altezza naturale durante il reveal. */
	align-content: start;
	transition: height .5s cubic-bezier(.22, 1, .36, 1);
}

.bikefvg-route-services__list.is-animating {
	overflow: hidden;
}

.bikefvg-route-services__list.is-measuring {
	transition: none !important;
}

.bikefvg-route-services__list [data-route-service] {
	transition: opacity .2s ease, transform .36s cubic-bezier(.22, 1, .36, 1);
}

.bikefvg-route-services__list [data-route-service].is-entering {
	opacity: 0;
	transform: translateY(10px);
}

.bikefvg-route-services__list [data-route-service].is-leaving {
	opacity: 0;
	transform: translateY(-6px);
}

@media (prefers-reduced-motion: reduce) {
	.bikefvg-route-services__list,
	.bikefvg-route-services__list [data-route-service],
	.bikefvg-route-services__more,
	.bikefvg-route-services__more-arrow {
		transition: none !important;
	}
}

.bikefvg-route-services__pagination + .bikefvg-route-page__distance-note {
	margin-top: clamp(1.65rem, 2.4vw, 2rem);
}

/* La sezione successiva resta chiara ma si stacca dal corpo Servizi. */
.bikefvg-route-page__related-section {
	background: color-mix(in srgb, var(--wp--preset--color--paper) 58%, var(--wp--preset--color--panel) 42%);
}

@media (max-width: 39.99rem) {
	.bikefvg-route-services__hero {
		padding-block: 1.75rem 1.6rem;
	}
	.bikefvg-route-services__hero-head {
		align-items: flex-start;
	}
	.bikefvg-route-services__trail {
		top: 5rem;
		right: -3.5rem;
		width: 19rem;
		opacity: .3;
	}
	.bikefvg-route-services__archive-link.bikefvg-text-link {
		min-height: 40px;
		padding: .5rem .75rem;
	}
	.bikefvg-route-services__filters {
		margin-top: 1.2rem;
		row-gap: 8px;
	}
	.bikefvg-route-services__filters button {
		min-height: 40px;
		padding: 8px 12px;
		font-size: .84rem;
	}
	.bikefvg-route-services__body {
		padding-block: 1.35rem 2.5rem;
	}
}

/* 0.8.101 — Scheda a blocchi (Il percorso · Prima di partire · Foto · Dintorni).
 * I contenitori di blocco non hanno resa propria: servono da destinazione
 * dell'indice. Le sezioni interne mantengono ritmo e filetti esistenti. */
.bikefvg-route-page__block {
	display: block;
}

/* 0.8.102 — Variante "mappa": mappa a tutta larghezza del contenuto e
 * altimetria bassa subito sotto, nello stesso pannello (un solo strumento).
 * Le altezze battono quelle generali della mappa per specificità. */
.bikefvg-route-page__wide-track {
	padding-block: clamp(1.75rem, 3vw, 2.75rem);
}
.bikefvg-route-page__wide-track h2 {
	margin-bottom: 0;
}
.bikefvg-route-page__track-panel.is-wide {
	margin-top: clamp(1.05rem, 1.8vw, 1.5rem);
	border: 1px solid var(--bfvg-line);
	border-radius: var(--bfvg-radius-panel);
	background: var(--wp--preset--color--paper);
}
/* 0.8.109 — mai sulle mappe a schermo intero ("Apri mappa"). */
.bikefvg-route-page__track-panel.is-wide .bikefvg-route-page__map :where(.waymark-map, .waymark-map-container):not(:fullscreen, .leaflet-fullscreen-on, .leaflet-pseudo-fullscreen, .bfvg-map-is-fullscreen),
.bikefvg-route-page__track-panel.is-wide .bikefvg-route-page__waymark-map:not(:fullscreen, .leaflet-fullscreen-on, .leaflet-pseudo-fullscreen, .bfvg-map-is-fullscreen) {
	height: clamp(20rem, 38vw, 32rem) !important;
	min-height: clamp(20rem, 38vw, 32rem) !important;
	max-height: 32rem !important;
}
/* Altimetria in proporzione bassa: circa un quarto dell'altezza della mappa. */
.bikefvg-route-page__track-panel.is-wide .bikefvg-route-page__elevation {
	--bfvg-elevation-height: clamp(5.5rem, 8vw, 7.5rem);
}
/* Dopo la mappa larga i contenuti scorrono in una colonna sola: la prosa
 * della descrizione mantiene una misura di lettura comoda. */
.bikefvg-route-page__workspace.is-after-wide-map .bikefvg-route-page__content {
	max-width: 72ch;
}
/* Con l'altimetria bassa si tengono solo estremi e quote alterne sull'asse. */
.bikefvg-route-page__track-panel.is-wide .bikefvg-route-page__elevation-y-axis span:nth-child(even):not(:last-child) {
	display: none;
}

/* =====================================================================
 * 0.8.103 — Scheda compatta (layout "blocchi" e "mappa").
 * Tutte le regole sono sotto .is-compact: il layout "classico" non le vede.
 * ===================================================================== */

/* Apertura: meno aria verticale, così il modulo cartografico si intravede
 * già nella prima schermata. */
.bikefvg-route-page.is-compact .bikefvg-route-page__hero {
	padding-block: clamp(1.1rem, 2vw, 2rem) clamp(1rem, 1.6vw, 1.5rem);
}
.bikefvg-route-page.is-compact .bikefvg-route-page__badges {
	margin-bottom: .75rem;
}
.bikefvg-route-page.is-compact .bikefvg-route-page__hero h1 {
	max-width: 18ch;
	font-size: clamp(2.2rem, 4vw, 3.6rem);
}
.bikefvg-route-page.is-compact .bikefvg-route-page__hero .bikefvg-lead {
	margin-top: .8rem;
}
.bikefvg-route-page.is-compact .bikefvg-route-page__actions {
	margin-top: 1.1rem;
}
@media (min-width: 56.25rem) {
	.bikefvg-route-page.is-compact .bikefvg-route-page__hero-media {
		aspect-ratio: 16 / 9;
	}
}
.bikefvg-route-page.is-compact .bikefvg-route-page__stats {
	margin-top: 1rem;
}
.bikefvg-route-page.is-compact .bikefvg-route-page__stat {
	min-height: 0;
	padding: .6rem .9rem;
}
.bikefvg-route-page.is-compact .bikefvg-route-page__stat > .bikefvg-route-page__stat-label {
	margin-bottom: .3rem;
}
/* Fascia di stato: una riga sottile. */
.bikefvg-route-page.is-compact .bikefvg-route-page__status {
	padding: 8px 0;
	font-size: .875rem;
}

/* Gerarchia dei pulsanti: GPX principale, mappa secondaria,
 * Preferiti e Condividi discreti (stesso controllo, senza cornice). */
.bikefvg-route-page.is-compact .bikefvg-route-page__actions-secondary .bikefvg-route-page__secondary-action {
	border-color: transparent;
	padding-inline: .6rem !important;
	font-weight: 600 !important;
	color: var(--wp--preset--color--ink-secondary);
}
.bikefvg-route-page.is-compact .bikefvg-route-page__actions-secondary .bikefvg-route-page__secondary-action:hover {
	color: var(--wp--preset--color--ink);
	text-decoration: underline;
	text-underline-offset: .2em;
}
.bikefvg-route-page.is-compact .bikefvg-route-page__actions-secondary .bikefvg-route-page__fav[aria-pressed="true"] {
	border-color: transparent;
	color: var(--wp--preset--color--accent);
}

/* GPX sempre raggiungibile all'estremità destra dell'indice fisso (desktop). */
.bikefvg-route-page.is-compact .bikefvg-anchor-nav__gpx {
	display: none;
}
@media (min-width: 64rem) {
	/* 0.8.105 — tondo come i comandi dell'header (ricerca, preferiti):
	 * cerchio da 44px; resta pieno ruggine perché è l'azione principale. */
	.bikefvg-route-page.is-compact .bikefvg-anchor-nav__gpx {
		display: inline-grid;
		place-items: center;
		align-self: center;
		box-sizing: border-box;
		flex: 0 0 var(--bfvg-touch);
		width: var(--bfvg-touch);
		height: var(--bfvg-touch);
		min-height: var(--bfvg-touch);
		margin-inline-start: auto;
		/* 0.8.106 — respiro dai bordi della barra: margine verticale che
		 * porta il totale a 3,35rem, la stessa altezza delle voci (la barra
		 * non cresce), più un anello trasparente di 3px: il cerchio visibile
		 * è di 38px ma l'area cliccabile resta 44px (regola 5 del sistema). */
		margin-block: .3rem;
		padding: 0;
		border: 3px solid transparent;
		border-radius: 999px;
		background: var(--wp--preset--color--action);
		background-clip: padding-box;
		color: var(--wp--preset--color--surface);
		font-size: .75rem;
		font-weight: 800;
		letter-spacing: .02em;
		white-space: nowrap;
		text-decoration: none;
	}
	.bikefvg-route-page.is-compact .bikefvg-anchor-nav__gpx::after {
		content: none;
	}
	.bikefvg-route-page.is-compact .bikefvg-anchor-nav__gpx:hover {
		background: var(--bfvg-action-hover);
		background-clip: padding-box;
		color: var(--wp--preset--color--surface);
	}
}

/* Modulo cartografico: mappa e altimetria compatta nello stesso pannello.
 * Nel pannello fisso tutto il modulo deve stare nella finestra: la mappa
 * cede altezza alle finestre basse invece di spingere fuori il profilo. */
.bikefvg-route-page.is-compact .bikefvg-route-page__track-panel.is-in-aside {
	margin-top: clamp(1.05rem, 1.8vw, 1.5rem);
	border: 1px solid var(--bfvg-line);
	border-radius: var(--bfvg-radius-panel);
	background: var(--wp--preset--color--paper);
}
.bikefvg-route-page.is-compact .bikefvg-route-page__track-panel.is-in-aside .bikefvg-route-page__elevation {
	--bfvg-elevation-height: clamp(4.5rem, 7vw, 6rem);
}
.bikefvg-route-page.is-compact .bikefvg-route-page__track-panel.is-in-aside .bikefvg-route-page__elevation-y-axis span:nth-child(even):not(:last-child) {
	display: none;
}
.bikefvg-route-page.is-compact .bikefvg-route-page__track-panel.is-in-aside .bikefvg-route-page__elevation-key {
	margin-top: .6rem;
	padding-top: .55rem;
}
.bikefvg-route-page.is-compact .bikefvg-route-page__track-panel.is-in-aside .bikefvg-route-page__elevation-key-title {
	display: none;
}
.bikefvg-route-page.is-compact .bikefvg-route-page__track-panel.is-in-aside .bikefvg-route-page__elevation-legend {
	gap: .35rem .75rem;
}
.bikefvg-route-page.is-compact .bikefvg-route-page__track-panel.is-in-aside .bikefvg-route-page__elevation-legend li {
	font-size: .75rem;
	line-height: 1.3;
}
@media (min-width: 75rem) {
	/* 0.8.109 — correzione: questa regola (0.8.103) batteva quella dello schermo
	 * intero e "Apri mappa" non ingrandiva nulla. Ora esclude gli stati a schermo intero. */
	.bikefvg-route-page.is-compact .bikefvg-route-page__track-panel.is-in-aside .bikefvg-route-page__map :where(.waymark-map, .waymark-map-container):not(:fullscreen, .leaflet-fullscreen-on, .leaflet-pseudo-fullscreen, .bfvg-map-is-fullscreen),
	.bikefvg-route-page.is-compact .bikefvg-route-page__track-panel.is-in-aside .bikefvg-route-page__waymark-map:not(:fullscreen, .leaflet-fullscreen-on, .leaflet-pseudo-fullscreen, .bfvg-map-is-fullscreen) {
		/* 0.8.110 — cartografia più alta (prima 14–24rem): la legenda compatta
		 * restituisce parte dello spazio; sulle finestre basse la mappa ha la
		 * precedenza sul fondo del modulo. */
		height: clamp(18rem, calc(100vh - 33rem), 30rem) !important;
		min-height: clamp(18rem, calc(100vh - 33rem), 30rem) !important;
		max-height: 30rem !important;
	}
}

/* Dati tecnici: fascia a tutta larghezza sotto il modulo cartografico. */
.bikefvg-route-page:is(.is-compact, .bikefvg-experience) .bikefvg-route-page__tech-section {
	background: color-mix(in srgb, var(--wp--preset--color--panel) 45%, var(--wp--preset--color--paper));
}
/* 0.8.104 — Tre colonne uguali: Difficoltà · Tipi di percorso · Superfici.
 * Il contenitore delle superfici "si apre" (display: contents) così le sue
 * due parti diventano colonne della stessa griglia della difficoltà. Con una
 * sola delle due, le colonne diventano due. Titoli delle tre colonne alla
 * stessa scala. */
/* 0.8.107 — Uniformità delle tre colonne: stesso titolo, stessa riga
 * (etichetta + valore in alto, seconda riga sotto: descrizione o barra),
 * stessi filetti e spaziature. */
.bikefvg-route-page:is(.is-compact, .bikefvg-experience) .bikefvg-route-page__tech-section .bikefvg-route-page__difficulty-main > h2,
.bikefvg-route-page:is(.is-compact, .bikefvg-experience) .bikefvg-route-page__tech-section .bikefvg-route-page__surface h3 {
	margin: 0 0 .9rem;
	font-family: var(--wp--preset--font-family--display);
	font-size: var(--wp--custom--type--card-title-compact);
	font-weight: 600;
	line-height: 1.08;
	letter-spacing: -.025em;
	color: var(--wp--preset--color--ink);
}
/* Righe: come nella colonna Difficoltà, il primo filetto sta SOTTO il
 * titolo (sopra la prima voce), poi un filetto sotto ogni voce. Così i tre
 * titoli partono dalla stessa quota e i filetti si allineano. (0.8.108) */
.bikefvg-route-page:is(.is-compact, .bikefvg-experience) .bikefvg-route-page__tech-section :is(.bikefvg-route-page__waytypes, .bikefvg-route-page__materials) {
	margin: 0;
	padding: 0;
	border-top: 0;
}
.bikefvg-route-page:is(.is-compact, .bikefvg-experience) .bikefvg-route-page__tech-section :is(.bikefvg-route-page__waytypes, .bikefvg-route-page__materials) > h3 + .bikefvg-route-page__surface-row {
	border-top: 1px solid var(--bfvg-line);
}
.bikefvg-route-page:is(.is-compact, .bikefvg-experience) .bikefvg-route-page__tech-section .bikefvg-route-page__surface-row,
.bikefvg-route-page:is(.is-compact, .bikefvg-experience) .bikefvg-route-page__tech-section .bikefvg-route-page__surface-row:last-child {
	margin: 0;
	padding-block: .8rem;
	border-bottom: 1px solid var(--bfvg-line);
}
/* Etichetta: stessa scala e peso delle voci di difficoltà. */
.bikefvg-route-page:is(.is-compact, .bikefvg-experience) .bikefvg-route-page__tech-section .bikefvg-route-page__surface-row > div:first-child {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	gap: .75rem;
	font-size: 1rem;
	font-weight: 650;
	line-height: 1.35;
	color: var(--wp--preset--color--ink);
}
.bikefvg-route-page:is(.is-compact, .bikefvg-experience) .bikefvg-route-page__tech-section .bikefvg-route-page__surface-row > div:first-child > span {
	min-width: 0;
	font-size: inherit;
	font-weight: inherit;
	overflow-wrap: anywhere;
}
/* Valore: stessa resa del punteggio di difficoltà (dato, .875rem). */
.bikefvg-route-page:is(.is-compact, .bikefvg-experience) .bikefvg-route-page__tech-section .bikefvg-route-page__surface-row strong,
.bikefvg-route-page:is(.is-compact, .bikefvg-experience) .bikefvg-route-page__tech-section .bikefvg-route-page__itrs-heading > strong {
	font-size: .875rem;
	font-weight: 500;
}
/* 0.8.126 — Colonna senza dati: stessa riga delle voci, testo secondario. */
.bikefvg-route-page:is(.is-compact, .bikefvg-experience) .bikefvg-route-page__tech-section .bikefvg-route-page__tech-empty {
	margin: 0;
	padding-block: .8rem;
	border-top: 1px solid var(--bfvg-line);
	border-bottom: 1px solid var(--bfvg-line);
	font-size: .9rem;
	line-height: 1.45;
	color: var(--wp--preset--color--ink-secondary);
}
/* Seconda riga: la barra occupa il posto della descrizione. */
.bikefvg-route-page:is(.is-compact, .bikefvg-experience) .bikefvg-route-page__tech-section .bikefvg-route-page__bar {
	height: .375rem;
	margin-top: .55rem;
}
.bikefvg-route-page:is(.is-compact, .bikefvg-experience) .bikefvg-route-page__tech-section .bikefvg-route-page__difficulty-item > .bikefvg-route-page__itrs-description {
	margin-top: .3rem;
	color: var(--wp--preset--color--ink-secondary);
}
@media (min-width: 48rem) {
	.bikefvg-route-page:is(.is-compact, .bikefvg-experience) .bikefvg-route-page__tech-section .bikefvg-route-page__difficulty-layout.has-surface {
		display: grid;
		grid-template-columns: repeat(3, minmax(0, 1fr));
		/* 0.8.108 — colonne meno dense. */
		gap: clamp(2.5rem, 5vw, 5rem);
		align-items: start;
	}
	.bikefvg-route-page:is(.is-compact, .bikefvg-experience) .bikefvg-route-page__tech-section .bikefvg-route-page__difficulty-layout.has-surface:has(> .bikefvg-route-page__surface.is-single) {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
	.bikefvg-route-page:is(.is-compact, .bikefvg-experience) .bikefvg-route-page__tech-section .bikefvg-route-page__surface {
		display: contents;
	}
	.bikefvg-route-page:is(.is-compact, .bikefvg-experience) .bikefvg-route-page__tech-section .bikefvg-route-page__surface > .bikefvg-route-page__waytypes:empty {
		display: none;
	}
	.bikefvg-route-page:is(.is-compact, .bikefvg-experience) .bikefvg-route-page__tech-section .bikefvg-route-page__surface > * {
		grid-column: auto;
	}
}

/* 0.8.104 — Box dati altimetrici sotto il profilo (Dislivello −, quote,
 * pendenze): stessa griglia delle statistiche, compatta, dentro il pannello.
 * Il margine negativo nasconde i filetti destro/inferiore che duplicherebbero
 * il bordo del pannello. */
.bikefvg-route-page.is-compact .bikefvg-route-page__elevation-stats {
	border-top: 1px solid var(--bfvg-line);
	background: var(--wp--preset--color--paper);
}
.bikefvg-route-page.is-compact .bikefvg-route-page__elevation-stats .bikefvg-route-page__secondary-stats {
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 7.5rem), 1fr));
	margin: 0 -1px -1px 0;
	border-top: 0;
	border-left: 0;
}
.bikefvg-route-page.is-compact .bikefvg-route-page__elevation-stats .bikefvg-route-page__secondary-stats > div {
	padding: .55rem .8rem;
}
.bikefvg-route-page.is-compact .bikefvg-route-page__elevation-stats .bikefvg-route-page__secondary-stats span {
	margin-bottom: .2rem;
	font-size: .6875rem;
}

/* =====================================================================
 * 0.8.110 — Mappa, stato, indice.
 * ===================================================================== */

/* Legenda delle pendenze nel modulo: una riga continua (colore, nome,
 * intervallo) invece della griglia a due righe per voce. Colori invariati. */
.bikefvg-route-page.is-compact .bikefvg-route-page__track-panel.is-in-aside .bikefvg-route-page__elevation-legend {
	display: flex;
	flex-wrap: wrap;
	gap: .3rem .9rem;
}
.bikefvg-route-page.is-compact .bikefvg-route-page__track-panel.is-in-aside .bikefvg-route-page__elevation-legend li {
	align-items: center;
	gap: .35rem;
}
.bikefvg-route-page.is-compact .bikefvg-route-page__track-panel.is-in-aside .bikefvg-route-page__elevation-legend .bikefvg-route-page__elevation-swatch {
	flex-basis: .7rem;
	height: .7rem;
	margin-top: 0;
}
.bikefvg-route-page.is-compact .bikefvg-route-page__track-panel.is-in-aside .bikefvg-route-page__elevation-legend li strong,
.bikefvg-route-page.is-compact .bikefvg-route-page__track-panel.is-in-aside .bikefvg-route-page__elevation-legend li strong + span {
	display: inline;
}
.bikefvg-route-page.is-compact .bikefvg-route-page__track-panel.is-in-aside .bikefvg-route-page__elevation-legend li strong + span {
	margin-left: .3em;
}
.bikefvg-route-page.is-compact .bikefvg-route-page__track-panel.is-in-aside .bikefvg-route-page__elevation-note {
	font-size: .75rem;
}

/* "Servizi vicini" nella mappa incorporata: niente testo d'aiuto e righe più
 * strette (sempre 44px di altezza utile), così si vedono più categorie.
 * A schermo intero il pannello resta quello completo. */
.bikefvg-route-page.is-compact .bikefvg-route-page__track-panel.is-in-aside .bfvg-route-map:not(.bfvg-map-is-fullscreen) .bfvg-map-panel.is-services .bfvg-map-panel-body > .bfvg-map-meta {
	display: none;
}
.bikefvg-route-page.is-compact .bikefvg-route-page__track-panel.is-in-aside .bfvg-route-map:not(.bfvg-map-is-fullscreen) .bfvg-map-panel.is-services .bfvg-map-panel-body {
	padding-block: 8px;
}
.bikefvg-route-page.is-compact .bikefvg-route-page__track-panel.is-in-aside .bfvg-route-map:not(.bfvg-map-is-fullscreen) .bfvg-map-panel.is-services .bfvg-map-filter {
	min-height: 44px;
	padding-block: 5px;
}

/* Fascia di stato: la percorribilità in primo piano, verifica e fonte in
 * secondo piano. */
.bikefvg-route-page.is-compact .bikefvg-route-page__status-facts {
	color: var(--wp--preset--color--ink-muted);
	font-size: .8125rem;
}
.bikefvg-route-page.is-compact .bikefvg-route-page__status-facts > .is-primary {
	color: var(--wp--preset--color--ink);
	font-size: 1rem;
}
.bikefvg-route-page.is-compact .bikefvg-route-page__status-facts > .is-primary strong {
	font-weight: 800;
}

/* Indice fisso: strumento principale durante lo scorrimento, caratteri un
 * po' più grandi (prima: preset small). */
.bikefvg-route-page.is-compact .bikefvg-anchor-nav a:not(.bikefvg-anchor-nav__gpx) {
	font-size: .9375rem;
}

/* =====================================================================
 * 0.8.111 — Informazioni pratiche per azioni (layout blocchi e mappa).
 * Stesso linguaggio dei Dati tecnici: titoli di gruppo alla stessa scala,
 * elenchi a righe con filetti, nessuna griglia di celle vuote.
 * ===================================================================== */
.bikefvg-route-page.is-compact .bikefvg-route-page__practical-v2 {
	display: grid;
	gap: clamp(1.75rem, 3.5vw, 3.5rem);
	margin-top: clamp(1.1rem, 2vw, 1.6rem);
	align-items: start;
}
@media (min-width: 64rem) {
	.bikefvg-route-page.is-compact .bikefvg-route-page__practical-v2.has-weather {
		grid-template-columns: minmax(0, 2fr) minmax(16rem, 1fr);
	}
}
.bikefvg-route-page.is-compact .bikefvg-route-page__practical-groups {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 17rem), 1fr));
	gap: clamp(1.75rem, 3.5vw, 3.5rem);
	align-items: start;
}
.bikefvg-route-page.is-compact .bikefvg-route-page__practical-group > h3 {
	margin: 0 0 .9rem;
	font-family: var(--wp--preset--font-family--display);
	font-size: var(--wp--custom--type--card-title-compact);
	font-weight: 600;
	line-height: 1.08;
	letter-spacing: -.025em;
}
.bikefvg-route-page.is-compact .bikefvg-route-page__practical-list {
	margin: 0;
	border-top: 1px solid var(--bfvg-line);
}
.bikefvg-route-page.is-compact .bikefvg-route-page__practical-list > div {
	display: grid;
	grid-template-columns: minmax(7rem, 38%) minmax(0, 1fr);
	gap: .25rem 1rem;
	padding-block: .7rem;
	border-bottom: 1px solid var(--bfvg-line);
}
.bikefvg-route-page.is-compact .bikefvg-route-page__practical-list dt {
	color: var(--wp--preset--color--ink-muted);
	font-size: .875rem;
	font-weight: 700;
	line-height: 1.45;
}
.bikefvg-route-page.is-compact .bikefvg-route-page__practical-list dd {
	margin: 0;
	min-width: 0;
	color: var(--wp--preset--color--ink);
	font-size: 1rem;
	line-height: 1.45;
	overflow-wrap: anywhere;
}
.bikefvg-route-page.is-compact .bikefvg-route-page__practical-list .is-positive dd {
	color: var(--wp--preset--color--verified);
	font-weight: 600;
}
@media (max-width: 29.99rem) {
	.bikefvg-route-page.is-compact .bikefvg-route-page__practical-list > div {
		grid-template-columns: 1fr;
	}
}

/* "Raggiungi la partenza": comando riconoscibile, secondario rispetto al GPX. */
.bikefvg-route-page.is-compact .bikefvg-route-page__start-button {
	display: inline-flex;
	align-items: center;
	gap: .4rem;
	min-height: var(--bfvg-touch);
	margin-top: 1rem;
	padding: .55rem 1.1rem;
	border: 1px solid var(--wp--preset--color--ink);
	border-radius: var(--wp--custom--radius--control);
	color: var(--wp--preset--color--ink);
	font-weight: 700;
	text-decoration: none;
}
.bikefvg-route-page.is-compact .bikefvg-route-page__start-button:hover {
	background: color-mix(in srgb, var(--wp--preset--color--ink) 6%, transparent);
}

/* Meteo: riquadro laterale compatto. */
.bikefvg-route-page.is-compact .bikefvg-route-page__practical-weather .bikefvg-route-page__weather {
	padding: 1rem 1.1rem;
	border: 1px solid var(--bfvg-line);
	border-radius: var(--bfvg-radius-panel);
	background: color-mix(in srgb, var(--wp--preset--color--panel) 45%, var(--wp--preset--color--paper));
}
.bikefvg-route-page.is-compact .bikefvg-route-page__practical-weather .bikefvg-route-page__weather > h3 {
	margin: 0 0 .75rem;
	font-family: var(--wp--preset--font-family--display);
	font-size: var(--wp--custom--type--card-title-compact);
	font-weight: 600;
	line-height: 1.08;
}
.bikefvg-route-page.is-compact .bikefvg-route-page__practical-weather .bikefvg-route-page__weather-source {
	margin-top: .75rem;
}

/* Criticità (in testa) e nota (in chiusura): una fascia a tutta larghezza. */
.bikefvg-route-page.is-compact .bikefvg-route-page__practical-alert {
	margin-top: clamp(1.1rem, 2vw, 1.6rem);
	padding: .8rem 1rem;
	font-size: .9375rem;
	line-height: 1.5;
}
.bikefvg-route-page.is-compact .bikefvg-route-page__practical-alert strong {
	margin-right: .35rem;
	color: var(--wp--preset--color--ink);
}
.bikefvg-route-page.is-compact .bikefvg-route-page__practical-alert.is-warning {
	border-left: 3px solid var(--wp--preset--color--review);
	background: color-mix(in srgb, var(--wp--preset--color--review) 5%, var(--wp--preset--color--paper));
}
.bikefvg-route-page.is-compact .bikefvg-route-page__practical-alert.is-note {
	border-left: 2px solid var(--bfvg-line);
	background: color-mix(in srgb, var(--wp--preset--color--panel) 72%, var(--wp--preset--color--paper));
	color: var(--wp--preset--color--ink-secondary);
}

/* =====================================================================
 * 0.8.114 — Simulatore chiuso compatto e Servizi coerenti con la scheda.
 * Solo presentazione: script e calcolo del simulatore non cambiano.
 * ===================================================================== */

/* Simulatore da chiuso: fascia compatta (spaziature ridotte), comando
 * "Apri il simulatore" sotto il testo. Da aperto torna la resa completa.
 * La condizione :has() segue lo stato che lo script già gestisce
 * (corpo nascosto = chiuso); senza script il simulatore resta aperto. */
.bikefvg-route-page.is-compact .bikefvg-ebike:has([data-ebike-body][hidden]) {
	padding-block: clamp(1.5rem, 2.6vw, 2.1rem);
}
.bikefvg-route-page.is-compact .bikefvg-ebike:has([data-ebike-body][hidden]) .bikefvg-ebike__intro {
	margin: .45rem 0 0;
}
.bikefvg-route-page.is-compact .bikefvg-ebike:has([data-ebike-body][hidden]) .bikefvg-ebike__route {
	margin: .35rem 0 0;
	font-size: .9375rem;
}
/* La natura orientativa della stima resta visibile anche da chiuso. */
.bikefvg-route-page.is-compact .bikefvg-ebike:has([data-ebike-body][hidden]) .bikefvg-ebike__notice {
	margin: .6rem 0 0;
	padding-block: .25rem;
	font-size: .8125rem;
}
.bikefvg-route-page.is-compact .bikefvg-ebike:has([data-ebike-body][hidden]) .bikefvg-ebike__disclosure {
	margin: 1rem 0 0;
}
/* 0.8.115 — il comando resta a sinistra, sotto il testo, sia da chiuso sia
 * da aperto: stessa posizione dei comandi del modulo (niente salto destra→sinistra). */

/* Servizi: niente più testata petrolio staccata dal contenuto. L'intera
 * sezione (titolo, filtri, schede) sta su un fondo tenue proprio, come i
 * Dati tecnici: resta riconoscibile e valorizzata, ma fa parte della scheda.
 * Il petrolio torna al suo ruolo di accento (filtro attivo, collegamenti). */
.bikefvg-route-page.is-compact .bikefvg-route-page__services-section {
	/* 0.8.116 — solo filetto inferiore: la sezione precedente ha già il suo. */
	border-top: 0;
	border-bottom: 1px solid var(--bfvg-line);
	background: color-mix(in srgb, var(--wp--preset--color--panel) 45%, var(--wp--preset--color--paper));
}
.bikefvg-route-page.is-compact .bikefvg-route-services__hero {
	padding-block: clamp(2.5rem, 4vw, 3.5rem) 0;
	background: transparent;
	color: var(--wp--preset--color--ink);
}
.bikefvg-route-page.is-compact .bikefvg-route-services__trail {
	display: none;
}
.bikefvg-route-page.is-compact .bikefvg-route-page__services-section .bikefvg-route-services__hero h2 {
	color: var(--wp--preset--color--ink);
}
.bikefvg-route-page.is-compact .bikefvg-route-page__services-section .bikefvg-route-services__hero .bikefvg-eyebrow {
	color: var(--wp--preset--color--accent);
}
.bikefvg-route-page.is-compact .bikefvg-route-services__intro {
	color: var(--wp--preset--color--ink-secondary);
}
.bikefvg-route-page.is-compact .bikefvg-route-services__archive-link.bikefvg-text-link {
	border-color: var(--bfvg-line);
	background: var(--wp--preset--color--paper);
	color: var(--wp--preset--color--accent);
	box-shadow: none;
}
.bikefvg-route-page.is-compact .bikefvg-route-services__archive-link.bikefvg-text-link:hover {
	border-color: var(--wp--preset--color--accent);
	background: var(--wp--preset--color--paper);
}
/* Filtri subito sopra le schede che filtrano. */
.bikefvg-route-page.is-compact .bikefvg-route-services__filters button {
	border-color: var(--bfvg-line);
	background: var(--wp--preset--color--paper);
	color: var(--wp--preset--color--ink);
}
.bikefvg-route-page.is-compact .bikefvg-route-services__filters button:hover {
	border-color: var(--wp--preset--color--accent);
	background: var(--wp--preset--color--paper);
}
.bikefvg-route-page.is-compact .bikefvg-route-services__filters button[aria-pressed="true"],
.bikefvg-route-page.is-compact .bikefvg-route-services__filters button[aria-pressed="true"]:hover {
	border-color: var(--wp--preset--color--accent);
	background: var(--wp--preset--color--accent);
	color: #fff;
}
.bikefvg-route-page.is-compact .bikefvg-route-services__filters button:focus-visible,
.bikefvg-route-page.is-compact .bikefvg-route-services__archive-link:focus-visible {
	outline-color: var(--wp--preset--color--accent);
}
.bikefvg-route-page.is-compact .bikefvg-route-services__body {
	padding-top: 1.25rem;
}

/* =====================================================================
 * 0.8.116 — Verifica spaziature (rendering misurato a 1440 e 390 px).
 * ===================================================================== */

/* Una sola scala per i titoli di sezione (prima 28,8 / 32 / 36 / 44 px).
 * Esclusi i titoli di colonna dei Dati tecnici e i titoli dentro il testo
 * della descrizione e dentro le schede servizio. */
.bikefvg-route-page.is-compact .bikefvg-route-page__workspace-section h2:not(.bikefvg-route-page__content *),
.bikefvg-route-page.is-compact .bikefvg-route-page__workspace-map-head h2,
.bikefvg-route-page.is-compact .bikefvg-route-page__wide-track h2,
.bikefvg-route-page.is-compact .bikefvg-route-page__gallery-section h2,
.bikefvg-route-page.is-compact .bikefvg-route-page__practical-section .bikefvg-wrap > h2,
.bikefvg-route-page.is-compact .bikefvg-ebike .bikefvg-ebike__heading h2,
.bikefvg-route-page.is-compact .bikefvg-route-page__services-section .bikefvg-route-services__hero h2,
.bikefvg-route-page.is-compact .bikefvg-route-page__related-section .bikefvg-section__head h2 {
	margin: 0 0 1rem;
	font-size: clamp(1.75rem, 1.4rem + 1.2vw, 2.25rem);
	line-height: 1.08;
	letter-spacing: -.025em;
}
.bikefvg-route-page.is-compact .bikefvg-ebike .bikefvg-ebike__heading h2,
.bikefvg-route-page.is-compact .bikefvg-route-page__services-section .bikefvg-route-services__hero h2,
.bikefvg-route-page.is-compact .bikefvg-route-page__workspace-map-head h2,
.bikefvg-route-page.is-compact .bikefvg-route-page__related-section .bikefvg-section__head h2 {
	margin-bottom: 0;
}

/* Colonne del Percorso alla stessa quota: l'occhiello "Traccia" aveva un
 * margine superiore che l'occhiello della descrizione non ha. */
.bikefvg-route-page.is-compact .bikefvg-route-page__workspace-map-head .bikefvg-eyebrow {
	margin-top: 0;
}

/* Descrizione: stesso stacco titolo → testo delle altre sezioni. */
.bikefvg-route-page.is-compact #descrizione .bikefvg-route-page__content {
	margin-top: 0;
}

/* Dati tecnici: niente spazio extra in fondo dovuto al link finale. */
.bikefvg-route-page:is(.is-compact, .bikefvg-experience) .bikefvg-route-page__tech-section .bikefvg-route-page__itrs-guide-link {
	padding-bottom: 0;
}
.bikefvg-route-page:is(.is-compact, .bikefvg-experience) .bikefvg-route-page__tech-section .bikefvg-route-page__itrs-credit {
	padding-bottom: 0;
}

/* Box altimetrico: una riga con tante colonne quante sono le voci
 * (niente cella vuota); su telefono due colonne e l'ultima voce dispari
 * a tutta riga. */
.bikefvg-route-page.is-compact .bikefvg-route-page__elevation-stats .bikefvg-route-page__secondary-stats {
	grid-template-columns: repeat(2, minmax(0, 1fr));
}
.bikefvg-route-page.is-compact .bikefvg-route-page__elevation-stats .bikefvg-route-page__secondary-stats > div:last-child:nth-child(odd) {
	grid-column: 1 / -1;
}
@media (min-width: 36rem) {
	.bikefvg-route-page.is-compact .bikefvg-route-page__elevation-stats .bikefvg-route-page__secondary-stats {
		grid-template-columns: none;
		grid-auto-flow: column;
		grid-auto-columns: minmax(0, 1fr);
	}
	.bikefvg-route-page.is-compact .bikefvg-route-page__elevation-stats .bikefvg-route-page__secondary-stats > div:last-child:nth-child(odd) {
		grid-column: auto;
	}
}

/* Panoramica a due colonne: l'ultima voce dispari occupa la riga intera. */
@media (min-width: 75rem) {
	.bikefvg-route-page.is-compact .bikefvg-route-page__workspace.has-sticky-map .bikefvg-route-page__overview > div:last-child:nth-child(odd) {
		grid-column: 1 / -1;
	}
}

/* Comandi del simulatore con lo stesso raggio degli altri pulsanti della scheda. */
.bikefvg-route-page.is-compact .bikefvg-ebike__actions button {
	border-radius: var(--wp--custom--radius--control);
}
/* Una regola esistente con selettore #mappa h2 prevaleva sulla scala comune. */
.bikefvg-route-page.is-compact #mappa .bikefvg-route-page__workspace-map-head h2 {
	font-size: clamp(1.75rem, 1.4rem + 1.2vw, 2.25rem);
}
/* Stesso stacco titolo → contenuto (1rem, dato dal margine del titolo) anche
 * per il modulo mappa e le Informazioni pratiche. */
.bikefvg-route-page.is-compact .bikefvg-route-page__workspace-map-head {
	margin-bottom: 1rem;
}
.bikefvg-route-page.is-compact .bikefvg-route-page__track-panel.is-in-aside {
	margin-top: 0;
}
.bikefvg-route-page.is-compact .bikefvg-route-page__practical-v2 {
	margin-top: 0;
}
.bikefvg-route-page.is-compact .bikefvg-route-page__practical-alert.is-warning {
	margin: 0 0 1.25rem;
}
.bikefvg-route-page.is-compact .bikefvg-route-page__overview {
	margin-top: 0;
}

/* 0.8.117 — Griglie dati con angoli arrotondati come il resto della scheda
 * (dati essenziali in apertura, Panoramica, dati altimetrici fuori dal
 * modulo). Il contenitore porta il bordo completo e arrotonda; le celle
 * disegnano i filetti a sinistra e in alto, spostati di 1px: quelli sul
 * bordo esterno finiscono sotto il bordo del contenitore (tagliati dall'overflow),
 * quelli interni restano visibili perché ogni cella li disegna sopra la precedente. */
.bikefvg-route-page.is-compact :is(.bikefvg-route-page__stats, .bikefvg-route-page__overview, .bikefvg-route-page__tech-section .bikefvg-route-page__secondary-stats) {
	overflow: hidden;
	border: 1px solid var(--bfvg-line);
	border-radius: var(--bfvg-radius-card);
}
.bikefvg-route-page.is-compact :is(.bikefvg-route-page__stats > .bikefvg-route-page__stat, .bikefvg-route-page__overview > div, .bikefvg-route-page__tech-section .bikefvg-route-page__secondary-stats > div) {
	margin: -1px 0 0 -1px;
	border-top: 1px solid var(--bfvg-line);
	border-right: 0;
	border-bottom: 0;
	border-left: 1px solid var(--bfvg-line);
}

/* =====================================================================
 * 0.8.118 — Galleria: nessuno spazio vuoto sotto le foto.
 * Le righe della griglia erano fisse (desktop: 2 righe per 5 foto;
 * mobile: 3 righe 12 / 8,5 / 8,5rem): con meno foto restavano righe o celle
 * vuote in fondo, che sembravano spazio in eccesso. Ora le righe nascono
 * solo se servono. Lo stacco dal titolo torna a 1rem come nelle altre sezioni.
 * ===================================================================== */
.bikefvg-route-page.is-compact .bikefvg-route-page__gallery {
	margin-top: 0;
}
/* 0.8.119 — La galleria contiene solo figure (massimo 5). Un elemento estraneo
 * nella griglia (per esempio un <p> o <br> aggiunto dalla formattazione
 * automatica di WordPress) finiva in una terza riga: nella 0.8.118 quella
 * riga riceveva un'altezza minima e lo spazio sotto le foto cresceva. Ora
 * tutto ciò che non è una foto resta fuori dalla griglia. */
.bikefvg-route-page.is-compact .bikefvg-route-page__gallery > :not(.bikefvg-route-page__gallery-item) {
	display: none;
}
@media (max-width: 41.99rem) {
	.bikefvg-route-page.is-compact .bikefvg-route-page__gallery {
		grid-template-rows: 12rem;
		grid-auto-rows: 8.5rem;
	}
	/* Numero pari di foto: l'ultima, rimasta sola, occupa la riga intera. */
	.bikefvg-route-page.is-compact .bikefvg-route-page__gallery-item:nth-child(even):not(:has(~ .bikefvg-route-page__gallery-item)) {
		grid-column: 1 / -1;
	}
}
@media (min-width: 42rem) {
	/* Quattro foto: una riga sola, la prima più larga (prima restava una cella vuota). */
	.bikefvg-route-page.is-compact .bikefvg-route-page__gallery.is-count-4 {
		grid-template-columns: 1.5fr 1fr 1fr 1fr;
		grid-template-rows: minmax(14rem, 20rem);
	}
	.bikefvg-route-page.is-compact .bikefvg-route-page__gallery.is-count-4 .bikefvg-route-page__gallery-item:first-child {
		grid-row: auto;
	}
}

/* 0.8.137 — Homepage icons for map and difficulty headings. */

.bikefvg-route-page .bikefvg-route-page__icon-heading { display: flex; align-items: center; gap: .65rem; }
.bikefvg-route-page__title-icon { position: relative; flex: 0 0 44px; width: 44px; height: 44px; border-radius: 50%; display: grid; place-items: center; background: var(--wp--preset--color--panel); background-image: url('../images/diary-paper-grain.svg'); background-size: 180px 180px; }
.bikefvg-route-page__title-icon svg { width: 24px; height: 24px; fill: none; stroke: var(--wp--preset--color--accent); stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }
.bikefvg-route-page__title-icon svg.bikefvg-route-page__title-icon-rim { position: absolute; inset: 0; width: 100%; height: 100%; opacity: .8; pointer-events: none; }
@media (forced-colors: active) { .bikefvg-route-page__title-icon { background-image: none; } }

/* 0.8.138 — Equal heading height keeps technical column dividers aligned. */
.bikefvg-route-page:is(.is-compact, .bikefvg-experience) .bikefvg-route-page__tech-section .bikefvg-route-page__difficulty-main > h2,
.bikefvg-route-page:is(.is-compact, .bikefvg-experience) .bikefvg-route-page__tech-section .bikefvg-route-page__surface h3 {
 display: flex;
 align-items: center;
 min-height: 44px;
 box-sizing: border-box;
 margin: 0 0 .9rem;
}

/* 0.8.151 — Regional outlook shared by itinerary and experience weather cards. */
.bikefvg-route-page .bikefvg-route-page__weather-trend {
 margin-top: 1rem; padding-top: 1rem;
 border-top: 1px solid var(--bikefvg-line, #d4cec5);
}
.bikefvg-route-page .bikefvg-route-page__weather-trend > h4 {
 margin: 0 0 .45rem; font-family: inherit; font-size: .95rem;
 font-weight: 650; line-height: 1.35; color: var(--wp--preset--color--primary, #1c7080);
}
.bikefvg-route-page .bikefvg-route-page__weather-trend > p {
 margin: 0; font-size: .95rem; line-height: 1.55; font-weight: 400;
}
