/* ─── Reset & base ─────────────────────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body {
  background: #FBF6EA;
  color: #171311;
  font-family: 'Work Sans', system-ui, sans-serif;
  font-size: 16px;
  line-height: 1.55;
  padding-top: 87px; /* compensa header fixed (16+54+16+1) */
}
a { text-decoration: none; color: inherit; }
button { font-family: inherit; cursor: pointer; line-height: 1; }
img { display: block; width: 100%; height: 100%; object-fit: cover; }
blockquote { margin: 0; }
address { font-style: normal; }
details summary { list-style: none; }
details summary::-webkit-details-marker { display: none; }

/* Screen-reader only */
.sr-only {
  position: absolute; width: 1px; height: 1px;
  padding: 0; margin: -1px; overflow: hidden;
  clip: rect(0,0,0,0); white-space: nowrap; border: 0;
}

/* ─── Tokens ────────────────────────────────────────────────────────────── */
:root {
  --beige: #EFE1C5;
  --dark:  #6B2B1A;
  --ink:   #171311;
  --muted: rgba(23,19,17,0.55);
  --line:  rgba(23,19,17,0.18);
}

/* ─── Scroll-reveal ─────────────────────────────────────────────────────── */
.reveal {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity .9s cubic-bezier(.2,.7,.2,1),
              transform .9s cubic-bezier(.2,.7,.2,1);
}
.reveal.visible { opacity: 1; transform: translateY(0); }
.reveal[data-delay="60"]  { transition-delay:  60ms; }
.reveal[data-delay="80"]  { transition-delay:  80ms; }
.reveal[data-delay="120"] { transition-delay: 120ms; }
.reveal[data-delay="160"] { transition-delay: 160ms; }
.reveal[data-delay="240"] { transition-delay: 240ms; }
.reveal[data-delay="300"] { transition-delay: 300ms; }
.reveal[data-delay="360"] { transition-delay: 360ms; }

/* ─── Folio ─────────────────────────────────────────────────────────────── */
.folio {
  display: flex; align-items: flex-start; justify-content: space-between;
  border-top: 1px solid var(--ink);
  padding-top: 5px; margin-bottom: 56px;
  font-size: 11px; letter-spacing: .22em; text-transform: uppercase;
  font-feature-settings: "tnum";
}

/* ─── Masthead ───────────────────────────────────────────────────────────── */
.masthead {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 200;
  padding: 16px 56px;
  border-bottom: 1px solid var(--ink);
  display: flex; align-items: center; justify-content: space-between;
  font-size: 12px; letter-spacing: .18em; text-transform: uppercase;
  background: rgba(251,246,234,.96);
  backdrop-filter: blur(8px);
}
/* Quando i link del nav vanno su due righe → tutto allineato in alto */
.masthead.masthead--wrapped { align-items: flex-start; }

.masthead-brand {
  display: block;
  line-height: 0;
}
.masthead-logo {
  height: 54px;
  width: auto;
  display: block;
  object-fit: contain;
  /* SVG: nessun mix-blend-mode. PNG con sfondo bianco: usa multiply */
}
img.masthead-logo[src$=".png"] { mix-blend-mode: normal; }
img.masthead-logo[src$=".svg"] { mix-blend-mode: normal; }
/* Wordmark testo — fallback quando igino-logo.png non è ancora presente */
.masthead-wordmark {
  display: flex;
  flex-direction: column;
  line-height: 1;
  gap: 2px;
  letter-spacing: normal;
  text-transform: none;
}
.masthead-wordmark small {
  font-size: 9px;
  letter-spacing: .28em;
  text-transform: uppercase;
  color: var(--muted);
  font-weight: 400;
}
.masthead-wordmark strong {
  font-size: 20px;
  letter-spacing: .32em;
  text-transform: uppercase;
  color: var(--dark);
  font-weight: 700;
  font-family: 'DM Serif Display', serif;
}
/* Badge Booking.com stile */
.booking-badge {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  text-decoration: none;
  color: var(--ink);
}
.booking-badge-score {
  background: #003580;
  color: #fff;
  font-family: var(--sans);
  font-size: 17px;
  font-weight: 700;
  padding: 5px 9px;
  border-radius: 4px 4px 4px 0;
  line-height: 1;
  letter-spacing: 0;
  text-transform: none;
}
.booking-badge-label {
  line-height: 1.35;
  letter-spacing: 0;
}
.booking-badge-label strong {
  display: block;
  font-size: 13px;
  font-weight: 600;
  text-transform: none;
  color: var(--ink);
}
.booking-badge-label small {
  font-size: 11px;
  opacity: .55;
  text-transform: none;
  letter-spacing: .04em;
}
.masthead-nav { display: flex; align-items: center; gap: 18px; }
.masthead-nav a { font-size: 11px; letter-spacing: .08em; }
.masthead-nav a:hover { opacity: .6; }
.masthead-nav a[aria-current="page"] {
  border-bottom: 1.5px solid var(--ink); padding-bottom: 2px;
}
/* ─── Selettore lingua a tendina ────────────────────────────────────────── */
.masthead-lang {
  position: relative;
  margin-left: 12px;
  padding-left: 16px;
  border-left: 1px solid var(--line);
  flex-shrink: 0;
}
/* Pulsante bandiera corrente */
.lang-current {
  display: flex;
  align-items: center;
  gap: 5px;
  background: none;
  border: none;
  cursor: pointer;
  padding: 4px 6px;
  border-radius: 6px;
  transition: background .15s;
  color: var(--muted);
}
.lang-current:hover { background: rgba(23,19,17,.07); color: var(--ink); }
/* Bandiere flat — flag-icons */
.lang-flag {
  display: inline-block;
  flex-shrink: 0;
  border-radius: 2px;
  box-shadow: 0 0 0 1px rgba(0,0,0,.12);
  overflow: hidden;
  background-size: cover;
  background-position: center;
}
.lang-flag--btn {
  width: 28px;
  height: 20px;
}
.lang-flag--opt {
  width: 20px;
  height: 14px;
}
.lang-chevron {
  display: flex;
  align-items: center;
  transition: transform .22s ease;
}
.masthead-lang.open .lang-chevron { transform: rotate(180deg); }
/* Dropdown panel */
.lang-dropdown {
  position: absolute;
  top: calc(100% + 10px);
  right: 0;
  background: #fff;
  border: 1px solid rgba(23,19,17,.14);
  border-radius: 10px;
  box-shadow: 0 8px 28px rgba(23,19,17,.13);
  min-width: 140px;
  padding: 6px;
  display: none;
  z-index: 400;
}
.masthead-lang.open .lang-dropdown { display: block; }
/* Opzioni lingua */
.lang-option {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 9px 12px;
  border-radius: 6px;
  font-family: var(--sans);
  font-size: 13px;
  font-weight: 400;
  letter-spacing: .01em;
  text-transform: none;
  color: var(--ink);
  transition: background .15s;
}
.lang-option:hover { background: rgba(23,19,17,.05); }
.lang-option--current { font-weight: 600; }
/* .lang-option img rimosso — si usa .lang-flag--opt */

/* Mobile nav toggle */
.nav-toggle {
  display: none; flex-direction: column; gap: 5px;
  background: none; border: none; padding: 4px; cursor: pointer;
}
.nav-toggle span { display: block; width: 22px; height: 1.5px; background: var(--ink); }

/* ─── Hero ───────────────────────────────────────────────────────────────── */
.hero-grid {
  display: grid;
  grid-template-columns: 1fr 1.4fr;
  min-height: 720px;
  position: relative;   /* contiene l'immagine assoluta */
  overflow: hidden;
}
/* ── Testo hero: colonna sinistra trasparente sopra la foto ── */
.hero-text {
  padding: 64px 56px 80px;
  display: flex; flex-direction: column; justify-content: space-between; gap: 24px;
  position: relative; z-index: 2;
  color: #fff;
  /* gradiente: scuro a sinistra → trasparente a destra per leggibilità */
  background: linear-gradient(to right, rgba(10,7,5,.60) 0%, rgba(10,7,5,.06) 100%);
}
/* Logo hero: 4/5 della larghezza sezione, leggermente sotto il centro */
.hero-text-logo {
  position: absolute;
  left: 80%;
  top: 58%;
  transform: translate(-50%, -50%);
  z-index: 3;
  pointer-events: none;
  display: flex;
  align-items: center;
  justify-content: center;
}
.hero-text-logo-img {
  /* dimensione dinamica: scala con la finestra, min 260px — max 560px */
  width: clamp(260px, 26vw, 560px) !important;
  height: auto !important;
  max-width: none !important;
  max-height: none !important;
  object-fit: contain !important;
  display: block !important;
  filter: drop-shadow(0 4px 28px rgba(0,0,0,.55));
  animation: hero-logo-fadein 1.4s cubic-bezier(.22,1,.36,1) 0.3s both;
}
@media (prefers-reduced-motion: reduce) {
  .hero-text-logo-img { animation: none; opacity: 1; }
}
/* Colori testo adattati all'overlay scuro */
.hero-eyebrow { font-size: 11px; letter-spacing: .22em; text-transform: uppercase; color: rgba(255,255,255,.68); margin-bottom: 32px; }
.hero-h1 {
  font-family: 'DM Serif Display', serif;
  font-size: clamp(64px, 8vw, 116px);
  line-height: .92; font-weight: 400;
  margin: 0; letter-spacing: -.035em; text-wrap: balance;
  color: #fff;
}
.hero-h1 em { font-style: italic; color: var(--beige); }
.hero-body { max-width: 420px; }
.hero-lede { font-size: 17px; line-height: 1.55; margin-bottom: 28px; color: rgba(255,255,255,.88); }
.hero-drop {
  font-family: 'DM Serif Display', serif;
  font-size: 56px; line-height: .85;
  float: left; margin-right: 10px; margin-top: 6px; color: var(--beige);
}
.hero-btns { display: flex; gap: 16px; align-items: center; flex-wrap: wrap; }
/* Pulsante hero: outline bianco su sfondo semitrasparente */
.hero-text .btn-solid {
  background: rgba(255,255,255,.14);
  color: #fff;
  border: 1.5px solid rgba(255,255,255,.50);
  backdrop-filter: blur(6px);
}
.hero-text .btn-solid:hover { background: rgba(255,255,255,.28); opacity: 1; }
/* ── Immagine: sfondo full-width assoluto ── */
.hero-image {
  position: absolute;
  inset: 0;
  z-index: 0;
  overflow: hidden;
  border: none;
  /* forza layer GPU sul container → elimina righe di rendering durante l'animazione */
  transform: translateZ(0);
  -webkit-transform: translateZ(0);
}
.hero-image img,
.hero-image video {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover;
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
}
/* Overlay scuro leggero sul video per garantire contrasto del testo */
.hero-image::after {
  content: '';
  position: absolute; inset: 0;
  background: linear-gradient(to right, rgba(23,19,17,.45) 0%, rgba(23,19,17,.15) 60%, rgba(23,19,17,.05) 100%);
  pointer-events: none;
  z-index: 1;
}
.hero-caption {
  position: absolute; right: 24px; bottom: 24px; max-width: 280px;
  padding: 16px; background: rgba(251,246,234,.92);
  font-size: 12px; line-height: 1.5;
}
.hero-caption strong { font-weight: 600; letter-spacing: .04em; }

/* ─── Buttons ────────────────────────────────────────────────────────────── */
.btn-solid {
  display: inline-block;
  background: var(--ink); color: #FBF6EA; border: none;
  padding: 15px 26px; border-radius: 0;
  font-size: 13px; letter-spacing: .14em;
  text-transform: uppercase; font-weight: 500;
  transition: opacity .2s;
}
.btn-solid:hover { opacity: .82; }
.btn-underline {
  display: inline-block;
  background: transparent; color: var(--ink); border: none;
  border-bottom: 1.5px solid var(--ink); padding: 6px 0;
  font-size: 13px; letter-spacing: .14em;
  text-transform: uppercase; font-weight: 500; border-radius: 0;
  transition: opacity .2s;
}
.btn-underline:hover { opacity: .6; }
.btn-ghost-beige {
  display: inline-block;
  background: transparent; color: var(--beige);
  border: 1px solid var(--beige); padding: 15px 28px; border-radius: 0;
  font-size: 13px; letter-spacing: .16em;
  text-transform: uppercase; font-weight: 500; font-family: inherit;
  transition: background .2s, color .2s;
}
.btn-ghost-beige:hover { background: var(--beige); color: var(--dark); }
.btn-ghost {
  display: inline-block;
  background: transparent; color: var(--ink);
  border: 1.5px solid var(--ink);
  padding: 14px 26px; border-radius: 0;
  font-size: 13px; letter-spacing: .14em;
  text-transform: uppercase; font-weight: 500; font-family: inherit;
  transition: background .2s, color .2s;
}
.btn-ghost:hover { background: var(--ink); color: #FBF6EA; }
.pricing-btn {
  display: inline-block;
  background: var(--ink); color: #FBF6EA; border: none;
  padding: 17px 30px; border-radius: 0;
  font-size: 13px; letter-spacing: .16em;
  text-transform: uppercase; font-weight: 500; font-family: inherit;
  transition: opacity .2s;
}
.pricing-btn:hover { opacity: .82; }
.btn-final {
  display: inline-block;
  background: var(--beige); color: var(--dark); border: none;
  padding: 20px 44px; border-radius: 0;
  font-size: 14px; letter-spacing: .18em;
  text-transform: uppercase; font-weight: 600; font-family: inherit;
  transition: opacity .2s;
}
.btn-final:hover { opacity: .85; }

/* ─── Strip ──────────────────────────────────────────────────────────────── */
.strip {
  border-top: 1px solid var(--ink);
  padding: 22px 56px;
  display: grid; grid-template-columns: repeat(4,1fr); gap: 32px;
  font-size: 12px; letter-spacing: .16em; text-transform: uppercase;
}
.strip-item-label { color: var(--muted); font-size: 11px; margin-bottom: 6px; }
.strip-item-value {
  text-transform: none; letter-spacing: .02em;
  font-size: 15px; font-weight: 500;
}

/* ─── Pull quote ─────────────────────────────────────────────────────────── */
.pullquote-section { padding: 48px 56px 80px; }
.pullquote {
  font-family: 'DM Serif Display', serif;
  font-size: clamp(32px,5vw,64px); line-height: 1.1; font-weight: 400;
  margin: 0; letter-spacing: -.015em;
  max-width: 1100px; text-wrap: balance;
}
.pullquote em { font-style: italic; color: var(--dark); }
.pullquote-attribution {
  margin-top: 40px; font-size: 12px;
  letter-spacing: .18em; text-transform: uppercase; color: var(--muted);
}

/* ─── Benefits ───────────────────────────────────────────────────────────── */
.benefits-section { padding: 24px 56px 120px; }
.benefits-grid {
  display: grid; grid-template-columns: repeat(3,1fr);
  gap: 0; border-top: 1px solid var(--ink);
}
.benefit-card {
  padding: 48px 32px 48px 0;
  min-height: 340px;
  display: flex; flex-direction: column; gap: 0;
}
.benefit-card:not(:first-child) { padding-left: 32px; }
.benefit-card:not(:last-child) { border-right: 1px solid var(--ink); }

/* Icon box */
.benefit-icon-wrap {
  width: 68px; height: 68px;
  background: var(--ink);
  border-radius: 8px;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
  margin-bottom: 32px;
  transition: transform .35s cubic-bezier(.22,1,.36,1), background .25s;
}
.benefit-card:hover .benefit-icon-wrap {
  transform: translateY(-6px);
  background: var(--dark);
}

/* Card body */
.benefit-card-body { display: flex; flex-direction: column; }
.benefit-num {
  display: block;
  font-family: 'DM Sans', sans-serif;
  font-size: 10px; letter-spacing: .16em; text-transform: uppercase;
  color: var(--muted); font-weight: 500;
  margin-bottom: 8px;
}
.benefit-title {
  font-family: 'DM Serif Display', serif;
  font-size: 26px; line-height: 1.15; font-weight: 400;
  margin: 0 0 14px; letter-spacing: -.005em;
}
.benefit-text { margin: 0; font-size: 15px; line-height: 1.65; opacity: .75; }

/* ─── Why ────────────────────────────────────────────────────────────────── */
.why-section { padding: 48px 56px 120px; background: var(--beige); }
.why-grid {
  display: grid; grid-template-columns: 1fr 1fr;
  gap: 64px; align-items: flex-start;
}
.why-h2 {
  font-family: 'DM Serif Display', serif;
  font-size: clamp(48px,6vw,88px); line-height: .95; font-weight: 400;
  margin: 0; letter-spacing: -.025em; text-wrap: balance;
}
.why-h2 em { font-style: italic; color: var(--dark); }
.why-image { margin-top: 48px; aspect-ratio: 4/3; overflow: hidden; position: relative; }
.why-image img { width: 100%; height: 100%; object-fit: cover; }
.why-image-label {
  position: absolute; left: 14px; top: 14px;
  font-size: 10px; letter-spacing: .12em; text-transform: uppercase;
  color: rgba(255,255,255,.65); font-weight: 500;
}
.why-text { padding-top: 24px; }
.why-para { font-size: 17px; line-height: 1.65; margin: 0; }
.why-para + .why-para { margin-top: 24px; }
.why-bullets {
  list-style: none;
  margin: 28px 0 0 0;
  padding: 0;
  border-top: 1px solid rgba(23,19,17,.12);
}
.why-bullets li {
  position: relative;
  padding: 10px 0 10px 20px;
  border-bottom: 1px solid rgba(23,19,17,.08);
  font-size: 14px;
  line-height: 1.45;
  color: var(--ink);
  font-weight: 500;
}
.why-bullets li::before {
  content: '—';
  position: absolute;
  left: 0;
  color: var(--dark);
  font-weight: 700;
}
.why-drop {
  font-family: 'DM Serif Display', serif;
  font-size: 64px; line-height: .85;
  float: left; margin-right: 10px; margin-top: 4px; color: var(--dark);
}
.why-points {
  margin-top: 40px; padding-top: 32px; border-top: 1px solid var(--ink);
  display: grid; grid-template-columns: 1fr 1fr; gap: 16px;
}
.why-point { display: flex; gap: 10px; font-size: 14px; }
.why-point-plus {
  color: var(--dark); font-family: 'DM Serif Display', serif;
  font-size: 20px; line-height: 1;
}

/* ─── Location ───────────────────────────────────────────────────────────── */
.location-section { padding: 48px 56px 120px; }
.location-h2 {
  font-family: 'DM Serif Display', serif;
  font-size: clamp(40px,5.5vw,76px); line-height: 1; font-weight: 400;
  margin: 0 0 56px; letter-spacing: -.02em; text-wrap: balance;
}
.location-h2 em { font-style: italic; color: var(--dark); }
.location-grid {
  display: grid; grid-template-columns: repeat(4,1fr);
  gap: 0; border-top: 1px solid var(--ink); border-bottom: 1px solid var(--ink);
}
.location-item { padding: 40px 24px 40px 0; min-height: 220px; }
.location-item:not(:first-child) { padding-left: 24px; }
.location-item:not(:last-child) { border-right: 1px solid var(--ink); }
.location-index {
  font-size: 10px; letter-spacing: .2em;
  text-transform: uppercase; color: var(--muted);
  margin-bottom: 20px; font-feature-settings: "tnum";
}
.location-km {
  font-family: 'DM Serif Display', serif;
  font-size: clamp(48px,6vw,88px); line-height: 1;
  font-weight: 400; letter-spacing: -.03em;
}
.location-km span { font-size: 24px; opacity: .6; }
.location-label { font-size: 15px; font-weight: 500; margin-top: 10px; }
.location-sub { font-size: 13px; color: var(--muted); margin-top: 4px; }

/* ── Versione compatta (pagine interne: cantine, ristoranti) ── */
.location-section--compact { padding: 56px 56px 64px; }
.location-section--compact .location-h2 {
  font-size: clamp(28px, 3.5vw, 48px);
  margin-bottom: 32px;
}
.location-section--compact .location-grid {
  border-top: 1px solid var(--ink);
  border-bottom: none;
}
.location-section--compact .location-item {
  min-height: 0;
  padding: 20px 24px 20px 0;
  border-bottom: 1px solid var(--line);
}
.location-section--compact .location-item:not(:first-child) { padding-left: 24px; }
.location-section--compact .location-item:last-child { border-bottom: none; }
/* name / dist / sub per pagine interne */
.location-name {
  font-family: 'DM Serif Display', serif;
  font-size: 17px; font-weight: 400; line-height: 1.2;
  margin-bottom: 4px;
}
.location-dist {
  font-size: 22px; font-family: 'DM Serif Display', serif;
  font-weight: 400; color: var(--dark); letter-spacing: -.01em;
  line-height: 1;
}
.location-section--compact .location-sub {
  font-size: 11px; letter-spacing: .1em; text-transform: uppercase;
  color: var(--muted); margin-top: 3px;
}
/* indirizzo e tel — usati nelle card ristoranti */
.location-addr {
  font-size: 12px; color: var(--muted);
  margin-top: 6px; line-height: 1.4;
}
.location-tel {
  display: inline-flex; align-items: center; gap: 5px;
  font-size: 13px; font-weight: 600; color: var(--dark);
  margin-top: 8px; letter-spacing: .01em;
  transition: opacity .2s;
}
.location-tel:hover { opacity: .7; }
.location-tel svg { flex-shrink: 0; }

/* ─── Rooms ──────────────────────────────────────────────────────────────── */
.rooms-section { padding: 48px 56px 120px; background: var(--ink); color: var(--beige); }
.rooms-folio {
  display: flex; align-items: flex-start; justify-content: space-between;
  border-top: 1px solid var(--beige); padding-top: 18px; margin-bottom: 56px;
  font-size: 11px; letter-spacing: .22em; text-transform: uppercase;
}
.rooms-h2 {
  font-family: 'DM Serif Display', serif;
  font-size: clamp(48px,7vw,96px); line-height: .95; font-weight: 400;
  margin: 0 0 64px; letter-spacing: -.025em;
  color: var(--beige); text-wrap: balance;
}
.rooms-h2 em { font-style: italic; opacity: .75; }
.rooms-grid {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 20px;
  margin-bottom: 64px;
}
.room-card { display: flex; flex-direction: column; }
.room-img-wrap {
  display: block;        /* funziona anche quando è un <a> */
  overflow: hidden;
  position: relative;
  aspect-ratio: 3 / 4;   /* stessa altezza per tutte le 5 foto */
}
.room-img-wrap img {
  width: 100%; height: 100%; object-fit: cover; display: block;
  transition: transform .6s ease;
}
.room-img-wrap:hover img { transform: scale(1.03); }
.room-meta { display: flex; justify-content: space-between; align-items: baseline; margin-top: 14px; }
.room-name {
  font-family: 'DM Serif Display', serif;
  font-size: 20px;
  line-height: 1.2;
  color: var(--beige);
}
.room-detail { font-size: 11px; letter-spacing: .04em; color: rgba(239,225,197,.55); margin-top: 5px; }
.room-numeral {
  font-family: 'DM Serif Display', serif;
  font-size: 18px;
  color: rgba(239,225,197,.4);
  flex-shrink: 0;
  margin-left: 8px;
}
.services-grid {
  margin-top: 64px; padding-top: 40px;
  border-top: 1px solid rgba(239,225,197,.3);
  display: grid; grid-template-columns: repeat(6,1fr); gap: 32px;
}
.services-grid--9 { grid-template-columns: repeat(3,1fr) !important; }
.service-item { display: flex; flex-direction: column; gap: 0; }
.service-index {
  font-size: 10px; letter-spacing: .18em; text-transform: uppercase;
  color: rgba(239,225,197,.5); margin-bottom: 16px;
}
.service-item svg { flex-shrink: 0; }
.service-label { font-size: 14px; color: rgba(239,225,197,.9); margin-top: 14px; font-weight: 500; letter-spacing: .02em; }
.rooms-cta { margin-top: 56px; text-align: center; }

/* ─── Pricing ────────────────────────────────────────────────────────────── */
.pricing-section { padding: 48px 56px 120px; }
.pricing-grid { display: grid; grid-template-columns: 1fr 1fr; align-items: center; gap: 64px; }
.pricing-label {
  font-size: 11px; letter-spacing: .22em;
  text-transform: uppercase; color: var(--muted); margin-bottom: 24px;
}
.pricing-big {
  font-family: 'DM Serif Display', serif;
  font-size: clamp(100px,17vw,240px); line-height: .85;
  letter-spacing: -.04em; font-weight: 400;
}
.pricing-big sup { font-size: .33em; vertical-align: top; }
.pricing-range { font-size: 14px; color: var(--muted); margin-top: 16px; letter-spacing: .06em; }
.pricing-h2 {
  font-family: 'DM Serif Display', serif;
  font-size: 48px; line-height: 1.1; font-weight: 400;
  margin: 0; letter-spacing: -.01em; text-wrap: balance;
}
.pricing-note { font-size: 16px; color: var(--muted); margin-top: 24px; line-height: 1.65; max-width: 460px; }

/* ─── Experiences ────────────────────────────────────────────────────────── */
.experiences-section { padding: 24px 56px 120px; background: var(--beige); }
.experiences-h2 {
  font-family: 'DM Serif Display', serif;
  font-size: clamp(36px,5.5vw,76px); line-height: .98; font-weight: 400;
  margin: 0 0 56px; letter-spacing: -.02em; text-wrap: balance;
}
.experiences-h2 em { font-style: italic; color: var(--dark); }
.experiences-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 32px; }
.experience-card { display: block; color: inherit; cursor: pointer; }
.experience-chapter { font-size: 11px; letter-spacing: .2em; text-transform: uppercase; color: var(--muted); margin-bottom: 16px; }
.experience-img { aspect-ratio: 5/6; overflow: hidden; margin-bottom: 24px; position: relative; }
.experience-img img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s ease; }
.experience-card:hover .experience-img img { transform: scale(1.03); }
.experience-title {
  font-family: 'DM Serif Display', serif;
  font-size: 32px; line-height: 1.05; font-weight: 400;
  margin: 0 0 12px; letter-spacing: -.01em;
}
.experience-sub { margin: 0; color: var(--muted); font-size: 14px; line-height: 1.6; }
.experience-link {
  display: inline-block;
  margin-top: 20px; font-size: 12px; letter-spacing: .16em;
  text-transform: uppercase; font-weight: 500;
  transition: opacity .2s;
}
.experience-link:hover { opacity: .6; }
.experience-link--soon { opacity: .35; cursor: default; }
.experience-img-link { display: block; overflow: hidden; }
.experience-img-link img { transition: transform .6s ease; }
.experience-img-link:hover img { transform: scale(1.04); }

/* ─── FAQ ────────────────────────────────────────────────────────────────── */
.faq-section { padding: 24px 56px 120px; }
.faq-h2 {
  font-family: 'DM Serif Display', serif;
  font-size: clamp(36px,5vw,76px); line-height: .98; font-weight: 400;
  margin: 0 0 56px; letter-spacing: -.02em; text-wrap: balance;
}
.faq-h2 em { font-style: italic; color: var(--dark); }
.faq-list { max-width: 860px; }
.faq-item { border-top: 1px solid var(--line); }
.faq-item:last-child { border-bottom: 1px solid var(--line); }
.faq-q {
  display: flex; justify-content: space-between; align-items: center;
  padding: 24px 0; font-size: 18px; font-weight: 500;
  cursor: pointer; gap: 24px;
}
.faq-q::after { content: '+'; font-family: 'DM Serif Display', serif; font-size: 28px; flex-shrink: 0; color: var(--dark); transition: transform .3s; }
details[open] .faq-q::after { transform: rotate(45deg); }
.faq-a { padding: 0 0 28px; }
.faq-a p { margin: 0; font-size: 16px; line-height: 1.7; color: var(--muted); max-width: 680px; }

/* ─── Spazi comuni — strip slideshow (homepage) ─────────────────────────── */
.spazi-strip-section {
  padding: 80px 0 0;
  background: var(--dark);
  color: var(--beige);
  overflow: hidden;
}
.spazi-strip-header {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 32px;
  padding: 0 56px 40px;
}
.spazi-strip-eyebrow {
  font-size: 11px;
  letter-spacing: .12em;
  text-transform: uppercase;
  opacity: .55;
  margin: 0 0 12px;
}
.spazi-strip-h2 {
  font-family: 'DM Serif Display', serif;
  font-size: clamp(36px, 4vw, 56px);
  font-weight: 400;
  line-height: 1.05;
  color: var(--beige);
  margin: 0;
}
.spazi-strip-h2 em { font-style: italic; }
.spazi-strip-link {
  flex-shrink: 0;
  font-size: 14px;
  color: var(--beige);
  opacity: .65;
  text-decoration: none;
  transition: opacity .2s;
  white-space: nowrap;
  padding-bottom: 4px;
}
.spazi-strip-link:hover { opacity: 1; text-decoration: underline; }
.spazi-strip-outer {
  position: relative;
  overflow: hidden;
  cursor: grab;
}
.spazi-strip-outer:active { cursor: grabbing; }
.spazi-strip-track {
  display: flex;
  gap: 3px;
  transform: translateX(0);
  will-change: transform;
  user-select: none;
}
.spazi-strip-slide {
  flex: 0 0 calc(33.333% - 2px);
  aspect-ratio: 4 / 3;
  overflow: hidden;
}
.spazi-strip-slide img {
  width: 100%; height: 100%;
  object-fit: cover;
  display: block;
  transition: transform .5s ease;
  pointer-events: none;
}
.spazi-strip-slide:hover img { transform: scale(1.04); }
.spazi-strip-btn {
  position: absolute;
  top: 50%; transform: translateY(-50%);
  background: rgba(0,0,0,.45);
  color: #fff;
  border: none;
  width: 44px; height: 44px;
  border-radius: 50%;
  font-size: 22px;
  line-height: 1;
  cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  transition: background .2s;
  z-index: 2;
}
.spazi-strip-btn:hover { background: rgba(0,0,0,.75); }
.spazi-strip-prev { left: 16px; }
.spazi-strip-next { right: 16px; }

/* ─── Compare ────────────────────────────────────────────────────────────── */
.compare-section { padding: 48px 56px 120px; }
.compare-h2 {
  font-family: 'DM Serif Display', serif;
  font-size: clamp(40px,6vw,88px); line-height: .95; font-weight: 400;
  margin: 0 0 16px; letter-spacing: -.025em; text-wrap: balance;
}
.compare-h2 em { font-style: italic; color: var(--dark); }
.compare-sub { font-size: 18px; color: var(--muted); margin-bottom: 56px; max-width: 600px; }
.compare-table { border-top: 1px solid var(--ink); border-bottom: 1px solid var(--ink); }
.compare-head {
  display: grid; grid-template-columns: 180px 1fr 1fr;
  padding: 18px 0; border-bottom: 1px solid var(--ink);
  font-size: 11px; letter-spacing: .18em; text-transform: uppercase;
}
.compare-head-igino { color: var(--dark); font-weight: 600; }
.compare-head-hotel { color: var(--muted); }
.compare-row {
  display: grid; grid-template-columns: 180px 1fr 1fr;
  padding: 28px 0; align-items: baseline; gap: 16px;
}
.compare-row + .compare-row { border-top: 1px solid var(--line); }
.compare-topic { font-family: 'DM Serif Display', serif; font-style: italic; font-size: 22px; }
.compare-igino { font-size: 17px; line-height: 1.5; padding-right: 32px; }
.compare-hotel { font-size: 17px; line-height: 1.5; padding-right: 32px; color: var(--muted); }

/* ─── Final CTA ──────────────────────────────────────────────────────────── */
.final-section {
  padding: 160px 56px; background: var(--dark);
  color: var(--beige); position: relative; overflow: hidden;
}
.final-deco {
  position: absolute; right: -80px; top: -80px;
  font-family: 'DM Serif Display', serif; font-size: 480px; line-height: 1;
  color: rgba(239,225,197,.06); font-style: italic;
  font-weight: 400; pointer-events: none; user-select: none;
}
.final-inner { max-width: 900px; margin: 0 auto; text-align: center; position: relative; }
.final-eyebrow {
  font-size: 11px; letter-spacing: .22em;
  text-transform: uppercase; opacity: .7; margin-bottom: 32px;
}
.final-h2 {
  font-family: 'DM Serif Display', serif;
  font-size: clamp(40px,6vw,88px); line-height: 1; font-weight: 400;
  margin: 0; letter-spacing: -.025em; text-wrap: balance;
}
.final-text {
  font-size: 19px; line-height: 1.6;
  margin-top: 40px; margin-bottom: 56px;
  color: rgba(239,225,197,.85);
}

/* ─── Footer ─────────────────────────────────────────────────────────────── */
.footer { padding: 26px 56px 48px; border-top: 1px solid var(--ink); background: #FBF6EA; }
.footer-grid {
  display: grid; grid-template-columns: 1fr 1fr 1fr 1fr;
  gap: 32px; margin-bottom: 48px;
}
.footer-brand-name { font-family: 'DM Serif Display', serif; font-size: 28px; margin-bottom: 8px; }
.footer-brand-vol { font-size: 11px; letter-spacing: .18em; text-transform: uppercase; color: var(--muted); }
.footer-col-label { font-size: 11px; letter-spacing: .18em; text-transform: uppercase; color: var(--muted); margin-bottom: 12px; }
.footer-address { font-size: 14px; line-height: 1.6; }
.footer-links { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 8px; font-size: 14px; }
.footer-links a:hover { opacity: .6; }
.footer-contacts { font-size: 14px; line-height: 1.8; }
.footer-contacts a:hover { opacity: .6; }
.footer-bottom {
  padding-top: 24px; padding-bottom: 32px; border-top: 1px solid var(--line);
  display: flex; justify-content: space-between;
  font-size: 11px; letter-spacing: .16em; text-transform: uppercase; color: var(--muted);
}

/* ─── Location grid — colonne per conteggio ──────────────────────────────── */
/* .location-grid base = repeat(4,1fr) — vedi sopra                          */
/* .location-grid--5 = repeat(5,1fr)  — vedi sotto                          */

/* ─── Services 9 items (3×3, dark bg) ────────────────────────────────────── */
.services-grid--9 { grid-template-columns: repeat(3, 1fr) !important; }

/* ─── Services grid variante chiara (why-section) ─────────────────────────── */
.services-grid--light {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 16px;
  margin-top: 64px;
  padding-top: 48px;
  border-top: 1px solid rgba(23,19,17,.12);
}
.services-grid--light .service-item {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0;
  padding: 20px 16px 18px;
  border-radius: 12px;
  background: rgba(107,43,26,.035);
  border: 1px solid rgba(107,43,26,.09);
  transition: transform .25s cubic-bezier(.22,1,.36,1), box-shadow .25s, background .25s, border-color .25s;
  cursor: default;
}
.services-grid--light .service-item:hover {
  transform: translateY(-5px);
  background: rgba(107,43,26,.07);
  border-color: rgba(107,43,26,.22);
  box-shadow: 0 12px 28px rgba(107,43,26,.1);
}
.services-grid--light .service-item svg {
  flex-shrink: 0;
}
.service-label-light {
  font-family: var(--sans);
  font-size: 12px;
  font-weight: 600;
  color: var(--ink);
  margin-top: 14px;
  letter-spacing: .02em;
  line-height: 1.35;
  text-transform: uppercase;
}

/* ─── Reviews ────────────────────────────────────────────────────────────── */
.reviews-section { padding: 48px 56px 120px; background: var(--beige); }
.reviews-header {
  display: grid; grid-template-columns: auto 1fr;
  gap: 64px; align-items: center; margin-bottom: 64px;
}
.reviews-score-block { display: flex; gap: 20px; align-items: flex-start; }

/* Badge punteggio aggregato — stile Booking.com */
.reviews-score-badge {
  background: #003B95;
  color: #fff;
  font-family: var(--sans);
  font-size: 56px;
  font-weight: 700;
  line-height: 1;
  padding: 16px 20px;
  border-radius: 8px 8px 8px 0;
  letter-spacing: -.02em;
  flex-shrink: 0;
}
.reviews-score-meta { padding-top: 4px; }
.reviews-score-meta strong { font-size: 20px; font-weight: 700; color: #003B95; display: block; }
.reviews-score-meta span { font-size: 13px; color: var(--muted); display: block; margin-top: 4px; }
.reviews-source { font-size: 11px; letter-spacing: .18em; text-transform: uppercase; color: var(--dark) !important; font-weight: 600; margin-top: 8px !important; }
.reviews-source-logo { display: block; margin-top: 10px; }
.reviews-source-logo img { display: block; }

.reviews-h2 {
  font-family: 'DM Serif Display', serif;
  font-size: clamp(36px, 5vw, 72px); line-height: .95; font-weight: 400;
  margin: 0; letter-spacing: -.025em; text-wrap: balance;
}
.reviews-h2 em { font-style: italic; color: var(--dark); }
.reviews-grid {
  display: grid; grid-template-columns: repeat(4, 1fr);
  gap: 0; border-top: 1px solid rgba(23,19,17,.2);
}
.review-card {
  padding: 40px 32px 40px 0; min-height: 280px;
  display: flex; flex-direction: column; gap: 20px;
}
.review-card:not(:first-child) { padding-left: 32px; }
.review-card:not(:last-child) { border-right: 1px solid rgba(23,19,17,.2); }

/* Punteggio singola recensione — badge Booking.com */
.review-score {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: #003B95;
  color: #fff;
  font-family: var(--sans);
  font-size: 15px;
  font-weight: 700;
  padding: 4px 10px;
  border-radius: 6px 6px 6px 0;
  width: fit-content;
  letter-spacing: .01em;
}
.review-text {
  font-family: 'DM Serif Display', serif;
  font-size: 16px; line-height: 1.55; font-style: italic; flex: 1;
  color: rgba(23,19,17,.85);
}
.review-meta { display: flex; flex-wrap: wrap; gap: 6px 10px; font-size: 12px; color: var(--muted); align-items: center; }
.review-flag { font-size: 18px; }
.review-name { font-weight: 600; color: var(--ink); }
.review-city { color: var(--muted); }
.review-date { color: var(--muted); font-size: 11px; }
.reviews-cta { margin-top: 56px; text-align: center; }

/* ─── Instagram ──────────────────────────────────────────────────────────── */
.instagram-section { padding: 32px 56px 120px; }
.instagram-header {
  display: flex; justify-content: space-between; align-items: flex-end;
  margin-bottom: 48px; flex-wrap: wrap; gap: 24px;
}
.instagram-h2 {
  font-family: 'DM Serif Display', serif;
  font-size: clamp(36px, 5vw, 72px); line-height: .95; font-weight: 400;
  margin: 0; letter-spacing: -.025em;
}
.instagram-h2 em { font-style: italic; color: var(--dark); }
.instagram-links { display: flex; gap: 16px; flex-wrap: wrap; }
.instagram-follow-btn {
  display: inline-flex; align-items: center; gap: 10px;
  background: var(--ink); color: #FBF6EA;
  padding: 14px 22px; font-size: 13px; letter-spacing: .12em;
  text-transform: uppercase; font-weight: 500;
  transition: opacity .2s;
}
.instagram-follow-btn:hover { opacity: .82; }
.social-link-btn {
  display: inline-flex; align-items: center; gap: 10px;
  background: transparent; color: var(--ink);
  border: 1px solid var(--ink);
  padding: 14px 22px; font-size: 13px; letter-spacing: .12em;
  text-transform: uppercase; font-weight: 500;
  transition: background .2s, color .2s;
}
.social-link-btn:hover { background: var(--ink); color: #FBF6EA; }
.instagram-grid {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px;
}

/* Smash Balloon override — forza 4 colonne quadrate senza chrome extra */
.instagram-feed-smash { width: 100%; }
.instagram-feed-smash .sb-instagram-feed-header,
.instagram-feed-smash .sbi_follow_btn,
.instagram-feed-smash #sbi_load { display: none !important; }
.instagram-feed-smash #sbi { padding: 0 !important; background: transparent !important; }
.instagram-post {
  display: block; position: relative;
  aspect-ratio: 1/1; overflow: hidden;
}
.instagram-post img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s ease; }
.instagram-post:hover img { transform: scale(1.05); }
.instagram-post-overlay {
  position: absolute; inset: 0;
  background: rgba(23,19,17,.35);
  display: flex; align-items: center; justify-content: center;
  opacity: 0; transition: opacity .3s;
}
.instagram-post:hover .instagram-post-overlay { opacity: 1; }

/* Video badge (▶) sopra il thumbnail */
.ig-video-badge {
  font-size: 28px;
  line-height: 1;
  color: #fff;
  text-shadow: 0 2px 8px rgba(0,0,0,.5);
}

/* Caption che appare on-hover in basso */
.ig-caption {
  position: absolute;
  bottom: 0; left: 0; right: 0;
  padding: 10px 12px;
  background: linear-gradient(transparent, rgba(23,19,17,.75));
  color: #fff;
  font-size: 11px;
  line-height: 1.4;
  letter-spacing: .02em;
  opacity: 0;
  transition: opacity .3s;
  pointer-events: none;
}
.instagram-post:hover .ig-caption { opacity: 1; }

/* ─── Breadcrumb ─────────────────────────────────────────────────────────── */
.breadcrumb {
  padding: 10px 56px;
  border-bottom: 1px solid var(--line);
  font-size: 11px;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: rgba(23,19,17,.45);
}
.breadcrumb ol { list-style: none; margin: 0; padding: 0; display: flex; align-items: center; gap: 6px; }
.breadcrumb li { display: flex; align-items: center; gap: 6px; }
.breadcrumb li + li::before { content: '›'; opacity: .4; }
.breadcrumb a { color: inherit; transition: opacity .2s; }
.breadcrumb a:hover { opacity: 1; color: var(--ink); }
.breadcrumb [aria-current="page"] { color: var(--ink); font-weight: 500; }
@media (max-width: 900px) {
  .breadcrumb { padding: 8px 24px; }
}

/* ─── Pulsante Indietro ───────────────────────────────────────────────────── */
.btn-back {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 56px;
  font-family: var(--sans);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--dark);
  text-decoration: none;
  transition: opacity .2s;
}
.btn-back:hover { opacity: .6; }
.btn-back svg { flex-shrink: 0; }
@media (max-width: 900px) {
  .btn-back { padding: 6px 24px; }
}

/* ─── PSR page styles ────────────────────────────────────────────────────── */
.psr-banner-section { padding: 0 56px; border-bottom: 1px solid var(--ink); }
.psr-official-banner { display: flex; align-items: center; justify-content: center; padding: 32px 0; }
.psr-official-banner img { max-width: 100%; max-height: 120px; width: auto; display: block; }
.psr-text-banner {
  display: flex; align-items: center; gap: 32px;
  padding: 28px 40px; background: #003189; color: #fff;
  width: 100%; flex-wrap: wrap;
}
.psr-eu-flag { font-size: 48px; flex-shrink: 0; }
.psr-text-inner { flex: 1; font-size: 14px; line-height: 1.7; }
.psr-text-inner strong { font-size: 15px; font-weight: 700; }
.psr-text-inner em { font-style: italic; opacity: .85; }

.psr-project-section { padding: 100px 56px 80px; }
.psr-grid { display: grid; grid-template-columns: 1fr 1.4fr; gap: 80px; align-items: flex-start; }
.psr-h2 {
  font-family: 'DM Serif Display', serif;
  font-size: clamp(40px, 5.5vw, 80px); line-height: .95; font-weight: 400;
  margin: 0 0 32px; letter-spacing: -.025em;
}
.psr-h2 em { font-style: italic; color: var(--dark); }
.psr-intro { font-size: 17px; line-height: 1.7; color: rgba(23,19,17,.78); margin: 0; }

.psr-data-card { background: var(--beige); padding: 40px; }
.psr-field { display: grid; grid-template-columns: 180px 1fr; gap: 12px 24px; padding: 18px 0; border-top: 1px solid rgba(23,19,17,.15); }
.psr-field:first-child { border-top: none; padding-top: 0; }
.psr-field-label { font-size: 11px; letter-spacing: .18em; text-transform: uppercase; color: var(--muted); padding-top: 3px; }
.psr-field-value { font-size: 15px; line-height: 1.55; }
.psr-amount {
  font-family: 'DM Serif Display', serif;
  font-size: 32px; line-height: 1; letter-spacing: -.01em; color: var(--dark);
}

.psr-results-section { padding: 48px 56px 120px; background: var(--ink); color: var(--beige); }
.psr-results-h2 {
  font-family: 'DM Serif Display', serif;
  font-size: clamp(40px, 5.5vw, 80px); line-height: .95; font-weight: 400;
  margin: 0 0 64px; letter-spacing: -.025em; color: var(--beige);
}
.psr-results-h2 em { font-style: italic; opacity: .75; }
.psr-results-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0; border-top: 1px solid rgba(239,225,197,.2); }
.psr-result-card { padding: 40px 32px 40px 0; }
.psr-result-card:not(:first-child) { padding-left: 32px; }
.psr-result-card:not(:last-child) { border-right: 1px solid rgba(239,225,197,.2); }
.psr-result-num {
  font-family: 'DM Serif Display', serif;
  font-size: 72px; line-height: 1; font-weight: 400;
  letter-spacing: -.03em; color: var(--beige); margin-bottom: 12px;
}
.psr-result-num span { font-size: 22px; opacity: .7; margin-left: 4px; }
.psr-result-title {
  font-family: 'DM Serif Display', serif; font-size: 22px; font-weight: 400;
  margin: 0 0 14px; color: var(--beige); line-height: 1.2;
}
.psr-result-desc { font-size: 14px; line-height: 1.65; color: rgba(239,225,197,.7); margin: 0; }

.psr-legal-section { padding: 56px 56px; border-top: 1px solid var(--line); }
.psr-legal-inner { display: flex; gap: 32px; align-items: flex-start; max-width: 860px; }
.psr-legal-eu { font-size: 40px; flex-shrink: 0; }
.psr-legal-text p { margin: 0 0 8px; font-size: 13px; line-height: 1.65; color: var(--muted); }
.psr-legal-text p:last-child { margin: 0; }

/* PSR banner nel footer — solo homepage, solo immagine centrata */
.footer-psr {
  border-top: 1px solid var(--line);
  padding: 40px 24px 48px;
  text-align: center;
}
.footer-psr-link {
  display: inline-block;
  transition: opacity .2s;
}
.footer-psr-link:hover { opacity: .75; }
.footer-psr img {
  max-width: 360px;
  width: 100%;
  height: auto;
  display: inline-block;
}

/* ─── Footer aggiornato ──────────────────────────────────────────────────── */
.footer-brand-col { display: flex; flex-direction: column; gap: 0; }
.footer-brand-name { font-family: 'DM Serif Display', serif; font-size: 28px; margin-bottom: 6px; display: block; }
.footer-brand-desc { font-size: 13px; line-height: 1.65; color: var(--muted); margin: 12px 0 20px; }
.footer-social { display: flex; gap: 16px; margin-top: 4px; }
.footer-social-link {
  display: flex; align-items: center; justify-content: center;
  width: 36px; height: 36px; border: 1px solid var(--line);
  color: var(--ink); transition: background .2s, color .2s, border-color .2s;
}
.footer-social-link:hover { background: var(--ink); color: #FBF6EA; border-color: var(--ink); }
.footer-map-link {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: 12px; letter-spacing: .12em; text-transform: uppercase;
  color: var(--dark); margin-top: 12px; font-weight: 500;
}
.footer-map-link:hover { opacity: .7; }
.footer-contacts a {
  display: flex; align-items: center; gap: 8px;
  font-size: 14px; line-height: 1.9;
}
.footer-contacts a:hover { opacity: .65; }
.footer-booking-btn {
  display: inline-block; margin-top: 20px;
  background: var(--dark); color: #FBF6EA;
  padding: 13px 22px; font-size: 12px; letter-spacing: .16em;
  text-transform: uppercase; font-weight: 600;
  transition: opacity .2s;
}
.footer-booking-btn:hover { opacity: .85; }

/* ─── Ristoranti consigliati ─────────────────────────────────────────────── */
.ristoranti-section { padding: 48px 56px 80px; }
.ristoranti-intro { margin-bottom: 72px; }
.ristoranti-h2 {
  font-family: 'DM Serif Display', serif;
  font-size: clamp(40px, 5vw, 72px); line-height: .95; font-weight: 400;
  margin: 0 0 28px; letter-spacing: -.025em;
}
.ristoranti-h2 em { font-style: italic; color: var(--dark); }
.ristoranti-lead {
  font-size: 17px; line-height: 1.7;
  max-width: 680px; color: rgba(23,19,17,.72); margin: 0;
}
.ristoranti-grid {
  display: grid; grid-template-columns: 1fr 1fr;
  border-top: 1px solid var(--ink); border-left: 1px solid var(--ink);
  margin-bottom: 48px;
}
.ristorante-card {
  border-right: 1px solid var(--ink); border-bottom: 1px solid var(--ink);
  display: flex; flex-direction: column;
  overflow: hidden;
  transition: background .25s;
}
/* Ultima card da sola → occupa tutta la larghezza */
.ristorante-card:last-child:nth-child(odd) {
  grid-column: 1 / -1;
}
.ristorante-card:hover { background: rgba(107,43,26,.04); }
/* Immagine ristorante */
.ristorante-img {
  height: 220px; overflow: hidden;
  border-bottom: 1px solid var(--ink);
  flex-shrink: 0;
}
.ristorante-img img {
  width: 100%; height: 100%; object-fit: cover;
  display: block;
  transition: transform .55s ease;
}
.ristorante-card:hover .ristorante-img img { transform: scale(1.04); }
/* Corpo testuale */
.ristorante-body {
  padding: 36px 40px 40px;
  display: flex; flex-direction: column; flex: 1;
}
.ristorante-header {
  display: flex; flex-direction: column;
  gap: 10px; margin-bottom: 20px;
}
.ristorante-name {
  font-family: 'DM Serif Display', serif;
  font-size: 26px; line-height: 1.1; font-weight: 400;
  margin: 0 0 10px; letter-spacing: -.015em;
}
.ristorante-tags { display: flex; flex-wrap: wrap; gap: 6px; }
.ristorante-tag {
  font-size: 10px; letter-spacing: .13em; text-transform: uppercase;
  font-weight: 500; color: var(--muted);
  border: 1px solid var(--line); padding: 3px 9px;
}
.ristorante-tag--near {
  background: var(--dark); color: #fff; border-color: var(--dark);
}
.ristorante-desc {
  font-size: 15px; line-height: 1.72; color: rgba(23,19,17,.75);
  margin: 0 0 auto; padding-bottom: 24px;
}
.ristorante-footer {
  padding-top: 20px; border-top: 1px solid var(--line);
  display: flex; flex-direction: column; gap: 6px;
}
.ristorante-signature {
  font-size: 13px; font-weight: 600;
  color: var(--dark); letter-spacing: .01em;
}
.ristorante-info {
  font-size: 12px; letter-spacing: .08em;
  color: var(--muted); text-transform: uppercase;
}
/* Nota prenotazione */
.ristoranti-note {
  display: flex; align-items: flex-start; gap: 14px;
  background: rgba(107,43,26,.06); border-left: 3px solid var(--dark);
  padding: 20px 24px; margin-top: 48px;
}
.ristoranti-note p {
  font-size: 14px; line-height: 1.65; color: rgba(23,19,17,.75); margin: 0;
}
/* Titolo sezione distanze */
.location-h2 {
  font-family: 'DM Serif Display', serif;
  font-size: clamp(32px, 4vw, 56px); font-weight: 400; line-height: 1;
  margin: 0 0 48px; letter-spacing: -.02em;
}
.location-h2 em { font-style: italic; color: var(--dark); }
/* Grid colonne per distanze */
.location-grid--5 { grid-template-columns: repeat(5, 1fr); }
.location-grid--3 { grid-template-columns: repeat(3, 1fr); }
/* card orfana (es. 7 elementi in griglia 3 col): ultima nella riga da sola → span full */
.location-grid--3 .location-item:last-child:nth-child(3n+1) { grid-column: 1 / -1; }
.location-grid--3 .location-item:nth-child(3n) { border-right: none !important; }

/* ─── Contatti ristoranti — lista orizzontale ─────────────────────────────── */
.rist-contacts {
  border-top: 1px solid var(--ink);
  margin-top: 0;
}
.rist-contact-row {
  display: flex; align-items: center;
  gap: 0;
  padding: 16px 0;
  border-bottom: 1px solid var(--line);
  transition: background .2s;
}
.rist-contact-row:hover { background: rgba(107,43,26,.03); margin: 0 -24px; padding-left: 24px; padding-right: 24px; }
.rist-contact-name {
  font-family: 'DM Serif Display', serif;
  font-size: 17px; font-weight: 400; line-height: 1.2;
  flex: 0 0 220px; padding-right: 24px;
}
.rist-contact-dist {
  font-size: 11px; letter-spacing: .13em; text-transform: uppercase;
  font-weight: 500; color: var(--dark);
  flex: 0 0 150px; padding-right: 24px;
}
.rist-contact-addr {
  font-size: 13px; color: var(--muted);
  flex: 1; padding-right: 24px;
}
.rist-contact-tel {
  display: flex; align-items: center; gap: 6px;
  font-size: 13px; font-weight: 600; color: var(--ink);
  text-decoration: none; flex: 0 0 150px; justify-content: flex-end;
  transition: color .2s;
}
.rist-contact-tel:hover { color: var(--dark); }
.rist-contact-tel svg { flex-shrink: 0; }

/* ─── Strada del Vino Valpolicella ───────────────────────────────────────── */
.strade-vino-section {
  padding: 56px;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  background: rgba(107,43,26,.03);
}
.strade-vino-inner {
  display: flex; align-items: center; gap: 48px;
  max-width: 900px; margin: 0 auto;
}
.strade-vino-logo-link {
  flex-shrink: 0;
  display: block; transition: opacity .2s;
}
.strade-vino-logo-link:hover { opacity: .75; }
.strade-vino-logo-link img {
  width: 140px; height: auto; display: block;
}
.strade-vino-body { flex: 1; }
.strade-vino-title {
  font-family: 'DM Serif Display', serif;
  font-size: 20px; font-weight: 400; line-height: 1.2;
  margin: 0 0 10px; letter-spacing: -.01em;
}
.strade-vino-desc {
  font-size: 14px; line-height: 1.7; color: rgba(23,19,17,.7);
  margin: 0 0 14px;
}
.strade-vino-link {
  font-size: 12px; letter-spacing: .1em; text-transform: uppercase;
  font-weight: 600; color: var(--dark); text-decoration: none;
  transition: opacity .2s;
}
.strade-vino-link:hover { opacity: .7; }

/* ─── Cantine consigliate — elementi extra ────────────────────────────────── */
.cantina-loc {
  font-size: 11px; letter-spacing: .14em; text-transform: uppercase;
  color: var(--dark); font-weight: 500; margin-bottom: 8px;
}
.cantina-card .ristorante-signature { color: var(--dark); }
/* Fondatore / ritratto storico */
.cantina-founder {
  display: flex; align-items: center; gap: 16px;
  margin-bottom: 20px;
  padding: 14px 16px;
  background: rgba(107,43,26,.06); border-left: 3px solid var(--dark);
}
.cantina-founder-img {
  width: 56px; height: 56px; border-radius: 50%;
  overflow: hidden; flex-shrink: 0;
  border: 2px solid rgba(107,43,26,.25);
}
.cantina-founder-img img {
  width: 100%; height: 100%; object-fit: cover; object-position: top;
  display: block; filter: sepia(.3);
}
.cantina-founder-text { flex: 1; }
.cantina-founder-name {
  font-family: 'DM Serif Display', serif;
  font-size: 13px; font-style: italic; line-height: 1.4;
  color: var(--dark); display: block;
}
.cantina-prenota {
  display: flex; align-items: center; gap: 5px;
  font-size: 11px; letter-spacing: .08em; text-transform: uppercase;
  font-weight: 600; color: var(--dark);
}
.cantina-prenota svg { flex-shrink: 0; }
.cantina-link {
  font-size: 12px; letter-spacing: .08em; text-transform: uppercase;
  font-weight: 600; color: var(--dark);
  text-decoration: none; margin-top: 6px; display: inline-block;
  transition: opacity .2s;
}
.cantina-link:hover { opacity: .65; }

/* ─── WhatsApp floating button ───────────────────────────────────────────── */
.whatsapp-float {
  position: fixed; bottom: 28px; right: 28px; z-index: 200;
  width: 56px; height: 56px; border-radius: 50%;
  background: #25D366; color: #fff;
  display: flex; align-items: center; justify-content: center;
  box-shadow: 0 4px 20px rgba(37,211,102,.45);
  transition: transform .2s, box-shadow .2s;
}
.whatsapp-float:hover { transform: scale(1.08); box-shadow: 0 6px 28px rgba(37,211,102,.55); }

/* ─── Page Hero (pagine interne) ─────────────────────────────────────────── */
.page-hero {
  padding: 80px 56px 88px;
  border-bottom: 1px solid var(--ink);
}
.page-hero-eyebrow {
  font-size: 11px; letter-spacing: .22em;
  text-transform: uppercase; color: var(--muted); margin: 0 0 32px;
}
.page-hero-h1 {
  font-family: 'DM Serif Display', serif;
  font-size: clamp(64px, 9vw, 124px);
  line-height: .92; font-weight: 400;
  margin: 0 0 40px; letter-spacing: -.035em; text-wrap: balance;
}
.page-hero-h1 em { font-style: italic; color: var(--dark); }
.page-hero-lead {
  font-size: 18px; line-height: 1.65;
  max-width: 680px; color: rgba(23,19,17,.75); margin: 0 0 32px;
}
.page-hero-meta {
  display: flex; gap: 16px; flex-wrap: wrap;
  font-size: 12px; letter-spacing: .16em;
  text-transform: uppercase; color: var(--muted);
}

/* ─── Room Spreads ────────────────────────────────────────────────────────── */
.rooms-spreads { border-bottom: 1px solid var(--ink); }
.room-spread {
  display: grid; grid-template-columns: 1fr 1fr;
  min-height: 680px; border-top: 1px solid var(--ink);
}
.room-spread-img {
  position: relative; overflow: hidden;
  border-right: 1px solid var(--ink);
}
.room-spread--reverse .room-spread-img {
  order: 2; border-right: none; border-left: 1px solid var(--ink);
}
.room-spread--reverse .room-spread-body { order: 1; }

.room-spread-img-wrap { position: absolute; inset: 0; }
.room-spread-img-wrap img { width: 100%; height: 100%; object-fit: cover; display: block; }

/* Placeholder quando la foto non è ancora caricata */
.room-spread-placeholder {
    position: absolute; inset: 0;
    display: flex; align-items: center; justify-content: center;
    background: var(--beige);
    opacity: .6;
}

/* ── Slideshow ─────────────────────────────────────────────────────────── */
.room-slideshow { position: absolute; inset: 0; }
.slideshow-track { position: absolute; inset: 0; }

.slideshow-slide {
  position: absolute; inset: 0;
  opacity: 0;
  transition: opacity .6s ease;
  pointer-events: none;
}
.slideshow-slide.active {
  opacity: 1;
  pointer-events: auto;
}
.slideshow-slide img {
  width: 100%; height: 100%; object-fit: cover;
  transition: transform .9s cubic-bezier(.2,.7,.2,1);
}
.room-spread:hover .slideshow-slide.active img { transform: scale(1.04); }

/* prev / next buttons */
.slideshow-btn {
  position: absolute; top: 50%; transform: translateY(-50%);
  background: rgba(23,19,17,.55); color: #fff;
  border: none; width: 44px; height: 44px;
  border-radius: 50%; font-size: 22px; line-height: 1;
  display: flex; align-items: center; justify-content: center;
  opacity: 0; transition: opacity .25s;
  z-index: 10; cursor: pointer;
}
.room-slideshow:hover .slideshow-btn,
.room-slideshow:focus-within .slideshow-btn { opacity: 1; }
.slideshow-prev { left: 14px; }
.slideshow-next { right: 14px; }
.slideshow-btn:hover { background: rgba(23,19,17,.82); }

/* dot indicators */
.slideshow-dots {
  position: absolute; bottom: 52px; left: 0; right: 0;
  display: flex; justify-content: center; gap: 7px;
  z-index: 10;
}
.slideshow-dot {
  width: 7px; height: 7px; border-radius: 50%;
  background: rgba(255,255,255,.45);
  cursor: pointer; transition: background .2s, transform .2s;
}
.slideshow-dot.active { background: #fff; transform: scale(1.3); }

.room-spread-caption {
  position: absolute; left: 20px; bottom: 20px;
  font-size: 11px; letter-spacing: .12em; text-transform: uppercase;
  color: rgba(255,255,255,.8);
  background: rgba(23,19,17,.5); padding: 8px 14px;
  backdrop-filter: blur(6px);
}

.room-spread-body {
  padding: 64px 56px;
  display: flex; flex-direction: column; justify-content: center;
  position: relative;
}
.room-spread-num {
  position: absolute; top: 24px; right: 36px;
  font-family: 'DM Serif Display', serif;
  font-size: 140px; line-height: 1; font-style: italic; font-weight: 400;
  color: rgba(23,19,17,.05); pointer-events: none; user-select: none;
}
.room-spread-name {
  font-family: 'DM Serif Display', serif;
  font-size: clamp(36px, 4.5vw, 64px);
  line-height: 1; font-weight: 400;
  margin: 0 0 18px; letter-spacing: -.022em;
}
.room-spread-specs {
  display: flex; gap: 10px; flex-wrap: wrap;
  font-size: 11px; letter-spacing: .18em;
  text-transform: uppercase; color: var(--muted); margin-bottom: 36px;
}
.room-spread-desc {
  font-size: 17px; line-height: 1.7;
  color: rgba(23,19,17,.78); margin: 0 0 36px; max-width: 500px;
}

/* Amenities */
.room-amenity-list {
  list-style: none; padding: 28px 0 0; margin: 0 0 40px;
  border-top: 1px solid var(--line);
  display: grid; grid-template-columns: 1fr 1fr; gap: 10px 24px;
}
.room-amenity-item {
  display: flex; align-items: center; gap: 10px; font-size: 14px;
}

/* Prezzo per camera */
.room-spread-price {
  display: flex; align-items: baseline; gap: 8px; margin-bottom: 36px;
}
.room-price-from {
  font-size: 11px; letter-spacing: .18em;
  text-transform: uppercase; color: var(--muted);
}
.room-price-num {
  font-family: 'DM Serif Display', serif;
  font-size: 52px; line-height: 1; letter-spacing: -.03em; color: var(--dark);
}
.room-price-unit { font-size: 14px; color: var(--muted); margin-left: 4px; }

/* CTA azioni camera */
.room-spread-cta { display: flex; gap: 20px; align-items: center; flex-wrap: wrap; }

/* ─── Camere Services ─────────────────────────────────────────────────────── */
.camere-services-section { padding: 48px 56px 120px; background: var(--beige); }
.camere-services-h2 {
  font-family: 'DM Serif Display', serif;
  font-size: clamp(36px, 5.5vw, 80px); line-height: .95; font-weight: 400;
  margin: 0 0 72px; letter-spacing: -.025em; text-wrap: balance;
}
.camere-services-h2 em { font-style: italic; color: var(--dark); }
.camere-services-grid {
  display: grid; grid-template-columns: repeat(6, 1fr);
  gap: 32px; margin-bottom: 64px;
}
.camere-service-card {
  display: flex; flex-direction: column; gap: 16px;
}
.camere-service-label { font-size: 14px; font-weight: 500; }

/* Info strip (check-in, check-out…) */
.camere-info-strip {
  display: grid; grid-template-columns: repeat(4, 1fr);
  gap: 0; border-top: 1px solid rgba(23,19,17,.25);
  padding-top: 40px;
}
.camere-info-item { padding-right: 24px; }
.camere-info-item:not(:first-child) { padding-left: 24px; border-left: 1px solid rgba(23,19,17,.2); }
.camere-info-label {
  display: block; font-size: 10px; letter-spacing: .2em;
  text-transform: uppercase; color: var(--muted); margin-bottom: 8px;
}
.camere-info-val { font-size: 18px; font-weight: 500; }

/* ─── Contatti ───────────────────────────────────────────────────────────── */
.contact-section { padding: 32px 56px 120px; }
.contact-grid {
  display: grid; grid-template-columns: 1fr 1.2fr;
  gap: 80px; align-items: flex-start;
}
.contact-h2 {
  font-family: 'DM Serif Display', serif;
  font-size: clamp(40px, 5.5vw, 80px); line-height: .95; font-weight: 400;
  margin: 0 0 48px; letter-spacing: -.025em; text-wrap: balance;
}
.contact-h2 em { font-style: italic; color: var(--dark); }
.contact-cards { display: flex; flex-direction: column; gap: 0; }
.contact-card {
  display: flex; gap: 20px; align-items: flex-start;
  padding: 28px 0; border-top: 1px solid var(--line);
}
.contact-card:last-child { border-bottom: 1px solid var(--line); }
.contact-card-icon { flex-shrink: 0; padding-top: 2px; }
.contact-card-body { display: flex; flex-direction: column; gap: 4px; }
.contact-card-label { font-size: 10px; letter-spacing: .2em; text-transform: uppercase; color: var(--muted); }
.contact-card-value { font-size: 18px; font-weight: 500; }
.contact-card-value:hover { color: var(--dark); }
.contact-card-note { font-size: 12px; color: var(--muted); }

.checkin-strip {
  display: grid; grid-template-columns: repeat(3, 1fr);
  gap: 0; margin-top: 40px;
  border-top: 1px solid var(--ink);
}
.checkin-item { padding: 24px 0; }
.checkin-item:not(:last-child) { padding-right: 20px; border-right: 1px solid var(--line); margin-right: 20px; }
.checkin-label { display: block; font-size: 10px; letter-spacing: .2em; text-transform: uppercase; color: var(--muted); margin-bottom: 6px; }
.checkin-val { font-size: 16px; font-weight: 500; }

/* Form */
.contact-form-wrap {
  background: var(--beige); padding: 48px 44px;
}
.contact-form-eyebrow { font-size: 10px; letter-spacing: .22em; text-transform: uppercase; color: var(--muted); margin: 0 0 12px; }
.contact-form-title {
  font-family: 'DM Serif Display', serif;
  font-size: 36px; line-height: 1.05; font-weight: 400;
  margin: 0 0 36px; letter-spacing: -.01em;
}
.contact-form { display: flex; flex-direction: column; gap: 20px; }
.form-feedback { padding: 14px 18px; border-radius: 8px; font-size: 14px; line-height: 1.5; margin-bottom: 4px; }
.form-feedback--ok    { background: #e6f4ea; color: #1e6630; border: 1px solid #a8d5b5; }
.form-feedback--error { background: #fce8e6; color: #9c2e1e; border: 1px solid #f5c6c2; }
.form-feedback strong { display: block; margin-bottom: 2px; }
.form-row { display: flex; flex-direction: column; gap: 20px; }
.form-row--2 { flex-direction: row; gap: 20px; }
.form-row--2 .form-group { flex: 1; }
.form-group { display: flex; flex-direction: column; gap: 6px; }
.form-label { font-size: 11px; letter-spacing: .16em; text-transform: uppercase; color: var(--muted); }
.form-input {
  width: 100%; padding: 14px 16px;
  border: 1px solid rgba(23,19,17,.25); background: #FBF6EA;
  font-family: 'Work Sans', sans-serif; font-size: 15px; color: var(--ink);
  outline: none; border-radius: 0;
  transition: border-color .2s;
  -webkit-appearance: none;
}
.form-input:focus { border-color: var(--dark); }
.form-textarea { resize: vertical; min-height: 110px; }
.form-submit { width: 100%; justify-content: center; font-size: 14px; padding: 18px; }
.form-disclaimer { margin: 0; font-size: 12px; color: var(--muted); line-height: 1.6; }

/* Come arrivare */
.howto-section { padding: 48px 56px 120px; background: var(--beige); }
.howto-grid {
  display: grid; grid-template-columns: 1fr 1.4fr;
  gap: 80px; align-items: flex-start;
}
.howto-h2 {
  font-family: 'DM Serif Display', serif;
  font-size: clamp(40px, 5vw, 76px); line-height: .95; font-weight: 400;
  margin: 0 0 24px; letter-spacing: -.025em; text-wrap: balance;
}
.howto-h2 em { font-style: italic; color: var(--dark); }
.howto-intro { font-size: 16px; line-height: 1.65; color: var(--muted); margin: 0 0 40px; }
.howto-routes { display: flex; flex-direction: column; gap: 0; }
.howto-route {
  display: flex; gap: 24px; align-items: flex-start;
  padding: 32px 0; border-top: 1px solid rgba(23,19,17,.2);
}
.howto-route:last-child { border-bottom: 1px solid rgba(23,19,17,.2); }
.howto-route-icon { flex-shrink: 0; padding-top: 2px; }
.howto-route-title { font-size: 17px; font-weight: 600; display: block; margin-bottom: 6px; }
.howto-route-desc { margin: 0; font-size: 15px; line-height: 1.65; color: var(--muted); }

/* Mappa */
.map-embed { border-top: 1px solid var(--ink); border-bottom: 1px solid var(--ink); }

/* 404 */
.error404-section { padding: 120px 56px 160px; text-align: center; position: relative; overflow: hidden; }
.error404-deco {
  position: absolute; left: 50%; top: 50%; transform: translate(-50%,-50%);
  font-family: 'DM Serif Display', serif; font-size: clamp(280px, 40vw, 560px);
  font-style: italic; line-height: 1; font-weight: 400;
  color: rgba(23,19,17,.04); pointer-events: none; user-select: none;
  white-space: nowrap;
}
.error404-inner { position: relative; max-width: 680px; margin: 0 auto; }
.error404-eyebrow { font-size: 11px; letter-spacing: .22em; text-transform: uppercase; color: var(--muted); margin: 0 0 24px; }
.error404-h1 {
  font-family: 'DM Serif Display', serif;
  font-size: clamp(52px, 8vw, 112px); line-height: .95; font-weight: 400;
  margin: 0 0 32px; letter-spacing: -.03em; text-wrap: balance;
}
.error404-h1 em { font-style: italic; color: var(--dark); }
.error404-text { font-size: 18px; line-height: 1.65; color: var(--muted); margin: 0 0 48px; }
.error404-actions { display: flex; gap: 20px; justify-content: center; flex-wrap: wrap; }

/* ─── Territorio note ────────────────────────────────────────────────────── */
.territorio-note {
  display: flex; gap: 10px; align-items: flex-start;
  background: var(--beige); padding: 16px 20px;
  border-left: 3px solid var(--dark); margin-top: 8px;
}
.territorio-note p { margin: 0; font-size: 14px; line-height: 1.6; opacity: .8; }

/* ─── Itinerary ──────────────────────────────────────────────────────────── */
.itinerary-section { padding: 48px 56px 120px; background: var(--beige); }
.itinerary-grid {
  display: grid; grid-template-columns: 1fr 2fr;
  gap: 80px; align-items: flex-start;
}
.itinerary-h2 {
  font-family: 'DM Serif Display', serif;
  font-size: clamp(40px, 5.5vw, 80px); line-height: .95; font-weight: 400;
  margin: 0 0 24px; letter-spacing: -.025em; text-wrap: balance;
}
.itinerary-h2 em { font-style: italic; color: var(--dark); }
.itinerary-intro {
  font-size: 16px; line-height: 1.65; color: var(--muted);
  max-width: 320px;
}
.itinerary-steps { display: flex; flex-direction: column; gap: 0; position: relative; }
.itinerary-steps::before {
  content: ''; position: absolute; left: calc(72px + 12px); top: 12px; bottom: 12px;
  width: 1px; background: var(--line);
}
.itinerary-step {
  display: grid; grid-template-columns: 72px 24px 1fr;
  gap: 0 16px; align-items: flex-start; padding: 28px 0;
  border-top: 1px solid var(--line);
}
.itinerary-step:first-child { border-top: none; padding-top: 0; }
.itinerary-time {
  font-size: 12px; letter-spacing: .12em; font-weight: 600;
  color: var(--dark); padding-top: 3px; text-align: right;
}
.itinerary-dot {
  width: 9px; height: 9px; border-radius: 50%;
  background: var(--dark); margin-top: 5px;
  position: relative; z-index: 1;
}
.itinerary-step-title { font-size: 16px; font-weight: 600; display: block; margin-bottom: 4px; }
.itinerary-step-desc { margin: 0; font-size: 14px; line-height: 1.65; color: var(--muted); }

/* ─── Terme section ──────────────────────────────────────────────────────── */
.terme-grid {
  display: grid; grid-template-columns: 1fr 1fr;
  gap: 80px; align-items: center;
}
.terme-h2 {
  font-family: 'DM Serif Display', serif;
  font-size: clamp(40px, 5.5vw, 80px); line-height: .95; font-weight: 400;
  margin: 0 0 32px; letter-spacing: -.025em; text-wrap: balance;
}
.terme-h2 em { font-style: italic; color: var(--dark); }
.terme-desc { font-size: 17px; line-height: 1.7; color: rgba(23,19,17,.78); margin: 0 0 48px; }
.terme-facts { display: flex; gap: 40px; padding-top: 32px; border-top: 1px solid var(--line); }
.terme-fact { display: flex; flex-direction: column; gap: 6px; }
.terme-fact-num {
  font-family: 'DM Serif Display', serif;
  font-size: 52px; line-height: 1; letter-spacing: -.03em; color: var(--dark);
}
.terme-fact-num small { font-size: .45em; opacity: .7; vertical-align: super; }
.terme-fact-label { font-size: 12px; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); }

/* ─── PSR Section ────────────────────────────────────────────────────────── */
.psr-section {
  padding: 72px 56px;
  background: #F0E8D6;
  border-top: 1px solid var(--line);
}
.psr-inner {
  max-width: 900px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 48px;
  align-items: center;
}
.psr-banner-link {
  display: block;
  border-radius: 4px;
  overflow: hidden;
}
.psr-banner-img {
  width: 100%;
  height: auto;
  display: block;
  object-fit: contain;
  transition: opacity .3s;
}
.psr-banner-link:hover .psr-banner-img { opacity: .9; }
.psr-label {
  font-size: 11px;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--muted);
  margin: 0 0 12px;
}
.psr-title {
  font-size: 15px;
  line-height: 1.6;
  color: var(--ink);
  margin: 0 0 20px;
}
.psr-amount {
  font-size: 14px;
  color: var(--ink);
  margin: 0 0 24px;
}
.psr-amount strong { color: var(--dark); }
.psr-cta {
  display: inline-block;
  font-size: 13px;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--dark);
  border-bottom: 1px solid var(--dark);
  padding-bottom: 2px;
  transition: opacity .2s;
}
.psr-cta:hover { opacity: .7; }

/* ─── PSR page template ──────────────────────────────────────────────────── */
.psr-page-hero {
  padding: 80px 56px 56px;
  background: #EFE1C5;
  border-bottom: 1px solid var(--line);
}
.psr-page-hero h1 {
  font-family: 'DM Serif Display', serif;
  font-size: clamp(28px, 4vw, 52px);
  line-height: 1.15;
  max-width: 720px;
  margin: 0 0 20px;
}
.psr-page-hero p {
  font-size: 17px;
  line-height: 1.6;
  max-width: 640px;
  color: var(--muted);
  margin: 0;
}
.psr-page-content {
  padding: 80px 56px;
  max-width: 920px;
  margin: 0 auto;
}
.psr-page-banner {
  margin: 0 0 64px;
  text-align: center;
}
.psr-page-banner img {
  max-width: 500px;
  width: 100%;
  height: auto;
  object-fit: contain;
  display: inline-block;
}
.psr-table {
  width: 100%;
  border-collapse: collapse;
  margin-bottom: 48px;
}
.psr-table tr {
  border-bottom: 1px solid var(--line);
}
.psr-table th {
  width: 38%;
  padding: 18px 16px 18px 0;
  text-align: left;
  font-size: 11px;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--muted);
  font-weight: 500;
  vertical-align: top;
}
.psr-table td {
  padding: 18px 0;
  font-size: 15px;
  line-height: 1.55;
  color: var(--ink);
  vertical-align: top;
}
.psr-table td strong { color: var(--dark); }
.psr-page-note {
  font-size: 13px;
  color: var(--muted);
  line-height: 1.65;
  border-top: 1px solid var(--line);
  padding-top: 32px;
}

/* ─── Hero — logo in sovraimpressione ───────────────────────────────────── */
@keyframes hero-logo-fadein {
  from { opacity: 0; transform: translate(-50%, calc(-50% + 12px)); }
  to   { opacity: 1; transform: translate(-50%, -50%); }
}
.hero-overlay-logo {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 4;
  pointer-events: none;
}
.hero-overlay-logo-img {
  /* reset dalle regole globali img */
  position: static !important;
  inset: auto !important;
  width: auto !important;
  height: auto !important;
  object-fit: contain !important;
  display: block !important;
  /* dimensioni */
  max-width: min(320px, 52%);
  max-height: 140px;
  /* effetto */
  filter: drop-shadow(0 4px 28px rgba(0,0,0,0.45));
  /* fade-in: parte trasparente, dopo 0.3s entra in 1.4s */
  animation: hero-logo-fadein 1.4s cubic-bezier(.22,1,.36,1) 0.3s both;
}
/* Accessibilità: nessun movimento */
@media (prefers-reduced-motion: reduce) {
  .hero-overlay-logo-img {
    animation: none;
    opacity: 1;
    transform: none;
  }
  .hero-overlay-logo { transform: translate(-50%, -50%); }
}

/* ─── Ken Burns — hero animation ────────────────────────────────────────── */
@keyframes kenburns {
  0%   { transform: scale(1.02) translate(0,      0);    }
  25%  { transform: scale(1.08) translate(-1.2%, -0.6%); }
  50%  { transform: scale(1.10) translate( 0.5%, -1.2%); }
  75%  { transform: scale(1.07) translate( 1.2%,  0.5%); }
  100% { transform: scale(1.02) translate(0,      0);    }
}
/* Classe da aggiungere al wrapper .hero-image per attivare l'animazione */
.hero-image--kenburns img {
  animation: kenburns 22s ease-in-out infinite;
  will-change: transform;
  transform-origin: center center;
}
/* Rispetta chi ha impostato "Riduci movimento" nel sistema */
@media (prefers-reduced-motion: reduce) {
  .hero-image--kenburns img { animation: none; }
  .hero-video { animation: none; }
}

/* ─── Mobile ─────────────────────────────────────────────────────────────── */
@media (max-width: 900px) {
  /* Sfondo coerente su tutte le pagine */
  body, main, .site-content { background: #FBF6EA; }
  body { padding-top: 69px; padding-bottom: 44px; } /* 44px = tab barra minimizzata */

  .masthead { padding: 12px 20px; }
  .masthead-logo { height: 40px; }
  .masthead-date { display: none; } /* nasconde la data su mobile per spazio */
  .masthead-lang { margin-left: 8px; padding-left: 10px; }
  .lang-flag--btn { width: 24px; height: 17px; }
  /* Dropdown lingua su mobile: apre verso sinistra */
  .lang-dropdown { right: 0; left: auto; min-width: 130px; }
  .masthead-nav { display: none; }
  .masthead-nav.open {
    display: flex; flex-direction: column;
    position: absolute; top: 100%; left: 0; right: 0;
    background: #FBF6EA; padding: 24px 24px 20px;
    border-bottom: 1px solid var(--line); gap: 0; z-index: 199;
  }
  .masthead-nav.open a {
    font-size: 17px; letter-spacing: .03em;
    padding: 13px 0; /* touch target ≥44px */
    border-bottom: 1px solid rgba(23,19,17,.07);
    display: block;
  }
  .masthead-nav.open a:last-child { border-bottom: none; }
  .nav-toggle { display: flex; }

  .hero-grid { grid-template-columns: 1fr; }
  /* hero-image è sempre absolute → l'altezza viene dal hero-text */
  .hero-image { height: auto; border: none; }
  .hero-image img,
  .hero-image video { position: absolute; inset: 0; height: 100%; }
  .hero-text { padding: 48px 24px 56px; min-height: 82vw; }
  /* Su mobile il logo sparisce — il testo occupa tutta la larghezza */
  .hero-text-logo { display: none; }
  .hero-h1 { font-size: clamp(52px,11vw,80px); }

  .strip { grid-template-columns: 1fr 1fr; padding: 16px 24px; gap: 16px; }
  .pullquote-section { padding: 29px 24px 48px; }
  .benefits-section { padding: 16px 24px 72px; }
  .benefits-grid { grid-template-columns: 1fr; }
  .benefit-card { border-right: none !important; border-bottom: 1px solid var(--line); padding: 32px 0; }
  .why-section { padding: 29px 24px 72px; }
  .why-grid { grid-template-columns: 1fr; gap: 40px; }
  .location-section { padding: 29px 24px 72px; }
  .location-grid { grid-template-columns: 1fr 1fr; }
  .location-item:nth-child(2) { border-right: none; }
  .rooms-section { padding: 29px 24px 72px; }
  .rooms-grid { grid-template-columns: repeat(3, 1fr); gap: 12px; }
  .services-grid { grid-template-columns: repeat(3,1fr); }
  .pricing-section { padding: 29px 24px 72px; }
  .pricing-grid { grid-template-columns: 1fr; }
  /* Spazi strip tablet */
  .spazi-strip-section { padding-top: 56px; }
  .spazi-strip-header { padding: 0 24px 32px; flex-direction: column; align-items: flex-start; gap: 16px; }
  .spazi-strip-slide { flex: 0 0 calc(50% - 1.5px); }
  .experiences-section { padding: 16px 24px 72px; }
  .experiences-grid { grid-template-columns: 1fr; }
  .faq-section { padding: 16px 24px 72px; }
  .compare-section { padding: 29px 24px 72px; }
  .compare-head, .compare-row { grid-template-columns: 120px 1fr 1fr; font-size: 14px; }
  .final-section { padding: 96px 24px; }
  .final-deco { display: none; }
  .footer { padding: 48px 24px 24px; }
  .footer-grid { grid-template-columns: 1fr 1fr; gap: 24px; }
  .footer-bottom { flex-direction: column; gap: 8px; padding-bottom: 56px; } /* spazio per tab barra */
  .footer-psr { padding: 32px 24px; }
  .footer-psr img { max-width: 280px; }

  /* ── Ristoranti page ── */
  .ristoranti-section { padding: 29px 24px 56px; }
  .ristoranti-grid { grid-template-columns: 1fr; }
  .ristorante-card:last-child:nth-child(odd) { grid-column: auto; }
  .ristorante-img { height: 200px; }
  .ristorante-body { padding: 28px 28px 32px; }
  .location-grid--5 { grid-template-columns: repeat(3, 1fr); }
  /* Location compatta tablet */
  .location-section--compact { padding: 40px 24px 48px; }
  .location-section--compact .location-h2 { font-size: clamp(26px, 6vw, 40px); margin-bottom: 24px; }
  .location-section--compact .location-grid--3 { grid-template-columns: 1fr 1fr 1fr; }

  /* Strada del Vino */
  .strade-vino-section { padding: 40px 24px; }
  .strade-vino-inner { gap: 32px; }
  .strade-vino-logo-link img { width: 110px; }

  /* Contatti ristoranti — tablet: indirizzo nascosto, resto su una riga */
  .rist-contact-row:hover { margin: 0; padding-left: 0; padding-right: 0; }
  .rist-contact-name { flex: 0 0 180px; }
  .rist-contact-dist { flex: 0 0 130px; }
  .rist-contact-addr { display: none; }
  .rist-contact-tel { flex: 1; }

  /* ── Page hero pagine interne ── */
  .page-hero-h1 { font-size: clamp(40px, 10vw, 64px); line-height: .95; }
  .page-hero-lead { font-size: 16px; }
  .page-hero-eyebrow { margin: 0 0 20px; }

  /* ── Folio ── */
  .folio { margin-bottom: 40px; }

  /* ── Final section ── */
  .final-text { font-size: 17px; margin-top: 24px; margin-bottom: 36px; }

  /* ── Room spreads (dormire / cantine) ── */
  .room-spread-name { font-size: clamp(28px, 7vw, 42px); }
  .room-spread-desc { font-size: 15px; }
  .room-spread-body { padding: 40px 24px 56px; }
  .room-amenity-list { grid-template-columns: 1fr; }

  /* ── Pulsanti touch target 44px ── */
  .btn-solid, .btn-ghost, .btn-final, .pricing-btn {
    min-height: 44px;
    display: inline-flex; align-items: center; justify-content: center;
  }

  /* ── page-dormire: griglia tipologie → 1 colonna ── */
  .psr-project-section { padding: 64px 24px 56px; }
  .psr-grid { grid-template-columns: 1fr; gap: 40px; }

  /* ── page-cantine: vini grid → 2 colonne ── */
  .psr-results-grid { grid-template-columns: 1fr 1fr; }
  .psr-result-card { border-right: none !important; padding: 28px 0; }
  .psr-result-card:not(:first-child) { padding-left: 0; border-top: 1px solid rgba(239,225,197,.2) !important; }
  .psr-result-card:nth-child(-n+2) { border-top: none !important; }
  .psr-result-card:nth-child(odd) { padding-right: 20px; border-right: 1px solid rgba(239,225,197,.2) !important; }
  .psr-result-card:nth-child(even) { padding-left: 20px !important; }
  .psr-result-num { font-size: 52px; }

  /* ── WhatsApp float — più vicino al bordo su tablet ── */
  .whatsapp-float { right: 20px; }

  /* Reviews */
  .reviews-section { padding: 29px 24px 72px; }
  .reviews-header { grid-template-columns: 1fr; gap: 32px; }
  .reviews-grid { grid-template-columns: 1fr 1fr; }
  .review-card:nth-child(2) { border-right: none; }
  .review-card:nth-child(3) { border-right: 1px solid rgba(23,19,17,.2); border-top: 1px solid rgba(23,19,17,.2); }
  .review-card:nth-child(4) { border-right: none; border-top: 1px solid rgba(23,19,17,.2); }
  /* Instagram */
  .instagram-section { padding: 22px 24px 72px; }
  .instagram-header { flex-direction: column; align-items: flex-start; }
  .instagram-grid { grid-template-columns: repeat(2, 1fr); }
  /* Location 6 items — 3 colonne su tablet */
  .location-grid { grid-template-columns: repeat(3, 1fr); }
  /* Services light — 4 colonne su tablet */
  .services-grid--light { grid-template-columns: repeat(4, 1fr); gap: 14px; }
  /* Services */
  .services-grid--9 { grid-template-columns: repeat(3,1fr) !important; }
  /* PSR */
  .psr-section { padding: 56px 24px; }
  .psr-inner { grid-template-columns: 1fr; gap: 32px; }
  .psr-page-hero { padding: 56px 24px 40px; }
  .psr-page-content { padding: 56px 24px; }
  .psr-table th { width: 34%; }
  /* Contatti */
  .contact-section { padding: 19px 24px 72px; }
  .contact-grid { grid-template-columns: 1fr; gap: 48px; }
  .contact-form-wrap { padding: 32px 24px; }
  .form-row--2 { flex-direction: column; }
  .howto-section { padding: 29px 24px 72px; }
  .howto-grid { grid-template-columns: 1fr; gap: 48px; }
  .checkin-strip { grid-template-columns: 1fr; }
  .checkin-item:not(:last-child) { border-right: none; margin-right: 0; border-bottom: 1px solid var(--line); padding-bottom: 20px; margin-bottom: 0; }
  /* 404 */
  .error404-section { padding: 80px 24px 120px; }
  /* Territorio */
  .itinerary-section { padding: 29px 24px 72px; }
  .itinerary-grid { grid-template-columns: 1fr; gap: 40px; }
  .itinerary-steps::before { left: calc(60px + 12px); }
  .itinerary-step { grid-template-columns: 60px 20px 1fr; }
  /* Camere page */
  .page-hero { padding: 48px 24px 56px; }
  .page-hero-meta { gap: 12px; }
  .room-spread { grid-template-columns: 1fr; min-height: auto; }
  .room-spread-img { height: 62vw; border-right: none !important; border-left: none !important; border-bottom: 1px solid var(--ink); order: 0 !important; }
  .room-spread-img-wrap { position: relative; height: 100%; }
  .room-spread-body { order: 1 !important; padding: 40px 24px 56px; }
  .room-spread-num { font-size: 96px; top: 16px; right: 20px; }
  .room-amenity-list { grid-template-columns: 1fr; }
  .camere-services-section { padding: 29px 24px 72px; }
  .camere-services-grid { grid-template-columns: repeat(3, 1fr); gap: 24px; }
  .camere-info-strip { grid-template-columns: 1fr 1fr; gap: 24px; border-top: none; padding-top: 0; }
  .camere-info-item { border-left: none !important; padding-left: 0 !important; border-top: 1px solid rgba(23,19,17,.2); padding-top: 20px; }

  /* ── Sezione vini cantine: padding tablet ── */
  .psr-results-section { padding: 56px 24px; }

  /* ── btn-ghost-beige touch target ── */
  .btn-ghost-beige { min-height: 44px; display: inline-flex; align-items: center; justify-content: center; }
}

@media (max-width: 560px) {
  .strip { grid-template-columns: 1fr; }
  /* ── Location grid: 2 colonne su smartphone ── */
  .location-grid { grid-template-columns: 1fr 1fr; }
  .location-item {
    border-right: none !important;
    border-bottom: 1px solid var(--line);
    min-height: 0;
    padding: 20px 12px 20px 0;
  }
  .location-item:not(:first-child) { padding-left: 12px; }
  /* bordo destro solo sulla colonna sinistra */
  .location-item:nth-child(odd)  { border-right: 1px solid var(--line) !important; }
  .location-item:nth-child(even) { border-right: none !important; }
  /* ultima riga: niente bordo inferiore */
  .location-item:last-child { border-bottom: none !important; }
  .location-item:nth-last-child(2):nth-child(odd) { border-bottom: none !important; }
  /* numero km più compatto a 2 colonne */
  .location-km { font-size: clamp(36px, 10vw, 52px); }
  .location-km span { font-size: 16px; }
  /* Compact (cantine / ristoranti): stessi fix di bordo */
  .location-section--compact .location-item { padding: 14px 12px 14px 0; }
  .location-section--compact .location-item:not(:first-child) { padding-left: 12px; }
  .location-section--compact .location-item:nth-child(odd) { border-right: 1px solid var(--line) !important; }
  .rooms-grid { grid-template-columns: repeat(2, 1fr); gap: 10px; }
  .services-grid { grid-template-columns: repeat(2,1fr); }
  .compare-head, .compare-row { grid-template-columns: 1fr; gap: 4px; }
  .compare-head-hotel, .compare-hotel { display: none; }
  .why-points { grid-template-columns: 1fr; }
  .footer-grid { grid-template-columns: 1fr; }
  /* Camere page */
  .camere-services-grid { grid-template-columns: repeat(2, 1fr); }
  .camere-info-strip { grid-template-columns: 1fr; }
  /* Reviews mobile */
  .reviews-grid { grid-template-columns: 1fr; }
  .review-card { border-right: none !important; border-top: 1px solid rgba(23,19,17,.2) !important; padding-left: 0 !important; padding-right: 0 !important; }
  .review-card:first-child { border-top: none !important; }
  /* Instagram mobile */
  .instagram-grid { grid-template-columns: repeat(2, 1fr); }
  /* Services light — 3 colonne su mobile */
  .services-grid--light { grid-template-columns: repeat(3, 1fr); gap: 10px; margin-top: 40px; padding-top: 32px; }
  .services-grid--light .service-item { padding: 14px 12px 12px; }
  /* Rimuovi uppercase su mobile: 10px uppercase è illeggibile */
  .service-label-light { font-size: 10px; margin-top: 10px; text-transform: none; letter-spacing: .01em; font-weight: 600; }

  /* ── Ristoranti page mobile ── */
  .ristorante-img { height: 180px; }
  .ristorante-body { padding: 22px 20px 28px; }
  .ristorante-name { font-size: 22px; }
  .location-grid--5 { grid-template-columns: 1fr 1fr; }
  .location-grid--3 { grid-template-columns: 1fr 1fr; }
  /* card orfana su mobile a 2 col: span full width, bordo superiore esplicito */
  .location-grid--3 .location-item:last-child:nth-child(odd) {
    grid-column: 1 / -1;
    border-right: none !important;
    border-top: 1px solid var(--line);
    border-bottom: 1px solid var(--line) !important;
  }
  /* Location compatta mobile */
  .location-section--compact { padding: 32px 20px 40px; }
  .location-section--compact .location-grid--3 { grid-template-columns: 1fr 1fr; }
  .location-section--compact .location-item { padding: 16px 16px 16px 0; }
  .location-section--compact .location-item:not(:first-child) { padding-left: 16px; }
  /* card ristoranti su mobile: addr e tel compatti */
  .location-addr { font-size: 11px; margin-top: 4px; }
  .location-tel { font-size: 12px; margin-top: 6px; gap: 4px; }
  .location-name { font-size: 15px; }
  .location-dist { font-size: 18px; }

  /* Strada del Vino mobile */
  .strade-vino-section { padding: 32px 20px; }
  .strade-vino-inner { flex-direction: column; gap: 20px; align-items: flex-start; }
  .strade-vino-logo-link img { width: 120px; }

  /* Contatti ristoranti — mobile: due righe (nome+tel / distanza) */
  .rist-contact-row { flex-wrap: wrap; gap: 2px; padding: 14px 0; }
  .rist-contact-name { flex: 1 1 auto; font-size: 15px; padding-right: 12px; }
  .rist-contact-dist { flex: 0 0 100%; order: 3; font-size: 10px; padding-top: 2px; }
  .rist-contact-tel { flex: 0 0 auto; justify-content: flex-end; }

  /* ── Page hero mobile piccolo ── */
  .page-hero { padding: 32px 20px 40px; }
  .page-hero-h1 { font-size: clamp(36px, 11vw, 52px); }
  .page-hero-lead { font-size: 15px; }

  /* ── Folio mobile ── */
  .folio { margin-bottom: 28px; }

  /* ── Final CTA mobile ── */
  .final-text { font-size: 15px; margin-top: 16px; margin-bottom: 24px; }

  /* ── Pulsanti — touch target minimo 44px ── */
  .btn-solid, .btn-ghost, .btn-final, .pricing-btn {
    min-height: 44px;
    display: inline-flex; align-items: center; justify-content: center;
  }

  /* ── page-cantine: vini → 1 colonna su mobile piccolo ── */
  .psr-results-grid { grid-template-columns: 1fr; }
  .psr-result-card { border-right: none !important; padding: 20px 0 !important; }
  .psr-result-card:nth-child(odd) { border-right: none !important; padding-right: 0 !important; }
  .psr-result-card:nth-child(even) { padding-left: 0 !important; }
  .psr-result-card:not(:first-child) { border-top: 1px solid rgba(239,225,197,.2) !important; }
  .psr-result-num { font-size: 44px; }

  /* ── WhatsApp — più piccolo su mobile ── */
  .whatsapp-float { width: 48px; height: 48px; right: 16px; }

  /* PSR mobile */
  .psr-section { padding: 40px 20px; }
  .psr-inner { gap: 24px; }
  /* masthead wordmark mobile */
  .masthead-wordmark strong { font-size: 17px; letter-spacing: .25em; }

  /* ── Font ottimizzati per schermi piccoli ────────────────── */
  /* Titoli: riduciamo quelli che escono dallo schermo */
  .hero-h1 { font-size: clamp(44px, 13vw, 72px); }
  .why-h2 { font-size: clamp(36px, 10vw, 56px); }
  .pricing-big { font-size: clamp(64px, 18vw, 100px); }
  /* Corpo testo: minimo 15px per leggibilità */
  body { font-size: 15px; }
  /* Labels / folio: minimo 11px, già ok */
  .folio { font-size: 10px; letter-spacing: .16em; }
  /* Booking bar tab: più alto su mobile per touch */
  .booking-bar-tab { height: 36px; top: -36px; font-size: 10px; padding: 0 14px; }
  /* Pulsanti: touch target 44px */
  .btn-primary, .btn-outline {
    min-height: 48px; padding: 13px 28px; font-size: 12px;
  }
  /* Review card: testo più grande */
  .review-text { font-size: 15px; }
  /* Sezioni: meno padding verticale su schermi piccoli */
  .why-section { padding: 56px 20px; }
  .pricing-section { padding: 56px 20px; }
  /* Spazi strip mobile */
  .spazi-strip-section { padding-top: 40px; }
  .spazi-strip-header { padding: 0 20px 24px; }
  .spazi-strip-slide { flex: 0 0 calc(82% - 1.5px); }
  .spazi-strip-btn { display: none; }
  .final-section { padding: 72px 20px; }

  /* ── Benefit cards: layout orizzontale su mobile ── */
  .benefit-card {
    flex-direction: row;
    align-items: flex-start;
    gap: 16px;
    min-height: 0;
    padding: 20px 0;
  }
  /* Rimuove il padding-left ereditato dal layout desktop a 3 colonne */
  .benefit-card:not(:first-child) { padding-left: 0; }
  .benefit-num { display: none; }
  .benefit-icon-wrap {
    width: 44px; height: 44px;
    margin-bottom: 0;
    flex-shrink: 0;
    border-radius: 6px;
  }
  .benefit-title { font-size: 20px; margin-bottom: 8px; }
  .benefit-text { font-size: 14px; }

  /* ── Padding sezioni homepage: più compatto su mobile ── */
  .benefits-section   { padding: 28px 20px 40px; }
  .pullquote-section  { padding: 40px 20px 28px; }
  .experiences-section { padding: 28px 20px 40px; }
  .compare-section    { padding: 48px 20px; }
  .reviews-section    { padding: 48px 20px; }
  .instagram-section  { padding: 36px 20px 48px; }
  .services-section   { padding: 40px 20px; }

  /* ── Folio: nasconde span centrale — evita overflow su 320-375px ── */
  .folio span:nth-child(2) { display: none; }

  /* ── psr-data-card + psr-field (pagina dove dormire) ── */
  .psr-data-card { padding: 24px 20px; }
  .psr-field { grid-template-columns: 1fr; gap: 4px; padding: 14px 0; }
  .psr-field-label { padding-top: 0; }
  .psr-h2 { font-size: clamp(32px, 9vw, 52px); margin-bottom: 24px; }

  /* ── Numero camera su mobile piccolo ── */
  .room-spread-num { font-size: 64px; top: 12px; right: 16px; }

  /* ── WhatsApp: sale sopra la booking bar (altezza ~68px) ── */
  .whatsapp-float { bottom: 76px; right: 14px; width: 46px; height: 46px; }

  /* ── Padding sezioni su mobile piccolo ── */
  .location-section { padding: 48px 20px; }
  .faq-section { padding: 32px 20px 48px; }
  .psr-results-section { padding: 40px 20px; }
  .psr-results-h2 { margin-bottom: 36px; }

  /* ── page-hero: line-height più aperto su font piccolo ── */
  .page-hero-h1 { line-height: 1.0; }

  /* ── btn-ghost-beige touch target ── */
  .btn-ghost-beige { min-height: 44px; display: inline-flex; align-items: center; justify-content: center; }

}

/* ─── BOOKING BAR — widget prenotazione fisso in basso ──────────────── */

/* ─── Nav booking link — distinto dagli altri link del menu ─────────────── */
.nav-booking-link {
  border: 1px solid currentColor;
  padding: 4px 10px !important;
  border-radius: 3px;
  white-space: nowrap;
  margin-left: 4px;
}
.nav-booking-link:hover {
  opacity: 1 !important;
  background: var(--ink);
  color: var(--beige);
}
/* Su mobile aperto: reimposta stile lista normale */
.masthead-nav.open .nav-booking-link {
  border: none;
  padding: 13px 0 !important;
  margin-left: 0;
  border-radius: 0;
  background: transparent;
  color: var(--ink);
}

.booking-bar {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  z-index: 900;
  background: #fff;
  border-top: 2px solid var(--dark);
  box-shadow: 0 -4px 32px rgba(23,19,17,.13);
  transform: translateY(0);
  transition: transform .35s cubic-bezier(.4,0,.2,1);
}

/* Tab — pill assoluto sopra la barra; si muove con la barra durante l'animazione */
.booking-bar-tab {
  position: absolute;
  top: -28px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  padding: 0 18px;
  height: 28px;
  white-space: nowrap;
  background: var(--dark);
  color: #fff;
  border: none;
  border-radius: 8px 8px 0 0;
  font-family: var(--sans);
  font-size: 10px;
  font-weight: 500;
  letter-spacing: .12em;
  text-transform: uppercase;
  cursor: pointer;
  pointer-events: auto; /* rimane cliccabile anche quando la barra è off-screen */
  transition: background .2s;
  z-index: 1;
}
.booking-bar-tab:hover { background: #8a3520; }
.booking-bar-tab-chevron {
  display: flex;
  align-items: center;
  transition: transform .3s ease;
}
/* Freccia punta giu' quando barra aperta, su quando chiusa/minimizzata */
.booking-bar-tab[aria-expanded="true"] .booking-bar-tab-chevron { transform: rotate(180deg); }

/* Minimizzato o nascosto: tutta la barra scivola giù, il tab (top:-28px) rimane al fondo */
.booking-bar--minimized,
.booking-bar--hidden {
  transform: translateY(100%);
}
.booking-bar-inner {
  max-width: 1280px;
  margin: 0 auto;
  padding: 12px 24px;
  display: flex;
  align-items: center;
  gap: 18px;
}
.booking-bar-badge {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  gap: 10px;
}
.booking-bar-badge-icon {
  width: 36px;
  height: 36px;
  background: var(--dark);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.booking-bar-label {
  flex: 0 0 auto;
}
.booking-bar-label strong {
  display: block;
  font-family: var(--serif);
  font-size: 15px;
  font-style: italic;
  color: var(--ink);
  line-height: 1.2;
}
.booking-bar-label span {
  display: block;
  font-family: var(--sans);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--dark);
  margin-top: 1px;
}
.booking-bar-divider {
  width: 1px;
  height: 36px;
  background: rgba(23,19,17,.15);
  flex-shrink: 0;
}
.booking-bar-widget {
  flex: 1;
  min-width: 0;
}
.booking-bar-close {
  flex: 0 0 auto;
  background: none;
  border: 1px solid rgba(23,19,17,.2);
  border-radius: 50%;
  width: 30px;
  height: 30px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  color: rgba(23,19,17,.45);
  font-size: 16px;
  line-height: 1;
  padding: 0;
  transition: border-color .2s, color .2s, background .2s;
}
.booking-bar-close:hover {
  border-color: var(--ink);
  color: var(--ink);
  background: rgba(23,19,17,.04);
}

@media (max-width: 860px) {
  .booking-bar-badge { display: none; }
  .booking-bar-divider { display: none; }
}
@media (max-width: 560px) {
  .booking-bar-inner {
    padding: 10px 12px;
    gap: 10px;
  }
  .booking-bar-label { display: none; }
  .booking-bar-tab {
    max-width: calc(100vw - 32px);
    overflow: hidden;
    text-overflow: ellipsis;
  }
}
