/* =========================================================================
 * QuoVadis Core v2 — Discovery flow
 * Home hero + search form + results layout + cards.
 * Mobile-first. Usa i token in qv-tokens.css.
 * ========================================================================= */

/* -------------------------------------------------------------------------
 * UTILITIES
 * ----------------------------------------------------------------------- */
.qv-visually-hidden {
	position: absolute !important;
	width: 1px; height: 1px;
	padding: 0; margin: -1px;
	overflow: hidden; clip: rect(0,0,0,0);
	white-space: nowrap; border: 0;
}

.qv-main { display: block; }

/* -------------------------------------------------------------------------
 * BUTTONS
 * ----------------------------------------------------------------------- */
.qv-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: var(--qv-sp-2);
	padding: var(--qv-sp-3) var(--qv-sp-5);
	border-radius: var(--qv-r-md);
	font-family: var(--qv-font);
	font-size: var(--qv-fs-base);
	font-weight: var(--qv-fw-semibold);
	line-height: 1;
	border: 1px solid transparent;
	background: transparent;
	color: inherit;
	cursor: pointer;
	text-decoration: none;
	transition: background var(--qv-tr-fast), color var(--qv-tr-fast),
		border-color var(--qv-tr-fast), box-shadow var(--qv-tr-fast),
		transform var(--qv-tr-fast);
	white-space: nowrap;
}
.qv-btn:hover, .qv-btn:focus-visible { text-decoration: none; }
.qv-btn:active { transform: translateY(1px); }
.qv-btn[disabled], .qv-btn.is-disabled {
	opacity: 0.55; cursor: not-allowed; pointer-events: none;
}

.qv-btn--primary {
	background: var(--qv-green-600);
	color: var(--qv-neutral-0);
	border-color: var(--qv-green-600);
}
.qv-btn--primary:hover,
.qv-btn--primary:focus-visible {
	background: var(--qv-green-700);
	border-color: var(--qv-green-700);
	color: var(--qv-neutral-0);
}

.qv-btn--ghost {
	background: var(--qv-neutral-0);
	color: var(--qv-fg);
	border-color: var(--qv-border-strong);
}
.qv-btn--ghost:hover,
.qv-btn--ghost:focus-visible {
	background: var(--qv-neutral-50);
	border-color: var(--qv-neutral-400);
	color: var(--qv-fg);
}

.qv-btn--sm { padding: var(--qv-sp-2) var(--qv-sp-4); font-size: var(--qv-fs-sm); }
.qv-btn--lg { padding: var(--qv-sp-4) var(--qv-sp-6); font-size: var(--qv-fs-md); }

.qv-btn--icon {
	padding: var(--qv-sp-2);
	border-radius: var(--qv-r-md);
	background: var(--qv-neutral-0);
	color: var(--qv-fg);
	border-color: var(--qv-border-strong);
}
.qv-btn--icon:hover,
.qv-btn--icon:focus-visible {
	background: var(--qv-green-50);
	border-color: var(--qv-green-600);
	color: var(--qv-green-700);
}

/* -------------------------------------------------------------------------
 * INPUT
 * ----------------------------------------------------------------------- */
.qv-input {
	display: block;
	width: 100%;
	padding: var(--qv-sp-3) var(--qv-sp-4);
	font-family: var(--qv-font);
	font-size: var(--qv-fs-base);
	line-height: var(--qv-lh-normal);
	color: var(--qv-fg);
	background: var(--qv-neutral-0);
	border: 1px solid var(--qv-border-strong);
	border-radius: var(--qv-r-md);
	transition: border-color var(--qv-tr-fast), box-shadow var(--qv-tr-fast);
}
.qv-input:focus {
	outline: none;
	border-color: var(--qv-green-600);
	box-shadow: var(--qv-shadow-focus);
}

/* -------------------------------------------------------------------------
 * SEARCH FORM  (premium component — il cuore del prodotto)
 * ----------------------------------------------------------------------- */
.qv-search-form {
	display: grid;
	gap: clamp(var(--qv-sp-4), 2vw, var(--qv-sp-6));
}
.qv-search-form__row { min-width: 0; }
.qv-search-form__label {
	display: block;
	font-size: var(--qv-fs-base);
	font-weight: var(--qv-fw-bold);
	color: var(--qv-fg);
	letter-spacing: -0.01em;
	margin-bottom: var(--qv-sp-3);
}
.qv-search-form__optional {
	font-weight: var(--qv-fw-regular);
	font-size: var(--qv-fs-sm);
	color: var(--qv-fg-muted);
}

/* --- Location field: pin icon + input + geolocate button ----------------- */
.qv-search-form__location-wrap {
	display: flex;
	gap: var(--qv-sp-3);
	position: relative;
}
.qv-search-form__location {
	flex: 1 1 auto;
	padding-left: calc(var(--qv-sp-6) + var(--qv-sp-2));
	height: 56px;
	font-size: var(--qv-fs-md);
}
.qv-search-form__location-wrap .qv-search-form__location-icon {
	position: absolute;
	left: var(--qv-sp-4);
	top: 0;
	height: 56px;
	display: flex;
	align-items: center;
	color: var(--qv-green-600);
	pointer-events: none;
	transition: color var(--qv-tr-fast);
}
.qv-search-form__location:focus ~ .qv-search-form__location-icon,
.qv-search-form__location-wrap:focus-within .qv-search-form__location-icon {
	color: var(--qv-green-700);
}
.qv-search-form__location::placeholder { color: var(--qv-neutral-400); }

.qv-search-form__geoloc {
	flex: 0 0 auto;
	width: 56px;
	height: 56px;
	position: relative;
	border-radius: var(--qv-r-md);
}
.qv-search-form__geoloc-spinner {
	position: absolute;
	width: 18px; height: 18px;
	border: 2px solid var(--qv-green-200);
	border-top-color: var(--qv-green-600);
	border-radius: 50%;
	opacity: 0;
	animation: qv-spin 0.7s linear infinite;
}
.qv-search-form__geoloc.is-loading .qv-search-form__geoloc-icon { opacity: 0; }
.qv-search-form__geoloc.is-loading .qv-search-form__geoloc-spinner { opacity: 1; }

.qv-search-form__hint {
	margin: var(--qv-sp-3) 0 0;
	font-size: var(--qv-fs-sm);
	color: var(--qv-fg-muted);
	display: flex;
	align-items: center;
	gap: var(--qv-sp-2);
}
.qv-search-form__hint.is-error { color: var(--qv-danger); font-weight: var(--qv-fw-medium); }
.qv-search-form__hint.is-success { color: var(--qv-green-700); font-weight: var(--qv-fw-medium); }
.qv-search-form__hint.is-loading { color: var(--qv-fg-muted); }

/* --- Radius slider ------------------------------------------------------- */
.qv-search-form__label--radius {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: var(--qv-sp-3);
}
.qv-search-form__radius-value {
	flex: 0 0 auto;
}
.qv-search-form__radius-value strong {
	display: inline-block;
	min-width: 64px;
	text-align: center;
	padding: var(--qv-sp-1) var(--qv-sp-3);
	border-radius: var(--qv-r-full);
	background: var(--qv-green-50);
	color: var(--qv-green-700);
	font-size: var(--qv-fs-sm);
	font-weight: var(--qv-fw-bold);
	font-variant-numeric: tabular-nums;
}

.qv-slider {
	--qv-slider-fill: 25%;
	-webkit-appearance: none; appearance: none;
	width: 100%;
	height: 8px;
	margin: var(--qv-sp-2) 0;
	background:
		linear-gradient(var(--qv-green-600), var(--qv-green-600)) 0 / var(--qv-slider-fill) 100% no-repeat,
		var(--qv-neutral-200);
	border-radius: var(--qv-r-full);
	outline: none;
	cursor: pointer;
}
.qv-slider::-webkit-slider-thumb {
	-webkit-appearance: none;
	width: 28px; height: 28px;
	background: var(--qv-green-600);
	border: 4px solid var(--qv-neutral-0);
	border-radius: 50%;
	box-shadow: var(--qv-shadow-md);
	cursor: grab;
	transition: transform var(--qv-tr-fast), box-shadow var(--qv-tr-fast);
}
.qv-slider::-moz-range-thumb {
	width: 28px; height: 28px;
	background: var(--qv-green-600);
	border: 4px solid var(--qv-neutral-0);
	border-radius: 50%;
	box-shadow: var(--qv-shadow-md);
	cursor: grab;
	transition: transform var(--qv-tr-fast), box-shadow var(--qv-tr-fast);
}
.qv-slider:hover::-webkit-slider-thumb { transform: scale(1.08); }
.qv-slider:hover::-moz-range-thumb { transform: scale(1.08); }
.qv-slider:active::-webkit-slider-thumb { cursor: grabbing; transform: scale(1.12); }
.qv-slider:active::-moz-range-thumb { cursor: grabbing; transform: scale(1.12); }
.qv-slider:focus-visible::-webkit-slider-thumb { box-shadow: var(--qv-shadow-focus), var(--qv-shadow-md); }
.qv-slider:focus-visible::-moz-range-thumb { box-shadow: var(--qv-shadow-focus), var(--qv-shadow-md); }

.qv-search-form__radius-scale {
	display: flex;
	justify-content: space-between;
	margin-top: var(--qv-sp-2);
	font-size: var(--qv-fs-xs);
	font-weight: var(--qv-fw-medium);
	color: var(--qv-neutral-400);
}

/* --- Zone disclosure ----------------------------------------------------- */
.qv-search-form__row--zone {
	margin: 0;
	border: 1px solid var(--qv-border);
	border-radius: var(--qv-r-md);
	padding: 0 var(--qv-sp-4);
	background: var(--qv-neutral-50);
	transition: border-color var(--qv-tr-fast), background var(--qv-tr-fast);
}
.qv-search-form__row--zone[open] {
	background: var(--qv-neutral-0);
	border-color: var(--qv-border-strong);
}
.qv-search-form__row--zone[open] summary { margin-bottom: var(--qv-sp-3); }
.qv-search-form__row--zone summary {
	cursor: pointer;
	list-style: none;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--qv-sp-3);
	padding: var(--qv-sp-4) 0;
	margin-bottom: 0;
}
.qv-search-form__row--zone summary::-webkit-details-marker { display: none; }
.qv-search-form__row--zone summary:hover { color: var(--qv-green-700); }
.qv-search-form__zone-marker {
	display: inline-flex;
	color: var(--qv-fg-muted);
	transition: transform var(--qv-tr-normal), color var(--qv-tr-fast);
}
.qv-search-form__row--zone[open] .qv-search-form__zone-marker {
	transform: rotate(180deg);
	color: var(--qv-green-600);
}

/* --- Submit + error ------------------------------------------------------ */
.qv-search-form__row--submit {
	display: flex;
	flex-direction: column;
	gap: var(--qv-sp-3);
	align-items: stretch;
}
.qv-search-form__submit {
	width: 100%;
	height: 56px;
	font-size: var(--qv-fs-md);
	font-weight: var(--qv-fw-bold);
	box-shadow: var(--qv-shadow-md);
	position: relative;
}
.qv-search-form__submit:hover {
	box-shadow: var(--qv-shadow-lg);
	transform: translateY(-1px);
}
.qv-search-form__submit:active { transform: translateY(0); }
.qv-search-form__submit-spinner {
	position: absolute;
	left: 50%;
	width: 20px; height: 20px;
	margin-left: -10px;
	border: 2px solid rgba(255,255,255,0.45);
	border-top-color: var(--qv-neutral-0);
	border-radius: 50%;
	opacity: 0;
	animation: qv-spin 0.7s linear infinite;
}
.qv-search-form__submit.is-loading .qv-search-form__submit-icon,
.qv-search-form__submit.is-loading span:not(.qv-search-form__submit-spinner) { opacity: 0; }
.qv-search-form__submit.is-loading .qv-search-form__submit-spinner { opacity: 1; }

.qv-search-form__error {
	margin: 0;
	color: var(--qv-danger);
	font-size: var(--qv-fs-sm);
	font-weight: var(--qv-fw-medium);
	background: var(--qv-danger-bg);
	padding: var(--qv-sp-3) var(--qv-sp-4);
	border-radius: var(--qv-r-md);
	border: 1px solid color-mix(in srgb, var(--qv-danger) 25%, transparent);
}

@keyframes qv-spin { to { transform: rotate(360deg); } }

@media (min-width: 768px) {
	.qv-search-form--large {
		grid-template-columns: minmax(260px, .9fr) minmax(0, 1.1fr);
		grid-template-areas:
			"loc     loc"
			"radius  zone"
			"intents intents"
			"submit  submit";
		gap: var(--qv-sp-4) var(--qv-sp-5);
		align-items: start;
	}
	.qv-search-form--large .qv-search-form__row--location { grid-area: loc; }
	.qv-search-form--large .qv-search-form__row--radius   { grid-area: radius; }
	.qv-search-form--large .qv-search-form__row--intents  { grid-area: intents; }
	.qv-search-form--large .qv-search-form__row--zone     { grid-area: zone; }
	.qv-search-form--large .qv-search-form__row--submit   { grid-area: submit; flex-direction: row; align-items: center; }
	.qv-search-form--large .qv-search-form__submit { width: auto; min-width: 240px; flex: 0 0 auto; }
	.qv-search-form--large .qv-search-form__error { flex: 1 1 auto; }

	.qv-search-form--large .qv-search-form__row--radius,
	.qv-search-form--large .qv-search-form__row--intents {
		padding: 14px;
		border: 1px solid var(--qv-border);
		border-radius: var(--qv-r-md);
		background: color-mix(in srgb, var(--qv-neutral-0) 88%, var(--qv-green-50));
	}

	.qv-search-form--large .qv-search-form__row--zone {
		min-height: 100%;
	}

	.qv-search-form--large .qv-search-form__row--intents .qv-search-form__label {
		margin-bottom: var(--qv-sp-3);
	}

	.qv-search-form--large .qv-chips {
		gap: var(--qv-sp-2);
	}

	.qv-search-form--large .qv-chip {
		padding: 8px 12px;
		font-size: var(--qv-fs-xs);
	}
}

/* Compact (in sidebar Esplora) */
.qv-search-form--compact { gap: var(--qv-sp-4); }
.qv-search-form--compact .qv-search-form__label { font-size: var(--qv-fs-sm); margin-bottom: var(--qv-sp-2); }
.qv-search-form--compact .qv-search-form__location,
.qv-search-form--compact .qv-search-form__geoloc { height: 48px; }
.qv-search-form--compact .qv-search-form__location-wrap .qv-search-form__location-icon { height: 48px; }
.qv-search-form--compact .qv-search-form__submit { height: 48px; font-size: var(--qv-fs-base); }

/* Reset fieldset look */
.qv-search-form__row--intents { border: 0; padding: 0; margin: 0; }
.qv-search-form__row--intents .qv-search-form__label { padding: 0; }

@media (prefers-reduced-motion: reduce) {
	.qv-search-form__submit:hover { transform: none; }
	.qv-slider:hover::-webkit-slider-thumb,
	.qv-slider:active::-webkit-slider-thumb { transform: none; }
	.qv-slider:hover::-moz-range-thumb,
	.qv-slider:active::-moz-range-thumb { transform: none; }
	.qv-search-form__geoloc-spinner,
	.qv-search-form__submit-spinner { animation-duration: 1.4s; }
}

/* -------------------------------------------------------------------------
 * CHIPS
 * ----------------------------------------------------------------------- */
.qv-chips {
	display: flex;
	flex-wrap: wrap;
	gap: var(--qv-sp-3);
}
.qv-chips--sm { gap: var(--qv-sp-2); }

.qv-chip {
	display: inline-flex;
	align-items: center;
	gap: var(--qv-sp-2);
	padding: var(--qv-sp-3) var(--qv-sp-5);
	border-radius: var(--qv-r-full);
	border: 1.5px solid var(--qv-border-strong);
	background: var(--qv-neutral-0);
	color: var(--qv-fg);
	font-size: var(--qv-fs-base);
	font-weight: var(--qv-fw-semibold);
	cursor: pointer;
	transition: background var(--qv-tr-fast), border-color var(--qv-tr-fast),
		color var(--qv-tr-fast), box-shadow var(--qv-tr-fast), transform var(--qv-tr-fast);
	user-select: none;
}
.qv-chip input {
	position: absolute; opacity: 0; pointer-events: none;
}
.qv-chip__label { line-height: 1; }

/* Hidden checkmark that slides in when active */
.qv-chip__check {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 0;
	overflow: hidden;
	color: var(--qv-green-600);
	transition: width var(--qv-tr-normal), margin var(--qv-tr-normal);
}
.qv-chip__check svg { width: 16px; height: 16px; }

.qv-chip:hover {
	border-color: var(--qv-green-500);
	color: var(--qv-green-700);
	transform: translateY(-1px);
}
.qv-chip:active { transform: translateY(0); }

.qv-chip.is-active,
.qv-chip:has(input:checked) {
	background: var(--qv-green-50);
	border-color: var(--qv-green-600);
	color: var(--qv-green-800);
	box-shadow: 0 0 0 1px var(--qv-green-600) inset;
}
.qv-chip.is-active .qv-chip__check,
.qv-chip:has(input:checked) .qv-chip__check {
	width: 16px;
	margin-right: var(--qv-sp-1);
}

.qv-chip:focus-within {
	box-shadow: var(--qv-shadow-focus);
	border-color: var(--qv-green-600);
	outline: none;
}
.qv-chip.is-active:focus-within,
.qv-chip:has(input:checked):focus-within {
	box-shadow: 0 0 0 1px var(--qv-green-600) inset, var(--qv-shadow-focus);
}

.qv-chip--sm {
	padding: var(--qv-sp-2) var(--qv-sp-4);
	font-size: var(--qv-fs-sm);
	font-weight: var(--qv-fw-medium);
}

@media (prefers-reduced-motion: reduce) {
	.qv-chip:hover { transform: none; }
	.qv-chip__check { transition: none; }
}

/* -------------------------------------------------------------------------
 * ESPLORA HEAD
 * ----------------------------------------------------------------------- */
.qv-esplora-head {
	padding: var(--qv-sp-6) 0 var(--qv-sp-4);
	background: var(--qv-bg-alt);
	border-bottom: 1px solid var(--qv-border);
}
.qv-esplora-head__eyebrow {
	margin: 0 0 var(--qv-sp-1);
	font-size: var(--qv-fs-sm);
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--qv-green-700);
	font-weight: var(--qv-fw-semibold);
}
.qv-esplora-head h1 { margin: 0; }
.qv-esplora-head__sub { margin: var(--qv-sp-2) 0 0; color: var(--qv-fg-muted); }
.qv-esplora-body { padding: var(--qv-sp-6) 0 var(--qv-sp-8); }

/* -------------------------------------------------------------------------
 * RESULTS LAYOUT
 * ----------------------------------------------------------------------- */
.qv-results {
	display: grid;
	gap: var(--qv-sp-5);
	grid-template-columns: 1fr;
}

.qv-body [hidden] {
	display: none !important;
}

/* Stato "prompt" (senza lat/lng) */
.qv-results--prompt { place-items: center; }
.qv-results__prompt {
	max-width: 720px;
	margin: 0 auto;
	background: var(--qv-neutral-0);
	border: 1px solid var(--qv-border);
	border-radius: var(--qv-r-lg);
	padding: var(--qv-sp-6);
	box-shadow: var(--qv-shadow);
	text-align: center;
}
.qv-results__prompt h2 { margin: 0 0 var(--qv-sp-2); }
.qv-results__prompt p { color: var(--qv-fg-muted); margin-bottom: var(--qv-sp-5); }
.qv-results__prompt .qv-search-form { text-align: left; }

/* SIDEBAR */
.qv-results__sidebar {
	background: var(--qv-neutral-0);
	border: 1px solid var(--qv-border);
	border-radius: var(--qv-r-lg);
	overflow: hidden;
}
.qv-results__sidebar-toggle {
	display: flex;
	width: 100%;
	align-items: center;
	justify-content: space-between;
	padding: var(--qv-sp-3) var(--qv-sp-4);
	background: var(--qv-neutral-0);
	border: 0;
	border-bottom: 1px solid var(--qv-border);
	font-family: var(--qv-font);
	font-weight: var(--qv-fw-semibold);
	color: var(--qv-fg);
	cursor: pointer;
}
.qv-results__filters {
	padding: var(--qv-sp-4);
	display: none;
}
.qv-results__sidebar.is-open .qv-results__filters { display: block; }

.qv-results__filter-intro {
	margin-bottom: var(--qv-sp-4);
	padding-bottom: var(--qv-sp-4);
	border-bottom: 1px solid var(--qv-border);
}
.qv-results__filter-intro h2 {
	margin: 0;
	font-size: var(--qv-fs-lg);
	line-height: var(--qv-lh-tight);
	letter-spacing: -0.01em;
}
.qv-results__filter-intro p {
	margin: var(--qv-sp-2) 0 0;
	color: var(--qv-fg-muted);
	font-size: var(--qv-fs-sm);
	line-height: var(--qv-lh-snug);
}
.qv-results__filter-kicker,
.qv-results__browse-kicker {
	margin: 0 0 var(--qv-sp-2);
	font-size: var(--qv-fs-xs);
	font-weight: var(--qv-fw-bold);
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--qv-green-700);
}
.qv-results__filter-locked {
	display: grid;
	gap: var(--qv-sp-3);
}
.qv-results__filter-locked .qv-btn {
	width: 100%;
	justify-content: center;
}

/* MAIN */
.qv-results__main { min-width: 0; }

.qv-results__head {
	display: flex;
	flex-direction: column;
	gap: var(--qv-sp-3);
	margin-bottom: var(--qv-sp-4);
}
.qv-results__summary { display: flex; flex-direction: column; gap: 2px; }
.qv-results__count { font-weight: var(--qv-fw-semibold); font-size: var(--qv-fs-lg); }
.qv-results__origin { color: var(--qv-fg-muted); font-size: var(--qv-fs-sm); }

.qv-results__browse-head {
	margin-bottom: var(--qv-sp-5);
	padding: var(--qv-sp-5);
	border: 1px solid var(--qv-border);
	border-radius: var(--qv-r-lg);
	background: var(--qv-neutral-0);
	box-shadow: var(--qv-shadow-sm);
}
.qv-results__browse-head h2 {
	margin: 0;
	font-size: var(--qv-fs-2xl);
	line-height: var(--qv-lh-tight);
	letter-spacing: -0.02em;
}
.qv-results__browse-head p:last-child {
	margin: var(--qv-sp-2) 0 0;
	max-width: 64ch;
	color: var(--qv-fg-muted);
}

.qv-results__view-toggle {
	display: inline-flex;
	border: 1px solid var(--qv-border-strong);
	border-radius: var(--qv-r-md);
	overflow: hidden;
	align-self: flex-start;
}
.qv-results__view {
	padding: var(--qv-sp-2) var(--qv-sp-4);
	background: var(--qv-neutral-0);
	border: 0;
	border-right: 1px solid var(--qv-border-strong);
	font-family: var(--qv-font);
	font-size: var(--qv-fs-sm);
	font-weight: var(--qv-fw-medium);
	cursor: pointer;
	color: var(--qv-fg);
}
.qv-results__view:last-child { border-right: 0; }
.qv-results__view.is-active {
	background: var(--qv-green-600);
	color: var(--qv-neutral-0);
}

/* Hide "split" toggle below desktop */
.qv-results__view--split { display: none; }

/* LAYOUT (list / map / split) */
.qv-results__layout {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--qv-sp-5);
}
.qv-results__layout[data-qv-layout="list"] .qv-results__map-wrap { display: none; }
.qv-results__layout[data-qv-layout="map"]  .qv-results__grid-wrap { display: none; }

/* Mappa */
.qv-results__map-wrap {
	position: relative;
	border-radius: var(--qv-r-lg);
	overflow: hidden;
	border: 1px solid var(--qv-border);
	min-height: 360px;
}
.qv-results__map {
	width: 100%;
	height: 480px;
}
.qv-map-error {
	position: absolute; inset: 0;
	display: grid; place-items: center;
	background: var(--qv-neutral-50);
	text-align: center;
	padding: var(--qv-sp-5);
}
.qv-map-error p { margin: 0 0 var(--qv-sp-3); color: var(--qv-fg-muted); }

/* Empty / Error / Load more */
.qv-results__empty,
.qv-results__error {
	background: var(--qv-neutral-0);
	border: 1px dashed var(--qv-border-strong);
	border-radius: var(--qv-r-lg);
	padding: var(--qv-sp-6);
	text-align: center;
}
.qv-results__empty h3,
.qv-results__error h3 { margin-top: 0; }
.qv-results__empty p { color: var(--qv-fg-muted); }
.qv-results__empty-suggest {
	display: flex; flex-wrap: wrap; gap: var(--qv-sp-2);
	justify-content: center; margin-top: var(--qv-sp-4);
}
.qv-results__more { text-align: center; margin-top: var(--qv-sp-5); }

/* Tablet */
@media (min-width: 768px) {
	.qv-results__head {
		flex-direction: row; align-items: center; justify-content: space-between;
	}
}

/* Desktop: sidebar fissa + main */
@media (min-width: 1024px) {
	.qv-results {
		grid-template-columns: minmax(260px, 300px) minmax(0, 1fr);
		align-items: start;
	}
	.qv-results__sidebar {
		position: sticky;
		top: calc(var(--qv-header-h) + var(--qv-sp-4));
		max-height: calc(100svh - var(--qv-header-h) - var(--qv-sp-6));
		overflow: auto;
	}
	.qv-results__sidebar-toggle { display: none; }
	.qv-results__filters { display: block; }
	.qv-results__view--split { display: inline-flex; }
	.qv-results__layout[data-qv-layout="split"] {
		grid-template-columns: 1fr 1fr;
	}
	.qv-results__layout[data-qv-layout="split"] .qv-results__map {
		height: 100%;
		min-height: 600px;
		position: sticky;
		top: calc(var(--qv-header-h) + var(--qv-sp-4));
	}
}

/* -------------------------------------------------------------------------
 * GRID + CARDS
 * ----------------------------------------------------------------------- */
.qv-grid {
	display: grid;
	gap: var(--qv-sp-5);
	grid-template-columns: 1fr;
}
@media (min-width: 540px) {
	.qv-grid--poi { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 1024px) {
	.qv-grid--poi { grid-template-columns: repeat(3, 1fr); }
}
.qv-results__layout[data-qv-layout="split"] .qv-grid--poi {
	grid-template-columns: 1fr;
}
@media (min-width: 1400px) {
	.qv-results__layout[data-qv-layout="split"] .qv-grid--poi {
		grid-template-columns: repeat(2, 1fr);
	}
}

.qv-card {
	display: flex;
	flex-direction: column;
	background: var(--qv-neutral-0);
	border: 1px solid var(--qv-border);
	border-radius: var(--qv-r-lg);
	overflow: hidden;
	transition: transform var(--qv-tr-fast), box-shadow var(--qv-tr-fast), border-color var(--qv-tr-fast);
}
.qv-card:hover {
	transform: translateY(-2px);
	box-shadow: var(--qv-shadow-md);
	border-color: var(--qv-border-strong);
}

.qv-card__media-link { display: block; color: inherit; }
.qv-card__media {
	position: relative;
	aspect-ratio: 16 / 10;
	background: var(--qv-neutral-100);
	overflow: hidden;
}
.qv-card__media img {
	width: 100%; height: 100%; object-fit: cover;
	transition: transform var(--qv-tr-slow);
}
.qv-card:hover .qv-card__media img { transform: scale(1.04); }
.qv-card__media-placeholder {
	width: 100%; height: 100%;
	background:
		linear-gradient(135deg, var(--qv-green-100) 0%, var(--qv-blue-100) 100%);
}
.qv-card__body {
	display: flex;
	flex-direction: column;
	gap: var(--qv-sp-2);
	padding: var(--qv-sp-4);
	flex: 1 1 auto;
}
.qv-card__title {
	margin: 0;
	font-size: var(--qv-fs-md);
	font-weight: var(--qv-fw-bold);
	line-height: var(--qv-lh-tight);
}
.qv-card__title a { color: var(--qv-fg); }
.qv-card__title a:hover { color: var(--qv-green-700); text-decoration: none; }
.qv-card__meta {
	display: flex; flex-wrap: wrap; gap: var(--qv-sp-2);
}
.qv-card__pill {
	display: inline-flex;
	padding: 2px var(--qv-sp-2);
	border-radius: var(--qv-r-full);
	font-size: var(--qv-fs-xs);
	font-weight: var(--qv-fw-semibold);
	background: var(--qv-neutral-100);
	color: var(--qv-fg-muted);
	line-height: 1.4;
}
.qv-card__pill--zona { background: var(--qv-green-50); color: var(--qv-green-800); }
.qv-card__pill--durata { background: var(--qv-blue-50); color: var(--qv-blue-700); }
.qv-card__pill--distance {
	position: absolute;
	top: var(--qv-sp-2);
	left: var(--qv-sp-2);
	background: rgba(0,0,0,0.65);
	color: var(--qv-neutral-0);
	padding: var(--qv-sp-1) var(--qv-sp-3);
	border-radius: var(--qv-r-full);
	font-size: var(--qv-fs-xs);
	font-weight: var(--qv-fw-semibold);
}
.qv-card__excerpt {
	margin: var(--qv-sp-1) 0 0;
	color: var(--qv-fg-muted);
	font-size: var(--qv-fs-sm);
	flex: 1 1 auto;
}
.qv-card__actions {
	display: flex; gap: var(--qv-sp-2);
	margin-top: var(--qv-sp-3);
	flex-wrap: wrap;
}
.qv-card__pick.is-picked {
	background: var(--qv-green-50);
	border-color: var(--qv-green-600);
	color: var(--qv-green-800);
}

/* -------------------------------------------------------------------------
 * SKELETON
 * ----------------------------------------------------------------------- */
.qv-grid--skeleton { display: grid; }
.qv-card--skeleton { pointer-events: none; }
.qv-card--skeleton .qv-card__media {
	background: linear-gradient(90deg, var(--qv-neutral-100), var(--qv-neutral-200), var(--qv-neutral-100));
	background-size: 200% 100%;
	animation: qv-skel 1.4s ease-in-out infinite;
}
.qv-skel {
	background: linear-gradient(90deg, var(--qv-neutral-100), var(--qv-neutral-200), var(--qv-neutral-100));
	background-size: 200% 100%;
	animation: qv-skel 1.4s ease-in-out infinite;
	border-radius: var(--qv-r-sm);
	height: 14px;
	margin-bottom: var(--qv-sp-2);
}
.qv-skel--title { height: 22px; width: 70%; }
.qv-skel--line  { width: 100%; }
.qv-skel--short { width: 50%; }
@keyframes qv-skel {
	0%   { background-position: 200% 0; }
	100% { background-position: -200% 0; }
}

/* -------------------------------------------------------------------------
 * LEAFLET tweaks (popup mini-card)
 * ----------------------------------------------------------------------- */
.qv-map-popup { font-family: var(--qv-font); min-width: 200px; }
.qv-map-popup__thumb {
	display: block; width: 100%; height: 100px; object-fit: cover;
	margin-bottom: var(--qv-sp-2); border-radius: var(--qv-r-sm);
}
.qv-map-popup__title {
	margin: 0 0 var(--qv-sp-1);
	font-size: var(--qv-fs-sm);
	font-weight: var(--qv-fw-bold);
	color: var(--qv-fg);
}
.qv-map-popup__title a { color: var(--qv-fg); }
.qv-map-popup__title a:hover { color: var(--qv-green-700); }
.qv-map-popup__meta {
	font-size: var(--qv-fs-xs);
	color: var(--qv-fg-muted);
	margin: 0 0 var(--qv-sp-2);
}
.qv-map-popup__actions { display: flex; gap: var(--qv-sp-2); }
.qv-map-popup__actions .qv-btn { flex: 1; }
