/**
 * BikeFVG — componenti
 *
 * REGOLE VINCOLANTI (congelate nel design system, non modificare senza decisione esplicita):
 * 1. Base mobile-first; max-width ammesso per varianti circoscritte al mobile.
 * 2. Nessun valore esadecimale hardcoded: solo var(--wp--preset--color--*) da theme.json.
 * 3. Focus visibile sullo sfondo reale: nei Servizi ink; sui pin paper con contorno ink.
 *    Action resta riservato alle CTA previste dal sistema colori.
 * 4. Naming canonico: .bikefvg-badge = etichetta statica · .bikefvg-chip = selezione interattiva.
 * 5. Controlli autonomi: target minimo 44px; azioni compatte 48px border-box.
 *    I link nel testo mantengono il flusso tipografico; verificare separatamente la spaziatura.
 * 6. Griglia: --bfvg-wide (1240px) e --bfvg-content (1180px) sono le uniche due larghezze
 *    di sistema. Nessuna sezione definisce una propria larghezza o un proprio gutter:
 *    tutte derivano da --bfvg-gutter.
 */

:root {
	--bfvg-font-meta: .8125rem;
	--bfvg-radius-label: .375rem;
	--bfvg-service-attribute-radius: 16px;
	--bfvg-service-gallery-radius: 16px;
	--bfvg-service-map-radius: 16px;
	/* Varianti Servizi riallineate in test.116 alla geometria comune: controlli 12px, media/card 16px. */
	--bfvg-service-action-radius: 12px;
	--bfvg-service-hero-media-radius: 16px;
	--bfvg-service-nearby-radius: 16px;
	--bfvg-service-nearby-padding: .85rem .95rem;
	--bfvg-service-action-mobile-padding-inline: 8px;
	--bfvg-service-action-sticky-padding-inline: 12px;
	--bfvg-service-quickfacts-mobile-padding: .75rem 1rem;
	--bfvg-service-search-padding-inline: 16px;

	/* Varianti compatte consolidate dai Servizi test.62; adozione esplicita. */
	--bfvg-control-height-compact: 48px;
	--bfvg-control-padding-block-compact: 6px;
	--bfvg-control-font-compact: .875rem;
	--bfvg-control-line-compact: 1.25;
	--bfvg-filter-separation-mobile: 16px;

	--bfvg-line: var(--wp--custom--line);
	--bfvg-soft: var(--wp--custom--soft);
	--bfvg-divider: var(--wp--custom--divider);
	--bfvg-radius-card: var(--wp--custom--radius--card);
	--bfvg-radius-media: var(--wp--custom--radius--card);
	--bfvg-radius-filter: var(--wp--custom--radius--card);
	--bfvg-radius-logo: var(--wp--custom--radius--card);
	--bfvg-radius-promo: var(--wp--custom--radius--card);
	--bfvg-radius-panel: var(--wp--custom--radius--panel);
	--bfvg-touch: var(--wp--custom--touch-target);

	/* Sistema colori v1.0 — token derivati (stati hover/pressed/soft/border).
	   I 4 colori core (paper, ink, accent, action) vivono nella palette di
	   theme.json come var(--wp--preset--color--*); questi sono gli stati
	   che non hanno senso come voci selezionabili nel color picker. */
	--bfvg-accent-hover: var(--wp--custom--color--accent-hover);
	--bfvg-accent-pressed: var(--wp--custom--color--accent-pressed);
	--bfvg-accent-soft: var(--wp--custom--color--accent-soft);
	--bfvg-accent-border: var(--wp--custom--color--accent-border);
	--bfvg-action-hover: var(--wp--custom--color--action-hover);
	--bfvg-action-pressed: var(--wp--custom--color--action-pressed);

	/* Griglia — unica fonte per larghezza e gutter, condivisa da tutte le pagine. */
	--bfvg-gutter: var(--wp--custom--gutter);
	--bfvg-wide: var(--wp--custom--width--wide);
	--bfvg-content: var(--wp--custom--width--content);
	--bfvg-narrow: var(--wp--custom--width--narrow);

	/* Hero — ritmo condiviso per famiglia (indice / editoriale / scheda).
	   Non impone lo stesso carattere: solo padding-block e rapporti comuni. */
	--bfvg-hero-index-padding: var(--wp--custom--hero--index--padding-block);
	--bfvg-hero-editorial-padding: var(--wp--custom--hero--editorial--content-padding-block);
	--bfvg-hero-detail-padding: var(--wp--custom--hero--detail--padding-block);
	--bfvg-detail-title-size: clamp(2.55rem, 5vw, 4.55rem);
	--bfvg-detail-title-line-height: .98;
	--bfvg-detail-title-letter-spacing: -.045em;

	/* Card — standard / compact / featured.
	   Il radius è condiviso da tutte e tre le famiglie (regola di
	   geometria pura): alias del token radius.card già esistente,
	   non un secondo valore. Il padding invece è specifico di
	   famiglia: standard e featured usano --bfvg-card-padding,
	   compact usa --bfvg-card-padding-compact — la differenza di
	   misura è ciò che rende "compact" compact, non un difetto da
	   correggere. --bfvg-card-gap è il gap interno tra gli elementi
	   di una card, non il gap tra card in griglia (quello resta per
	   ora specifico di pagina, non ancora verificato come il gutter). */
	--bfvg-card-radius: var(--bfvg-radius-card);
	--bfvg-card-padding: var(--wp--custom--card--padding);
	--bfvg-card-padding-compact: var(--wp--custom--card--padding-compact);
	--bfvg-card-gap: var(--wp--custom--card--gap);

	/* Filtri — layer comune a Itinerari e Servizi (filter-panel/-group/
	   -control/-options/-actions). Il radius dei controlli NON ha un
	   alias qui: si continua a usare var(--wp--custom--radius--control)
	   direttamente, come già faceva il codice esistente. */
	--bfvg-filter-panel-padding: var(--wp--custom--filter--panel-padding);
	--bfvg-filter-group-gap: var(--wp--custom--filter--group-gap);
	--bfvg-filter-options-gap: var(--wp--custom--filter--options-gap);
	--bfvg-filter-submit-padding: var(--wp--custom--filter--submit-padding);
}

/* ---------- Base accessibilità ---------- */

/*
 * I block template usano lo skip-link nativo di WordPress
 * (.skip-link.screen-reader-text). I template PHP forzati mantengono
 * invece .bikefvg-skip-link. I due casi condividono la stessa resa
 * visiva, ma in ogni pagina deve esistere un solo link.
 */
.bikefvg-skip-link,
.skip-link.screen-reader-text {
	position: fixed;
	left: -9999px;
	top: 0;
	z-index: 100000;
	width: auto;
	height: auto;
	margin: 0;
	padding: 0.7rem 1rem;
	border-radius: 0 0 var(--wp--custom--radius--control, 0.75rem) 0;
	background: var(--wp--preset--color--ink);
	color: var(--wp--preset--color--paper);
	clip: auto;
	clip-path: none;
	overflow: visible;
	white-space: nowrap;
	text-decoration: none;
}

.bikefvg-skip-link:focus,
.skip-link.screen-reader-text:focus {
	left: 0;
	top: 0;
	width: auto;
	height: auto;
	clip: auto;
	clip-path: none;
	overflow: visible;
}

a:focus-visible,
button:focus-visible,
select:focus-visible,
input:focus-visible,
summary:focus-visible,
[tabindex]:focus-visible {
	outline: 3px solid var(--wp--preset--color--focus);
	outline-offset: 3px;
}

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

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

.bikefvg-footer .wp-block-navigation a {
	text-decoration: none;
	min-height: var(--bfvg-touch);
	display: inline-flex;
	align-items: center;
}

/* ---------- Header scuro + navigazione ----------
 *
 * La navigazione principale NON usa il blocco core Navigazione: il suo
 * overlay mobile generato automaticamente produceva un pannello mal
 * posizionato (ancorato al box del blocco anziché al viewport) e testo
 * tagliato fuori schermo, non risolvibile in modo affidabile da CSS
 * esterno senza dipendere da dettagli interni del core. Sostituito con
 * markup proprio (link statici + pannello a schermo intero), stesso
 * approccio già usato per la ricerca — pieno controllo su centratura,
 * layout e apertura/chiusura.
 */

.bikefvg-header a {
	color: var(--wp--preset--color--paper);
}

/* Tipografia condivisa da tutti i template, inclusi gli indici PHP.
 * Le voci non ereditano il font da layout o stati del blocco WordPress. */
.bikefvg-nav__list,
.bikefvg-mobile-nav__list,
.bikefvg-header .wp-block-navigation,
.bikefvg-footer .wp-block-navigation {
	font-family: var(--wp--preset--font-family--body, Inter, sans-serif);
	font-weight: 700;
}

.bikefvg-nav__list,
.bikefvg-header .wp-block-navigation,
.bikefvg-footer .wp-block-navigation {
	font-size: .9375rem;
	letter-spacing: .05em;
	text-transform: uppercase;
}

.bikefvg-header .bikefvg-nav__list a,
.bikefvg-header .bikefvg-mobile-nav__list a,
.bikefvg-header .bikefvg-nav__submenu-toggle,
.bikefvg-header .wp-block-navigation a {
	font-family: var(--wp--preset--font-family--body, Inter, sans-serif);
	font-weight: 700;
}

.bikefvg-header .bikefvg-nav__list a,
.bikefvg-header .bikefvg-nav__submenu-toggle,
.bikefvg-header .wp-block-navigation a {
	font-size: .9375rem;
	line-height: 1.4;
	letter-spacing: .05em;
	text-transform: uppercase;
}

.bikefvg-nav__item--parent { position: relative; }
.bikefvg-nav__submenu-toggle { appearance:none;display:inline-flex;align-items:center;justify-content:center;gap:.4rem;height:40px;min-height:40px;margin:0!important;padding:0!important;border:0;background:transparent;color:inherit;line-height:1!important;vertical-align:middle;cursor:pointer;letter-spacing:inherit;text-transform:inherit }
.bikefvg-nav__submenu-toggle svg { transition:transform .18s ease }
.bikefvg-nav__item--parent.is-open>.bikefvg-nav__submenu-toggle svg { transform:rotate(180deg) }
.bikefvg-nav__submenu { display:none;margin:0;padding:.45rem;list-style:none }
.bikefvg-nav__item--parent.is-open>.bikefvg-nav__submenu { display:block }

/* ---------- Nav desktop (lista inline) + toggle mobile ---------- */

.bikefvg-nav {
	grid-area: nav;
	display: flex;
	align-items: center;
	justify-self: center;
}

.bikefvg-nav__list {
	display: none;
	margin: 0;
	padding: 0;
	list-style: none;
}

.bikefvg-nav-toggle {
	appearance: none;
	box-sizing: border-box;
	width: var(--bfvg-touch);
	height: var(--bfvg-touch);
	line-height: 1;
	flex-shrink: 0;
	min-width: var(--bfvg-touch);
	min-height: var(--bfvg-touch);
	display: grid;
	place-items: center;
	position: relative;
	padding: 0;
	border: 1px solid var(--wp--preset--color--paper);
	border-radius: 50%;
	background: transparent;
	color: var(--wp--preset--color--paper);
	cursor: pointer;
	font-size: 0;
	line-height: 0;
}

.bikefvg-nav-toggle > svg {
	position: absolute;
	top: 50%;
	left: 50%;
	display: block;
	margin: 0;
	transform: translate(-50%, -50%);
}

.bikefvg-nav-toggle:hover {
	background: rgba(255, 255, 255, 0.08);
}

@media (min-width: 64rem) {
	.bikefvg-nav-toggle {
		display: none;
	}

	.bikefvg-nav__list {
		display: flex;
		align-items: center;
		gap: 2.1rem;
		line-height: 1;
	}

	.bikefvg-nav__list>li { display:flex;align-items:center;height:40px;margin:0;padding:0 }

	.bikefvg-nav__list a {
		display: inline-flex;
		align-items: center;
		text-decoration: none;
	}

	.bikefvg-nav__list a:hover {
		text-decoration: underline;
		text-underline-offset: 0.25em;
	}

	.bikefvg-nav__item--parent:hover>.bikefvg-nav__submenu,
	.bikefvg-nav__item--parent:focus-within>.bikefvg-nav__submenu { display:block }
	.bikefvg-nav__submenu { position:absolute;top:calc(100% - 2px);left:50%;z-index:1000;min-width:12rem;transform:translateX(-50%);border:1px solid rgba(255,255,255,.16);border-radius:var(--wp--custom--radius--control,12px);background:var(--wp--preset--color--ink);box-shadow:0 12px 28px rgba(0,0,0,.22) }
	.bikefvg-nav__submenu li { display:block;height:auto }
	.bikefvg-nav__submenu li+li { border-top:1px solid rgba(255,255,255,.12) }
	.bikefvg-nav__submenu a { justify-content:flex-start!important;min-height:42px!important;padding:.55rem .7rem;white-space:nowrap;font-size:.82rem!important }
	.bikefvg-nav__item--parent.is-current>.bikefvg-nav__submenu-toggle { text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:.35em }
}


/* ---------- Preferiti nella navigazione ---------- */

.bikefvg-favorites-nav__link {
	position: relative;
}

.bikefvg-favorites-nav__link .bikefvg-fav-toggle__icon {
	width: 20px;
	height: 20px;
}

.bikefvg-favorites-nav__link.has-favorites .bikefvg-fav-toggle__icon path {
	fill: currentColor;
}

.bikefvg-favorites-nav__count {
	font-family: var(--wp--preset--font-family--mono);
	font-size: .68rem;
	font-weight: 800;
	line-height: 1;
}

.bikefvg-favorites-nav__count[hidden] {
	display: none !important;
}

@media (min-width: 64rem) {
	.bikefvg-favorites-nav--desktop {
		height: var(--bfvg-touch) !important;
		margin-inline-start: .25rem;
		padding-inline-start: .9rem !important;
		border-inline-start: 1px solid rgba(255,255,255,.22);
	}

	.bikefvg-nav__list .bikefvg-favorites-nav__link {
		box-sizing: border-box;
		width: var(--bfvg-touch);
		height: var(--bfvg-touch);
		min-width: var(--bfvg-touch);
		min-height: var(--bfvg-touch);
		padding: 0;
		border: 1px solid rgba(255,255,255,.78);
		border-radius: 50%;
		color: var(--wp--preset--color--paper);
		text-decoration: none;
	}

	.bikefvg-nav__list .bikefvg-favorites-nav__link:hover,
	.bikefvg-nav__list .bikefvg-favorites-nav__link:focus-visible {
		text-decoration: none;
		background: rgba(255,255,255,.08);
	}

	.bikefvg-nav__list .bikefvg-favorites-nav__link.has-favorites {
		color: color-mix(in srgb, var(--wp--preset--color--accent) 65%, white 35%);
		border-color: currentColor;
	}

	.bikefvg-favorites-nav--desktop .bikefvg-favorites-nav__count {
		position: absolute;
		top: -5px;
		right: -7px;
		display: grid;
		place-items: center;
		min-width: 20px;
		height: 20px;
		padding-inline: 4px;
		border: 2px solid var(--wp--preset--color--ink);
		border-radius: 999px;
		background: var(--wp--preset--color--paper);
		color: var(--wp--preset--color--ink);
	}
}

/* ---------- Pannello mobile a schermo intero ---------- */

.bikefvg-mobile-nav {
	position: fixed;
	inset: 0;
	z-index: 2147483000;
	overflow-y: auto;
	padding: 1.2rem clamp(1rem, 2.5vw, 2rem);
	background: var(--wp--preset--color--paper);
	color: var(--wp--preset--color--ink);
}

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

.bikefvg-mobile-nav__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin-bottom: 1.4rem;
}

.bikefvg-mobile-nav__title {
	font-weight: 700;
}

.bikefvg-mobile-nav__close {
	appearance: none;
	width: var(--bfvg-touch);
	height: var(--bfvg-touch);
	min-width: var(--bfvg-touch);
	min-height: var(--bfvg-touch);
	flex: 0 0 var(--bfvg-touch);
	aspect-ratio: 1;
	display: grid;
	place-items: center;
	position: relative;
	padding: 0;
	border: 1px solid var(--bfvg-line);
	border-radius: 50%;
	background: transparent;
	color: var(--wp--preset--color--ink);
	cursor: pointer;
	font-size: 0;
	line-height: 0;
}

.bikefvg-mobile-nav__close > svg {
	position: absolute;
	top: 50%;
	left: 50%;
	display: block;
	margin: 0;
	transform: translate(-50%, -50%);
}

.bikefvg-mobile-nav__list {
	display: flex;
	flex-direction: column;
	gap: 0.2rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.bikefvg-mobile-nav__list a {
	display: flex;
	align-items: center;
	min-height: var(--bfvg-touch);
	color: var(--wp--preset--color--ink);
	font-size: var(--wp--preset--font-size--large);
	font-weight: 700;
	text-decoration: none;
}

.bikefvg-mobile-nav__list .bikefvg-nav__submenu-toggle { width:100%;height:var(--bfvg-touch);min-height:var(--bfvg-touch);justify-content:space-between;color:var(--wp--preset--color--ink);font-size:var(--wp--preset--font-size--large);font-weight:700;text-align:left }
.bikefvg-mobile-nav__list .bikefvg-nav__submenu { padding:.1rem 0 .55rem 1rem }
.bikefvg-mobile-nav__list .bikefvg-nav__submenu a { min-height:42px;font-size:1rem;font-weight:650 }
.bikefvg-mobile-nav__list .bikefvg-nav__item--parent { border-top:1px solid var(--bfvg-line) }

.bikefvg-mobile-nav__list a:hover {
	text-decoration: underline;
	text-underline-offset: 0.25em;
}


.bikefvg-mobile-nav__list .bikefvg-favorites-nav--mobile {
	margin-top: .75rem;
	padding-top: .75rem;
	border-top: 1px solid var(--bfvg-line);
}

.bikefvg-mobile-nav__list .bikefvg-favorites-nav__link {
	gap: .7rem;
	justify-content: flex-start;
}

.bikefvg-mobile-nav__list .bikefvg-favorites-nav__link.has-favorites {
	color: var(--wp--preset--color--accent);
}

.bikefvg-mobile-nav__list .bikefvg-favorites-nav__count {
	display: inline-grid;
	place-items: center;
	min-width: 26px;
	height: 26px;
	margin-inline-start: auto;
	padding-inline: 7px;
	border-radius: 999px;
	background: var(--wp--preset--color--ink);
	color: var(--wp--preset--color--paper);
}

@media (min-width: 64rem) {
	.bikefvg-mobile-nav {
		display: none !important;
	}
}

/*
 * HEADER — geometria indipendente dal logo.
 *
 * L'header usa il blocco Site Logo nativo WordPress. La geometria della
 * testata resta indipendente dal bounding box dell'SVG: il logo viene
 * contenuto nello spazio disponibile senza deformazioni.
 *
 * Asset canonico: BikeFVG-logo-sito-adaptive.svg
 *   desktop >= 64rem: max 194 × 40 px
 *   mobile < 64rem:   max 140 × 32 px
 *
 * Desktop: griglia simmetrica 194 / centro / 194. Il menu è quindi centrato
 * realmente rispetto al contenitore, mentre ricerca+lingua sono allineate a
 * destra senza poter spostare la navigazione.
 */
.bikefvg-header .bikefvg-wrap {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto auto;
	grid-template-areas: "logo end nav";
	align-items: center;
	column-gap: 0.6rem;
	min-height: 56px;
	padding-top: 0 !important;
	padding-bottom: 0 !important;
}

/*
 * Il blocco Group che genera .bikefvg-wrap mantiene le classi Gutenberg
 * is-layout-flow anche quando il nostro CSS lo trasforma in grid.
 * Il layout flow di WordPress applica margin-block-start ai figli successivi:
 * se non lo neutralizziamo, logo (primo figlio), nav e controlli finiscono su
 * baseline verticali diverse. Questi reset sono quindi strutturali, non
 * correzioni ottiche.
 */
.bikefvg-header > *,
.bikefvg-header .bikefvg-wrap > *,
.bikefvg-header .bikefvg-header__end > * {
	margin-block-start: 0 !important;
	margin-block-end: 0 !important;
}

.bikefvg-header .bikefvg-wrap > *,
.bikefvg-header .bikefvg-header__end > * {
	align-self: center;
}

.bikefvg-header .wp-block-site-logo {
	grid-area: logo;
	justify-self: start;
	width: min(140px, 36vw);
	max-width: 140px;
	height: 32px;
	display: flex;
	align-items: center;
	line-height: 0;
}

.bikefvg-header .wp-block-site-logo a {
	display: flex;
	align-items: center;
	width: 100%;
	height: 100%;
}

.bikefvg-header .wp-block-site-logo img {
	display: block;
	width: auto !important;
	max-width: 100%;
	height: auto !important;
	max-height: 32px;
	object-fit: contain;
	object-position: left center;
}

/* Il footer continua a poter usare il blocco Site Logo reale. */
.wp-block-site-logo {
	display: flex;
	align-items: center;
	line-height: 0;
}

.wp-block-site-logo a {
	display: flex;
	align-items: center;
}

.wp-block-site-logo img {
	display: block;
	height: auto;
}

.bikefvg-logo-chip {
	display: inline-flex;
	padding: 0.5rem 0.75rem;
	margin-bottom: 0.75rem;
	border-radius: var(--bfvg-radius-logo);
	background: var(--wp--preset--color--ink);
}

.bikefvg-header .bikefvg-header__end {
	grid-area: end;
	justify-self: end;
	gap: 0.75rem;
	align-items: center;
}

/* Mobile/tablet: la lingua vive nel pannello menu, non nella barra.
 * Mantiene la testata stabile anche a 320–390 px e con 3+ lingue. */
.bikefvg-header__end > .bikefvg-lang-switcher {
	display: none;
}

@media (min-width: 64rem) {
	.bikefvg-header .bikefvg-wrap {
		grid-template-columns: 194px minmax(0, 1fr) 194px;
		grid-template-areas: "logo nav end";
		column-gap: 1.5rem;
		min-height: 64px;
	}

	.bikefvg-header .wp-block-site-logo {
		width: 194px;
		max-width: 194px;
		height: 40px;
	}

	.bikefvg-header .wp-block-site-logo img {
		max-height: 40px;
	}

	.bikefvg-nav {
		justify-self: center;
		min-width: 0;
	}

	.bikefvg-nav__list {
		gap: clamp(1.45rem, 2.15vw, 2.1rem);
	}

	.bikefvg-nav__list a {
		min-height: 40px;
		justify-content: center;
	}

	.bikefvg-header .bikefvg-header__end {
		width: 194px;
		justify-content: flex-end;
	}

	.bikefvg-header__end > .bikefvg-lang-switcher {
		display: flex;
	}
}

/* ---------- Ricerca: icona nell'header, riga full-width sotto ---------- */

.bikefvg-search-toggle {
	min-width: var(--bfvg-touch);
	min-height: var(--bfvg-touch);
	display: grid;
	place-items: center;
	padding: 0;
	border: 1px solid var(--wp--preset--color--paper);
	border-radius: 999px;
	background: transparent;
	color: var(--wp--preset--color--paper);
	cursor: pointer;
}

.bikefvg-search-toggle:hover {
	background: rgba(255, 255, 255, 0.08);
}

.bikefvg-search-toggle[aria-expanded="true"] {
	border-color: var(--wp--preset--color--accent);
	/* Stesso fix di .bikefvg-lang-switcher [aria-current="true"]: accent
	 * puro su ink è sotto soglia AA, qui il bottone vive solo sull'header. */
	color: color-mix(in srgb, var(--wp--preset--color--accent) 65%, white 35%);
}

.bikefvg-search-row {
	background: var(--wp--preset--color--ink);
	border-top: 1px solid rgba(255, 255, 255, 0.14);
	padding: 0.9rem clamp(1rem, 3vw, 2rem);
}

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

.bikefvg-search-row__form {
	display: flex;
	gap: 0.6rem;
	max-width: 34rem;
	margin-inline-start: auto;
}

.bikefvg-search-row__input {
	flex: 1;
	min-width: 0;
	min-height: var(--bfvg-touch);
	border: 1px solid rgba(255, 255, 255, 0.24);
	border-radius: 999px;
	background: var(--wp--preset--color--panel);
	color: var(--wp--preset--color--ink);
	padding-inline: 1rem;
	font: inherit;
}

.bikefvg-search-row__input:focus {
	outline: none;
}

.bikefvg-search-row__input:focus-visible {
	outline: 3px solid var(--wp--preset--color--focus);
	outline-offset: 2px;
}

.bikefvg-search-row__submit {
	min-height: var(--bfvg-touch);
	padding-inline: 1.3rem;
	border: 0;
	border-radius: 999px;
	background: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--panel);
	font-weight: 800;
	cursor: pointer;
}

.bikefvg-search-row__submit:hover {
	background: var(--color-accent-hover, var(--wp--preset--color--accent));
}

/* ---------- Language switcher ---------- */

.bikefvg-lang-switcher {
	display: flex;
	align-items: center;
	gap: 0.5rem;
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--small);
	font-weight: 700;
}

.bikefvg-lang-switcher :is(a, span) {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 32px;
	padding-inline: 0.5rem;
	border: 1px solid transparent;
	border-radius: 6px;
	color: var(--wp--preset--color--paper);
	text-decoration: none;
	opacity: 0.75;
}

.bikefvg-lang-switcher a:hover {
	opacity: 1;
}

.bikefvg-lang-switcher [aria-current="true"] {
	border-color: var(--wp--preset--color--accent);
	/* Accent puro (#1C6B7A) su fondo ink (#1E2420) rende ~2.6:1, sotto la
	 * soglia AA 4.5:1 per testo piccolo. Schiarito solo qui, dove il
	 * componente vive sempre su header scuro: resta lo stesso hue,
	 * misurato ~5.4:1 su ink. */
	color: color-mix(in srgb, var(--wp--preset--color--accent) 65%, white 35%);
	opacity: 1;
}

.bikefvg-mobile-nav .bikefvg-lang-switcher {
	margin-top: 1.5rem;
	padding-top: 1.25rem;
	border-top: 1px solid var(--bfvg-line);
	gap: 0.35rem;
}

.bikefvg-mobile-nav .bikefvg-lang-switcher :is(a, span) {
	width: var(--bfvg-touch);
	height: var(--bfvg-touch);
	min-width: var(--bfvg-touch);
	min-height: var(--bfvg-touch);
	flex: 0 0 var(--bfvg-touch);
	aspect-ratio: 1;
	padding: 0;
	border-radius: 50%;
	color: var(--wp--preset--color--ink);
	opacity: 0.78;
}

.bikefvg-mobile-nav .bikefvg-lang-switcher [aria-current="true"] {
	color: var(--wp--preset--color--accent);
}

.bikefvg-lang-switcher [aria-disabled="true"],
.bikefvg-mobile-nav .bikefvg-lang-switcher [aria-disabled="true"] {
	opacity: 0.5;
	cursor: default;
}

/* Ricerca a piena larghezza nella pagina dei risultati */
.bikefvg-search--page {
	max-width: 34rem;
	margin-block: 0 var(--wp--preset--spacing--30);
}

.bikefvg-search--page .wp-block-search__inside-wrapper {
	border: 1px solid var(--bfvg-line);
	border-radius: 999px;
	background: var(--wp--preset--color--panel);
	padding: 0.15rem 0.15rem 0.15rem 0.9rem;
}

.bikefvg-search--page .wp-block-search__input {
	min-height: var(--bfvg-touch);
	border: 0;
	background: transparent;
	font: inherit;
}

.bikefvg-search--page .wp-block-search__button {
	min-height: var(--bfvg-touch);
	padding-inline: 1.1rem;
	border: 0;
	border-radius: 999px;
	background: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--paper);
	font-weight: 800;
}

/* ---------- Struttura di pagina ----------
 *
 * Nei block theme WordPress applica un margine superiore a ogni figlio diretto
 * di .wp-site-blocks (il "block gap"). Su header, main e footer questo produce
 * una banda di sfondo visibile sotto il menu, e per la hero è peggio: quei pixel
 * si sommano a 100svh, rendendola più alta di uno schermo.
 *
 * Il gap resta attivo dove serve davvero, cioè dentro i contenuti editoriali.
 */

.wp-site-blocks > header,
.wp-site-blocks > main,
.wp-site-blocks > footer {
	margin-block-start: 0 !important;
}

/* La hero è il primo elemento del main: nessuno stacco dall'header. */
.bikefvg-main--full > :first-child,
.bikefvg-main--full > .bikefvg-hero {
	margin-block-start: 0;
}

/* Le sezioni gestiscono la propria spaziatura con padding-block:
   il margine di layout aggiungerebbe uno stacco doppio e incoerente. */
.bikefvg-main--full > .bikefvg-section,
.bikefvg-main--full > .bikefvg-trust-band,
.bikefvg-main--full > section {
	margin-block: 0;
}

/* ---------- Sistema di larghezza ----------
 *
 * Ogni sezione occupa il 100% della finestra e gestisce da sola il proprio
 * gutter tramite .bikefvg-wrap. È lo stesso schema del footer, che infatti
 * era l'unico elemento senza cornice laterale.
 *
 * Non si usa alignfull né il root padding di WordPress: le sezioni sono HTML
 * custom, non blocchi, quindi non riceverebbero mai le classi di allineamento
 * e resterebbero incastrate dentro contentSize.
 */

.bikefvg-wrap {
	width: min(var(--bfvg-content), 100% - 2 * var(--bfvg-gutter));
	margin-inline: auto;
}

.bikefvg-wrap--wide {
	width: min(var(--bfvg-wide), 100% - 2 * var(--bfvg-gutter));
}

/* Contenuto editoriale (testo lungo: descrizioni itinerario/disciplina):
   più stretto del content standard, per una misura di lettura corretta. */
.bikefvg-wrap--narrow {
	width: min(var(--bfvg-narrow), 100% - 2 * var(--bfvg-gutter));
}

.bikefvg-section {
	width: 100%;
	padding-block: var(--wp--preset--spacing--50);
}

.bikefvg-section--soft {
	background: var(--bfvg-soft);
	border-block: 1px solid var(--bfvg-line);
}

.bikefvg-section--tight {
	padding-block: var(--wp--preset--spacing--30);
}

.bikefvg-section__head {
	display: flex;
	flex-wrap: wrap;
	gap: var(--wp--preset--spacing--20);
	align-items: flex-end;
	justify-content: space-between;
	margin-bottom: var(--wp--preset--spacing--30);
}

.bikefvg-section__head > div {
	min-width: 0;
	max-width: 60ch;
}

.bikefvg-section__actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: flex-end;
	gap: 0.65rem 1rem;
}

/* Il main della homepage non deve reintrodurre vincoli di larghezza:
   le sezioni sono già responsabili del proprio contenimento. */
.bikefvg-main--full > * {
	max-width: none;
}

/* ---------- Tipografia di servizio ---------- */

.bikefvg-eyebrow {
	display: flex;
	align-items: center;
	gap: 0.55em;
	margin-bottom: 0.35rem;
	font-size: var(--wp--preset--font-size--small);
	font-weight: 700;
	/* 0.8.98 — etichette editoriali in minuscolo; il maiuscolo resta solo sulle etichette di dato. */
	letter-spacing: 0.01em;
	color: var(--wp--preset--color--accent);
}

.bikefvg-eyebrow::before {
	content: "";
	width: 1.6em;
	height: 1px;
	background: currentColor;
}

.bikefvg-lead {
	max-width: 54ch;
	margin-top: 0.5rem;
	/* 0.8.98 — scala unica per sommari/intro (theme.json custom.type.lead). */
	font-size: var(--wp--custom--type--lead);
	line-height: 1.5;
	color: color-mix(in srgb, var(--wp--preset--color--ink) 82%, transparent);
}

.bikefvg-muted {
	color: var(--wp--preset--color--ink-secondary);
}

/* ---------- Display: riservato all'hero, separato dall'H1 di pagina ---------- */

.bikefvg-display {
	font-family: var(--wp--preset--font-family--display);
	font-size: var(--wp--preset--font-size--display);
	font-weight: 700;
	line-height: .98;
	letter-spacing: -.035em;
}

/*
 * Solo per la pagina Style Guide: replica visivamente lo stile H1
 * (definito una sola volta in theme.json → styles.elements.h1) su un
 * elemento non-heading, perché la pagina ha già il proprio H1 reale
 * (post-title). Famiglia e dimensione restano sourced da theme.json;
 * peso/line-height/letter-spacing sono ripetuti qui solo a scopo
 * dimostrativo — se cambia lo stile H1 in theme.json, aggiornare anche
 * questi tre valori.
 */
.bikefvg-h1-sample {
	font-family: var(--wp--preset--font-family--display);
	font-size: var(--wp--preset--font-size--h1);
	font-weight: 600;
	line-height: .98;
	letter-spacing: -.045em;
	hyphens: auto;
	overflow-wrap: anywhere;
}

/* ---------- Titolo card (Space Grotesk, scala propria) ---------- */

.bikefvg-card-title {
	font-family: var(--wp--preset--font-family--display);
	font-size: clamp(1.1875rem, 1.10rem + .35vw, 1.5rem);
	font-weight: 600;
	line-height: 1.15;
	letter-spacing: -.01em;
}

/* ---------- Dati tecnici (JetBrains Mono, esclusivamente valori numerici) ---------- */

.bikefvg-data {
	font-family: var(--wp--preset--font-family--mono);
	font-size: clamp(0.8125rem, 0.79rem + 0.10vw, 0.9375rem);
	font-weight: 500;
	line-height: 1.3;
	letter-spacing: 0;
}

/* ---------- UI: navigazione, filtri, form ---------- */

.bikefvg-ui {
	font-family: var(--wp--preset--font-family--body);
	font-size: clamp(0.9375rem, 0.92rem + 0.08vw, 1rem);
	font-weight: 500;
	line-height: 1.3;
}

/* ---------- Prose editoriale (Diario, guide, contenuti lunghi) ---------- */

.bikefvg-prose {
	max-width: 68ch;
}

.bikefvg-prose p {
	font-size: var(--wp--preset--font-size--medium);
	line-height: 1.65;
}

/* ---------- Titoli lunghi IT/EN/DE: sillabazione prima, rottura forzata come fallback ---------- */

h1,
h2,
h3,
.bikefvg-display,
.bikefvg-card-title {
	hyphens: auto;
	overflow-wrap: anywhere;
	text-wrap: balance;
}

.bikefvg-text-link {
	display: inline-flex;
	align-items: center;
	gap: 0.45rem;
	min-height: var(--bfvg-touch);
	font-weight: 800;
	text-decoration: none;
	white-space: nowrap;
}

.bikefvg-text-link::after {
	content: "\2192";
	color: var(--wp--preset--color--accent);
}

.bikefvg-text-link:hover {
	text-decoration: underline;
	text-underline-offset: 0.25em;
}

/* Template di contenuto: il gutter laterale non arriva più dal root padding
   di WordPress (disattivato), quindi lo applica direttamente il main. */
.bikefvg-content {
	padding-inline: clamp(1rem, 2.5vw, 2rem);
}

/* ---------- Badge: etichetta statica ---------- */

.bikefvg-badge {
	display: inline-flex;
	align-items: center;
	gap: 0.35rem;
	padding: 0.32rem 0.6rem;
	border: 1px solid var(--bfvg-line);
	border-radius: var(--bfvg-radius-label);
	background: var(--wp--preset--color--panel);
	color: var(--wp--preset--color--ink);
	font-size: max(var(--bfvg-font-meta), var(--wp--preset--font-size--small));
	font-weight: 700;
	line-height: 1.2;
}

.bikefvg-badge--verified { color: var(--wp--preset--color--verified); border-color: currentColor; }
.bikefvg-badge--review   { color: var(--wp--preset--color--review);   border-color: currentColor; }
.bikefvg-badge--critical { color: var(--wp--preset--color--critical); border-color: currentColor; }
.bikefvg-badge--partner  { background: var(--wp--preset--color--partner); color: var(--wp--preset--color--paper); border-color: transparent; }

/* 0.8.131 — Sigillo "VERIFIED" nelle sole schede itinerario.
 * Stessa misura e stessa superficie del preferito: nessun bordo colorato.
 * Testo un poco più grande e arioso per restare leggibile a 44px; check 2.25px. */
.bikefvg-route-verified {
	box-sizing: border-box;
	display: grid;
	place-items: center;
	flex: 0 0 var(--bfvg-touch);
	width: var(--bfvg-touch);
	height: var(--bfvg-touch);
	border: 0;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.92);
	color: var(--wp--preset--color--verified);
	font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
	line-height: 1;
}

.bikefvg-route-verified svg {
	display: block;
	width: 100%;
	height: 100%;
	overflow: visible;
}

.bikefvg-route-verified__label {
	fill: currentColor;
	font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
	font-size: 5.8px;
	font-weight: 700;
	letter-spacing: .7px;
}

.bikefvg-route-verified__check {
	fill: none;
	stroke: currentColor;
	stroke-width: 2.25;
	stroke-linecap: round;
	stroke-linejoin: round;
	vector-effect: non-scaling-stroke;
}

.bikefvg-route-card__media > .bikefvg-route-verified {
	position: absolute;
	left: .8rem;
	bottom: .8rem;
	z-index: 1;
}

/* ---------- Chip: selezione interattiva ---------- */

.bikefvg-chip {
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	min-height: var(--bfvg-touch);
	padding: 0.5rem 0.8rem;
	border: 1px solid var(--bfvg-line);
	border-radius: var(--wp--custom--radius--pill);
	background: var(--wp--preset--color--panel);
	color: var(--wp--preset--color--ink);
	font-size: var(--wp--preset--font-size--small);
	font-weight: 700;
	cursor: pointer;
}

.bikefvg-chip[aria-pressed="true"] {
	background: var(--wp--preset--color--ink);
	border-color: var(--wp--preset--color--ink);
	color: var(--wp--preset--color--paper);
}

.bikefvg-chip:disabled {
	opacity: 0.5;
	cursor: not-allowed;
}

/* ---------- Hero + Finder ----------
 *
 * ALTEZZA: la hero riempie sempre la finestra meno l'header. Si usa 100svh
 * (small viewport height) perché su mobile 100vh viene calcolato con le barre
 * del browser nascoste e produce una hero più alta dello schermo reale.
 * L'altezza dell'header è misurata a runtime in --bfvg-header-h.
 *
 * LARGHEZZA: contenuto e finder usano il contenitore standard del sito.
 * Titolo e lead conservano una misura di lettura propria, senza restringere
 * il modulo di ricerca o alterare i margini comuni alle altre sezioni.
 */

.bikefvg-hero {
	position: relative;
	isolation: isolate;
	display: flex;
	align-items: stretch;
	overflow: hidden;
	min-height: calc(100svh - var(--bfvg-header-h, 70px));
	background: var(--wp--preset--color--ink);
	color: var(--wp--preset--color--paper);
}

/* Fallback per browser senza unità svh. */
@supports not (height: 100svh) {
	.bikefvg-hero {
		min-height: calc(100vh - var(--bfvg-header-h, 70px));
	}
}

.bikefvg-hero__media {
	position: absolute;
	inset: 0;
	z-index: -2;
	background:
		radial-gradient(circle at 75% 40%, rgba(255, 255, 255, 0.18), transparent 22%),
		linear-gradient(120deg, #1d3430 0%, #3f5b50 42%, #81917f 65%, #344640 100%);
}

/* Foto stagionale: copre l'area, con punto focale impostato dal backoffice
   così il soggetto resta inquadrato anche sui formati verticali. */
.bikefvg-hero__photo {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: var(--bfvg-hero-focal-mobile, 70% 50%);
	transform: scale(var(--bfvg-hero-zoom-mobile, 1)) scaleX(var(--bfvg-hero-flip-mobile, 1));
	transform-origin: center;
}

/* Mobile-first: la regola base è la composizione mobile. Da 768 px in su
   si passa alla composizione desktop. <picture> usa la stessa soglia. */
@media (min-width: 768px) {
	.bikefvg-hero__photo {
		object-position: var(--bfvg-hero-focal-desktop, 70% 50%);
		transform: scaleX(var(--bfvg-hero-flip-desktop, 1));
	}
}

/* Unico overlay della hero: protegge il testo senza filtrare globalmente
   la fotografia. Mobile-first: sui viewport stretti la protezione resta
   leggermente piu estesa perche il blocco testo occupa piu larghezza.
   La stessa curva viene usata per tutte le cinque immagini stagionali. */
.bikefvg-hero__scrim {
	position: absolute;
	inset: 0;
	z-index: -1;
	background: none;
}

/* Mobile-first: l'overlay mobile e quello desktop sono indipendenti
   e vengono abilitati per singola stagione dal pannello Hero stagionale. */
.bikefvg-hero.has-overlay-mobile .bikefvg-hero__scrim {
	background: linear-gradient(
		90deg,
		rgba(12, 20, 18, 0.70) 0%,
		rgba(12, 20, 18, 0.58) 42%,
		rgba(12, 20, 18, 0.30) 72%,
		rgba(12, 20, 18, 0.16) 100%
	);
}

@media (min-width: 48rem) {
	.bikefvg-hero .bikefvg-hero__scrim {
		background: none;
	}
	.bikefvg-hero.has-overlay-desktop .bikefvg-hero__scrim {
		background: linear-gradient(
			90deg,
			rgba(12, 20, 18, 0.68) 0%,
			rgba(12, 20, 18, 0.50) 30%,
			rgba(12, 20, 18, 0.22) 55%,
			rgba(12, 20, 18, 0.06) 72%,
			transparent 86%
		);
	}
}

.bikefvg-hero__inner {
	width: min(var(--bfvg-content), 100% - 2 * var(--bfvg-gutter));
	margin-inline: auto;
	display: flex;
	flex-direction: column;
	/* Spazio simmetrico: la hero può crescere se il contenuto è più alto. */
	padding-block: clamp(0.55rem, 1.5vh, 0.9rem);
}

/*
 * Composizione verticale della hero.
 *
 * Testo e finder formano un unico blocco centrato nello spazio disponibile.
 */
.bikefvg-hero__content {
	display: flex;
	flex-direction: column;
	justify-content: center;
	flex: 1;
	width: 100%;
	max-width: 100%;
}

.bikefvg-hero__text {
	order: 1;
	margin-block-start: 0;
	max-width: min(100%, 40rem);
}

/*
 * Ordine editoriale coerente a tutte le larghezze:
 * eyebrow/titolo → lead → finder. Sul mobile il modulo viene compattato
 * verticalmente invece di spostare il lead dopo la CTA.
 */
.bikefvg-hero__lead {
	order: 2;
	margin-top: clamp(0.4rem, 1.2vh, 0.75rem);
	max-width: min(100%, 40rem, 54ch);
}

.bikefvg-finder {
	order: 3;
}

.bikefvg-hero__eyebrow {
	margin-bottom: clamp(0.3rem, 1vh, 0.6rem);
	font-size: var(--wp--preset--font-size--small);
	font-weight: 700;
	letter-spacing: 0.01em;
	color: rgba(255, 255, 255, 0.82);
}

/*
 * Tipografia della hero legata anche a vh.
 *
 * I preset di theme.json scalano solo con la larghezza: su un portatile
 * 1366×768 producono un H1 da 76px che, sommato a lead e finder, sfonda
 * l'altezza dello schermo. Qui il limite superiore è il minore fra
 * larghezza e altezza disponibili, così la hero resta contenuta in un
 * solo schermo anche su viewport bassi.
 */
.bikefvg-hero h1 {
	max-width: 20ch;
	margin-bottom: clamp(0.5rem, 1.6vh, 0.9rem);
	font-size: clamp(2rem, min(6.4vw, 7vh), 4.4rem);
	line-height: 1.02;
}

/*
 * Il lead è testo da leggere, non didascalia: il limite inferiore del clamp
 * è alzato perché su schermi bassi il vincolo in vh lo schiacciava a 16px,
 * facendolo sembrare una nota a piè di pagina accanto a un H1 da 57px.
 */
.bikefvg-hero__lead {
	margin-bottom: 0;
	font-size: clamp(1rem, min(1.7vw, 2.2vh), 1.4rem);
	line-height: 1.4;
	color: rgba(255, 255, 255, 0.88);
}

.bikefvg-finder {
	margin-top: clamp(0.9rem, 3vh, 1.75rem);
	padding: clamp(0.7rem, 1.7vh, 0.9rem);
	border-radius: var(--bfvg-radius-panel);
	background: var(--wp--preset--color--panel);
	color: var(--wp--preset--color--ink);
	box-shadow: var(--wp--custom--shadow--panel);
}

.bikefvg-finder__head {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	justify-content: space-between;
	gap: 0.5rem;
	margin-bottom: 0.5rem;
}

.bikefvg-finder__head strong {
	font-size: var(--wp--preset--font-size--large);
	line-height: 1.2;
}

.bikefvg-finder__hint {
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--ink-muted);
}

.bikefvg-finder__grid {
	display: grid;
	gap: 0.45rem;
}

/* Senza min-width:0 le colonne della griglia non scendono sotto la larghezza
   intrinseca della option più lunga: il campo viene tagliato invece di
   adattarsi ("Tutte le disciplin…"). */
.bikefvg-finder__field {
	min-width: 0;
}

.bikefvg-finder__field label {
	/* Mobile: il valore neutro della select (“Dove vuoi pedalare?” ecc.)
	   rende già esplicita la funzione; la label resta nel DOM per tecnologie
	   assistive ma non consuma altezza nella prima schermata. */
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
	font-size: var(--wp--preset--font-size--small);
	font-weight: 800;
}

.bikefvg-finder__field select {
	width: 100%;
	min-height: 44px;
	/* Le option del finder sono microcopy UI, non body copy: una scala più
	   contenuta evita clipping con stringhe come “Come vuoi pedalare?” e
	   mantiene comunque 16px minimi sui dispositivi mobili. */
	font-family: var(--wp--preset--font-family--body);
	font-size: clamp(1rem, 0.985rem + 0.08vw, 1.0625rem);
	font-weight: 400;
	line-height: 1.25;
	padding: 0.75rem 2.15rem 0.75rem 0.8rem;
	border: 1px solid var(--bfvg-line);
	border-radius: var(--wp--custom--radius--control);
	background: var(--wp--preset--color--panel);
	color: var(--wp--preset--color--ink);
	appearance: none;
	-webkit-appearance: none;
	-moz-appearance: none;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8' fill='none'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5' stroke='%231E2420' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 0.8rem center;
	background-size: 11px 7px;
}

.bikefvg-finder__submit {
	width: 100%;
	min-height: 46px;
	padding: 0.68rem 1.2rem;
	border: 0;
	border-radius: var(--wp--custom--radius--control);
	background: var(--wp--preset--color--action);
	color: var(--wp--preset--color--surface);
	font: inherit;
	font-weight: 800;
	font-size: var(--wp--preset--font-size--medium);
	white-space: nowrap;
	padding-inline: 1.5rem;
	cursor: pointer;
}

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

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

.bikefvg-finder__shortcuts {
	margin-top: clamp(0.5rem, 1.6vh, 0.8rem);
	padding-top: clamp(0.5rem, 1.4vh, 0.75rem);
	border-top: 1px solid var(--bfvg-line);

	/* Mobile: i tre shortcut costituiscono un unico gruppo di scelta rapida.
	   Tre colonne uguali evitano wrapping e mantengono una riga stabile. */
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 0.35rem;
}

.bikefvg-finder__shortcuts .bikefvg-chip {
	box-sizing: border-box;
	width: 100%;
	min-width: 0;
	justify-content: center;
	padding-inline: 0.35rem;
	font-size: clamp(0.72rem, 2.9vw, 0.8125rem);
	white-space: nowrap;
	text-align: center;
}

/* Tablet/desktop: torna al comportamento naturale a larghezza contenuto. */
@media (min-width: 48rem) {
	.bikefvg-finder__shortcuts {
		display: flex;
		flex-wrap: wrap;
		gap: 0.5rem;
	}

	.bikefvg-finder__shortcuts .bikefvg-chip {
		width: auto;
		padding-inline: 0.8rem;
		font-size: var(--wp--preset--font-size--small);
	}
}

/* ---------- Barra fiducia ---------- */

.bikefvg-trust-band {
	width: 100%;
	padding-block: var(--wp--preset--spacing--30);
	background: var(--bfvg-soft);
	border-block: 1px solid var(--bfvg-line);
}

.bikefvg-trust__tagline {
	margin: 0 0 var(--wp--preset--spacing--20);
	font-family: var(--wp--preset--font-family--display);
	font-size: var(--wp--preset--font-size--medium);
	font-weight: 600;
	text-align: center;
}

.bikefvg-trust {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 0.7rem;
}

.bikefvg-trust__item strong {
	display: block;
	font-size: var(--wp--preset--font-size--small);
}

.bikefvg-trust__item span {
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--ink-secondary);
}

.bikefvg-trust__item {
	padding-block: 0.6rem;
	padding-inline: 0.6rem;
	min-width: 0;
}

/* Senza icone, titolo e descrizione formano un unico blocco editoriale
   compatto: la fiducia è affidata al contenuto, non a segni decorativi. */
.bikefvg-trust__copy {
	min-width: 0;
}

.bikefvg-trust__copy strong,
.bikefvg-trust__copy span {
	display: block;
}

.bikefvg-trust__copy span {
	margin-top: 0.12rem;
}


/* ---------- Route card ---------- */

.bikefvg-route-grid {
	display: grid;
	gap: var(--wp--preset--spacing--20);
}

.bikefvg-route-card {
	display: flex;
	flex-direction: column;
	overflow: hidden;
	border: 1px solid var(--bfvg-line);
	border-radius: var(--bfvg-card-radius);
	background: var(--wp--preset--color--panel);
	transition: transform .18s ease, border-color .18s ease;
}

@media (hover: hover) and (pointer: fine) {
	.bikefvg-route-card:hover {
		transform: translateY(-2px);
		border-color: color-mix(in srgb, var(--wp--preset--color--ink) 24%, var(--bfvg-line));
	}
}

.bikefvg-route-card__media {
	position: relative;
	aspect-ratio: 4 / 3;
	background:
		radial-gradient(120% 90% at 15% 0%, rgba(255, 255, 255, 0.16), transparent 55%),
		linear-gradient(165deg, transparent 0 50%, rgba(0, 0, 0, 0.55)),
		linear-gradient(128deg, #5c7d6e 0%, #a7b79a 46%, #3a5a4d 78%, #26433a 100%);
}

.bikefvg-route-card__media img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.bikefvg-route-card__media .bikefvg-badge {
	position: absolute;
	left: 0.8rem;
	top: 0.8rem;
}

.bikefvg-route-card__media .bikefvg-badge--verified,
.bikefvg-route-card__media .bikefvg-badge--review,
.bikefvg-route-card__media .bikefvg-badge--critical {
	top: auto;
	bottom: 0.8rem;
}

.bikefvg-route-card__fav {
	position: absolute;
	right: 0.55rem;
	top: 0.55rem;
	width: var(--bfvg-touch);
	height: var(--bfvg-touch);
	display: grid;
	place-items: center;
	border: 0;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.92);
	cursor: pointer;
}

/*
 * Bottone preferiti condiviso — card homepage/archivio (icona sola, vedi
 * .bikefvg-route-card__fav e .bikefvg-route-archive__fav per il
 * posizionamento specifico del contesto) e pagina itinerario (icona +
 * etichetta, vedi .bikefvg-route-page__fav in bikefvg-route-page.css).
 * Un'unica definizione di colore/stato per tutti i contesti.
 */
.bikefvg-fav-toggle {
	color: var(--wp--preset--color--ink);
	transition: color .15s ease;
}

.bikefvg-fav-toggle:hover {
	color: var(--wp--preset--color--accent);
}

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

.bikefvg-fav-toggle[aria-pressed="true"] .bikefvg-fav-toggle__icon path {
	fill: currentColor;
}

.bikefvg-fav-toggle__icon {
	display: block;
}

.bikefvg-route-card__body {
	padding: var(--bfvg-card-padding);
	margin-top: auto;
}

.bikefvg-route-card__meta {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem 1rem;
	margin-top: 0.7rem;
	padding-top: 0.7rem;
	border-top: 1px solid var(--bfvg-line);
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--ink-muted);
}

/* Difficoltà: nelle card si mostra SOLO la complessiva (overall).
   Il dettaglio tecnica/fisica vive nella scheda itinerario, visibile
   stabilmente e non in tooltip (non accessibile su touch). */
.bikefvg-difficulty {
	display: inline-flex;
	align-items: center;
	gap: 4px;
}

.bikefvg-difficulty__dot {
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background: color-mix(in srgb, var(--wp--preset--color--ink) 20%, transparent);
}

.bikefvg-difficulty__dot.is-on {
	background: var(--wp--preset--color--ink);
}

/* ---------- Empty state ---------- */

.bikefvg-empty {
	grid-column: 1 / -1;
	padding: var(--wp--preset--spacing--30) 1rem;
	border: 1px dashed var(--bfvg-line);
	border-radius: var(--bfvg-radius-card);
	text-align: center;
	color: var(--wp--preset--color--ink-secondary);
}

.bikefvg-empty strong {
	display: block;
	margin-bottom: 0.3rem;
	color: var(--wp--preset--color--ink);
}

/* ---------- Diario — sezione homepage ---------- */

.bikefvg-diary-grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--wp--preset--spacing--30);
	margin-bottom: var(--wp--preset--spacing--30);
}

.bikefvg-diary-col {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--30);
}

/* L'articolo in evidenza riusa la route-card: stessa media con badge
   overlay, stesso body. Cambia solo l'orientamento da 64rem in su. */
.bikefvg-route-card--feature .bikefvg-route-card__body {
	margin-top: 0;
	display: flex;
	flex-direction: column;
	gap: 0.6rem;
}

.bikefvg-route-card--feature .bikefvg-route-card__body p {
	margin: 0;
}

.bikefvg-diary-recent,
.bikefvg-diary-event {
	border: 1px solid var(--bfvg-line);
	border-radius: var(--bfvg-card-radius);
	background: var(--wp--preset--color--panel);
}

.bikefvg-diary-recent {
	padding: var(--bfvg-card-padding);
	margin-bottom: var(--wp--preset--spacing--30);
}

.bikefvg-diary-recent h3 {
	margin: 0;
}

/* L'evento può avere una foto (dal primo evento in elenco): la card non ha
   più il padding diretto, così l'immagine arriva fino al bordo come nelle
   route-card. Il contenuto testuale vive nel wrapper __body, che riprende
   lo stesso padding. */
.bikefvg-diary-event {
	overflow: hidden;
}

.bikefvg-diary-event__body {
	padding: var(--bfvg-card-padding);
}

.bikefvg-diary-event__more {
	margin-top: 0.9rem;
	padding-top: 0.7rem;
	border-top: 1px solid var(--bfvg-divider);
}

.bikefvg-diary-event__more-item {
	padding-block: 0.5rem;
}

.bikefvg-diary-event__more-item h5 {
	margin: 0 0 0.15rem;
	font-family: var(--wp--preset--font-family--display);
	font-size: 0.9rem;
	font-weight: 600;
	line-height: 1.3;
}

.bikefvg-diary-recent__item {
	padding-block: 0.85rem;
	border-top: 1px solid var(--bfvg-divider);
}

.bikefvg-diary-recent__item:first-of-type {
	border-top: none;
	padding-top: 0.65rem;
}

.bikefvg-diary-recent__item a {
	display: block;
}

.bikefvg-diary-recent__item h4 {
	margin: 0 0 0.3rem;
}

@media (hover: hover) and (pointer: fine) {
	.bikefvg-diary-recent__item a:hover h4 {
		color: var(--wp--preset--color--accent);
	}
}

.bikefvg-diary-event__head {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 1rem;
	margin-bottom: 0.8rem;
}

.bikefvg-diary-event__head .bikefvg-eyebrow {
	margin-bottom: 0;
}

.bikefvg-diary-event__date {
	flex: 0 0 auto;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	width: 52px;
	height: 52px;
	border: 1px solid var(--bfvg-line);
	border-radius: var(--wp--custom--radius--control);
	background: var(--bfvg-soft);
}

.bikefvg-diary-event__date .bikefvg-data {
	line-height: 1.1;
}

.bikefvg-diary-event__date span:last-child {
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.05em;
	color: var(--wp--preset--color--ink-muted);
}

.bikefvg-diary-event h4 {
	margin: 0 0 0.35rem;
}

.bikefvg-diary-event .bikefvg-text-link {
	margin-top: 0.5rem;
}

.bikefvg-diary-tabs__nav {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	margin-bottom: var(--wp--preset--spacing--20);
}

.bikefvg-route-grid--3 {
	margin-bottom: var(--wp--preset--spacing--20);
}

.bikefvg-diary-tabs__more {
	text-align: center;
}

@media (min-width: 48rem) {
	.bikefvg-route-card--feature {
		flex-direction: row-reverse;
		align-items: stretch;
	}
	.bikefvg-route-card--feature .bikefvg-route-card__media {
		flex: 0 0 40%;
	}
	.bikefvg-route-card--feature .bikefvg-route-card__body {
		flex: 1 1 auto;
		min-width: 0;
		justify-content: flex-start;
	}
	.bikefvg-route-grid.bikefvg-route-grid--3 {
		grid-template-columns: repeat(3, 1fr);
	}
}

@media (min-width: 64rem) {
	.bikefvg-diary-grid {
		grid-template-columns: 1.7fr 1fr;
		align-items: start;
	}
	.bikefvg-diary-grid.is-feature-only {
		grid-template-columns: 1fr;
	}
}

.bikefvg-diary-event__all {
	display: inline-flex;
	margin-top: 0.85rem;
}

/* ---------- Homepage: atlante degli 11 territori ---------- */

/* Shared tracks: cards determine row height, including the three beside the map. */
.bikefvg-home-territories > .bikefvg-wrap {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	grid-template-rows: auto auto;
	grid-auto-rows: 1fr;
	gap: var(--wp--preset--spacing--20);
}
.bikefvg-home-territories > .bikefvg-wrap > .bikefvg-home-section-head {
	grid-column: 1 / -1;
	margin-bottom: max(0px, calc(var(--wp--preset--spacing--30) - var(--wp--preset--spacing--20)));
}
/* Preserve the template wrappers; their cards participate in the same grid. */
.bikefvg-home-territories__atlas,
.bikefvg-home-territories__side,
.bikefvg-home-territories__grid {
	display: contents;
}

.bikefvg-home-territories__map {
	grid-column: 1 / -1;
	min-width: 0;
	min-height: 22rem;
	overflow: hidden;
	border: 0;
	border-radius: var(--bfvg-radius-media);
	background: transparent;
}

.bikefvg-home-territories__map > *,
.bikefvg-home-territories__map .waymark-map,
.bikefvg-home-territories__map .leaflet-container {
	width: 100%;
	min-height: inherit;
}

.bikefvg-home-territories__map-placeholder {
	display: flex;
	min-height: inherit;
	box-sizing: border-box;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 0.45rem;
	padding: var(--wp--preset--spacing--30);
	color: var(--wp--preset--color--ink-secondary);
	text-align: center;
}

.bikefvg-home-territories__map-placeholder > span {
	color: var(--wp--preset--color--accent);
	font-size: 2rem;
}

.bikefvg-home-territories__map-placeholder strong {
	color: var(--wp--preset--color--ink);
}

.bikefvg-home-territories__map-placeholder small {
	max-width: 32ch;
}

.bikefvg-home-territory-card {
	position: relative;
	display: flex;
	min-width: 0;
	min-height: 13rem;
	overflow: hidden;
	box-sizing: border-box;
	flex-direction: column;
	border: 1px solid var(--bfvg-line);
	border-radius: var(--bfvg-card-radius);
	background: var(--wp--preset--color--panel);
	color: var(--wp--preset--color--ink);
	text-decoration: none;
	transition: transform .18s ease, border-color .18s ease;
}

.bikefvg-home-territory-card__media {
	display: block;
	flex: 0 0 8.2rem;
	min-height: 8.2rem;
	background:
		linear-gradient(130deg, color-mix(in srgb, var(--wp--preset--color--paper) 54%, transparent), transparent 52%),
		linear-gradient(145deg, color-mix(in srgb, var(--wp--preset--color--verified) 48%, var(--wp--preset--color--paper)), var(--wp--preset--color--ink));
}

.bikefvg-home-territory-card__media img {
	display: block;
	width: 100%;
	height: 100%;
	min-height: inherit;
	object-fit: cover;
	object-position: var(--bfvg-territory-card-x, 50%) var(--bfvg-territory-card-y, 50%);
}

.bikefvg-home-territory-card.has-image .bikefvg-home-territory-card__media {
	background: var(--wp--preset--color--panel);
}

.bikefvg-home-territory-card:nth-child(3n + 2) .bikefvg-home-territory-card__media {
	background:
		linear-gradient(130deg, color-mix(in srgb, var(--wp--preset--color--paper) 48%, transparent), transparent 52%),
		linear-gradient(145deg, color-mix(in srgb, var(--wp--preset--color--action) 42%, var(--wp--preset--color--paper)), var(--wp--preset--color--ink));
}

.bikefvg-home-territory-card:nth-child(3n) .bikefvg-home-territory-card__media {
	background:
		linear-gradient(130deg, color-mix(in srgb, var(--wp--preset--color--paper) 50%, transparent), transparent 52%),
		linear-gradient(145deg, color-mix(in srgb, var(--wp--preset--color--accent) 42%, var(--wp--preset--color--paper)), var(--wp--preset--color--ink));
}

.bikefvg-home-territory-card__number {
	position: absolute;
	top: 0.65rem;
	left: 0.65rem;
	display: grid;
	place-items: center;
	width: 2rem;
	height: 2rem;
	border-radius: 999px;
	background: var(--wp--preset--color--panel);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.68rem;
	font-weight: 800;
}

.bikefvg-home-territory-card__body {
	display: flex;
	flex: 1;
	flex-direction: column;
	gap: 0.2rem;
	padding: 0.85rem 1rem;
}

.bikefvg-home-territory-card__body strong {
	font-family: var(--wp--preset--font-family--display);
	font-size: 1rem;
	line-height: 1.2;
}

.bikefvg-home-territory-card__body small {
	color: var(--wp--preset--color--ink-secondary);
	font-size: var(--wp--preset--font-size--small);
}

@media (hover: hover) and (pointer: fine) {
	.bikefvg-home-territory-card:hover {
		transform: translateY(-2px);
		border-color: var(--wp--preset--color--accent);
	}
}

@media (min-width: 35rem) {
	.bikefvg-home-territories > .bikefvg-wrap {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (min-width: 64rem) {
	.bikefvg-home-territories > .bikefvg-wrap {
		grid-template-columns: repeat(4, minmax(0, 1fr));
		grid-template-rows: auto;
	}
	.bikefvg-home-territories__map {
		grid-column: 1 / span 3;
		grid-row: 2 / span 3;
		position: relative;
		min-height: 0;
	}
	/* The map follows three card rows plus the two gaps, with no intrinsic height. */
	.bikefvg-home-territories__map > .bfvg-territory-map {
		position: absolute;
		inset: 0;
		grid-template-rows: minmax(0, 1fr) auto auto;
	}
	.bikefvg-home-territories__map .bfvg-territory-map__canvas,
	.bikefvg-home-territories__map .bfvg-territory-map__svg {
		height: 100%;
		min-height: 0;
		max-height: none;
	}
}

/* ---------- Lasciati ispirare: card tema + mappa ---------- */

.bikefvg-inspire {
	display: grid;
	gap: var(--wp--preset--spacing--30);
}

.bikefvg-theme-cards {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 0.7rem;
}

.bikefvg-theme-card {
	position: relative;
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	gap: 0.3rem;
	min-height: 150px;
	padding: 1rem;
	overflow: hidden;
	border-radius: var(--bfvg-radius-card);
	text-decoration: none;
	color: var(--wp--preset--color--paper);
	background:
		radial-gradient(130% 100% at 10% 0%, rgba(255, 255, 255, 0.22), transparent 55%),
		linear-gradient(155deg, transparent 0 40%, rgba(0, 0, 0, 0.5)),
		linear-gradient(150deg, #4c6d5f, #9fb097 55%, #2e473c);
}

.bikefvg-theme-card__kicker {
	font-size: var(--bfvg-font-meta);
	font-weight: 700;
	letter-spacing: 0.01em;
	color: rgba(255, 255, 255, 0.8);
}

.bikefvg-theme-card strong {
	font-size: var(--wp--preset--font-size--large);
	line-height: 1.1;
	text-shadow: 0 1px 14px rgba(0, 0, 0, 0.3);
}

.bikefvg-map {
	padding: var(--wp--preset--spacing--20);
	border: 1px solid var(--bfvg-line);
	border-radius: var(--bfvg-radius-panel);
	background: var(--wp--preset--color--panel);
}

.bikefvg-map svg { width: 100%; height: auto; }
.bikefvg-map__zone { fill: #d5ddd3; stroke: var(--wp--preset--color--paper); stroke-width: 3; transition: opacity 0.2s; }
.bikefvg-map__zone.is-active { fill: var(--wp--preset--color--accent); }
.bikefvg-map__zone.is-dim { opacity: 0.35; }

.bikefvg-map__note {
	margin-top: 0.6rem;
	font-size: var(--wp--preset--font-size--small);
}

/* ---------- Style Guide ---------- */

.bikefvg-type-sample {
	padding-block: 0.9rem;
	border-block-end: 1px solid var(--wp--preset--color--border, #e2ddd2);
}

.bikefvg-type-sample:last-of-type {
	border-block-end: none;
}

.bikefvg-swatches {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.8rem;
	margin-block: 1rem var(--wp--preset--spacing--30);
}

.bikefvg-swatch {
	display: flex;
	flex-direction: column;
	gap: 0.3rem;
	min-width: 150px;
	padding: 0.7rem;
	border: 1px solid var(--bfvg-line);
	border-radius: 12px;
	background: var(--wp--preset--color--panel);
	font-size: var(--wp--preset--font-size--small);
}

.bikefvg-swatch__chip {
	display: block;
	height: 54px;
	border: 1px solid var(--bfvg-line);
	border-radius: 8px;
}

.bikefvg-swatch code {
	color: var(--wp--preset--color--ink-muted);
}

.bikefvg-token-list {
	display: grid;
	gap: 0.3rem;
	margin: 0 0 var(--wp--preset--spacing--30);
	padding: 0;
	list-style: none;
	font-size: var(--wp--preset--font-size--small);
}

.bikefvg-token-list code {
	padding: 0.12rem 0.4rem;
	border-radius: 6px;
	background: var(--bfvg-soft);
}

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

.bikefvg-service-grid {
	display: grid;
	gap: 0.7rem;
}

.bikefvg-service-card {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	align-items: center;
	gap: 0.8rem;
	min-height: var(--bfvg-touch);
	padding: var(--bfvg-card-padding-compact);
	border: 1px solid var(--bfvg-line);
	border-radius: var(--bfvg-card-radius);
	background: var(--wp--preset--color--panel);
	text-decoration: none;
}

.bikefvg-service-card__body {
	min-width: 0;
}

.bikefvg-service-card__title {
	display: block;
	min-width: 0;
}

/* L'icona occupa solo la prima riga del titolo: se il testo va a capo,
   le righe successive tornano al margine sinistro della card. */
.bikefvg-service-card__icon {
	float: left;
	display: inline-grid;
	place-items: start center;
	width: 20px;
	height: 20px;
	margin: 0.08rem 0.55rem 0 0;
	color: var(--wp--preset--color--accent);
}

.bikefvg-service-card__title::after {
	content: '';
	display: block;
	clear: both;
}

.bikefvg-service-card small {
	display: block;
	color: var(--wp--preset--color--ink-secondary);
	font-size: var(--wp--preset--font-size--small);
}

.bikefvg-service-card strong {
	display: block;
	flex: 1 1 0;
	min-width: 0;
}

.bikefvg-route-card__body h3 a {
	text-decoration: none;
}

.bikefvg-route-card__body h3 a:hover {
	text-decoration: underline;
	text-underline-offset: 0.2em;
}

.bikefvg-service-card__arrow {
	color: var(--wp--preset--color--accent);
	font-weight: 900;
}

/* ---------- Homepage: modulo commerciale opzionale ---------- */

.bikefvg-home-commerce {
	position: relative;
	border-block: 1px solid var(--bfvg-line);
	background: var(--wp--preset--color--surface-alt);
}

/* .bikefvg-eyebrow è accent puro (#1C6B7A), pensato per il fondo paper/panel
 * (~5.4:1). Su surface-alt (#CFC8BE), il fondo di questa sezione, rende solo
 * ~3.7:1: sotto la soglia AA 4.5:1 per testo di questa dimensione. Scurito
 * solo in questo contesto, stesso hue, misurato ~4.7:1 su surface-alt. */
.bikefvg-home-commerce .bikefvg-eyebrow {
	color: color-mix(in srgb, var(--wp--preset--color--accent) 75%, var(--wp--preset--color--ink) 25%);
}

.bikefvg-home-commerce.is-preview {
	border-block: 3px dashed var(--wp--preset--color--action);
}

.bikefvg-home-commerce__preview-label,
.bikefvg-home-commerce__disclosure {
	display: inline-flex;
	align-items: center;
	min-height: 28px;
	margin: 0 0 var(--wp--preset--spacing--20);
	padding: 0.25rem 0.65rem;
	border-radius: 999px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--small);
	font-weight: 700;
	line-height: 1.2;
	text-transform: uppercase;
}

.bikefvg-home-commerce__preview-label {
	margin-right: 0.5rem;
	background: var(--wp--preset--color--action);
	color: var(--wp--preset--color--paper);
}

.bikefvg-home-commerce__disclosure {
	background: var(--wp--preset--color--ink);
	color: var(--wp--preset--color--paper);
}

.bikefvg-home-commerce .bikefvg-home-section-head h2,
.bikefvg-home-commerce .bikefvg-home-section-head > .bikefvg-lead {
	max-width: none;
	width: 100%;
}

.bikefvg-home-commerce__block + .bikefvg-home-commerce__block {
	margin-top: var(--wp--preset--spacing--40);
	padding-top: var(--wp--preset--spacing--30);
	border-top: 1px solid var(--bfvg-line);
}

.bikefvg-home-commerce__block > h3 {
	margin: 0 0 var(--wp--preset--spacing--20);
}

.bikefvg-home-commerce__partner-grid,
.bikefvg-home-commerce__package-grid {
	display: grid;
	gap: var(--wp--preset--spacing--20);
}

/* auto-fit: le tracce senza contenuto collassano, quindi con meno card reali
   di quante il layout ne preveda (es. un solo Partner verificato) la card
   occupa lo spazio libero invece di lasciare colonne vuote. */
.bikefvg-home-commerce__partner-grid {
	grid-template-columns: repeat(auto-fit, minmax(min(17rem, 100%), 1fr));
}

.bikefvg-home-commerce__package-grid {
	grid-template-columns: repeat(auto-fit, minmax(min(22rem, 100%), 1fr));
}

.bikefvg-home-commerce__partner-card,
.bikefvg-home-commerce__package-card {
	min-width: 0;
	overflow: hidden;
	border: 1px solid var(--bfvg-line);
	border-radius: var(--bfvg-card-radius);
	background: var(--wp--preset--color--panel);
}

.bikefvg-home-commerce__partner-card {
	display: flex;
	flex-direction: column;
}

.bikefvg-home-commerce__media {
	position: relative;
	min-height: 11rem;
	aspect-ratio: 4 / 3;
	overflow: hidden;
	background: linear-gradient(
		135deg,
		color-mix(in srgb, var(--wp--preset--color--accent) 35%, var(--wp--preset--color--paper)),
		var(--wp--preset--color--ink)
	);
}

.bikefvg-home-commerce__media.is-warm {
	background: linear-gradient(
		135deg,
		color-mix(in srgb, var(--wp--preset--color--action) 45%, var(--wp--preset--color--paper)),
		var(--wp--preset--color--ink)
	);
}

.bikefvg-home-commerce__media.is-green {
	background: linear-gradient(
		135deg,
		color-mix(in srgb, var(--wp--preset--color--verified) 35%, var(--wp--preset--color--paper)),
		var(--wp--preset--color--ink)
	);
}

.bikefvg-home-commerce__media img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.bikefvg-home-commerce__media .bikefvg-badge {
	position: absolute;
	top: 0.75rem;
	left: 0.75rem;
	z-index: 1;
}

.bikefvg-home-commerce__card-body {
	display: flex;
	flex: 1;
	flex-direction: column;
	align-items: flex-start;
	gap: 0.65rem;
	min-width: 0;
	padding: var(--bfvg-card-padding);
}

.bikefvg-home-commerce__card-body h3,
.bikefvg-home-commerce__card-body p {
	margin: 0;
}

.bikefvg-home-commerce__card-body h3 {
	font-size: var(--wp--preset--font-size--large);
	line-height: 1.18;
}

.bikefvg-home-commerce__card-body h3 a {
	color: inherit;
	text-decoration: none;
}

.bikefvg-home-commerce__card-body h3 a:hover {
	text-decoration: underline;
	text-underline-offset: 0.2em;
}

.bikefvg-home-commerce__card-body > p {
	color: var(--wp--preset--color--ink-secondary);
}

/* Le CTA delle card partner restano sulla stessa baseline anche quando un
 * partner non ha ancora un estratto editoriale. */
.bikefvg-home-commerce__partner-summary {
	min-height: 3em;
}
.bikefvg-home-commerce__partner-summary.is-empty {
	visibility: hidden;
}

.bikefvg-home-commerce__card-body > .bikefvg-text-link {
	margin-top: auto;
}

.bikefvg-home-commerce__package-card {
	display: flex;
	flex-direction: column;
}

.bikefvg-home-commerce__package-media {
	flex: 0 0 auto;
}

.bikefvg-home-commerce__tags {
	display: flex;
	flex-wrap: wrap;
	gap: 0.4rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.bikefvg-home-commerce__tags li {
	padding: 0.25rem 0.55rem;
	border: 1px solid var(--bfvg-line);
	border-radius: 999px;
	font-size: var(--wp--preset--font-size--small);
}

.bikefvg-home-commerce__package-footer {
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: var(--wp--preset--spacing--20);
	width: 100%;
	margin-top: auto;
	padding-top: var(--wp--preset--spacing--20);
	border-top: 1px solid var(--bfvg-line);
}

.bikefvg-home-commerce__package-footer p,
.bikefvg-home-commerce__package-footer small,
.bikefvg-home-commerce__package-footer strong {
	display: block;
}

.bikefvg-home-commerce__package-footer small {
	color: var(--wp--preset--color--ink-secondary);
}

.bikefvg-home-commerce__package-footer strong {
	font-family: var(--wp--preset--font-family--display);
	font-size: var(--wp--preset--font-size--large);
}

@media (min-width: 35rem) {
	.bikefvg-home-commerce__package-card {
		flex-direction: row;
	}

	.bikefvg-home-commerce__package-media {
		width: 38%;
		min-height: 100%;
		aspect-ratio: auto;
	}
}

/* ---------- Homepage: newsletter e CTA Partner ---------- */

.bikefvg-home-newsletter {
	padding-block: var(--wp--preset--spacing--40);
	background: var(--wp--preset--color--paper);
}

.bikefvg-home-newsletter.is-preview,
.bikefvg-home-partner-cta.is-preview {
	outline: 2px dashed var(--wp--preset--color--action);
	outline-offset: -2px;
}

.bikefvg-home-newsletter__inner {
	display: grid;
	gap: var(--wp--preset--spacing--20);
	box-sizing: border-box;
	padding: var(--wp--preset--spacing--20);
	border: 1px solid var(--bfvg-line);
	border-radius: var(--bfvg-radius-promo);
	background: var(--wp--preset--color--panel);
}

.bikefvg-home-newsletter h2,
.bikefvg-home-newsletter p {
	margin: 0;
}

.bikefvg-home-newsletter h2 {
	font-size: var(--wp--preset--font-size--large);
}

.bikefvg-home-newsletter p {
	margin-top: 0.25rem;
	color: var(--wp--preset--color--ink-secondary);
}

.bikefvg-home-newsletter__form {
	display: flex;
	flex-wrap: wrap;
	align-items: stretch;
	gap: 0.55rem;
}

.bikefvg-home-newsletter__form form {
	display: flex;
	flex: 1;
	flex-wrap: wrap;
	align-items: stretch;
	gap: 0.55rem;
}

.bikefvg-home-newsletter__form input[type="email"] {
	min-width: 0;
	min-height: var(--bfvg-touch);
	flex: 1;
	box-sizing: border-box;
	padding: 0.75rem 0.9rem;
	border: 1px solid var(--bfvg-line);
	border-radius: var(--wp--custom--radius--control);
	background: var(--wp--preset--color--paper);
	color: var(--wp--preset--color--ink);
	font: inherit;
}

.bikefvg-home-newsletter__form button {
	min-height: var(--bfvg-touch);
	padding: 0.7rem 1rem;
	border: 1px solid var(--wp--preset--color--ink);
	border-radius: var(--wp--custom--radius--control);
	background: var(--wp--preset--color--ink);
	color: var(--wp--preset--color--paper);
	font: inherit;
	font-weight: 800;
}

.bikefvg-home-partner-cta {
	padding-block: clamp(3rem, 2rem + 4vw, 5.5rem);
	background: var(--wp--preset--color--action);
	color: #fff;
}

.bikefvg-home-partner-cta__inner {
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
}

.bikefvg-home-partner-cta h2,
.bikefvg-home-partner-cta p {
	margin: 0;
}

.bikefvg-home-partner-cta h2 {
	font-size: clamp(1.8rem, 1.5rem + 1vw, 2.6rem);
}

.bikefvg-home-partner-cta p {
	max-width: 44rem;
	margin-top: 0.65rem;
	font-size: var(--wp--preset--font-size--medium);
}

.bikefvg-home-partner-cta a {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: var(--bfvg-touch);
	margin-top: 1.35rem;
	padding: 0.7rem 1.25rem;
	border: 1px solid #fff;
	border-radius: var(--wp--custom--radius--control);
	background: #fff;
	color: var(--wp--preset--color--action);
	font-weight: 800;
	text-decoration: none;
}

@media (min-width: 48rem) {
	.bikefvg-home-newsletter__inner {
		grid-template-columns: minmax(0, 1fr) minmax(24rem, 0.8fr);
		align-items: center;
	}
}

/* ---------- Breakpoint (solo min-width) ---------- */

@media (min-width: 35rem) {
	/* Da qui in su viene ripristinato il respiro verticale completo. */
	.bikefvg-hero__inner { padding-block: clamp(0.9rem, 3vh, 2.4rem); }
	.bikefvg-hero__lead {
		margin-top: clamp(0.6rem, 2vh, 1rem);
		padding-bottom: clamp(1rem, 5vh, 3rem);
		font-size: clamp(1.05rem, min(1.7vw, 2.4vh), 1.4rem);
		line-height: 1.45;
	}
	.bikefvg-finder {
		margin-top: clamp(0.9rem, 3vh, 1.75rem);
		padding: clamp(0.9rem, 2.4vh, 1.4rem);
	}
	.bikefvg-finder__head { margin-bottom: 0.8rem; }
	.bikefvg-finder__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 0.7rem;
	}
	.bikefvg-finder__field label {
		position: static;
		display: block;
		width: auto;
		height: auto;
		padding: 0;
		margin: 0 0 0.32rem;
		overflow: visible;
		clip: auto;
		white-space: normal;
	}
	.bikefvg-finder__field select { min-height: 48px; }
	.bikefvg-finder__submit {
		grid-column: 1 / -1;
		min-height: 50px;
		padding: 0.8rem 1.2rem;
	}
	.bikefvg-route-grid { grid-template-columns: 1fr 1fr; }
	.bikefvg-service-grid { grid-template-columns: 1fr 1fr; }
}

@media (min-width: 48rem) {
	.bikefvg-finder__grid {
		grid-template-columns: repeat(3, minmax(0, 1fr)) minmax(11.25rem, auto);
		align-items: end;
	}
	.bikefvg-finder__submit {
		grid-column: auto;
		width: 100%;
		padding-inline: 1.8rem;
	}
	.bikefvg-trust { grid-template-columns: repeat(4, 1fr); }
	.bikefvg-section__head { flex-wrap: nowrap; }
	.bikefvg-route-grid { grid-template-columns: repeat(4, 1fr); }
	.bikefvg-inspire { grid-template-columns: 1.05fr 0.95fr; align-items: stretch; }
	.bikefvg-service-grid { grid-template-columns: repeat(4, 1fr); }
}

/* ---------- Preferenze utente ---------- */

@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
		scroll-behavior: auto !important;
	}
}

@media (forced-colors: active) {
	.bikefvg-finder__submit,
	.bikefvg-chip[aria-pressed="true"] { border: 2px solid ButtonText; }
	.bikefvg-map__zone.is-active { fill: Highlight; }
}


/* --------------------------------------------------------------------------
 * Servizi e luoghi — blurb testuali standard / partner
 * -------------------------------------------------------------------------- */
.bikefvg-services-list {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: var(--wp--preset--spacing--30);
	align-items: start;
}
/* WordPress aggiunge un block-gap verticale ai figli del Post Template in layout flow.
 * In una griglia quel margine sfasa tutte le card tranne la prima. */
.bikefvg-services-list > li {
	margin-block-start: 0 !important;
	margin-top: 0 !important;
}
@media (max-width: 1100px) {
	.bikefvg-services-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 640px) {
	.bikefvg-services-list { grid-template-columns: minmax(0, 1fr); }
}
.bikefvg-service-blurb {
	border: 1px solid color-mix(in srgb, currentColor 16%, transparent);
	border-radius: 14px;
	background: var(--wp--preset--color--base, #fff);
	overflow: hidden;
}
.bikefvg-service-blurb__body {
	padding: clamp(1rem, 2vw, 1.4rem);
}
.bikefvg-service-blurb__title {
	margin: 0;
	font-size: clamp(1.05rem, 1.6vw, 1.3rem);
}
.bikefvg-service-blurb__summary {
	max-width: 72ch;
	margin: .4rem 0 .65rem;
	color: var(--wp--preset--color--ink-secondary, currentColor);
	font-size: .94rem;
	line-height: 1.45;
}
.bikefvg-service-blurb__type {
	margin: .35rem 0 .8rem;
	font-size: .82rem;
	opacity: .72;
}
.bikefvg-service-blurb__essentials {
	list-style: none;
	padding: 0;
	margin: 0;
	display: grid;
	gap: .4rem;
}
.bikefvg-service-blurb__essentials li {
	display: flex;
	gap: .55rem;
	align-items: baseline;
}
.bikefvg-service-blurb__essentials a {
	color: inherit;
	text-underline-offset: .16em;
}
.bikefvg-service-blurb__details {
	margin-top: .9rem;
	padding-top: .75rem;
	border-top: 1px solid color-mix(in srgb, currentColor 12%, transparent);
}
.bikefvg-service-blurb__details summary {
	cursor: pointer;
	font-weight: 600;
}
.bikefvg-service-blurb--partner {
	border-width: 2px;
	box-shadow: 0 10px 28px rgba(0,0,0,.08);
}
.bikefvg-service-blurb__media img {
	display: block;
	width: 100%;
	aspect-ratio: 16 / 7;
	object-fit: cover;
}
.bikefvg-service-partner-badge {
	display: inline-block;
	margin-bottom: .6rem;
	padding: .28rem .55rem;
	border-radius: 999px;
	background: var(--wp--preset--color--accent, currentColor);
	color: var(--wp--preset--color--base, #fff);
	font-size: .72rem;
	font-weight: 700;
	letter-spacing: .04em;
	text-transform: uppercase;
}
.bikefvg-service-blurb__gallery {
	display: grid;
	grid-template-columns: repeat(5, minmax(0, 1fr));
	gap: .4rem;
	margin-top: 1rem;
}
.bikefvg-service-blurb__gallery img {
	width: 100%;
	aspect-ratio: 1;
	object-fit: cover;
	border-radius: 7px;
}
@media (max-width: 640px) {
	.bikefvg-service-blurb__gallery { grid-template-columns: repeat(3, minmax(0,1fr)); }
}

/* v0.6.11 — regole distinte per i valori lunghi nelle card Servizi.
 * - tipologie/descrizioni: clamp a 2 righe;
 * - indirizzi: sempre completi, con wrapping naturale;
 * - email: sempre completa e cliccabile, con wrapping naturale;
 * - contatto web: una riga con ellissi visiva. */
.bikefvg-service-blurb__clamp {
	min-width: 0;
	max-width: 100%;
	display: -webkit-box;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 3;
	line-clamp: 2;
	overflow: hidden;
	overflow-wrap: anywhere;
	word-break: break-word;
}
.bikefvg-service-blurb__address {
	min-width: 0;
	flex: 1 1 auto;
	white-space: normal;
	overflow: visible;
	overflow-wrap: break-word;
	word-break: normal;
}
.bikefvg-service-blurb__single-line {
	min-width: 0;
	max-width: 100%;
	display: block;
	overflow: hidden;
	white-space: nowrap;
	text-overflow: ellipsis;
}
.bikefvg-service-blurb__essentials li > .bikefvg-service-blurb__single-line {
	flex: 1 1 auto;
}
.bikefvg-service-blurb__details p {
	min-width: 0;
}
.bikefvg-service-blurb__email-row {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	gap: .35rem;
	align-items: baseline;
}

/* v0.6.11 — email completa e cliccabile nelle card Servizi. */
.bikefvg-service-blurb__email-values {
	min-width: 0;
	max-width: 100%;
	white-space: normal;
	overflow: visible;
	overflow-wrap: anywhere;
	word-break: break-word;
}
.bikefvg-service-blurb__email-values a {
	white-space: normal;
	overflow-wrap: anywhere;
	word-break: break-word;
}


/* BikeFVG 0.6.16 — logo SVG inline adattivo. */
.bikefvg-brand {
	display: inline-flex;
	align-items: center;
	justify-self: start;
	color: var(--bikefvg-brand-color, var(--wp--preset--color--paper));
	text-decoration: none;
	line-height: 0;
}

/* L'header corrente è scuro: il valore deriva comunque dal token globale. */
.bikefvg-header {
	--bikefvg-brand-color: var(--wp--preset--color--paper);
}

/* Varianti future/chiare possono cambiare solo il token contestuale. */
.bikefvg-header.header-light,
.bikefvg-header.bikefvg-header--light {
	--bikefvg-brand-color: var(--wp--preset--color--ink);
}

.bikefvg-footer {
	--bikefvg-brand-color: var(--wp--preset--color--ink);
}

.bikefvg-brand__svg {
	display: block;
	width: clamp(145px, 12vw, 194px);
	height: auto;
	max-height: 40px;
	overflow: visible;
	color: inherit;
}

.bikefvg-brand--footer .bikefvg-brand__svg {
	width: min(165px, 100%);
}

.bikefvg-brand:focus-visible {
	outline: 3px solid var(--wp--preset--color--focus);
	outline-offset: 4px;
}

@media (max-width: 63.999rem) {
	.bikefvg-brand__svg {
		width: min(140px, 38vw);
		max-height: 32px;
	}
}


/* v0.6.18 — fallback nativo per logo selezionato nel Site Editor. */
.bikefvg-brand--native img {
	display: block;
	width: clamp(145px, 12vw, 194px);
	height: auto;
	max-height: 40px;
	object-fit: contain;
}
@media (max-width: 63.999rem) {
	.bikefvg-brand--native img {
		width: min(140px, 38vw);
		max-height: 32px;
	}
}


/* v0.6.19 — logo inline dentro header FSE anche se il template part è salvato nel DB. */
.bikefvg-header .bikefvg-brand {
	grid-area: logo;
	justify-self: start;
	align-self: center;
	width: min(140px, 36vw);
	max-width: 140px;
	min-width: 0;
	height: 32px;
	display: inline-flex;
	align-items: center;
}

.bikefvg-header .bikefvg-brand__svg,
.bikefvg-header .bikefvg-brand--native img {
	width: 100%;
	max-width: 100%;
	height: auto;
	max-height: 32px;
	object-fit: contain;
	object-position: left center;
}

@media (min-width: 64rem) {
	.bikefvg-header .bikefvg-brand {
		width: 194px;
		max-width: 194px;
		height: 40px;
	}
	.bikefvg-header .bikefvg-brand__svg,
	.bikefvg-header .bikefvg-brand--native img {
		max-height: 40px;
	}
}


/* 0.6.20 — logo: regole finali, indipendenti dal tipo di header FSE. */
.bikefvg-header .bikefvg-brand,
header .bikefvg-brand {
	display: inline-flex !important;
	visibility: visible !important;
	opacity: 1 !important;
	align-items: center;
	justify-content: flex-start;
	flex: 0 0 auto;
	color: var(--bikefvg-brand-color, var(--wp--preset--color--paper));
	line-height: 0;
}
.bikefvg-header .bikefvg-brand__svg,
header .bikefvg-brand__svg {
	display: block !important;
	visibility: visible !important;
	opacity: 1 !important;
	width: min(194px, 38vw) !important;
	height: auto !important;
	max-width: 100%;
	max-height: 40px;
	overflow: visible;
	color: inherit;
}
.bikefvg-brand--text { min-width: max-content; }
@media (max-width:63.999rem){
	.bikefvg-header .bikefvg-brand__svg, header .bikefvg-brand__svg { width:min(140px,38vw)!important; max-height:32px; }
}


/* v0.6.22 — master SVG letterale nel markup FSE, senza shortcode. */
.bikefvg-header .bikefvg-brand--header {
	color: var(--wp--preset--color--paper) !important;
}
.bikefvg-footer .bikefvg-logo-chip .bikefvg-brand--footer {
	color: var(--wp--preset--color--paper) !important;
}

/*
 * L'SVG è già inline nel template. Le parti `currentColor` ereditano quindi
 * direttamente dal contesto senza dipendere da Media Library, site_logo,
 * custom_logo o dal rendering del blocco Shortcode.
 */
.bikefvg-header .bikefvg-brand--header svg,
.bikefvg-footer .bikefvg-brand--footer svg {
	fill: currentColor;
}


/* v0.6.23 — logo BikeFVG adattivo a due toni.
 *
 * Segno grafico + badge = accent della palette attiva.
 * "bike" = colore di contrasto del contesto.
 * "FVG" = paper sul badge accent, per contrasto stabile in A/B/C.
 */
.bikefvg-brand {
	--bikefvg-logo-primary: var(--wp--preset--color--accent);
	--bikefvg-logo-badge-text: var(--wp--preset--color--paper);
}

.bikefvg-header .bikefvg-brand--header {
	--bikefvg-logo-foreground: var(--wp--preset--color--paper);
	color: var(--wp--preset--color--paper) !important;
}

.bikefvg-header.header-light .bikefvg-brand--header,
.bikefvg-header.bikefvg-header--light .bikefvg-brand--header {
	--bikefvg-logo-foreground: var(--wp--preset--color--ink);
	color: var(--wp--preset--color--ink) !important;
}

.bikefvg-footer .bikefvg-logo-chip .bikefvg-brand--footer {
	--bikefvg-logo-foreground: var(--wp--preset--color--paper);
	--bikefvg-logo-badge-text: var(--wp--preset--color--paper);
}

/* Sovrascrive la vecchia eredità monocromatica senza toccare la geometria SVG. */
.bikefvg-brand .bikefvg-logo__mark {
	fill: none !important;
	stroke: var(--bikefvg-logo-primary) !important;
}
.bikefvg-brand .bikefvg-logo__word {
	fill: var(--bikefvg-logo-foreground) !important;
}
.bikefvg-brand .bikefvg-logo__badge {
	fill: var(--bikefvg-logo-primary) !important;
}
.bikefvg-brand .bikefvg-logo__badge-text {
	fill: var(--bikefvg-logo-badge-text) !important;
}

/*
 * Palette A: accent petrolio
 * Palette B: accent blu profondo
 * Palette C: accent verde salvia
 * Nessun valore cromatico locale deve essere aggiornato qui:
 * il logo segue automaticamente --wp--preset--color--accent.
 */


/* v0.6.24 — logo interamente allineato all'accento principale.
 *
 * Segno grafico + parola "bike" + badge FVG seguono il token globale accent.
 * Le lettere FVG restano paper per il contrasto nel badge.
 */
.bikefvg-brand {
	--bikefvg-logo-primary: var(--wp--preset--color--accent);
	--bikefvg-logo-foreground: var(--wp--preset--color--accent);
	--bikefvg-logo-badge-text: var(--wp--preset--color--paper);
	color: var(--wp--preset--color--accent) !important;
}

.bikefvg-header .bikefvg-brand--header,
.bikefvg-header.header-light .bikefvg-brand--header,
.bikefvg-header.bikefvg-header--light .bikefvg-brand--header,
.bikefvg-footer .bikefvg-logo-chip .bikefvg-brand--footer {
	--bikefvg-logo-foreground: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--accent) !important;
}

.bikefvg-brand .bikefvg-logo__mark {
	fill: none !important;
	stroke: var(--wp--preset--color--accent) !important;
}
.bikefvg-brand .bikefvg-logo__word {
	fill: var(--wp--preset--color--accent) !important;
}
.bikefvg-brand .bikefvg-logo__badge {
	fill: var(--wp--preset--color--accent) !important;
}
.bikefvg-brand .bikefvg-logo__badge-text {
	fill: var(--wp--preset--color--paper) !important;
}


/* v0.6.25 — logo coerente con la CTA primaria.
 *
 * Il colore caratterizzante del marchio non usa `accent`, ma `action`,
 * lo stesso token della CTA principale "Trova itinerari".
 *
 * - segno monti/mare: action
 * - rettangolo FVG: action
 * - parola "bike": paper su header/footer scuri
 * - lettere "FVG": paper nel badge
 */
.bikefvg-brand {
	--bikefvg-logo-primary: var(--wp--preset--color--action);
	--bikefvg-logo-badge-text: var(--wp--preset--color--paper);
}

.bikefvg-header .bikefvg-brand--header {
	--bikefvg-logo-foreground: var(--wp--preset--color--paper);
	color: var(--wp--preset--color--paper) !important;
}

.bikefvg-footer .bikefvg-logo-chip .bikefvg-brand--footer {
	--bikefvg-logo-foreground: var(--wp--preset--color--paper);
	color: var(--wp--preset--color--paper) !important;
}

/* Eventuale variante futura di header realmente chiaro. */
.bikefvg-header.header-light .bikefvg-brand--header,
.bikefvg-header.bikefvg-header--light .bikefvg-brand--header {
	--bikefvg-logo-foreground: var(--wp--preset--color--ink);
	color: var(--wp--preset--color--ink) !important;
}

.bikefvg-brand .bikefvg-logo__mark {
	fill: none !important;
	stroke: var(--wp--preset--color--action) !important;
}
.bikefvg-brand .bikefvg-logo__word {
	fill: var(--bikefvg-logo-foreground) !important;
}
.bikefvg-brand .bikefvg-logo__badge {
	fill: var(--wp--preset--color--action) !important;
}
.bikefvg-brand .bikefvg-logo__badge-text {
	fill: var(--wp--preset--color--paper) !important;
}

/* Icone macro-servizi: stessa libreria della mappa, resa più leggera nelle card. */
.bikefvg-service-card__icon svg,
.bikefvg-service-card__icon img,
.bikefvg-service-card__svg {
	display: block;
	width: 20px;
	height: 20px;
	object-fit: contain;
}
.bikefvg-service-card__icon svg,
.bikefvg-service-card__svg {
	stroke-width: 1.55;
}

/* ---------- Pagina Stili — demo dei componenti reali (v0.6.86) ----------
 *
 * Sostituisce il vecchio bikefvg-color-system.css (scoped, "test",
 * caricato solo su /stili/). Da qui in poi non esiste più una copia
 * locale dei token: ogni valore sotto è letto da var(--wp--preset--*)
 * o var(--bfvg-*), entrambi derivati da theme.json. La pagina Stili
 * mostra quindi le variabili realmente usate dal sito, non copie.
 */

.bikefvg-color-demo-v1 {
	background: var(--wp--preset--color--paper);
	padding: var(--wp--preset--spacing--20);
	border-radius: var(--wp--custom--radius--control);
	border: 1px solid var(--bfvg-divider);
}

.bikefvg-color-demo-v1__card {
	background: var(--wp--preset--color--surface-alt);
	border: 1px solid var(--bfvg-divider);
	border-radius: var(--wp--custom--radius--control);
	padding: var(--wp--preset--spacing--20);
	margin-block-end: var(--wp--preset--spacing--20);
	color: var(--wp--preset--color--ink);
}

.bikefvg-color-demo-v1__card p.bikefvg-color-demo-v1__ink-secondary {
	color: var(--wp--preset--color--ink-secondary);
	font-size: 0.875rem;
}

.bikefvg-color-demo-v1__buttons {
	display: flex;
	flex-wrap: wrap;
	gap: var(--wp--preset--spacing--10);
}

.bikefvg-btn-accent-v1,
.bikefvg-btn-action-v1 {
	display: inline-flex;
	align-items: center;
	min-height: var(--bfvg-touch);
	border: none;
	border-radius: var(--wp--custom--radius--pill);
	padding: 0.75rem 1.4rem;
	font-family: var(--wp--preset--font-family--body);
	font-weight: 600;
	font-size: 0.9375rem;
	color: var(--wp--preset--color--surface);
	cursor: pointer;
}

.bikefvg-btn-accent-v1 {
	background: var(--wp--preset--color--accent);
}
.bikefvg-btn-accent-v1:hover {
	background: var(--bfvg-accent-hover);
}
.bikefvg-btn-accent-v1:active {
	background: var(--bfvg-accent-pressed);
}

.bikefvg-btn-action-v1 {
	background: var(--wp--preset--color--action);
}
.bikefvg-btn-action-v1:hover {
	background: var(--bfvg-action-hover);
}
.bikefvg-btn-action-v1:active {
	background: var(--bfvg-action-pressed);
}

/* ---------- Griglia e contenitori: demo ---------- */

.bikefvg-token-table {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--10);
	margin-block: var(--wp--preset--spacing--10) var(--wp--preset--spacing--20);
}

.bikefvg-token-row {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem 1rem;
	align-items: baseline;
	padding-block: 0.35rem;
	border-bottom: 1px solid var(--bfvg-divider);
}

.bikefvg-token-row code {
	min-width: 9rem;
	font-weight: 700;
}

.bikefvg-token-row span {
	color: var(--wp--preset--color--ink-secondary);
	font-size: 0.9rem;
}

.bikefvg-grid-demo {
	display: flex;
	flex-direction: column;
	gap: 0.4rem;
	margin-block-end: var(--wp--preset--spacing--20);
}

.bikefvg-grid-demo__wide,
.bikefvg-grid-demo__content,
.bikefvg-grid-demo__narrow {
	margin-inline: auto;
	padding-block: 0.5rem;
	text-align: center;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.78rem;
	color: var(--wp--preset--color--ink-secondary);
	background: var(--wp--preset--color--surface-alt);
	border-radius: var(--wp--custom--radius--control);
}

.bikefvg-grid-demo__wide { width: min(var(--bfvg-wide), 100%); }
.bikefvg-grid-demo__content { width: min(var(--bfvg-content), 100%); }
.bikefvg-grid-demo__narrow { width: min(var(--bfvg-narrow), 100%); }

/* ---------- Spaziature: demo ---------- */

.bikefvg-spacing-demo {
	display: flex;
	flex-direction: column;
	gap: 0.5rem;
	margin-block-end: var(--wp--preset--spacing--20);
}

.bikefvg-spacing-demo__row {
	display: grid;
	grid-template-columns: 6rem 1fr;
	align-items: center;
	gap: 0.75rem;
}

.bikefvg-spacing-demo__bar {
	display: block;
	block-size: 0.85rem;
	background: var(--wp--preset--color--accent);
	border-radius: var(--wp--custom--radius--pill);
}

/* ---------- Radius: demo ---------- */

.bikefvg-radius-demo {
	display: flex;
	flex-wrap: wrap;
	gap: var(--wp--preset--spacing--10);
	margin-block-end: var(--wp--preset--spacing--20);
}

.bikefvg-radius-demo__sample {
	display: flex;
	align-items: center;
	justify-content: center;
	inline-size: 9rem;
	block-size: 5rem;
	background: var(--wp--preset--color--surface-alt);
	border: 1px solid var(--bfvg-divider);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.78rem;
	color: var(--wp--preset--color--ink-secondary);
}

/* ---------- Pagina Stili — griglia demo Card (v0.6.88) ---------- */

.bikefvg-card-demo-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
	gap: var(--wp--preset--spacing--20);
	max-width: 480px;
	margin-block: var(--wp--preset--spacing--10) var(--wp--preset--spacing--20);
}

/* ---------- Filtri — layer comune (v0.6.90) ----------
 *
 * filter-panel → filter-group → filter-control → filter-options → filter-actions
 *
 * Geometria condivisa da Itinerari e Servizi: padding del pannello,
 * gap tra i gruppi, altezza/radius/padding dei controlli, ritmo
 * label→controllo, blocco azioni Applica/Reimposta, breakpoint.
 * Colore del submit ESCLUSO di proposito: action su Itinerari,
 * accent su Servizi — è una regola già congelata del sistema colori
 * ("action: solo Trova itinerari / Scarica GPX"), non un'incoerenza.
 * Le classi bikefvg-route-archive__* e bikefvg-service-archive__*
 * restano nel markup accanto a queste: gestiscono solo le differenze
 * reali (colori, copy, campi propri di ciascuna pagina).
 */

.bikefvg-filter-panel {
	padding: var(--bfvg-filter-panel-padding);
	border: 1px solid var(--bfvg-line);
	border-radius: var(--bfvg-radius-filter);
	background: var(--wp--preset--color--panel);
}

/* ---------- Index Page System (v0.6.92) ----------
 * Cornice comune agli indici Itinerari, Discipline, Territori e Servizi.
 * Le griglie, i filtri e le card restano specifici del contenuto.
 */

/* I quattro template devono essere full-bleed allo stesso modo. Il gutter
 * appartiene ai loro .bikefvg-wrap interni, non al main WordPress esterno. */
:is(
	.bikefvg-route-archive-main,
	.bikefvg-service-archive-main,
	.bikefvg-disciplines-index-main,
	.bikefvg-territories-index-main,
	.bikefvg-diary-index-main
) {
	box-sizing: border-box;
	width: 100%;
	max-width: none;
	padding: 0 !important;
	margin: 0;
}

/* wpautop avvolge in un <p> qualsiasi testo/commento isolato prima del div
 * indice (succede solo quando lo shortcode passa da un blocco wp:shortcode,
 * cioè su Itinerari/Servizi). Quel paragrafo non deve mai esistere qui: se
 * ricompare, va azzerato subito invece di spingere giù la hero in silenzio. */
:is(
	.bikefvg-route-archive-main,
	.bikefvg-service-archive-main,
	.bikefvg-disciplines-index-main,
	.bikefvg-territories-index-main
) > p {
	display: none;
}

:is(
	.bikefvg-route-archive-main,
	.bikefvg-service-archive-main,
	.bikefvg-disciplines-index-main,
	.bikefvg-territories-index-main
) > .wp-block-shortcode {
	display: block;
	width: 100%;
	max-width: none;
	padding: 0 !important;
	margin: 0 !important;
}

/* WordPress applica il block-gap anche all'HTML prodotto dagli shortcode.
 * Il componente indice deve invece essere il primo box reale del main. */
:is(
	.bikefvg-route-archive-main,
	.bikefvg-service-archive-main,
	.bikefvg-disciplines-index-main,
	.bikefvg-territories-index-main,
	.bikefvg-diary-index-main
) > .wp-block-shortcode > .bikefvg-index-page {
	width: 100%;
	margin-block: 0 !important;
	margin-inline: 0 !important;
}

.bikefvg-index-page {
	background: var(--wp--preset--color--paper);
	color: var(--wp--preset--color--ink);
}

.bikefvg-index-page .bikefvg-index-hero {
	/* Quota superiore e ritmo interno condivisi dai quattro indici. */
	box-sizing: border-box;
	padding-block: var(--bfvg-hero-index-padding);
	border-bottom: 1px solid var(--bfvg-line);
	background: var(--wp--preset--color--paper);
}

.bikefvg-index-page .bikefvg-index-hero h1 {
	max-width: 14ch;
	margin: .18em 0 .25em;
	font-size: clamp(2.9rem, 2.2rem + 3.5vw, 5.4rem);
	line-height: .98;
	letter-spacing: -.045em;
}


/* Hero fotografiche delle cinque pagine principali.
 * L'immagine cambia soltanto lo sfondo: geometria, posizione e ritmo del testo
 * restano quelli condivisi dal sistema degli indici. */
.bikefvg-index-page .bikefvg-index-hero--media {
	position: relative;
	isolation: isolate;
	overflow: hidden;
	background-color: var(--wp--preset--color--ink);
	color: #fff;
}
.bikefvg-index-page .bikefvg-index-hero--media::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -2;
	background-image: var(--bfvg-index-hero-bg);
	background-repeat: no-repeat;
	background-size: cover;
	background-position: var(--bfvg-index-hero-x, 50%) var(--bfvg-index-hero-y, 50%);
	transform: scale(var(--bfvg-index-hero-zoom, 1));
	transform-origin: var(--bfvg-index-hero-x, 50%) var(--bfvg-index-hero-y, 50%);
	will-change: transform;
}
.bikefvg-index-page .bikefvg-index-hero--media::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background: linear-gradient(90deg, rgba(17,25,22,.82) 0%, rgba(17,25,22,.69) 36%, rgba(17,25,22,.28) 68%, rgba(17,25,22,.12) 100%);
}
.bikefvg-index-page .bikefvg-index-hero--media > .bikefvg-wrap { position: relative; z-index: 1; }
.bikefvg-index-page .bikefvg-index-hero--media h1 { color: #fff; }
.bikefvg-index-page .bikefvg-index-hero--media .bikefvg-eyebrow { color: rgba(255,255,255,.86); }
.bikefvg-index-page .bikefvg-index-hero--media .bikefvg-index-lead { color: rgba(255,255,255,.92); }
@media (max-width: 48rem) {
	.bikefvg-index-page .bikefvg-index-hero--media::after {
		background-image: var(--bfvg-index-hero-bg-mobile, var(--bfvg-index-hero-bg));
		background-position: var(--bfvg-index-hero-mobile-x, var(--bfvg-index-hero-x,50%)) var(--bfvg-index-hero-mobile-y, var(--bfvg-index-hero-y,50%));
		transform: scale(var(--bfvg-index-hero-mobile-zoom, var(--bfvg-index-hero-zoom,1)));
		transform-origin: var(--bfvg-index-hero-mobile-x, var(--bfvg-index-hero-x,50%)) var(--bfvg-index-hero-mobile-y, var(--bfvg-index-hero-y,50%));
	}
	.bikefvg-index-page .bikefvg-index-hero--media::before {
		background: linear-gradient(90deg, rgba(17,25,22,.83) 0%, rgba(17,25,22,.68) 62%, rgba(17,25,22,.32) 100%);
	}
}
.bikefvg-index-page .bikefvg-index-lead {
	/* Servizi e' il riferimento del sistema indice: stessa misura tipografica
	   del lead su Itinerari, Territori, Servizi e Discipline. */
	max-width: 58rem;
	margin: 0;
	color: var(--wp--preset--color--ink-secondary);
	font-size: clamp(1rem, .96rem + .25vw, 1.18rem);
	line-height: 1.5;
}

.bikefvg-index-page .bikefvg-index-section {
	padding-block: clamp(2.8rem, 2rem + 2.8vw, 5.2rem);
	border-bottom: 1px solid var(--bfvg-line);
}

.bikefvg-index-page .bikefvg-index-section--alt {
	background: color-mix(in srgb, var(--wp--preset--color--panel) 42%, var(--wp--preset--color--paper));
}

.bikefvg-index-page .bikefvg-index-section:not(.bikefvg-index-section--alt) {
	background: var(--wp--preset--color--paper);
}

.bikefvg-index-page .bikefvg-index-section-head {
	display: grid;
	align-items: end;
	gap: .75rem 1.5rem;
	margin-bottom: clamp(1.4rem, 1rem + 1.2vw, 2.2rem);
}

.bikefvg-index-page .bikefvg-index-section-head h2 {
	margin: .15em 0 0;
	font-size: clamp(1.8rem, 1.45rem + 1.3vw, 2.8rem);
	line-height: 1.05;
	letter-spacing: -.035em;
}

.bikefvg-index-page .bikefvg-index-section-head > p {
	max-width: 42rem;
	margin: 0;
	color: var(--wp--preset--color--ink-secondary);
	font-size: .96rem;
	line-height: 1.55;
}

@media (min-width: 48rem) {
	.bikefvg-index-page .bikefvg-index-section-head {
		grid-template-columns: minmax(0, 1fr) minmax(18rem, .7fr);
	}
}

/* ---------- Breadcrumb + Anchor/Sticky system (v0.6.91) ---------- */

.bikefvg-breadcrumb-bar {
	padding-block: clamp(.65rem, .5rem + .45vw, .95rem);
	border-bottom: 1px solid var(--bfvg-line);
	background: var(--wp--preset--color--paper);
}

.bikefvg-breadcrumb {
	display: flex;
	align-items: center;
	min-width: 0;
	gap: .42rem;
	margin: 0;
	color: var(--wp--preset--color--ink-muted);
	font-size: var(--wp--preset--font-size--small);
	line-height: 1.35;
	white-space: nowrap;
	overflow: hidden;
}

.bikefvg-breadcrumb a {
	flex: 0 0 auto;
	color: inherit;
	text-decoration: none;
}

.bikefvg-breadcrumb a:hover { color: var(--wp--preset--color--ink); }

.bikefvg-breadcrumb [aria-current="page"] {
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
}

.bikefvg-breadcrumb a:focus-visible,
.bikefvg-anchor-nav a:focus-visible {
	outline: 3px solid var(--wp--preset--color--focus);
	outline-offset: -3px;
}

.bikefvg-anchor-nav {
	position: sticky;
	top: calc(var(--bfvg-header-height, 0px) + var(--bfvg-admin-offset, var(--wp-admin--admin-bar--height, 0px)));
	z-index: 45;
	margin: 0;
	overflow: hidden;
	border-block: 1px solid var(--bfvg-line);
	background: color-mix(in srgb, var(--wp--preset--color--panel) 88%, var(--wp--preset--color--paper));
	box-shadow: 0 7px 18px color-mix(in srgb, var(--wp--preset--color--ink) 8%, transparent);
	backdrop-filter: blur(12px);
	scrollbar-width: none;
	scroll-snap-type: x proximity;
}

.bikefvg-anchor-nav__track {
	display: flex;
	overflow-x: auto;
	overscroll-behavior-x: contain;
	-webkit-overflow-scrolling: touch;
	scrollbar-width: none;
	width: auto;
	margin-inline: 0;
	gap: .35rem;
	padding-inline: clamp(1rem, 2.5vw, 2rem);
	white-space: nowrap;
	scroll-padding-inline: clamp(1rem, 2.5vw, 2rem);
}

.bikefvg-anchor-nav__track::-webkit-scrollbar { display: none; }

/* Su mobile le tab eccedenti non devono sembrare contenuto mancante: una
 * sfumatura con freccia compare solo quando esiste davvero altro contenuto
 * nella direzione indicata. Il controllo è puramente visivo e non intercetta touch. */
.bikefvg-anchor-nav::before,
.bikefvg-anchor-nav::after {
	position: absolute;
	top: 1px;
	bottom: 1px;
	z-index: 3;
	display: none;
	align-items: center;
	width: 2.75rem;
	pointer-events: none;
	color: var(--wp--preset--color--ink);
	font: 800 1rem/1 var(--wp--preset--font-family--body);
}
.bikefvg-anchor-nav::before {
	content: "←";
	left: 0;
	justify-content: flex-start;
	padding-left: .55rem;
	background: linear-gradient(90deg, color-mix(in srgb, var(--wp--preset--color--panel) 96%, transparent) 42%, transparent);
}
.bikefvg-anchor-nav::after {
	content: "→";
	right: 0;
	justify-content: flex-end;
	padding-right: .55rem;
	background: linear-gradient(270deg, color-mix(in srgb, var(--wp--preset--color--panel) 96%, transparent) 42%, transparent);
}
@media (max-width: 49.99rem) {
	.bikefvg-anchor-nav.has-more-left::before,
	.bikefvg-anchor-nav.has-more-right::after { display: flex; }
}

.bikefvg-anchor-nav a {
	position: relative;
	display: inline-flex;
	align-items: center;
	flex: 0 0 auto;
	min-height: 3.35rem;
	padding-inline: .75rem;
	color: var(--wp--preset--color--ink-secondary);
	font-size: var(--wp--preset--font-size--small);
	font-weight: 760;
	text-decoration: none;
	scroll-snap-align: start;
	transition: color .16s ease, background-color .16s ease;
}

.bikefvg-anchor-nav a::after {
	content: "";
	position: absolute;
	right: .75rem;
	bottom: 0;
	left: .75rem;
	height: 3px;
	border-radius: 999px 999px 0 0;
	background: transparent;
}

.bikefvg-anchor-nav a:hover,
.bikefvg-anchor-nav a.is-active {
	color: var(--wp--preset--color--ink);
	background: color-mix(in srgb, var(--wp--preset--color--paper) 54%, transparent);
}

.bikefvg-anchor-nav a.is-active::after { background: var(--wp--preset--color--accent); }

.bikefvg-anchor-nav-target { scroll-margin-top: 4.4rem; }

@media (min-width: 50rem) {
	.bikefvg-anchor-nav__track {
		width: min(var(--bfvg-content), calc(100% - 2 * var(--bfvg-gutter)));
		margin-inline: auto;
		padding-inline: 0;
		scroll-padding-inline: 0;
	}
}

@media (max-width: 49.99rem) {
	.bikefvg-anchor-nav { top: 0; }
}

@media (prefers-reduced-motion: reduce) {
	.bikefvg-anchor-nav,
	.bikefvg-anchor-nav a { scroll-behavior: auto; transition: none; }
}

@media (forced-colors: active) {
	.bikefvg-anchor-nav a.is-active { border-bottom: 3px solid LinkText; }
}

.bikefvg-filter-group {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: var(--bfvg-filter-group-gap);
	align-items: end;
}

/* Geometria condivisa di select/input: scoped al pannello intero, non
   solo al filter-group, così anche un campo di ricerca fuori dalla
   griglia (es. Servizi) riceve la stessa altezza/bordo/radius. */
.bikefvg-filter-control > select,
.bikefvg-filter-control > input:is([type="search"], [type="text"], [type="number"], [type="email"], [type="url"]) {
	box-sizing: border-box;
	width: 100%;
	min-width: 0;
	min-height: 50px;
	border: 1px solid var(--bfvg-line);
	border-radius: var(--wp--custom--radius--control, 12px);
	background-color: var(--wp--preset--color--paper);
	color: var(--wp--preset--color--ink);
	font: inherit;
}

.bikefvg-filter-control > select {
	/* Stessa freccia e stesso inset del finder in homepage: la freccia nativa
	   dei browser resta troppo vicina al bordo destro e varia tra piattaforme. */
	padding: .7rem 2.45rem .7rem .8rem;
	appearance: none;
	-webkit-appearance: none;
	-moz-appearance: none;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8' fill='none'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5' stroke='%231E2420' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right .8rem center;
	background-size: 11px 7px;
}

.bikefvg-filter-control > input[type="search"],
.bikefvg-filter-control > input[type="text"] {
	padding: .7rem .85rem;
}

.bikefvg-filter-control > select:focus-visible,
.bikefvg-filter-control > input:focus-visible {
	outline: 3px solid var(--wp--preset--color--focus);
	outline-offset: 2px;
}

.bikefvg-filter-control {
	display: grid;
	gap: .4rem;
	min-width: 0;
}

.bikefvg-filter-control > label,
.bikefvg-filter-actions__title {
	display: block;
	width: auto;
	height: auto;
	min-height: 0;
	padding: 0;
	margin: 0;
	color: var(--wp--preset--color--ink-secondary);
	font-size: .75rem;
	font-weight: 700;
	letter-spacing: .03em;
}

.bikefvg-filter-actions__title {
	margin-bottom: .45rem;
}

.bikefvg-filter-fieldset {
	min-width: 0;
	margin: 0;
	padding: 0;
	border: 0;
}

.bikefvg-filter-fieldset > legend {
	float: none;
}

.bikefvg-filter-options {
	display: flex;
	align-items: stretch;
	flex-wrap: wrap;
	gap: var(--bfvg-filter-options-gap);
}

.bikefvg-filter-chip {
	position: relative;
	display: block;
	width: auto;
	height: auto;
	min-height: 0;
	padding: 0;
	margin: 0;
}

.bikefvg-filter-chip input {
	position: absolute;
	opacity: 0;
	pointer-events: none;
}

.bikefvg-filter-chip span {
	box-sizing: border-box;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 40px;
	padding: .48rem .8rem;
	border: 1px solid var(--bfvg-line);
	border-radius: var(--wp--custom--radius--control, 12px);
	background: var(--wp--preset--color--paper);
	color: var(--wp--preset--color--ink);
	font-size: .78rem;
	font-weight: 700;
	line-height: 1.15;
	text-align: center;
	white-space: nowrap;
	cursor: pointer;
	transition: border-color .15s ease, background-color .15s ease, color .15s ease;
}

.bikefvg-filter-chip span:hover {
	border-color: var(--bfvg-accent-border);
}

.bikefvg-filter-chip input:checked + span {
	border-color: var(--wp--preset--color--accent);
	background: color-mix(in srgb, var(--wp--preset--color--accent) 10%, var(--wp--preset--color--paper));
	color: var(--wp--preset--color--accent);
	box-shadow: inset 0 0 0 1px var(--wp--preset--color--accent);
}

.bikefvg-filter-chip input:focus-visible + span {
	outline: 3px solid var(--wp--preset--color--focus);
	outline-offset: 2px;
}

.bikefvg-filter-actions {
	display: flex;
	align-items: end;
	justify-content: space-between;
	gap: 1rem;
	margin-top: 1rem;
	padding-top: 1rem;
	border-top: 1px solid var(--bfvg-line);
}

.bikefvg-filter-submit {
	box-sizing: border-box;
	min-width: 11rem;
	min-height: 50px;
	padding: var(--bfvg-filter-submit-padding);
	border-radius: var(--wp--custom--radius--control, 12px);
	font: 800 1rem/1 Inter, sans-serif;
	white-space: nowrap;
	cursor: pointer;
}

.bikefvg-filter-submit:focus-visible {
	outline: 3px solid var(--wp--preset--color--focus);
	outline-offset: 2px;
}

@media (max-width: 64rem) {
	.bikefvg-filter-group {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.bikefvg-filter-actions {
		align-items: stretch;
		flex-direction: column;
	}

	.bikefvg-filter-submit {
		align-self: flex-end;
	}
}

/*
 * Reset difensivo mobile: tutti i campi devono condividere esattamente
 * la stessa colonna. Impedisce margini/max-width ereditati da stili
 * globali o dal browser che possono produrre rientri diversi tra i
 * select — bug reale già osservato e corretto empiricamente (v0.6.71),
 * finora presente solo sul pannello Servizi. Portato qui perché protegge
 * allo stesso modo entrambe le pagine.
 */
@media (max-width: 44rem) {
	.bikefvg-filter-panel {
		display: block !important;
		box-sizing: border-box !important;
		width: 100% !important;
		max-width: none !important;
		height: auto !important;
		min-height: 0 !important;
		padding: .72rem !important;
		margin: 0 !important;
	}

	.bikefvg-filter-control {
		display: flex !important;
		flex-direction: column !important;
		align-items: stretch !important;
		gap: .28rem !important;
		box-sizing: border-box !important;
		width: 100% !important;
		max-width: none !important;
		height: auto !important;
		min-height: 0 !important;
		padding: 0 !important;
		margin: 0 !important;
		transform: none !important;
	}

	.bikefvg-filter-control > label,
	.bikefvg-filter-actions__title {
		display: block !important;
		position: static !important;
		box-sizing: border-box !important;
		width: 100% !important;
		max-width: none !important;
		height: auto !important;
		min-height: 0 !important;
		padding: 0 !important;
		margin: 0 !important;
		transform: none !important;
		font-size: .72rem;
		line-height: 1.2;
	}

	.bikefvg-filter-group {
		display: flex !important;
		flex-direction: column !important;
		align-items: stretch !important;
		gap: .58rem !important;
		box-sizing: border-box !important;
		width: 100% !important;
		max-width: none !important;
		height: auto !important;
		min-height: 0 !important;
		padding: 0 !important;
		margin: 0 !important;
	}

	.bikefvg-filter-control > select,
	.bikefvg-filter-control > input:is([type="search"], [type="text"], [type="number"], [type="email"], [type="url"]) {
		display: block !important;
		box-sizing: border-box !important;
		width: 100% !important;
		max-width: none !important;
		min-width: 0 !important;
		min-height: 44px;
		height: auto;
		margin: 0 !important;
		padding: .64rem 2.2rem .64rem .72rem;
		font-size: 1rem;
		line-height: 1.2;
	}

	.bikefvg-filter-actions {
		display: flex !important;
		flex-direction: column !important;
		align-items: stretch !important;
		box-sizing: border-box !important;
		width: 100% !important;
		max-width: none !important;
		height: auto !important;
		min-height: 0 !important;
		gap: .65rem;
		margin: .72rem 0 0 !important;
		padding: .72rem 0 0 !important;
	}

	/* Il layout mobile di option-list/chip NON è nel layer comune: il
	   numero di campi è diverso (2 su Itinerari, 5 su Servizi) e le due
	   pagine risolvono la densità in modo legittimamente diverso —
	   resta specifico di ciascun file, vedi bikefvg-route-archive.css
	   e bikefvg-service-archive.css. */

	.bikefvg-filter-submit {
		width: 100% !important;
		min-width: 0 !important;
	}
}

/* Variante condivisa opt-in: non modifica i pulsanti esistenti senza questa classe. */
.bikefvg-control--compact {
 box-sizing: border-box;
 min-height: var(--bfvg-control-height-compact);
 padding: var(--bfvg-control-padding-block-compact) 16px;
 font-size: var(--bfvg-control-font-compact);
 line-height: var(--bfvg-control-line-compact);
}
.bikefvg-control--compact:focus-visible { outline: 3px solid var(--wp--preset--color--ink); outline-offset: 2px; }

/* Homepage test.79: varianti locali, senza modificare i preset globali. */
.home .bikefvg-finder__shortcuts .bikefvg-chip {
 border-radius: var(--wp--custom--radius--control, 12px);
}
.home .bikefvg-trust__item strong,
.home .bikefvg-trust__item span,
.home .bikefvg-home-territory-card__body small,
.home .bikefvg-service-card small {
 font-size: .9375rem;
 line-height: 1.5;
}
.bikefvg-home-section-head {
 margin-bottom: var(--wp--preset--spacing--30);
}
.bikefvg-home-section-head__top {
 display: flex;
 flex-wrap: wrap;
 align-items: center;
 justify-content: space-between;
 gap: .75rem 1.5rem;
}
.bikefvg-home-section-head__top .bikefvg-eyebrow {
 margin: 0;
}
.bikefvg-home-section-head__top .bikefvg-text-link {
 margin-left: auto;
}

/* Homepage test.81: stesso padding ordinario delle schede archivio Servizi.
   Bordi e raggi usano gia gli stessi token; la griglia desktop resta a quattro. */
.home .bikefvg-service-card {
 padding: clamp(.9rem, .82rem + .35vw, 1.15rem);
}

/* Diario test.90: i pannelli non selezionati non devono creare griglie. */
[data-bikefvg-diary-tabs] [data-format-panel][hidden] {
 display: none !important;
}
@media (min-width: 48rem) {
 [data-bikefvg-diary-tabs] .bikefvg-route-grid[data-format-panel] {
  grid-template-columns: repeat(3, minmax(0, 1fr));
 }
}

/* Diario test.91: evento compatto, etichetta e data sulla fotografia. */
.bikefvg-diary-event { display: flex; flex-direction: column; }
.bikefvg-diary-event__media { position: relative; height: 12rem; flex: 0 0 auto; background: var(--bfvg-soft); }
.bikefvg-diary-event__media > img { display: block; width: 100%; height: 100%; object-fit: cover; }
.bikefvg-diary-event__media .bikefvg-diary-event__head { position: absolute; inset: .75rem .75rem auto; margin: 0; gap: .5rem; }
.bikefvg-diary-event__chip { display: inline-flex; padding: .4rem .65rem; border-radius: 999px; background: var(--wp--preset--color--panel); color: var(--wp--preset--color--ink); font-size: .8125rem; font-weight: 700; line-height: 1.25; }
.bikefvg-diary-event__body { padding: 1rem; }
.bikefvg-diary-event__body > p { margin: .4rem 0 .65rem; font-size: .9375rem; line-height: 1.4; }
.bikefvg-diary-event__more { margin-top: .65rem; padding-top: .45rem; }
.bikefvg-diary-event__more-item { padding-block: .3rem; font-size: .875rem; line-height: 1.35; }
@media (min-width: 64rem) {
 .bikefvg-diary-grid { align-items: stretch; }
 .bikefvg-diary-grid > .bikefvg-diary-col { min-height: 24rem; contain: size; }
 .bikefvg-diary-col > .bikefvg-diary-event { height: 100%; box-sizing: border-box; }
 .bikefvg-diary-event__media { flex: 1 1 0; min-height: 4.75rem; height: auto; overflow: hidden; }
 .bikefvg-diary-event__body { flex: 0 0 auto; }
}

/* Diario test.92: colonne indipendenti dal rapporto intrinseco della foto. */
@media (min-width: 48rem) {
 .bikefvg-diary-grid > .bikefvg-route-card--feature {
  display: grid;
  grid-template-columns: minmax(0, 3fr) minmax(0, 2fr);
  min-width: 0;
 }
 .bikefvg-diary-grid > .bikefvg-route-card--feature > .bikefvg-route-card__body {
  grid-column: 1;
  grid-row: 1;
  min-width: 0;
  overflow-wrap: anywhere;
 }
 .bikefvg-diary-grid > .bikefvg-route-card--feature > .bikefvg-route-card__media {
  grid-column: 2;
  grid-row: 1;
  aspect-ratio: auto;
  min-width: 0;
  min-height: 0;
  width: auto;
  align-self: stretch;
 }
}

/* Diario test.93: filtri raggruppati con i risultati che controllano. */
#diario .bikefvg-diary-grid {
 margin-bottom: 0;
}
#diario [data-bikefvg-diary-tabs] {
 padding-top: clamp(2rem, 3vw, 3rem);
}
#diario .bikefvg-diary-tabs__nav {
 margin-bottom: .75rem;
}

/* .251 — ITRS markers; meaning is always repeated in adjacent text. */
.bikefvg-itrs-marker { display:inline-block; flex:0 0 auto; width:1rem; height:1rem; margin-inline-end:.45rem; border-radius:50%; background:#707070; vertical-align:-.1em; }
/* 0.8.122 — official ITRS 26.1 colours (graphic resources pack). */
.bikefvg-itrs-marker.is-level-0 { background:#803480; }
.bikefvg-itrs-marker.is-level-1 { background:#72bf44; }
.bikefvg-itrs-marker.is-level-2 { background:#0080c6; }
.bikefvg-itrs-marker.is-level-3 { background:#ee3124; }
.bikefvg-itrs-marker.is-level-4 { background:#000000; }
.bikefvg-itrs-marker.is-level-5 { background:#f68b1f; }
.bikefvg-itrs-marker.is-technical:not(.is-level-1) { border-radius:0; }
/* ITRS level 0 — surfaced/gravel road: downward triangle. */
.bikefvg-itrs-marker.is-technical.is-level-0 { clip-path:polygon(0 0,100% 0,50% 100%); }
.bikefvg-itrs-marker.is-technical.is-level-3 { clip-path:polygon(50% 0,100% 100%,0 100%); }
.bikefvg-itrs-marker.is-technical.is-level-4 { clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%); }
.bikefvg-itrs-marker.is-technical.is-level-5 { width:1.5rem; clip-path:polygon(0 50%,25% 0,50% 50%,75% 0,100% 50%,75% 100%,50% 50%,25% 100%); }

/* 0.8.129 — Card: Allenamento ITRS con simbolo colorato; testo sempre a peso normale. */
.bikefvg-route-rating--itrs { display:inline-flex; align-items:flex-start; font-weight:400; }
.bikefvg-route-rating--itrs .bikefvg-route-rating__markers { display:inline-flex; flex:0 0 auto; margin-top:.15em; }
.bikefvg-route-rating--itrs .bikefvg-itrs-marker { width:.8rem; height:.8rem; margin-inline-end:.4rem; }

/* .258 — orientamento condiviso desktop/mobile, distinguibile anche senza colore. */
.bikefvg-nav__list a[aria-current],
.bikefvg-mobile-nav__list a[aria-current] {
	text-decoration-line: underline;
	text-decoration-thickness: 3px;
	text-underline-offset: .4em;
}
.bikefvg-mobile-nav__list a[aria-current] {
	color: var(--wp--preset--color--accent);
}
.bikefvg-chip:is(a, button) {
	text-decoration: none;
	border-radius: var(--wp--custom--radius--control, 12px);
}
.bikefvg-chip:is(a, button):hover:not(:disabled) {
	border-color: var(--wp--preset--color--accent);
}
.bikefvg-chip:is(a, button):focus-visible {
	outline: 2px solid currentColor;
	outline-offset: 3px;
}
/* Ricerca: ritmo più compatto, condiviso dai due archivi operativi. */
.bikefvg-index-page:is(.bikefvg-route-archive, .bikefvg-service-archive) {
	--bfvg-hero-index-padding: clamp(2rem, 1.5rem + 2vw, 3.5rem);
}
.bikefvg-index-page :is(.bikefvg-route-archive__filters, .bikefvg-service-archive__filters):not(.is-collapsed) {
	padding-block: clamp(1.1rem, .9rem + 1vw, 1.75rem);
}
.bikefvg-index-page :is(.bikefvg-route-archive__results, .bikefvg-service-archive__results) {
	padding-block: clamp(1.5rem, 1.1rem + 1.5vw, 2.5rem);
}
:is(#bikefvg-route-results-title, #bikefvg-service-results-title) {
	scroll-margin-top: calc(var(--wp-admin--admin-bar--height, 0px) + 6rem);
}
:is(#bikefvg-route-results-title, #bikefvg-service-results-title):focus-visible {
	outline: 2px solid var(--wp--preset--color--accent);
	outline-offset: 5px;
}

/* 0.7.0-test.327 — avviso temporaneo sotto il menu principale. */
.bikefvg-construction-notice {
	box-sizing: border-box;
	margin: 0;
	border: 0;
	border-bottom: 1px solid color-mix(in srgb, var(--wp--preset--color--ink) 14%, transparent);
	background: var(--wp--preset--color--review);
	color: var(--wp--preset--color--ink);
}
.bikefvg-construction-notice__inner {
	box-sizing: border-box;
	width: min(100% - 2rem, 1240px);
	margin-inline: auto;
	padding-block: .55rem;
	font-size: clamp(.78rem, .75rem + .12vw, .86rem);
	font-weight: 650;
	line-height: 1.4;
	text-align: center;
}
@media (max-width: 480px) {
	.bikefvg-construction-notice__inner {
		width: min(100% - 1.25rem, 1240px);
		padding-block: .48rem;
	}
}

/* test.367 — Menu interno sotto il menu principale. Lo scroll-padding
   globale copre già header e admin bar; il margine aggiunge il menu interno. */
.bikefvg-anchor-nav-target { scroll-margin-top: calc(var(--bfvg-anchor-nav-height, 56px) + 8px); }
@media(max-width:959px) {
 body:has(.bfvg-sticky-header.bfvg-header-hidden:not(:focus-within)) .bikefvg-anchor-nav { top:var(--bfvg-admin-offset,0px); }
}
@media(max-width:959px) and (prefers-reduced-motion:no-preference) {
 .bikefvg-anchor-nav { transition:top .2s ease; }
}

/* test.369 — Bianco pieno: contrasto 5.02:1 sul fondo action standard. */
.bikefvg-home-partner-cta h2, .bikefvg-home-partner-cta p { color: #fff; }

/* test.370 — Coppia cromatica locale ad alto contrasto per la CTA partner. */
section.bikefvg-home-partner-cta { background: #A43311; color: #FFFFFF; }
section.bikefvg-home-partner-cta h2,
section.bikefvg-home-partner-cta p { color: #FFFFFF; opacity: 1; }
section.bikefvg-home-partner-cta a,
section.bikefvg-home-partner-cta a:visited,
section.bikefvg-home-partner-cta a:hover,
section.bikefvg-home-partner-cta a:focus { background: #FFFFFF; color: #A43311; border-color: #FFFFFF; opacity: 1; }
section.bikefvg-home-partner-cta a:focus-visible { outline: 3px solid #FFFFFF; outline-offset: 4px; }

/* Partner: disclosure inline, closed until requested. */
.bfvg-partner-contact { width:100%; text-align:left; scroll-margin-top:calc(var(--bikefvg-header-height, 80px) + 24px); }
.bfvg-partner-contact summary { display:table; margin-inline:auto; padding:14px 24px; border-radius:10px; background:#fff; color:#A43311; font-weight:700; cursor:pointer; list-style:none; }
.bfvg-partner-contact summary::-webkit-details-marker { display:none; }
.bfvg-partner-contact summary::after { content:' +'; }
.bfvg-partner-contact[open] summary::after { content:' −'; }
.bfvg-partner-contact summary:focus-visible { outline:3px solid #fff; outline-offset:4px; }
.bfvg-partner-contact__panel { max-width:720px; margin:28px auto 0; }
.bfvg-partner-contact form { display:grid; gap:10px; position:relative; }
.bfvg-partner-contact form[hidden] { display:none; }
.bfvg-partner-contact label { color:#fff; font-weight:600; margin-top:10px; }
.bfvg-partner-contact label span { font-size:.8em; font-weight:400; }
.bfvg-partner-contact input:not([type=hidden]), .bfvg-partner-contact textarea { width:100%; box-sizing:border-box; padding:12px; border:1px solid #fff; border-radius:6px; background:#fff; color:#202722; font:inherit; }
.bfvg-partner-contact textarea { resize:vertical; }
.bfvg-partner-contact button { justify-self:start; padding:14px 24px; border:2px solid #fff; border-radius:10px; background:#fff; color:#A43311; font:inherit; font-weight:700; cursor:pointer; }
.bfvg-partner-contact button:disabled { opacity:.65; cursor:wait; }
.bfvg-partner-contact :is(input,textarea,button):focus-visible { outline:3px solid #fff; outline-offset:3px; }
.bfvg-partner-contact__trap { position:absolute; left:-10000px; width:1px; height:1px; overflow:hidden; }
section.bikefvg-home-partner-cta .bfvg-partner-contact__privacy { font-size:.9rem; text-align:left; }
section.bikefvg-home-partner-cta .bfvg-partner-contact__privacy a { background:transparent; color:#fff; padding:0; text-decoration:underline; border:0; border-radius:0; }
.bfvg-partner-contact__status { text-align:left; }
.bfvg-partner-contact { margin-top:1.35rem; }
section.bikefvg-home-partner-cta .bfvg-partner-contact__privacy a { display:inline; min-height:0; margin:0; }

/* Partner: separate successive fields and center the submission feedback. */
section.bikefvg-home-partner-cta .bfvg-partner-contact form > label:is([for="partner-business"], [for="partner-email"], [for="partner-message"]) {
 padding-top: 16px;
}
section.bikefvg-home-partner-cta .bfvg-partner-contact__status {
 text-align: center;
 margin-inline: auto;
 width: 100%;
}

/* Explicit field groups keep spacing independent of paragraph wrappers. */
section.bikefvg-home-partner-cta .bfvg-partner-contact__field {
 display: block;
 padding: 0;
 text-align: left;
}
section.bikefvg-home-partner-cta .bfvg-partner-contact__field ~ .bfvg-partner-contact__field {
 padding-top: 20px;
}
section.bikefvg-home-partner-cta .bfvg-partner-contact__field label {
 display: block;
 margin: 0 0 6px;
 padding: 0;
}
section.bikefvg-home-partner-cta .bfvg-partner-contact__field :is(input, textarea) {
 display: block;
 margin: 0;
}

/* Reach owns the inner form; keep its host within the newsletter column. */
.bikefvg-home-newsletter__form { min-width: 0; }
.bikefvg-home-newsletter__form [data-reach-form] { width: 100%; min-width: 0; }
.bikefvg-home-newsletter__form [data-reach-form] iframe { max-width: 100%; border: 0; }

/* Reach supplies the iframe height after loading; do not impose a minimum. */
.bikefvg-home-newsletter__form [data-reach-form] iframe {
 display: block;
 width: 100%;
 min-height: 0;
}

/* test.453 — Piccoli richiami del tratteggio (Servizi, Diario): stesso tratto della home, percorso libero. */
.bikefvg-page-sign { display: none; }
@media (min-width: 48rem) {
	.bikefvg-page-sign {
		display: block;
		position: absolute;
		bottom: .75rem;
		z-index: 2;
		width: 200px;
		height: 80px;
		overflow: hidden;
		pointer-events: none;
		fill: none;
		stroke: var(--wp--preset--color--accent);
		stroke-width: 2.5;
		stroke-dasharray: 10.4 7.6;
		stroke-linecap: round;
		opacity: .85;
	}
	.bikefvg-page-sign--right { right: 0; }
	.bikefvg-page-sign--left { left: 0; }
	.bikefvg-page-sign__ring { fill: var(--wp--preset--color--paper); stroke-width: 2; stroke-dasharray: none; }
	.bikefvg-page-sign__cross { stroke-width: 2.2; stroke-dasharray: none; }
	.bikefvg-diary-index__newspaper-section, .bikefvg-service-archive__results { position: relative; }
	.bikefvg-service-archive__results .bikefvg-page-sign { display: none; }
}
@media (min-width: 75rem) {
	.bikefvg-service-archive__results .bikefvg-page-sign { display: block; width: 160px; height: 64px; bottom: .5rem; }
}
@media (forced-colors: active) { .bikefvg-page-sign { display: none !important; } }


/* 0.8.85 — pagina Preferiti: gerarchia, ritmo e card uniformate. */
.bikefvg-favorites-main {
	background: var(--wp--preset--color--paper);
}

.bikefvg-favorites-page {
	padding-block: clamp(3rem, 6vw, 6rem);
}

.bikefvg-favorites-page__intro {
	max-width: 52rem;
	margin-bottom: clamp(2.5rem, 4vw, 3.5rem);
}

.bikefvg-favorites-page__intro > .bikefvg-eyebrow {
	margin: 0 0 .7rem;
}

/* È il titolo della pagina, non una label: mantiene una gerarchia netta. */
.bikefvg-favorites-page__intro > h1 {
	max-width: 14ch;
	margin: 0 0 .85rem;
	font-size: clamp(2.6rem, 5vw, 4rem);
	font-weight: 800;
	line-height: .98;
	letter-spacing: -.04em;
}

.bikefvg-favorites-page__intro > .bikefvg-lead {
	max-width: 46rem;
	margin: 0;
	font-size: clamp(1rem, .96rem + .22vw, 1.14rem);
	line-height: 1.55;
}

.bikefvg-favorites-page__group + .bikefvg-favorites-page__group {
	margin-top: clamp(2.5rem, 4vw, 3.5rem);
	padding-top: clamp(2rem, 3.5vw, 2.75rem);
	border-top: 1px solid var(--bfvg-line);
}

.bikefvg-favorites-page__group-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem 1.5rem;
	margin-bottom: 1.2rem;
}

.bikefvg-favorites-page__group-head > .bikefvg-eyebrow {
	margin: 0;
}

.bikefvg-favorites-page__group-head > .bikefvg-text-link {
	flex: 0 0 auto;
}

/* Un'unica griglia per i due tipi di contenuto. */
.bikefvg-favorites-page .bikefvg-favorites-page__grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: clamp(.9rem, 1.4vw, 1.15rem);
	margin: 0;
}

/* Le due famiglie usano la stessa scatola e lo stesso rapporto immagine. */
.bikefvg-favorites-page .bikefvg-favorite-card {
	min-width: 0;
	height: 100%;
	background: var(--wp--preset--color--panel);
}

.bikefvg-favorites-page .bikefvg-favorite-card .bikefvg-route-card__media {
	aspect-ratio: 4 / 3;
}

.bikefvg-favorites-page .bikefvg-favorite-card .bikefvg-route-card__body {
	display: flex;
	flex: 1 1 auto;
	flex-direction: column;
	margin-top: 0;
	padding: clamp(.95rem, .88rem + .25vw, 1.1rem);
}

.bikefvg-favorites-page .bikefvg-favorite-card .bikefvg-route-card__body h3 {
	display: -webkit-box;
	overflow: hidden;
	min-height: 3.45em;
	margin: 0;
	font-size: clamp(1.08rem, 1rem + .25vw, 1.28rem);
	font-weight: 750;
	line-height: 1.15;
	letter-spacing: -.018em;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 2;
}

.bikefvg-favorites-page .bikefvg-favorite-card .bikefvg-muted {
	display: -webkit-box;
	overflow: hidden;
	min-height: 1.35em;
	margin: .45rem 0 0;
	color: var(--wp--preset--color--ink-secondary);
	font-size: .8rem;
	line-height: 1.35;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 1;
}

.bikefvg-favorites-page .bikefvg-favorite-card .bikefvg-route-card__meta {
	margin-top: auto;
	padding-top: .72rem;
	gap: .35rem .7rem;
	font-size: .72rem;
	line-height: 1.3;
}

.bikefvg-favorites-page .bikefvg-favorite-card__unesco {
	background: var(--wp--preset--color--accent);
	color: #fff;
}

.bikefvg-favorites-page__empty {
	margin-top: 1rem;
}

.bikefvg-favorites-page__empty strong {
	display: block;
	margin-bottom: .35rem;
}

@media (min-width: 40rem) {
	.bikefvg-favorites-page .bikefvg-favorites-page__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (min-width: 64rem) {
	.bikefvg-favorites-page .bikefvg-favorites-page__grid {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}

@media (max-width: 639px) {
	.bikefvg-favorites-page {
		padding-block: 2.25rem 3.5rem;
	}
	.bikefvg-favorites-page__intro {
		margin-bottom: 2.5rem;
	}
	.bikefvg-favorites-page__intro > h1 {
		font-size: clamp(2.35rem, 12vw, 3.25rem);
	}
	.bikefvg-favorites-page__group-head {
		align-items: baseline;
		gap: .75rem;
	}
	.bikefvg-favorites-page__group-head > .bikefvg-text-link {
		font-size: .84rem;
	}
}

