/* =========================================================================
 * QuoVadis Core v2 — Single & Archive pages
 * Stili per single-qv_poi, single-qv_attivita, single-qv_itinerario
 * e archivi (archive-qv_poi, archive-qv_attivita, archive-qv_itinerario).
 * ========================================================================= */

/* ---------- HERO ---------------------------------------------------------- */
.qv-hero {
	position: relative;
	width: 100%;
	min-height: 320px;
	background-color: var(--qv-neutral-200);
	background-size: cover;
	background-position: center;
	color: var(--qv-neutral-0);
	overflow: hidden;
}

.qv-hero::after {
	content: "";
	position: absolute; inset: 0;
	background: linear-gradient(180deg, rgba(0,0,0,0.10) 0%, rgba(0,0,0,0.65) 100%);
	z-index: 1;
}

.qv-hero__inner {
	position: relative;
	z-index: 2;
	max-width: var(--qv-container-max);
	margin-inline: auto;
	padding: var(--qv-sp-7) var(--qv-sp-4) var(--qv-sp-6);
	min-height: 320px;
	display: flex; flex-direction: column; justify-content: flex-end; gap: var(--qv-sp-3);
}

.qv-hero__zona {
	display: inline-block;
	font-size: var(--qv-fs-sm);
	font-weight: var(--qv-fw-semibold);
	text-transform: uppercase;
	letter-spacing: 0.06em;
	color: var(--qv-green-200);
}

.qv-hero__title {
	font-size: var(--qv-fs-3xl);
	font-weight: var(--qv-fw-extra);
	color: #fff;
	margin: 0;
	line-height: var(--qv-lh-tight);
	text-shadow: 0 2px 12px rgba(0,0,0,0.40);
}

.qv-hero__pills {
	display: flex; flex-wrap: wrap; gap: var(--qv-sp-2);
	margin-top: var(--qv-sp-2);
}

.qv-hero__pill {
	display: inline-flex; align-items: center; gap: 0.4em;
	background: rgba(255,255,255,0.18);
	color: #fff;
	border: 1px solid rgba(255,255,255,0.28);
	backdrop-filter: blur(6px);
	-webkit-backdrop-filter: blur(6px);
	padding: 0.35em 0.85em;
	border-radius: var(--qv-r-full);
	font-size: var(--qv-fs-sm);
	font-weight: var(--qv-fw-medium);
}

@media (min-width: 768px) {
	.qv-hero { min-height: 480px; }
	.qv-hero__inner { min-height: 480px; padding: var(--qv-sp-8) var(--qv-sp-5) var(--qv-sp-7); }
	.qv-hero__title { font-size: var(--qv-fs-4xl); }
}

/* ---------- LAYOUT SINGOLO ----------------------------------------------- */
.qv-single {
	padding-block: var(--qv-sp-6) var(--qv-sp-8);
}

.qv-single__grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--qv-sp-6);
}

@media (min-width: 1024px) {
	.qv-single__grid {
		grid-template-columns: minmax(0, 2fr) minmax(280px, 1fr);
		gap: var(--qv-sp-7);
		align-items: start;
	}
}

.qv-single__main > * + * { margin-top: var(--qv-sp-6); }
.qv-single__aside { display: flex; flex-direction: column; gap: var(--qv-sp-5); }

@media (min-width: 1024px) {
	.qv-single__aside { position: sticky; top: var(--qv-sp-5); }
}

.qv-prose {
	font-size: var(--qv-fs-md);
	line-height: var(--qv-lh-relaxed);
	color: var(--qv-fg);
}
.qv-prose p { margin-bottom: var(--qv-sp-4); }
.qv-prose h2 { font-size: var(--qv-fs-2xl); margin-top: var(--qv-sp-6); }
.qv-prose h3 { font-size: var(--qv-fs-xl); margin-top: var(--qv-sp-5); }
.qv-prose ul, .qv-prose ol { margin: 0 0 var(--qv-sp-4) var(--qv-sp-5); }
.qv-prose li { margin-bottom: var(--qv-sp-2); }

/* ---------- KEY FACTS GRID ---------------------------------------------- */
.qv-facts {
	display: grid;
	grid-template-columns: repeat(2, minmax(0,1fr));
	gap: var(--qv-sp-3);
	padding: var(--qv-sp-5);
	background: var(--qv-bg-alt);
	border: 1px solid var(--qv-border);
	border-radius: var(--qv-r-lg);
}

@media (min-width: 640px) {
	.qv-facts { grid-template-columns: repeat(3, minmax(0,1fr)); }
}
@media (min-width: 1024px) {
	.qv-facts { grid-template-columns: repeat(4, minmax(0,1fr)); }
}

.qv-fact {
	display: flex; flex-direction: column; gap: 0.2em;
	min-width: 0;
}
.qv-fact__label {
	font-size: var(--qv-fs-xs);
	font-weight: var(--qv-fw-semibold);
	text-transform: uppercase;
	letter-spacing: 0.06em;
	color: var(--qv-fg-muted);
}
.qv-fact__value {
	font-size: var(--qv-fs-md);
	font-weight: var(--qv-fw-semibold);
	color: var(--qv-fg);
	word-wrap: break-word;
}

/* ---------- CALLOUT ------------------------------------------------------ */
.qv-callout {
	padding: var(--qv-sp-5);
	background: var(--qv-green-50);
	border-left: 4px solid var(--qv-green-600);
	border-radius: var(--qv-r-md);
}
.qv-callout__title {
	font-size: var(--qv-fs-md);
	font-weight: var(--qv-fw-bold);
	margin: 0 0 var(--qv-sp-2);
	color: var(--qv-green-900);
}
.qv-callout p { margin: 0; color: var(--qv-neutral-800); }

.qv-callout--info { background: var(--qv-info-bg); border-left-color: var(--qv-info); }
.qv-callout--warning { background: var(--qv-warning-bg); border-left-color: var(--qv-warning); }

/* ---------- CARD AVVISO POSIZIONE NON DISPONIBILE ----------------------- */
.qv-no-location {
	padding: var(--qv-sp-5);
	background: var(--qv-bg-alt);
	border: 1px dashed var(--qv-border-strong);
	border-radius: var(--qv-r-md);
	color: var(--qv-fg-muted);
	text-align: center;
}

/* ---------- ASIDE STICKY CTA -------------------------------------------- */
.qv-action-card {
	padding: var(--qv-sp-5);
	background: var(--qv-bg);
	border: 1px solid var(--qv-border);
	border-radius: var(--qv-r-lg);
	box-shadow: var(--qv-shadow);
}
.qv-action-card h3 {
	font-size: var(--qv-fs-md);
	margin: 0 0 var(--qv-sp-3);
}
.qv-action-card__buttons { display: flex; flex-direction: column; gap: var(--qv-sp-2); }

.qv-btn {
	display: inline-flex; align-items: center; justify-content: center; gap: var(--qv-sp-2);
	padding: 0.7em 1.2em;
	border-radius: var(--qv-r-md);
	font-weight: var(--qv-fw-semibold);
	font-size: var(--qv-fs-base);
	border: 1px solid transparent;
	cursor: pointer;
	transition: background var(--qv-tr-fast), color var(--qv-tr-fast), border-color var(--qv-tr-fast), transform var(--qv-tr-fast);
	text-decoration: none;
	min-height: 44px;
	width: 100%;
}
.qv-btn--primary {
	background: var(--qv-green-600); color: #fff;
}
.qv-btn--primary:hover, .qv-btn--primary:focus-visible {
	background: var(--qv-green-700); color: #fff; text-decoration: none;
}
.qv-btn--secondary {
	background: var(--qv-bg); color: var(--qv-fg); border-color: var(--qv-border-strong);
}
.qv-btn--secondary:hover, .qv-btn--secondary:focus-visible {
	background: var(--qv-neutral-100); color: var(--qv-fg); text-decoration: none;
}
.qv-btn--block { width: 100%; }
.qv-btn[disabled],
.qv-btn.is-added {
	background: var(--qv-green-200); color: var(--qv-green-900); cursor: default;
}

/* ---------- MAP ---------------------------------------------------------- */
.qv-map {
	width: 100%;
	height: 320px;
	border-radius: var(--qv-r-lg);
	overflow: hidden;
	border: 1px solid var(--qv-border);
	background: var(--qv-neutral-100);
}
.qv-map--tall { height: 420px; }

/* ---------- CONTACT INFO (ATTIVITA) ------------------------------------- */
.qv-contact {
	display: grid; gap: var(--qv-sp-3);
	padding: var(--qv-sp-5);
	background: var(--qv-bg-alt);
	border: 1px solid var(--qv-border);
	border-radius: var(--qv-r-lg);
}
.qv-contact__row { display: flex; gap: var(--qv-sp-2); align-items: baseline; flex-wrap: wrap; }
.qv-contact__label {
	min-width: 90px;
	font-weight: var(--qv-fw-semibold);
	color: var(--qv-fg-muted);
	font-size: var(--qv-fs-sm);
	text-transform: uppercase;
	letter-spacing: 0.04em;
}
.qv-contact__value { color: var(--qv-fg); word-break: break-word; }

/* ---------- TIER BADGES ------------------------------------------------- */
.qv-tier-badge {
	position: absolute;
	top: var(--qv-sp-2);
	left: var(--qv-sp-2);
	display: inline-block;
	padding: 0.3em 0.7em;
	border-radius: var(--qv-r-full);
	font-size: var(--qv-fs-xs);
	font-weight: var(--qv-fw-bold);
	letter-spacing: 0.05em;
	text-transform: uppercase;
	box-shadow: var(--qv-shadow-sm);
	color: #fff;
	z-index: 2;
}
.qv-tier-badge--ambassador {
	background: linear-gradient(135deg, #f5c518 0%, #b88a05 100%);
	color: #2a1a00;
}
.qv-tier-badge--partner {
	background: linear-gradient(135deg, #cbd5e1 0%, #64748b 100%);
	color: #0f172a;
}
.qv-tier-badge--friend {
	background: linear-gradient(135deg, #d6a07c 0%, #8b5a3c 100%);
	color: #2a1a0a;
}
.qv-tier-badge--consigliata {
	background: var(--qv-neutral-700); color: #fff;
}

/* Tier inline badge in the hero (no absolute positioning) */
.qv-hero .qv-tier-badge {
	position: static;
	display: inline-block;
}

/* Tier hero variant — larger */
.qv-tier-badge--hero {
	font-size: var(--qv-fs-sm);
	padding: 0.45em 1em;
}

/* ---------- PILL ------------------------------------------------------- */
.qv-pill {
	display: inline-block;
	padding: 0.3em 0.7em;
	border-radius: var(--qv-r-full);
	background: var(--qv-neutral-100);
	color: var(--qv-fg);
	font-size: var(--qv-fs-xs);
	font-weight: var(--qv-fw-semibold);
	margin: 0;
}
.qv-pill--sconto {
	background: var(--qv-green-100);
	color: var(--qv-green-900);
}
.qv-pill--difficolta { background: var(--qv-warning-bg); color: var(--qv-warning); }

/* ---------- CARDS GRID --------------------------------------------------- */
.qv-section { margin-top: var(--qv-sp-7); }
.qv-section__title {
	font-size: var(--qv-fs-2xl);
	margin: 0 0 var(--qv-sp-4);
}
.qv-section__lead {
	color: var(--qv-fg-muted);
	margin-bottom: var(--qv-sp-5);
}

.qv-grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--qv-sp-4);
}
@media (min-width: 640px) {
	.qv-grid { grid-template-columns: repeat(2, minmax(0,1fr)); }
}
@media (min-width: 1024px) {
	.qv-grid--3 { grid-template-columns: repeat(3, minmax(0,1fr)); }
	.qv-grid--4 { grid-template-columns: repeat(4, minmax(0,1fr)); }
}

.qv-card {
	display: flex; flex-direction: column;
	background: var(--qv-bg);
	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);
}
.qv-card:hover, .qv-card:focus-within {
	transform: translateY(-2px);
	box-shadow: var(--qv-shadow-md);
}

.qv-card__media {
	display: block;
	position: relative;
	aspect-ratio: 4 / 3;
	background: var(--qv-neutral-100);
	overflow: hidden;
}
.qv-card__media img {
	width: 100%; height: 100%; object-fit: cover; display: block;
}
.qv-card__media-placeholder {
	width: 100%; height: 100%;
	background: linear-gradient(135deg, var(--qv-neutral-100), var(--qv-neutral-200));
}
.qv-card__body {
	padding: var(--qv-sp-4);
	display: flex; flex-direction: column; gap: var(--qv-sp-2);
}
.qv-card__title {
	font-size: var(--qv-fs-md);
	margin: 0;
	line-height: var(--qv-lh-snug);
}
.qv-card__title a { color: var(--qv-fg); text-decoration: none; }
.qv-card__title a:hover, .qv-card__title a:focus-visible { color: var(--qv-link); text-decoration: underline; }

.qv-card__meta {
	font-size: var(--qv-fs-sm);
	color: var(--qv-fg-muted);
	margin: 0;
}
.qv-card__excerpt {
	font-size: var(--qv-fs-sm);
	color: var(--qv-fg-muted);
	line-height: var(--qv-lh-snug);
	margin: 0;
}

/* ---------- LOADING STATES ----------------------------------------------- */
.qv-loading {
	display: flex; align-items: center; justify-content: center;
	min-height: 120px;
	color: var(--qv-fg-muted);
	font-size: var(--qv-fs-sm);
	font-style: italic;
}
.qv-empty {
	padding: var(--qv-sp-5);
	color: var(--qv-fg-muted);
	font-style: italic;
	text-align: center;
	background: var(--qv-bg-alt);
	border: 1px dashed var(--qv-border);
	border-radius: var(--qv-r-md);
}

/* ---------- ITINERARIO TIMELINE ----------------------------------------- */
.qv-timeline { list-style: none; padding: 0; margin: 0; counter-reset: tappa; }
.qv-timeline__item {
	position: relative;
	padding-left: 3.2rem;
	padding-bottom: var(--qv-sp-5);
	border-left: 2px solid var(--qv-green-200);
	margin-left: 1.1rem;
}
.qv-timeline__item:last-child { border-left-color: transparent; padding-bottom: 0; }
.qv-timeline__item::before {
	counter-increment: tappa;
	content: counter(tappa);
	position: absolute;
	left: -1.2rem; top: 0;
	width: 2.2rem; height: 2.2rem;
	border-radius: 50%;
	background: var(--qv-green-600); color: #fff;
	display: flex; align-items: center; justify-content: center;
	font-weight: var(--qv-fw-bold);
	font-size: var(--qv-fs-base);
	box-shadow: 0 0 0 4px var(--qv-bg);
}
.qv-timeline__card {
	display: flex; gap: var(--qv-sp-3);
	background: var(--qv-bg);
	border: 1px solid var(--qv-border);
	border-radius: var(--qv-r-md);
	padding: var(--qv-sp-3);
	transition: box-shadow var(--qv-tr-fast);
}
.qv-timeline__card:hover { box-shadow: var(--qv-shadow); }
.qv-timeline__thumb {
	flex: 0 0 96px;
	width: 96px; height: 96px;
	background: var(--qv-neutral-100);
	border-radius: var(--qv-r-md);
	overflow: hidden;
}
.qv-timeline__thumb img { width: 100%; height: 100%; object-fit: cover; }
.qv-timeline__body { min-width: 0; flex: 1; }
.qv-timeline__body h4 { font-size: var(--qv-fs-md); margin: 0 0 var(--qv-sp-1); }
.qv-timeline__body h4 a { color: var(--qv-fg); text-decoration: none; }
.qv-timeline__body h4 a:hover { color: var(--qv-link); text-decoration: underline; }
.qv-timeline__body p { font-size: var(--qv-fs-sm); color: var(--qv-fg-muted); margin: 0; }

/* ---------- ARCHIVE FILTERS --------------------------------------------- */
.qv-archive {
	padding-block: var(--qv-sp-6) var(--qv-sp-8);
}
.qv-archive__header { margin-bottom: var(--qv-sp-6); }
.qv-archive__title { font-size: var(--qv-fs-3xl); margin: 0 0 var(--qv-sp-2); }
.qv-archive__count { color: var(--qv-fg-muted); margin: 0; font-size: var(--qv-fs-md); }

.qv-archive__layout {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--qv-sp-6);
}
@media (min-width: 1024px) {
	.qv-archive__layout { grid-template-columns: 260px 1fr; }
}

.qv-filters {
	padding: var(--qv-sp-4);
	background: var(--qv-bg-alt);
	border: 1px solid var(--qv-border);
	border-radius: var(--qv-r-lg);
}
@media (min-width: 1024px) {
	.qv-filters { position: sticky; top: var(--qv-sp-5); }
}
.qv-filters__title {
	font-size: var(--qv-fs-md);
	margin: 0 0 var(--qv-sp-3);
}
.qv-filters__group { margin-bottom: var(--qv-sp-4); }
.qv-filters__group:last-child { margin-bottom: 0; }
.qv-filters__group label {
	display: block;
	font-size: var(--qv-fs-xs);
	font-weight: var(--qv-fw-semibold);
	text-transform: uppercase;
	letter-spacing: 0.06em;
	color: var(--qv-fg-muted);
	margin-bottom: var(--qv-sp-2);
}
.qv-filters__group select {
	width: 100%;
	padding: 0.55em 0.7em;
	border: 1px solid var(--qv-border-strong);
	border-radius: var(--qv-r-md);
	background: var(--qv-bg);
	font-family: var(--qv-font);
	font-size: var(--qv-fs-base);
	min-height: 40px;
}

/* ---------- ATTIVITA ARCHIVE GROUPS ------------------------------------- */
.qv-tier-group { margin-bottom: var(--qv-sp-7); }
.qv-tier-group__title {
	display: flex; align-items: center; gap: var(--qv-sp-3);
	font-size: var(--qv-fs-xl);
	margin: 0 0 var(--qv-sp-4);
	padding-bottom: var(--qv-sp-2);
	border-bottom: 2px solid var(--qv-border);
}
.qv-tier-group__title .qv-tier-badge {
	position: static;
}

/* ---------- PAGINATION -------------------------------------------------- */
.qv-pagination {
	margin-top: var(--qv-sp-6);
	display: flex; flex-wrap: wrap; gap: var(--qv-sp-2);
	justify-content: center;
}
.qv-pagination a, .qv-pagination span {
	display: inline-flex; align-items: center; justify-content: center;
	min-width: 40px; min-height: 40px;
	padding: 0 var(--qv-sp-2);
	border: 1px solid var(--qv-border);
	border-radius: var(--qv-r-md);
	background: var(--qv-bg);
	color: var(--qv-fg);
	font-weight: var(--qv-fw-semibold);
	text-decoration: none;
}
.qv-pagination .current {
	background: var(--qv-green-600); color: #fff; border-color: var(--qv-green-600);
}
.qv-pagination a:hover { background: var(--qv-neutral-100); }

/* ---------- ADDRESS / DIRECTIONS ---------------------------------------- */
.qv-address {
	display: flex; flex-direction: column; gap: var(--qv-sp-2);
	padding: var(--qv-sp-4);
	background: var(--qv-bg-alt);
	border-radius: var(--qv-r-md);
}
.qv-address__text {
	font-size: var(--qv-fs-md);
	color: var(--qv-fg);
}
