/**
 * BikeFVG — Archivio Servizi e luoghi.
 * Flusso mobile-first orientato al bisogno, risultati text-first e Partner
 * identificati dentro l'elenco senza duplicazioni.
 */

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

.bikefvg-service-archive .bikefvg-service-archive__hero {
	padding-block: var(--bfvg-hero-index-padding);
	border-bottom: 1px solid var(--bfvg-line);
}

.bikefvg-service-archive .bikefvg-service-archive__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;
}

.bikefvg-service-archive .bikefvg-service-archive__lead {
	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-service-archive .bikefvg-service-archive__filters {
	padding-block: clamp(1.25rem, 1.05rem + 1vw, 2rem);
	border-bottom: 1px solid var(--bfvg-line);
	background: color-mix(in srgb, var(--wp--preset--color--panel) 42%, var(--wp--preset--color--paper));
}

.bikefvg-service-archive__filters h2,
.bikefvg-service-archive__results-head h2 {
	margin: 0;
	font-size: clamp(1.65rem, 1.45rem + .9vw, 2.35rem);
	line-height: 1.08;
	letter-spacing: -.035em;
}

.bikefvg-service-archive__filters-heading {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	justify-content: space-between;
	gap: .75rem;
}

.bikefvg-service-archive__show-all {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 44px;
	padding: .45rem .7rem;
	border: 1px solid transparent;
	border-radius: 999px;
	color: var(--wp--preset--color--accent);
	font-size: var(--bfvg-font-meta);
	font-weight: 800;
	text-decoration: none;
}

.bikefvg-service-archive__show-all.is-active {
	border-color: color-mix(in srgb, var(--wp--preset--color--accent) 35%, var(--bfvg-line));
	background: color-mix(in srgb, var(--wp--preset--color--accent) 8%, var(--wp--preset--color--paper));
}

.bikefvg-service-archive__intents {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: .5rem;
	margin-top: .7rem;
}

/* wpautop può inserire <br> fra i link prodotti dallo shortcode. */
.bikefvg-service-archive__intents > br {
	display: none;
}

.bikefvg-service-archive__intents a {
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 46px;
	padding: .55rem .7rem;
	border: 1px solid color-mix(in srgb, var(--wp--preset--color--accent) 18%, var(--bfvg-line));
	border-radius: var(--wp--custom--radius--control, 12px);
	background: color-mix(in srgb, var(--wp--preset--color--accent) 5%, var(--wp--preset--color--panel));
	color: var(--wp--preset--color--ink);
	font-size: .82rem;
	font-weight: 750;
	line-height: 1.2;
	text-align: center;
	text-decoration: none;
}

.bikefvg-service-archive__intents a.is-active {
	border-color: var(--wp--preset--color--accent);
	background: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--paper);
}

.bikefvg-service-archive__intents a:not(.is-active):hover {
	border-color: var(--wp--preset--color--accent);
	background: color-mix(in srgb, var(--wp--preset--color--accent) 10%, var(--wp--preset--color--panel));
}

.bikefvg-service-archive__intents a:focus-visible,
.bikefvg-service-archive__show-all:focus-visible,
.bikefvg-service-archive__advanced summary:focus-visible,
.bikefvg-service-archive__active-filters a:focus-visible,
.bikefvg-service-archive__load-more:focus-visible {
	outline: 3px solid var(--wp--preset--color--ink);
	outline-offset: 2px;
}

.bikefvg-service-archive__filter-form {
	--bfvg-service-filter-action-width: 11rem;
	margin-top: .8rem;
	padding: clamp(.9rem, .82rem + .35vw, 1.15rem);
}

.bikefvg-service-archive__primary-filters {
	display: grid;
	gap: .75rem;
}

.bikefvg-service-archive__search-field {
	margin: 0;
}

.bikefvg-service-archive__primary-filters .bikefvg-filter-control,
.bikefvg-service-archive__advanced-body .bikefvg-filter-control {
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	gap: .18rem;
}

/* Reset difensivo dei margini: la distanza interna è governata soltanto dal
   gap del contenitore. */
.bikefvg-service-archive__filter-form .bikefvg-filter-control > label,
.bikefvg-service-archive__filter-form .bikefvg-filter-control > select,
.bikefvg-service-archive__filter-form .bikefvg-filter-control > input:is([type="search"], [type="text"], [type="number"], [type="email"], [type="url"]) {
	margin: 0 !important;
}

/* Il blocco Shortcode di WordPress applica wpautop all'HTML restituito e può
   inserire <br> tra label e controllo e <p></p> alla fine delle griglie.
   In un contenitore flex/grid questi nodi diventano elementi reali: nello
   staging il <br> misurava 24px e il paragrafo vuoto generava una seconda
   riga da 40px. Nascondiamo soltanto gli artefatti nei punti strutturali. */
.bikefvg-service-archive__filter-form .bikefvg-filter-control > br,
.bikefvg-service-archive__filter-form .bikefvg-service-archive__action-control > br,
.bikefvg-service-archive__primary-filters > p:empty,
.bikefvg-service-archive__advanced-body > p:empty {
	display: none !important;
}

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

.bikefvg-service-archive__action-label {
	display: none;
	min-height: 0;
	margin: 0;
	font-size: var(--bfvg-font-meta);
	font-weight: 700;
	line-height: normal;
	letter-spacing: .03em;
	visibility: hidden;
}

.bikefvg-service-archive__submit {
	align-self: end;
	min-height: 48px;
	border: 1px solid var(--wp--preset--color--accent);
	background: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--paper);
}

.bikefvg-service-archive__submit:hover {
	border-color: var(--bfvg-accent-hover);
	background: var(--bfvg-accent-hover);
}

.bikefvg-service-archive__submit:active {
	border-color: var(--bfvg-accent-pressed);
	background: var(--bfvg-accent-pressed);
}

.bikefvg-service-archive__advanced {
	margin-top: .85rem;
	border-top: 1px solid var(--bfvg-line);
}

.bikefvg-service-archive__advanced summary {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	cursor: pointer;
	color: var(--wp--preset--color--accent);
	font-size: .82rem;
	font-weight: 800;
}

.bikefvg-service-archive__advanced summary::marker {
	color: var(--wp--preset--color--accent);
}

.bikefvg-service-archive__advanced-body {
	display: grid;
	gap: .85rem;
	padding: .75rem 0 .25rem;
}

/* Il display:grid precedente non deve rendere visibile il contenuto di un
   details chiuso. I filtri avanzati si aprono tramite summary o quando uno
   dei loro valori è già attivo. */
.bikefvg-service-archive__advanced:not([open]) > .bikefvg-service-archive__advanced-body {
	display: none;
}

/* Nell'archivio Servizi l'etichetta deve essere percepita come parte del
   proprio campo, non come un'intestazione sospesa. Il reset mobile condiviso
   usa !important, quindi qui lo si corregge con uno scope più specifico. */
@media (max-width: 44rem) {
	.bikefvg-service-archive__primary-filters .bikefvg-filter-control,
	.bikefvg-service-archive__advanced-body .bikefvg-filter-control {
		gap: .18rem !important;
	}
}

.bikefvg-service-archive__verified-check span {
	width: 100%;
	min-height: 44px;
	white-space: normal;
}

.bikefvg-service-archive .bikefvg-service-archive__results {
	padding-block: clamp(1.75rem, 1.4rem + 1.4vw, 3rem);
}

.bikefvg-service-archive__results-head {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 1rem;
	margin-bottom: 1rem;
}

.bikefvg-service-archive__count {
	margin: .35rem 0 0;
	color: var(--wp--preset--color--ink-secondary);
	font-size: .88rem;
	font-weight: 700;
}

.bikefvg-service-archive__active-filters {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: .45rem;
	margin: -.2rem 0 1rem;
}

.bikefvg-service-archive__active-label {
	color: var(--wp--preset--color--ink-muted);
	font-size: var(--bfvg-font-meta);
	font-weight: 700;
}

.bikefvg-service-archive__active-filters a {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding: .35rem .6rem;
	border: 1px solid color-mix(in srgb, var(--wp--preset--color--accent) 35%, var(--bfvg-line));
	border-radius: 999px;
	background: color-mix(in srgb, var(--wp--preset--color--accent) 8%, var(--wp--preset--color--paper));
	color: var(--wp--preset--color--ink);
	font-size: var(--bfvg-font-meta);
	font-weight: 700;
	text-decoration: none;
}

.bikefvg-service-archive__active-filters .bikefvg-service-archive__clear {
	border-color: transparent;
	background: transparent;
	color: var(--wp--preset--color--accent);
	text-decoration: underline;
	text-underline-offset: .18em;
}

.bikefvg-service-archive__grid {
	display: grid;
	grid-template-columns: 1fr;
	align-items: stretch;
	gap: .8rem;
}

.bikefvg-service-archive__card {
	position: relative;
	display: flex;
	width: 100%;
	height: 100%;
	min-width: 0;
	flex-direction: column;
	overflow: hidden;
	border: 1px solid var(--bfvg-line);
	border-radius: var(--bfvg-card-radius);
	background: color-mix(in srgb, var(--wp--preset--color--panel) 72%, var(--wp--preset--color--paper));
	transition: transform .18s ease, border-color .18s ease;
}

.bikefvg-service-archive__card-content {
	--bfvg-service-card-padding: clamp(.9rem, .82rem + .35vw, 1.15rem);
	--bfvg-service-partner-content-gap: .8rem;
	position: relative;
	display: flex;
	min-width: 0;
	flex: 1;
	flex-direction: column;
	padding: var(--bfvg-service-card-padding);
	padding-bottom: var(--bfvg-service-card-padding);
}

/* wpautop aggiunge un paragrafo vuoto in coda all'HTML della card. In una
   colonna flex i suoi margini da 20px + 20px occupano spazio reale e tengono
   i servizi al ciclista lontani dal separatore delle azioni. */
.bikefvg-service-archive__card-content > p:empty:last-child {
	display: none !important;
}

.bikefvg-service-archive__card-media {
	display: block;
	height: 100%;
	overflow: hidden;
	background: var(--wp--preset--color--surface-alt);
}

/* Il blocco Shortcode inserisce un <br> come primo figlio del link e sposta
   l'immagine verso il basso. La foto dei Partner deve invece riempire tutta
   l'area media, dal bordo superiore della card. */
.bikefvg-service-archive__card-media > br,
.bikefvg-service-archive__card-media-wrap > br {
	display: none !important;
}

.bikefvg-service-archive__card-media-wrap {
	position: relative;
	width: 100%;
	height: clamp(9rem, 25vw, 12rem);
}

.bikefvg-service-archive__card-media-wrap .bikefvg-service-archive__partner-badge {
	position: absolute;
	top: .65rem;
	left: .65rem;
	z-index: 1;
	box-shadow: 0 2px 8px color-mix(in srgb, var(--wp--preset--color--ink) 22%, transparent);
	pointer-events: none;
}

.bikefvg-service-archive__card-media-wrap .bikefvg-service-archive__verified {
	position: absolute;
	right: .65rem;
	bottom: .65rem;
	background: var(--wp--preset--color--paper);
	box-shadow: 0 2px 8px color-mix(in srgb, var(--wp--preset--color--ink) 16%, transparent);
}

.bikefvg-service-archive__card-media img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.bikefvg-service-archive__card-topline {
	position: relative;
	height: 2.6rem;
	flex: 0 0 2.6rem;
	overflow: hidden;
}

.bikefvg-service-archive__type {
	display: -webkit-box;
	min-width: 0;
	height: 2.6em;
	overflow: hidden;
	color: var(--wp--preset--color--accent);
	font-size: .8125rem;
	font-weight: 800;
	line-height: 1.3;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 2;
}

.bikefvg-service-archive__status-badges {
	position: absolute;
	top: 0;
	right: 0;
	display: flex;
	flex-wrap: wrap;
	justify-content: flex-end;
	max-width: 72%;
	gap: .3rem;
}

.bikefvg-service-archive__card:not(.has-partner-media) .bikefvg-service-archive__type {
	padding-right: 7rem;
}

.bikefvg-service-archive__card.is-partner:not(.has-partner-media) .bikefvg-service-archive__type {
	padding-right: 9rem;
}

.bikefvg-service-archive__partner-badge,
.bikefvg-service-archive__verified {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: fit-content;
	padding: .3rem .52rem;
	border-radius: 999px;
	font-size: var(--bfvg-font-meta);
	font-weight: 800;
	line-height: 1;
	white-space: nowrap;
}

.bikefvg-service-archive__partner-badge {
	border: 1px solid currentColor;
	background: var(--wp--preset--color--ink);
	color: var(--wp--preset--color--paper);
}

.bikefvg-service-archive__verified {
	border: 1px solid color-mix(in srgb, var(--wp--preset--color--verified) 45%, var(--bfvg-line));
	color: var(--wp--preset--color--verified);
}

.bikefvg-service-archive__card h2 {
	margin: .38rem 0 0;
	min-height: 0;
	font-size: var(--wp--custom--type--card-title-compact);
	line-height: 1.08;
	letter-spacing: -.025em;
}

.bikefvg-service-archive__card h2 a {
	display: block;
	color: inherit;
	text-decoration: none;
	overflow-wrap: anywhere;
}

.bikefvg-service-archive__location {
	display: -webkit-box;
	overflow: hidden;
	margin: .42rem 0 0;
	min-height: 0;
	color: var(--wp--preset--color--ink-secondary);
	font-size: .875rem;
	font-weight: 600;
	line-height: 1.35;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 2;
}

.bikefvg-service-archive__context-meta {
	margin: .36rem 0 0;
	color: var(--wp--preset--color--ink-secondary);
	font-size: .8125rem;
	line-height: 1.4;
	font-variant-numeric: tabular-nums;
}

.bikefvg-service-archive__partner-summary {
	margin: var(--bfvg-service-partner-content-gap) 0 0;
	color: var(--wp--preset--color--ink-secondary);
	font-size: .86rem;
	line-height: 1.5;
}

.bikefvg-service-archive__partner-contact {
	display: grid;
	gap: .35rem;
	/* Il territorio riserva due righe: 1.1rem compensa otticamente la seconda
	   riga vuota e rende uguali i due intervalli visibili attorno al sommario. */
	margin-top: calc(var(--bfvg-service-partner-content-gap) + 1.1rem);
	color: var(--wp--preset--color--ink-secondary);
	font-size: .875rem;
	line-height: 1.35;
}

.bikefvg-service-archive__partner-contact > p:empty {
	display: none !important;
}

.bikefvg-service-archive__partner-contact p {
	display: grid;
	grid-template-columns: 5rem minmax(0, 1fr);
	gap: .45rem;
	margin: 0;
}

.bikefvg-service-archive__partner-contact span {
	color: var(--wp--preset--color--ink-muted);
	font-size: var(--bfvg-font-meta);
	font-weight: 800;
	letter-spacing: .04em;
	text-transform: uppercase;
}

.bikefvg-service-archive__partner-contact a {
	width: fit-content;
	max-width: 100%;
	overflow-wrap: anywhere;
	min-height: 24px;
	color: var(--wp--preset--color--accent);
	font-weight: 700;
	text-underline-offset: .15em;
}

.bikefvg-service-archive__bike-flags {
	display: flex;
	min-width: 0;
	min-height: 0;
	align-items: flex-start;
	align-content: flex-start;
	flex-wrap: wrap;
	gap: .35rem;
	margin-top: auto;
	/* .8rem sopra la linea: la stessa distanza usata dalle azioni sotto. */
	padding: .85rem 0 .8rem;
	overflow: visible;
	flex-shrink: 0;
}

.bikefvg-service-archive__bike-flags.is-empty {
	display: none;
}

.bikefvg-service-archive__bike-flags span {
	display: inline-flex;
	min-width: 0;
	max-width: 100%;
	box-sizing: border-box;
	padding: .28rem .5rem;
	border: 1px solid var(--bfvg-line);
	border-radius: var(--bfvg-radius-label);
	color: var(--wp--preset--color--ink-secondary);
	font-size: .8125rem;
	font-weight: 700;
	line-height: 1.15;
	white-space: normal;
	overflow-wrap: anywhere;
}

.bikefvg-service-archive__card.is-featured-partner .bikefvg-service-archive__bike-flags {
	min-height: 0;
	margin-top: auto;
	flex-wrap: wrap;
	overflow: visible;
}

.bikefvg-service-archive__card.is-featured-partner .bikefvg-service-archive__bike-flags span {
	max-width: 100%;
}

.bikefvg-service-archive__card-actions {
	position: static;
	flex-wrap: wrap;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: .35rem .7rem;
	margin-top: auto;
	padding-top: .65rem;
	border-top: 1px solid var(--bfvg-line);
}

.bikefvg-service-archive__detail-link,
.bikefvg-service-archive__directions {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	font-size: .875rem;
	font-weight: 800;
	line-height: 1.25;
	text-decoration: none;
}

.bikefvg-service-archive__detail-link {
	color: var(--wp--preset--color--ink);
}

.bikefvg-service-archive__directions {
	color: var(--wp--preset--color--accent);
	white-space: nowrap;
}

/* Focus interno: rimane visibile anche vicino ai bordi arrotondati della card. */
.bikefvg-service-archive__card a:focus-visible {
	outline: 3px solid var(--wp--preset--color--ink);
	outline-offset: -3px;
}

/* Su schermi stretti la località usa le righe necessarie. */
@media (max-width: 57.99rem) {
	.bikefvg-service-archive__location {
		display: block;
		overflow: visible;
		overflow-wrap: anywhere;
		-webkit-line-clamp: unset;
	}
}

.bikefvg-service-archive__empty {
	padding: clamp(1.5rem, 1rem + 2vw, 2.6rem);
	border: 1px dashed var(--bfvg-line);
	border-radius: var(--bfvg-radius-card);
	color: var(--wp--preset--color--ink-secondary);
	text-align: center;
}

.bikefvg-service-archive__empty h3 {
	margin-top: 0;
	color: var(--wp--preset--color--ink);
}

.bikefvg-service-archive__more {
	display: grid;
	justify-items: center;
	gap: .7rem;
	margin-top: clamp(1.7rem, 1.3rem + 1.4vw, 2.7rem);
}

.bikefvg-service-archive__shown {
	margin: 0;
	color: var(--wp--preset--color--ink-muted);
	font-size: .82rem;
	font-weight: 700;
}

.bikefvg-service-archive__load-more {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: min(100%, 15rem);
	min-height: 48px;
	padding: .7rem 1.2rem;
	border: 1px solid var(--wp--preset--color--ink);
	border-radius: var(--wp--custom--radius--control, 12px);
	background: transparent;
	color: var(--wp--preset--color--ink);
	font-weight: 800;
	line-height: 1.15;
	text-align: center;
	text-decoration: none;
}

.bikefvg-service-archive__load-more.is-loading {
	cursor: wait;
	opacity: .6;
	pointer-events: none;
}

.bikefvg-service-archive__load-more.is-loading span::after {
	content: '…';
}

.bikefvg-service-archive__more.is-complete .bikefvg-service-archive__load-more {
	display: none;
}

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

@media (prefers-reduced-motion: reduce) {
	.bikefvg-service-archive__card {
		transition: none;
	}
}

@media (min-width: 38rem) {
	.bikefvg-service-archive__intents {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}

	.bikefvg-service-archive__advanced-body {
		grid-template-columns: minmax(15rem, 1fr) var(--bfvg-service-filter-action-width);
		align-items: end;
	}

	.bikefvg-service-archive__verified-check {
		width: 100%;
	}

	.bikefvg-service-archive__advanced-body .bikefvg-service-archive__action-label {
		display: block;
	}

	.bikefvg-service-archive__advanced-body > .bikefvg-text-link {
		grid-column: 1 / -1;
	}

	.bikefvg-service-archive__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.bikefvg-service-archive__card.is-featured-partner {
		grid-column: 1 / -1;
	}

}

@media (min-width: 58rem) {
	.bikefvg-service-archive__primary-filters {
		grid-template-columns: minmax(18rem, 1.8fr) minmax(14rem, 1fr) var(--bfvg-service-filter-action-width);
		align-items: end;
	}

	.bikefvg-service-archive__submit {
		width: 100%;
		min-width: 0;
	}

	.bikefvg-service-archive__primary-filters .bikefvg-service-archive__action-label {
		display: block;
	}

	.bikefvg-service-archive__results-head {
		flex-direction: row;
		align-items: baseline;
		justify-content: flex-start;
		gap: .8rem;
	}

	.bikefvg-service-archive__count {
		margin: 0;
		white-space: nowrap;
	}

	.bikefvg-service-archive__grid {
		grid-template-columns: repeat(3, minmax(0, 1fr));
		grid-auto-rows: auto;
		gap: clamp(.8rem, .65rem + .55vw, 1.15rem);
	}

	.bikefvg-service-archive__card.is-featured-partner {
		grid-column: auto;
		grid-row: span 2;
	}

	.bikefvg-service-archive__card.is-featured-partner .bikefvg-service-archive__card-media-wrap {
		height: 11rem;
	}
}

/* Compact actions, consistent on desktop and mobile. */
.bikefvg-service-archive__submit,
.bikefvg-service-archive__load-more {
  box-sizing: border-box;
  min-height: var(--bfvg-control-height-compact);
  padding: var(--bfvg-control-padding-block-compact) var(--bfvg-service-search-padding-inline, 16px);
  font-size: var(--bfvg-control-font-compact);
  line-height: var(--bfvg-control-line-compact);
}
.bikefvg-service-archive__filter-form :is(input, select, button):focus-visible {
  outline: 3px solid var(--wp--preset--color--ink);
  outline-offset: 2px;
}
@media (max-width: 57.99rem) {
  .bikefvg-service-archive__card h2 a {
    display: block;
    overflow: visible;
    overflow-wrap: anywhere;
    -webkit-line-clamp: unset;
  }
}
/* Override the shared mobile filter-panel margin reset, only in Services. */
@media (max-width: 44rem) {
  .bikefvg-service-archive .bikefvg-service-archive__filter-form {
    margin-top: var(--bfvg-filter-separation-mobile) !important;
  }
}


/* ---------- Archivio Servizi: filtri persistenti ----------
 * L'introduzione e i campi scorrono via con la pagina. Su desktop una barra
 * compatta agganciata sotto il menu apre i campi in un pannello sovrapposto
 * (vedi blocco 0.7.0-test.400). Su telefono il pannello completo resta nel
 * flusso e una barra minima mantiene conteggio e ritorno ai filtri.
 */
.bikefvg-service-archive__filters-meta {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	justify-content: flex-end;
	gap: .35rem .65rem;
}

.bikefvg-service-archive__filters-count {
	color: var(--wp--preset--color--ink-muted);
	font-size: var(--bfvg-font-meta);
	font-weight: 700;
	white-space: nowrap;
	visibility: hidden;
	opacity: 0;
	transition: opacity .18s ease;
}

.bikefvg-service-archive__mobile-toolbar {
	display: none;
}

@media (max-width: 44rem) {
	.bikefvg-service-archive__filters {
		position: static;
	}

	.bikefvg-service-archive__filters-count {
		display: none;
		visibility: hidden;
		opacity: 0;
	}

	.bikefvg-service-archive__mobile-toolbar {
		position: sticky;
		top: calc(var(--bfvg-header-height, 0px) + var(--bfvg-admin-offset, var(--wp-admin--admin-bar--height, 0px)));
		z-index: 41;
		display: block;
		border-block: 1px solid var(--bfvg-line);
		background: color-mix(in srgb, var(--wp--preset--color--paper) 94%, var(--wp--preset--color--panel));
		box-shadow: 0 5px 14px color-mix(in srgb, var(--wp--preset--color--ink) 6%, transparent);
		backdrop-filter: blur(10px);
	}

	.bikefvg-service-archive__mobile-toolbar-inner {
		display: flex;
		align-items: center;
		justify-content: space-between;
		gap: .75rem;
		min-height: 50px;
		padding-block: .38rem;
	}

	.bikefvg-service-archive__mobile-summary {
		min-width: 0;
		margin: 0;
		overflow: hidden;
		color: var(--wp--preset--color--ink-secondary);
		font-size: var(--bfvg-font-meta);
		line-height: 1.25;
		text-overflow: ellipsis;
		white-space: nowrap;
	}

	.bikefvg-service-archive__mobile-summary strong {
		color: var(--wp--preset--color--ink);
		font-weight: 800;
	}

	.bikefvg-service-archive__mobile-filter-jump {
		flex: 0 0 auto;
		min-height: 38px;
		padding: .42rem .78rem;
		border: 1px solid var(--wp--preset--color--ink);
		border-radius: var(--wp--custom--radius--control, 12px);
		background: transparent;
		color: var(--wp--preset--color--ink);
		font: inherit;
		font-size: var(--bfvg-font-meta);
		font-weight: 800;
		line-height: 1;
		cursor: pointer;
	}

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

/* ---------- Desktop: barra compatta + pannello sovrapposto (0.7.0-test.400) ----------
 * I campi restano nel flusso e scorrono via con la pagina. Quando escono dal
 * viewport compare sotto il menu la barra compatta (la stessa toolbar del
 * telefono). La barra ha altezza propria ma un margine negativo uguale: non
 * occupa spazio di flusso, quindi comparire/sparire e aprire il pannello non
 * sposta mai le schede. Il pannello si sovrappone alla lista e scorre al
 * proprio interno sugli schermi bassi. Attivo solo con JS (.is-filter-bar-ready).
 */
@media (min-width: 64rem) {
	.bikefvg-service-archive {
		--bfvg-filter-bar-h: 3.5rem;
		--bfvg-filter-bar-top: calc(var(--bfvg-header-height, 0px) + var(--bfvg-admin-offset, var(--wp-admin--admin-bar--height, 0px)));
	}

	.bikefvg-service-archive.is-filter-bar-ready .bikefvg-service-archive__mobile-toolbar {
		position: sticky;
		top: var(--bfvg-filter-bar-top);
		z-index: 42;
		display: block;
		margin-block-end: calc(-1 * var(--bfvg-filter-bar-h));
		border-block-end: 1px solid var(--bfvg-line);
		background: color-mix(in srgb, var(--wp--preset--color--panel) 96%, var(--wp--preset--color--paper));
		box-shadow: 0 8px 18px color-mix(in srgb, var(--wp--preset--color--ink) 7%, transparent);
		visibility: hidden;
		opacity: 0;
		pointer-events: none;
		transition: opacity .15s ease, visibility 0s linear .15s;
	}

	.bikefvg-service-archive.is-filter-bar-ready.is-filter-bar-visible .bikefvg-service-archive__mobile-toolbar {
		visibility: visible;
		opacity: 1;
		pointer-events: auto;
		transition-delay: 0s;
	}

	.bikefvg-service-archive.is-filter-bar-ready .bikefvg-service-archive__mobile-toolbar-inner {
		display: flex;
		align-items: center;
		gap: .5rem 1rem;
		min-height: calc(var(--bfvg-filter-bar-h) - 1px);
		padding-block: .4rem;
	}

	.bikefvg-service-archive.is-filter-bar-ready .bikefvg-service-archive__bar-title {
		flex: 0 0 auto;
		font-size: 1.05rem;
		font-weight: 800;
		letter-spacing: -.02em;
		line-height: 1.15;
	}

	.bikefvg-service-archive.is-filter-bar-ready .bikefvg-service-archive__mobile-summary {
		min-width: 0;
		margin: 0;
		overflow: hidden;
		color: var(--wp--preset--color--ink-secondary);
		font-size: var(--bfvg-font-meta);
		line-height: 1.25;
		text-overflow: ellipsis;
		white-space: nowrap;
	}

	.bikefvg-service-archive.is-filter-bar-ready .bikefvg-service-archive__mobile-summary strong {
		color: var(--wp--preset--color--ink);
		font-weight: 800;
	}

	.bikefvg-service-archive.is-filter-bar-ready .bikefvg-service-archive__mobile-filter-jump {
		flex: 0 0 auto;
		min-height: 38px;
		margin-inline-start: auto;
		padding: .42rem .72rem;
		border: 1px solid var(--wp--preset--color--accent);
		border-radius: var(--wp--custom--radius--control, 12px);
		background: var(--wp--preset--color--accent);
		color: var(--wp--preset--color--paper);
		font: inherit;
		font-size: var(--bfvg-font-meta);
		font-weight: 800;
		line-height: 1;
		cursor: pointer;
	}

	.bikefvg-service-archive.is-filter-bar-ready .bikefvg-service-archive__mobile-filter-jump:hover {
		border-color: color-mix(in srgb, var(--wp--preset--color--accent) 84%, var(--wp--preset--color--ink));
		background: color-mix(in srgb, var(--wp--preset--color--accent) 84%, var(--wp--preset--color--ink));
	}

	.bikefvg-service-archive.is-filter-bar-ready .bikefvg-service-archive__mobile-filter-jump:focus-visible {
		outline: 3px solid var(--wp--preset--color--focus, var(--wp--preset--color--accent));
		outline-offset: 2px;
	}

	/* Pannello: sovrapposto alla lista, non nel flusso; scorre al proprio interno. */
	.bikefvg-service-archive.is-filter-bar-ready .bikefvg-service-archive__filters-panel {
		position: absolute;
		inset-inline: 0;
		top: 100%;
		max-height: calc(100vh - var(--bfvg-filter-bar-top) - var(--bfvg-filter-bar-h) - 1rem);
		max-height: calc(100dvh - var(--bfvg-filter-bar-top) - var(--bfvg-filter-bar-h) - 1rem);
		overflow-y: auto;
		overscroll-behavior: contain;
		border-block-end: 1px solid var(--bfvg-line);
		background: color-mix(in srgb, var(--wp--preset--color--panel) 96%, var(--wp--preset--color--paper));
		box-shadow: 0 14px 28px color-mix(in srgb, var(--wp--preset--color--ink) 12%, transparent);
	}

	.bikefvg-service-archive.is-filter-bar-ready .bikefvg-service-archive__filters-panel[hidden] {
		display: none;
	}

	.bikefvg-service-archive.is-filter-bar-ready .bikefvg-service-archive__filters-panel-inner {
		padding-block: 1.1rem 1.4rem;
	}
}

@media (min-width: 64rem) and (prefers-reduced-motion: reduce) {
	.bikefvg-service-archive.is-filter-bar-ready .bikefvg-service-archive__mobile-toolbar {
		transition: none;
	}
}

@media (max-width: 63.999rem) {
	.bikefvg-service-archive__bar-title {
		display: none;
	}
}

/* test.366 — La toolbar segue il menu mobile quando scompare/riappare. */
@media (max-width: 44rem) {
 body:has(.bfvg-sticky-header.bfvg-header-hidden:not(:focus-within)) .bikefvg-service-archive__mobile-toolbar { top: var(--bfvg-admin-offset, 0px); }
}
@media (max-width: 44rem) and (prefers-reduced-motion: no-preference) {
 .bikefvg-service-archive__mobile-toolbar { transition: top .2s ease; }
}

/* test.407 — Service cards: whole-card target + cartographic identity.
   The title remains the semantic primary link and stretches across the card,
   while phone/directions/detail actions stay independently clickable. */
.bikefvg-service-archive__card {
	isolation: isolate;
}

/* Le card servizio restano volutamente pulite: nessun decoro cartografico
   in secondo piano, in tutti i contesti che riusano questo renderer. */
.bikefvg-service-archive__card:not(.has-partner-media) {
	background-image: none;
}

/* card-content was positioned only as a generic local context. Keeping it
   static lets the title hit-area use the card itself as containing block. */
.bikefvg-service-archive__card-content {
	position: static;
}

.bikefvg-service-archive__category {
	display: flex;
	min-width: 0;
	align-items: flex-start;
	gap: .55rem;
}

.bikefvg-service-archive__category-icon {
	display: grid;
	width: 2.35rem;
	height: 2.35rem;
	flex: 0 0 2.35rem;
	place-items: center;
	border: 1px solid color-mix(in srgb, var(--wp--preset--color--accent) 25%, var(--bfvg-line));
	border-radius: .72rem;
	background: color-mix(in srgb, var(--wp--preset--color--accent) 8%, var(--wp--preset--color--paper));
	color: var(--wp--preset--color--accent);
	transition: border-color .18s ease, background-color .18s ease;
}

.bikefvg-service-archive__category-svg {
	display: block;
	width: 1.28rem;
	height: 1.28rem;
	object-fit: contain;
}

.bikefvg-service-archive__category-icon svg {
	fill: none;
	stroke: currentColor;
	stroke-width: 1.8;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.bikefvg-service-archive__category .bikefvg-service-archive__type {
	flex: 1 1 auto;
	padding-right: 0;
}

.bikefvg-service-archive__card:not(.has-partner-media) .bikefvg-service-archive__category {
	padding-right: 7rem;
}

.bikefvg-service-archive__card.is-partner:not(.has-partner-media) .bikefvg-service-archive__category {
	padding-right: 9rem;
}

.bikefvg-service-archive__card:not(.has-partner-media) .bikefvg-service-archive__type,
.bikefvg-service-archive__card.is-partner:not(.has-partner-media) .bikefvg-service-archive__type {
	padding-right: 0;
}

/* Same interaction model used by itinerary cards: the title is the one
   semantic primary link, but its transparent hit-area spans the full card. */
.bikefvg-service-archive__card h2 a::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
	border-radius: var(--bfvg-card-radius);
}

/* Secondary actions must remain real, independent targets above the card link. */
.bikefvg-service-archive__card-actions,
.bikefvg-service-archive__partner-contact,
.bikefvg-service-archive__card-actions a,
.bikefvg-service-archive__partner-contact a {
	position: relative;
	z-index: 2;
}

.bikefvg-service-archive__card h2 a:focus-visible {
	outline: 0;
}

.bikefvg-service-archive__card h2 a:focus-visible::after {
	outline: 3px solid var(--wp--preset--color--ink);
	outline-offset: -3px;
}

/* Feature chips become small pictograms + labels: fast to scan, still text-first. */
.bikefvg-service-archive__bike-flags span {
	gap: .32rem;
	align-items: center;
	background: color-mix(in srgb, var(--wp--preset--color--paper) 62%, transparent);
}

.bikefvg-service-archive__flag-icon {
	display: inline-block;
	width: .92rem;
	height: .92rem;
	flex: 0 0 .92rem;
	background: currentColor;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='7' cy='17' r='3.5'/%3E%3Ccircle cx='18' cy='17' r='3.5'/%3E%3Cpath d='M7 17l4-8h3l4 8M9 13h7M10 9L8 6h3'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='7' cy='17' r='3.5'/%3E%3Ccircle cx='18' cy='17' r='3.5'/%3E%3Cpath d='M7 17l4-8h3l4 8M9 13h7M10 9L8 6h3'/%3E%3C/svg%3E") center / contain no-repeat;
}

.bikefvg-service-archive__bike-flags :is(.is-ricarica_ebike,.is-assistenza_ebike,.is-noleggio_ebike,.is-ebike_ammesse) .bikefvg-service-archive__flag-icon {
	-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M13 2L5 14h7l-1 8 8-12h-7z'/%3E%3C/svg%3E");
	mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M13 2L5 14h7l-1 8 8-12h-7z'/%3E%3C/svg%3E");
}

.bikefvg-service-archive__bike-flags :is(.is-riempimento_borracce,.is-lavaggio_bici) .bikefvg-service-archive__flag-icon {
	-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 2s7 8 7 13a7 7 0 0 1-14 0c0-5 7-13 7-13z'/%3E%3C/svg%3E");
	mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 2s7 8 7 13a7 7 0 0 1-14 0c0-5 7-13 7-13z'/%3E%3C/svg%3E");
}

.bikefvg-service-archive__bike-flags :is(.is-custodia_casco_bagagli,.is-transfer_bagagli_cicloturismo) .bikefvg-service-archive__flag-icon {
	-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='4' y='7' width='16' height='13' rx='2'/%3E%3Cpath d='M9 7V5a3 3 0 0 1 6 0v2M8 12h8'/%3E%3C/svg%3E");
	mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='4' y='7' width='16' height='13' rx='2'/%3E%3Cpath d='M9 7V5a3 3 0 0 1 6 0v2M8 12h8'/%3E%3C/svg%3E");
}

.bikefvg-service-archive__bike-flags :is(.is-kit_piccole_riparazioni,.is-riparazioni) .bikefvg-service-archive__flag-icon {
	-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 6a4 4 0 0 0-5 5L3 17l4 4 6-6a4 4 0 0 0 5-5l-3 3-4-4z'/%3E%3C/svg%3E");
	mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 6a4 4 0 0 0-5 5L3 17l4 4 6-6a4 4 0 0 0 5-5l-3 3-4-4z'/%3E%3C/svg%3E");
}

.bikefvg-service-archive__bike-flags :is(.is-risalita_shuttle,.is-shuttle_recupero,.is-trasporto_biciclette) .bikefvg-service-archive__flag-icon {
	-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 7h11v10H3zM14 10h4l3 4v3h-7z'/%3E%3Ccircle cx='7' cy='18' r='2'/%3E%3Ccircle cx='18' cy='18' r='2'/%3E%3C/svg%3E");
	mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 7h11v10H3zM14 10h4l3 4v3h-7z'/%3E%3Ccircle cx='7' cy='18' r='2'/%3E%3Ccircle cx='18' cy='18' r='2'/%3E%3C/svg%3E");
}

.bikefvg-service-archive__bike-flags :is(.is-informazioni_percorsi,.is-mappe_tracce_gpx,.is-escursioni_guidate) .bikefvg-service-archive__flag-icon {
	-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 5l5-2 6 2 5-2v16l-5 2-6-2-5 2zM9 3v16M15 5v16'/%3E%3C/svg%3E");
	mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 5l5-2 6 2 5-2v16l-5 2-6-2-5 2zM9 3v16M15 5v16'/%3E%3C/svg%3E");
}

.bikefvg-service-archive__bike-flags .is-prenotazione_obbligatoria .bikefvg-service-archive__flag-icon {
	-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='16' rx='2'/%3E%3Cpath d='M7 3v4M17 3v4M3 10h18'/%3E%3C/svg%3E");
	mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='16' rx='2'/%3E%3Cpath d='M7 3v4M17 3v4M3 10h18'/%3E%3C/svg%3E");
}

@media (hover:hover) and (pointer:fine) {
	.bikefvg-service-archive__card:hover .bikefvg-service-archive__category-icon {
		border-color: color-mix(in srgb, var(--wp--preset--color--accent) 48%, var(--bfvg-line));
		background: color-mix(in srgb, var(--wp--preset--color--accent) 12%, var(--wp--preset--color--paper));
	}
}

@media (max-width: 30rem) {
	.bikefvg-service-archive__card:not(.has-partner-media) {
		background-size: 9.5rem auto;
		background-position: right -1.4rem top 4rem;
	}
	.bikefvg-service-archive__category-icon {
		width: 2.15rem;
		height: 2.15rem;
		flex-basis: 2.15rem;
	}
}

@media (prefers-reduced-motion: reduce) {
	.bikefvg-service-archive__category-icon {
		transition: none;
	}
}

/* 0.8.134 — Service filters aligned with the route archive. */
.bikefvg-service-archive .bikefvg-service-archive__filters { padding-block: 1rem; }
.bikefvg-service-archive .bikefvg-service-archive__filters-heading h2 { font-size: 1.3rem; line-height: 1.25; }
.bikefvg-service-archive .bikefvg-service-archive__intents { margin-top: .75rem; }
.bikefvg-service-archive .bikefvg-service-archive__intents a { box-sizing: border-box; min-height: 46px; padding: .55rem .75rem; font-size: .875rem; }
.bikefvg-service-archive .bikefvg-service-archive__filter-form { margin-top: .85rem; padding: 0; border: 0; border-radius: 0; background: transparent; box-shadow: none; }
.bikefvg-service-archive .bikefvg-service-archive__primary-filters { gap: .75rem; }
.bikefvg-service-archive .bikefvg-filter-control { min-width: 0; }
.bikefvg-service-archive .bikefvg-service-archive__filter-form .bikefvg-filter-control :is(input[type="search"], select) { box-sizing: border-box; width: 100%; min-width: 0; height: 46px; min-height: 46px; padding: .55rem .8rem; font-size: 1rem; }
.bikefvg-service-archive .bikefvg-service-archive__submit { height: 46px; min-height: 46px; padding-block: .55rem; }
.bikefvg-service-archive__secondary-filters { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: .5rem 1rem; margin-top: .75rem; padding-top: .5rem; border-top: 1px solid var(--bfvg-line); }
.bikefvg-service-archive .bikefvg-service-archive__secondary-filters .bikefvg-service-archive__verified-check { flex: 0 1 auto; width: auto; margin: 0; }
.bikefvg-service-archive .bikefvg-service-archive__secondary-filters .bikefvg-service-archive__verified-check span { display: inline-flex; align-items: center; gap: .4rem; min-height: 44px; box-sizing: border-box; padding: .5rem .75rem; font-size: .82rem; }
.bikefvg-service-archive__secondary-filters input:checked + span { background: var(--wp--preset--color--accent); color: var(--wp--preset--color--paper); }
.bikefvg-service-archive__secondary-filters input:checked + span::before { content: '✓'; }
@media (min-width: 40rem) and (max-width: 63.999rem) {
 .bikefvg-service-archive .bikefvg-service-archive__primary-filters { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 64rem) {
 .bikefvg-service-archive .bikefvg-service-archive__primary-filters { grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr) minmax(0, 1.4fr) minmax(8rem, .65fr); }
 .bikefvg-service-archive.is-filter-bar-ready .bikefvg-service-archive__filters-panel-inner { padding-block: .75rem; }
 .bikefvg-service-archive__filters-panel-inner .bikefvg-service-archive__intents { margin-top: 0; }
 .bikefvg-service-archive.is-filter-bar-ready .bikefvg-service-archive__mobile-filter-jump[aria-expanded="true"] { background: transparent; color: var(--wp--preset--color--accent); }
}
@media (max-width: 39.999rem) {
 .bikefvg-service-archive .bikefvg-service-archive__primary-filters { grid-template-columns: minmax(0, 1fr); }
}
