/* Canonical itinerary card and grid, shared by archive and territories. */
.bikefvg-route-archive__grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: clamp(1rem, .7rem + 1.2vw, 1.6rem);
}

.bikefvg-route-archive__card {
	position: relative;
	display: flex;
	min-width: 0;
	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;
}

.bikefvg-route-archive__fav {
	position: absolute;
	right: .8rem;
	top: .8rem;
	z-index: 1;
	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;
}

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

/* .253 — editorial status sits on the image, leaving the title at the top of the body. */
.bikefvg-route-archive__media-wrap {
	position: relative;
	flex: 0 0 auto;
}

.bikefvg-route-archive__media-status {
	position: absolute;
	left: .8rem;
	bottom: .8rem;
	max-width: calc(100% - 1.6rem);
	display: flex;
	pointer-events: none;
}

.bikefvg-route-archive__media-status .bikefvg-badge {
	box-sizing: border-box;
	max-width: 100%;
	background: var(--wp--preset--color--panel, #fff);
	box-shadow: 0 1px 4px rgb(0 0 0 / .15);
}

.bikefvg-route-archive__media-status .bikefvg-route-verified {
	flex: 0 0 var(--bfvg-touch);
	width: var(--bfvg-touch);
	height: var(--bfvg-touch);
}

.bikefvg-route-archive__media {
	position: relative;
	display: block;
	aspect-ratio: 16 / 10;
	overflow: hidden;
	background: var(--wp--preset--color--surface-alt);
}

.bikefvg-route-archive__media img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform .3s ease;
}

/* Keep WordPress formatting artifacts out of image geometry in every card context. */
.bikefvg-route-archive__media > br,
.bikefvg-route-archive__media > p:empty { display: none !important; }

@media (hover: hover) and (pointer: fine) {
	.bikefvg-route-archive__card:hover .bikefvg-route-archive__media img {
		transform: scale(1.015);
	}
}

.bikefvg-route-archive__media .bikefvg-badge {
	position: absolute;
	left: .8rem;
	top: .8rem;
	background: color-mix(in srgb, var(--wp--preset--color--paper) 92%, transparent);
}

.bikefvg-route-archive__body {
	display: flex;
	flex: 1;
	flex-direction: column;
	padding: var(--bfvg-card-padding);
}

.bikefvg-route-archive__card.is-text-only .bikefvg-route-archive__body {
	padding-top: 1.25rem;
}

.bikefvg-route-archive__topline.has-closed { flex-wrap: wrap; }

.bikefvg-route-archive__topline {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: .6rem;
	min-height: 1.9rem;
	margin-bottom: .7rem;
}

.bikefvg-route-archive__topline:empty {
	display: none;
}

.bikefvg-route-archive__body h2 {
	margin: 0;
	font-size: clamp(1.45rem, 1.25rem + .7vw, 2rem);
	line-height: 1.06;
	letter-spacing: -.025em;
}

.bikefvg-route-archive__body h2 a {
	color: inherit;
	text-decoration: none;
}

.bikefvg-route-archive__body h2 a:hover {
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: .16em;
}

.bikefvg-route-archive__territory {
	margin: .65rem 0 0;
	color: var(--wp--preset--color--accent);
	font-size: .85rem;
	font-weight: 700;
}

.bikefvg-route-archive__excerpt {
	margin: .75rem 0 0;
	color: var(--wp--preset--color--ink-secondary);
	font-size: .96rem;
	line-height: 1.55;
}

.bikefvg-route-archive__meta {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 0;
	margin-top: auto;
	padding-top: 1rem;
}

.bikefvg-route-archive__meta > span {
	display: grid;
	gap: .2rem;
	min-width: 0;
	padding: .65rem .75rem .65rem 0;
	border-top: 1px solid var(--bfvg-line);
}

.bikefvg-route-archive__meta > span:nth-child(even) {
	padding-left: .75rem;
	border-left: 1px solid var(--bfvg-line);
}

.bikefvg-route-archive__meta small {
	color: var(--wp--preset--color--ink-muted);
	font-size: var(--bfvg-font-meta);
	font-weight: 700;
	line-height: 1.4;
	overflow-wrap: anywhere;
	letter-spacing: .03em;
	text-transform: uppercase;
}

.bikefvg-route-archive__meta strong {
	font-size: .91rem;
}

.bikefvg-route-archive__flags {
	display: flex;
	flex-wrap: wrap;
	gap: .4rem;
	margin-top: .6rem;
}

.bikefvg-route-archive__flags span {
	display: inline-flex;
	padding: .3rem .55rem;
	border: 1px solid var(--bfvg-line);
	border-radius: var(--bfvg-radius-label);
	color: var(--wp--preset--color--ink-secondary);
	font-size: var(--bfvg-font-meta);
	font-weight: 700;
}


.bikefvg-route-relations__card-context {
	margin: -.15rem 0 .65rem;
	font-size: .82rem;
	font-weight: 600;
	color: var(--wp--preset--color--ink-muted, #5f7265);
}

@media (max-width: 64rem) {
	.bikefvg-route-archive__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}
@media (max-width: 44rem) {
	.bikefvg-route-archive__grid { grid-template-columns: 1fr; }
	.bikefvg-route-archive__media { aspect-ratio: 3 / 2; }
}
@media (prefers-reduced-motion: reduce) {
	.bikefvg-route-archive__card,
	.bikefvg-route-archive__media img {
		transition: none;
	}
}

/* test.408 — La card itinerario è un solo componente in ogni contesto
   (archivio, territorio, ricerca, disciplina). Il link nativo del titolo
   copre l'intera card; il preferito resta un'azione indipendente sopra di esso. */
.bikefvg-route-archive__card {
 isolation: isolate;
}
.bikefvg-route-archive__body h2 a::after {
 content: "";
 position: absolute;
 inset: 0;
 z-index: 1;
 border-radius: var(--bfvg-card-radius);
}
.bikefvg-route-archive__fav {
 z-index: 2;
}
.bikefvg-route-archive__body h2 a:focus-visible::after {
 outline: 3px solid var(--wp--preset--color--ink);
 outline-offset: -3px;
}

/* test.447 — il vecchio tracciato a maschera stirata (test.389) e' sostituito da un richiamo
 * a dimensione fissa nel margine sinistro (.bikefvg-route-archive__trail, vedi in fondo). */
.bikefvg-route-archive { overflow-x: clip; }
.bikefvg-route-archive .bikefvg-route-archive__grid {
 position: relative;
 isolation: isolate;
}

/* test.394 — Wide asymmetric terrain beneath cards; no interior cuts or fade. */
.bikefvg-route-archive .bikefvg-route-archive__results { position: relative; isolation: isolate; clip-path: inset(0 -100vmax); }
.bikefvg-route-archive .bikefvg-route-archive__results > .bikefvg-wrap { position: relative; z-index: 1; }
.bikefvg-route-archive .bikefvg-route-archive__contours {
 display: block;
 position: absolute;
 right: 0;
 bottom: 0;
 /* Stessa scala della home (82% fino a 1220px, proporzione 400:372). Nessun riquadro basso che le
    tagli: le linee salgono dietro le card e si interrompono solo al bordo della sezione. */
 width: min(82%, 1220px);
 height: auto;
 aspect-ratio: 400 / 372;
 /* I tracciati sono anelli chiusi che escono dal viewBox (y negativa, x > 400): senza overflow
    visibile il riquadro li taglierebbe di netto a mezz'aria. */
 overflow: visible;
 z-index: 0;
 pointer-events: none;
 color: var(--wp--preset--color--accent, #197080);
 opacity: .38;
}
@media (max-width: 600px) {
 .bikefvg-route-archive .bikefvg-route-archive__contours { width: 88%; }
}
@media (forced-colors: active) {
 .bikefvg-route-archive .bikefvg-route-archive__contours { display: none; }
}

/* test.395 — Opaque pagination surfaces keep terrain behind the controls. */
.bikefvg-route-archive .bikefvg-route-archive__load-more {
 background: var(--wp--preset--color--paper);
}
.bikefvg-route-archive .bikefvg-route-archive__shown {
 background: var(--wp--preset--color--paper);
 padding: .15rem .5rem;
 border-radius: 4px;
}
.bikefvg-route-archive .bikefvg-route-archive__load-more.is-loading {
 opacity: 1;
 color: var(--wp--preset--color--ink-muted);
}

/* test.429 — Schede itinerario: dati e testi allineati tra schede della stessa riga.
 * Con subgrid ogni blocco (titolo, sottotitolo, territorio, estratto, dati, etichette) occupa
 * la stessa riga in tutte le schede, quindi la griglia dei dati parte alla stessa quota anche
 * quando un titolo va su tre righe o manca un elemento. Senza subgrid resta il layout precedente. */
.bikefvg-route-archive__meta :is(strong, .bikefvg-route-rating) {
	font-size: .91rem;
	line-height: 1.3;
}
.bikefvg-route-archive__meta .bikefvg-route-rating { font-weight: 700; }
/* 0.8.128 — Durata e Allenamento senza grassetto, come Distanza e Dislivello. */
.bikefvg-route-archive__meta strong:not(.bikefvg-data),
.bikefvg-route-archive__meta .bikefvg-route-rating { font-weight: 400; }
.bikefvg-route-archive__meta strong.bikefvg-data { font-size: clamp(.8125rem, .79rem + .1vw, .9375rem); }
.bikefvg-route-archive__body h2 {
	font-size: var(--wp--custom--type--card-title);
	line-height: 1.08;
	display: -webkit-box;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 3;
	line-clamp: 3;
	overflow: hidden;
}
.bikefvg-route-archive__excerpt {
	display: -webkit-box;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 3;
	line-clamp: 3;
	overflow: hidden;
}
.bikefvg-route-archive__body .bikefvg-route-relations__card-context {
	margin: .5rem 0 0;
	font-size: .85rem;
	line-height: 1.35;
	font-weight: 600;
	color: var(--wp--preset--color--ink-secondary);
	display: -webkit-box;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 2;
	line-clamp: 2;
	overflow: hidden;
}
@supports (grid-template-rows: subgrid) {
	.bikefvg-route-archive__grid {
		--bfvg-route-gap: clamp(1rem, .7rem + 1.2vw, 1.6rem);
		row-gap: 0;
		column-gap: var(--bfvg-route-gap);
	}
	.bikefvg-route-archive__grid > .bikefvg-route-archive__card {
		display: grid;
		grid-row: span 5;
		grid-template-rows: subgrid;
		row-gap: 0;
		margin-bottom: var(--bfvg-route-gap);
	}
	.bikefvg-route-archive__grid > .bikefvg-route-archive__card > .bikefvg-route-archive__media-wrap { grid-row: 1; }
	.bikefvg-route-archive__grid > .bikefvg-route-archive__card > .bikefvg-route-archive__body {
		grid-row: 2 / span 4;
		display: grid;
		grid-template-rows: subgrid;
		row-gap: 0;
	}
	.bikefvg-route-archive__body > .bikefvg-route-archive__topline { grid-row: 1; }
	.bikefvg-route-archive__body > .bikefvg-route-archive__text { grid-row: 2; }
	.bikefvg-route-archive__body > .bikefvg-route-archive__meta { grid-row: 3; margin-top: 0; align-self: start; }
	.bikefvg-route-archive__body > .bikefvg-route-archive__flags { grid-row: 4; align-self: start; }
}

/* test.447/449 — Richiamo del tratteggio della home nella pagina Itinerari: due segni (uno per lato)
 * nei margini a sinistra e a destra delle card. Stesso tratto della home (2.5, 10.4/7.6, terminale
 * tondo, petrolio, .85). Sono FERMI rispetto allo schermo (position: fixed) mentre le card scorrono;
 * la sezione risultati li ritaglia (clip-path) cosi' non escono su hero, filtri e footer.
 * Poiche' non puntano piu' a una card precisa, terminano con il cerchio con X come nelle altre pagine.
 * Nessuno stiramento: viewBox fisso, tratto non scalante. Visibili solo con margine ampio (>=1500px). */
.bikefvg-route-archive__trail { display: none; }
@media (min-width: 1500px) {
 .bikefvg-route-archive .bikefvg-route-archive__results { clip-path: inset(0 -100vmax); }
 .bikefvg-route-archive .bikefvg-route-archive__trail {
  --bfvg-trail-m: calc((100% - min(var(--bfvg-content), 100% - 2 * var(--bfvg-gutter))) / 2 - 12px);
  --bfvg-trail-w: min(200px, var(--bfvg-trail-m));
  display: block;
  position: fixed;
  z-index: 0;
  top: 24vh;
  left: calc(var(--bfvg-trail-m) - var(--bfvg-trail-w));
  right: auto;
  width: var(--bfvg-trail-w);
  height: auto;
  aspect-ratio: 200 / 90;
  overflow: visible;
  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-route-archive .bikefvg-route-archive__trail--right {
  top: 62vh;
  left: auto;
  right: calc(var(--bfvg-trail-m) - var(--bfvg-trail-w));
 }
 .bikefvg-route-archive__trail path, .bikefvg-route-archive__trail circle { vector-effect: non-scaling-stroke; }
 .bikefvg-route-archive__trail-ring { fill: var(--wp--preset--color--paper); stroke-width: 2; stroke-dasharray: none; }
.bikefvg-route-archive__trail-cross { stroke-width: 2.2; stroke-dasharray: none; }
}
@media (forced-colors: active) { .bikefvg-route-archive__trail { display: none !important; } }
