/* =============================================================
   Suite Farnese — Inner pages styles
   ============================================================= */

/* ============================================================
   Page hero (compact)
   ============================================================ */
.sf-pagehero {
  position: relative;
  height: clamp(400px, 52vh, 560px);
  color: var(--sf-bone);
  overflow: hidden;
  isolation: isolate;
}
.sf-pagehero-media { position: absolute; inset: 0; z-index: -2; }
.sf-pagehero-media img {
  width: 100%; height: 100%;
  object-fit: cover;
  animation: sf-ken-burns 28s ease-in-out infinite alternate;
}
.sf-pagehero-overlay {
  position: absolute; inset: 0; z-index: -1;
  background: linear-gradient(180deg, rgba(15,14,12,0.18) 0%, rgba(15,14,12,0.36) 60%, rgba(15,14,12,0.62) 100%);
}
.sf-pagehero-inner {
  height: 100%;
  display: flex; flex-direction: column;
  justify-content: end;
  align-items: center;
  text-align: center;
  padding-block: clamp(56px, 7vw, 96px);
  max-width: 1440px;
}
.sf-pagehero--left .sf-pagehero-inner {
  align-items: flex-start;
  text-align: left;
}
.sf-pagehero--left .sf-pagehero-title {
  font-size: clamp(48px, 6.4vw, 96px);
  max-width: 16ch;
  margin: 0 0 18px;
}
.sf-pagehero--left .sf-pagehero-eyebrow {
  margin-bottom: 22px;
  font-size: 12px;
}
.sf-pagehero-eyebrow {
  font-size: 11px; font-weight: 600;
  letter-spacing: 0.18em; text-transform: uppercase;
  margin-bottom: 14px;
  opacity: 0.92;
}
.sf-pagehero-title {
  font-family: var(--sf-font-serif);
  font-weight: 400;
  font-size: var(--sf-fs-page-hero);
  line-height: 1.04;
  letter-spacing: -0.022em;
  margin: 0 0 14px;
  text-wrap: balance;
  max-width: 22ch;
}
.sf-pagehero-title em { font-style: italic; color: var(--sf-red); font-family: inherit; }
.sf-pagehero-title .sf-caprarola { color: var(--sf-red); }
.sf-pagehero-sub {
  font-size: clamp(14px, 1vw, 16px);
  line-height: 1.5;
  max-width: 56ch;
  margin: 0;
  opacity: 0.92;
}

/* ============================================================
   Generic section spacing
   ============================================================ */
.sf-apt-section {
  padding: clamp(28px, 4vw, 52px) 0;
}

/* Intro lede block */
.sf-apt-intro-block { padding-top: clamp(36px, 5vw, 60px); }
.sf-apt-intro-lede {
  font-family: var(--sf-font-serif);
  font-weight: 400;
  font-size: clamp(22px, 2.4vw, 36px);
  line-height: 1.32;
  letter-spacing: -0.012em;
  color: var(--sf-ink);
  max-width: 52ch;
  margin: 0 auto;
  text-align: center;
  text-wrap: balance;
}

/* ============================================================
   Apartment detail — gallery / feature / specs / other-home
   ============================================================ */
.sf-apt-gallery-block { padding: 0; }

/* Justified gallery — Flickr/Google Photos style */
.sf-jg {
  padding: 0 var(--sf-gutter) clamp(20px, 3vw, 36px);
  max-width: 1480px;
  margin: 0 auto;
}
.sf-jg-row {
  display: flex;               /* inline style sets height + gap + marginBottom */
  align-items: stretch;
  width: 100%;
}
.sf-jg-item {
  flex-shrink: 0;
  overflow: hidden;
  background: var(--sf-cream);
  /* width is set via inline style to pixel-exact value from the algorithm */
}
.sf-jg-item img {
  /* Container dimensions match the image's natural AR (algorithm-guaranteed),
     so object-fit: cover does not crop — it just fills the container cleanly. */
  width: 100%; height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 700ms var(--sf-ease);
}
.sf-jg-item:hover img { transform: scale(1.03); }
.sf-jg-loader {
  height: 360px;
  background: var(--sf-cream);
}

.sf-apt-feature-grid {
  display: grid;
  grid-template-columns: 1.1fr 1fr;
  gap: clamp(40px, 6vw, 96px);
  align-items: start;
}
.sf-apt-feature-title {
  font-family: var(--sf-font-display);
  font-weight: 400;
  font-size: var(--sf-fs-h1);
  line-height: 1.04;
  letter-spacing: -0.025em;
  margin: 0;
  text-wrap: balance;
}
.sf-apt-feature-title em {
  font-family: var(--sf-font-serif);
  font-style: italic;
  font-weight: 400;
  color: var(--sf-red);
}
.sf-apt-feature-body {
  font-size: var(--sf-fs-body);
  line-height: 1.45;
  color: var(--sf-ink-2);
  margin: 0;
  max-width: 48ch;
}

.sf-apt-specs-grid {
  display: grid;
  grid-template-columns: 1.2fr 1fr;
  gap: clamp(40px, 6vw, 96px);
  align-items: start;
}
.sf-h3-label {
  font-family: var(--sf-font-body);
  font-size: 11px; font-weight: 600;
  letter-spacing: 0.18em; text-transform: uppercase;
  color: var(--sf-ink-3);
  margin: 0 0 22px;
}
.sf-amenities {
  list-style: none; padding: 0; margin: 0;
  display: grid; grid-template-columns: 1fr 1fr;
  gap: 14px 24px;
}
.sf-amenities li {
  display: flex; align-items: start; gap: 10px;
  font-size: 15px; line-height: 1.4; color: var(--sf-ink);
}
.sf-amenities li svg { color: var(--sf-sage-deep); margin-top: 4px; flex-shrink: 0; }

.sf-amenities-cats { display: flex; flex-direction: column; gap: 0; }
.sf-amenities-cat-row {
  display: flex; align-items: baseline; gap: 20px;
  padding: 13px 0; border-bottom: 1px solid var(--sf-line);
  font-size: 15px; line-height: 1.5;
}
.sf-amenities-cat-row:first-child { border-top: 1px solid var(--sf-line); }
.sf-amenities-cat-label {
  flex: 0 0 90px; font-size: 11px; letter-spacing: .08em;
  text-transform: uppercase; color: var(--sf-ink-3); font-weight: 600;
}
.sf-amenities-cat-items { color: var(--sf-ink); }

.sf-specs-table { display: flex; flex-direction: column; border-top: 1px solid var(--sf-line); }
.sf-specs-row {
  display: flex; justify-content: space-between;
  padding: 14px 0;
  border-bottom: 1px solid var(--sf-line);
  font-size: 14px;
}
.sf-specs-row > span:first-child {
  color: var(--sf-ink-3); font-size: 11px;
  letter-spacing: 0.12em; text-transform: uppercase;
  font-weight: 500; align-self: center;
}
.sf-specs-row > span:last-child { color: var(--sf-ink); font-weight: 500; }
.sf-apt-price-card {
  margin-top: 28px;
  padding: 24px;
  background: var(--sf-cream);
}
.sf-apt-price-card-hint {
  font-family: var(--sf-font-serif);
  font-style: normal;
  font-weight: 400;
  font-size: 17px;
  line-height: 1.45;
  color: var(--sf-ink);
  margin: 0;
  letter-spacing: -0.012em;
}

.sf-apt-other { background: var(--sf-cream); padding: clamp(28px, 4vw, 52px) 0; }
.sf-apt-other-grid {
  display: grid; grid-template-columns: 1fr 1fr;
  gap: clamp(40px, 6vw, 80px); align-items: center;
}
.sf-apt-other-text { display: flex; flex-direction: column; gap: 22px; align-items: start; padding: clamp(16px, 2vw, 32px) clamp(0px, 2vw, 32px); }
.sf-apt-other-text > .sf-chapter { margin-bottom: 0; }
.sf-apt-other-title {
  font-family: var(--sf-font-serif); font-weight: 400;
  font-size: var(--sf-fs-h1);
  letter-spacing: -0.02em; line-height: 1.0;
  margin: 0; color: var(--sf-ink);
}
.sf-apt-other-text p {
  font-size: 17px; line-height: 1.45;
  color: var(--sf-ink-2); max-width: 38ch; margin: 0;
}
.sf-apt-other-media { display: block; aspect-ratio: 4/3; overflow: hidden; }
.sf-apt-other-media img {
  width: 100%; height: 100%; object-fit: cover;
  transition: transform 700ms var(--sf-ease);
}
.sf-apt-other-media:hover img { transform: scale(1.04); }

/* ============================================================
   Caprarola page (Storia: Palazzo + Santa Teresa)
   ============================================================ */
.sf-cap-section { padding: clamp(70px, 8vw, 130px) 0; }
.sf-cap-intro {
  max-width: 780px;
  margin: 0 auto;
  text-align: center;
}
.sf-cap-eyebrow {
  font-size: 12px; font-weight: 600;
  letter-spacing: 0.18em; text-transform: uppercase;
  color: var(--sf-sage-deep);
  margin-bottom: 22px;
}
.sf-cap-h2 {
  font-family: var(--sf-font-display);
  font-weight: 400;
  font-size: var(--sf-fs-h1);
  line-height: 1.04;
  letter-spacing: -0.025em;
  margin: 0 0 24px;
  text-wrap: balance;
}
.sf-cap-h2 em {
  font-family: var(--sf-font-serif);
  font-style: italic;
  font-weight: 400;
  color: var(--sf-red);
}
.sf-cap-lede {
  font-size: var(--sf-fs-lede);
  line-height: 1.45;
  color: var(--sf-ink-2);
  margin: 0;
  text-wrap: pretty;
}

.sf-cap-block { padding: clamp(40px, 5vw, 80px) 0; }
.sf-cap-block-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(36px, 5vw, 80px);
  align-items: center;
}
.sf-cap-block-grid--rev { direction: rtl; }
.sf-cap-block-grid--rev > * { direction: ltr; }
.sf-cap-block-grid--text-only {
  grid-template-columns: 1fr;
  max-width: 720px;
  margin: 0 auto;
}
.sf-cap-block-media {
  aspect-ratio: 4/5;
  overflow: hidden;
  background: var(--sf-cream);
}
.sf-cap-block-media img { width: 100%; height: 100%; object-fit: cover; }
.sf-cap-block-h {
  font-family: var(--sf-font-display);
  font-weight: 400;
  font-size: clamp(28px, 3.2vw, 44px);
  letter-spacing: -0.02em;
  line-height: 1.2;
  margin: 0 0 16px;
}
.sf-cap-block-text p {
  font-size: 17px;
  line-height: 1.45;
  color: var(--sf-ink-2);
  margin: 0;
  max-width: 56ch;
}

.sf-cap-highlights {
  background: var(--sf-cream);
  padding: clamp(36px, 4vw, 56px) 0;
}
.sf-cap-highlights-h {
  font-family: var(--sf-font-display);
  font-weight: 400;
  font-size: clamp(28px, 3.2vw, 44px);
  letter-spacing: -0.02em;
  text-align: center;
  margin: 0 0 56px;
}
.sf-cap-places-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(24px, 3vw, 48px);
}
.sf-cap-place-media {
  aspect-ratio: 4/5;
  overflow: hidden;
  background: var(--sf-bone);
  margin-bottom: 20px;
}
.sf-cap-place-media img {
  width: 100%; height: 100%;
  object-fit: cover;
  transition: transform 700ms var(--sf-ease);
}
.sf-cap-place:hover .sf-cap-place-media img { transform: scale(1.04); }
.sf-cap-place-name {
  font-family: var(--sf-font-display);
  font-weight: 500;
  font-size: 22px;
  letter-spacing: -0.012em;
  margin: 0 0 10px;
}
.sf-cap-place-body {
  font-size: 14px;
  line-height: 1.45;
  color: var(--sf-ink-2);
  margin: 0;
  max-width: 36ch;
}

.sf-cap-bleed {
  width: 100%;
  aspect-ratio: 21/9;
  overflow: hidden;
  margin: clamp(40px, 6vw, 80px) 0;
}
.sf-cap-bleed img {
  width: 100%; height: 100%; object-fit: cover;
}

.sf-cap-works {
  max-width: 800px;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  gap: 32px;
}
.sf-cap-work {
  display: grid;
  grid-template-columns: 56px 1fr;
  gap: 20px;
  padding: 24px 0;
  border-bottom: 1px solid var(--sf-line);
}
.sf-cap-work:last-child { border-bottom: 0; }
.sf-cap-work-idx {
  font-family: var(--sf-font-serif);
  font-style: italic;
  font-weight: 400;
  font-size: 32px;
  color: var(--sf-red);
  letter-spacing: -0.02em;
  line-height: 1;
}
.sf-cap-work h4 {
  font-family: var(--sf-font-display);
  font-weight: 500;
  font-size: 20px;
  letter-spacing: -0.012em;
  margin: 0 0 10px;
}
.sf-cap-work p {
  font-size: 17px;
  line-height: 1.45;
  color: var(--sf-ink-2);
  margin: 0;
}

.sf-cap-teresa {
  background: #f3f2ee;
  padding: clamp(40px, 4.5vw, 64px) 0 !important;
}
.sf-cap-teresa .sf-cap-intro-media img { object-position: right center; }

/* Intro two-column grid (palazzo intro + teresa intro) */
.sf-cap-intro-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(48px, 6vw, 96px);
  align-items: center;
  max-width: 1200px;
  margin: 0 auto;
}
.sf-cap-intro-grid--rev { direction: rtl; }
.sf-cap-intro-grid--rev > * { direction: ltr; }
.sf-cap-intro-text { /* transparent wrapper — centering from parent when no grid */ }
.sf-cap-intro-media {
  aspect-ratio: 4/5;
  overflow: hidden;
  background: var(--sf-cream);
}
.sf-cap-intro-media img { width: 100%; height: 100%; object-fit: cover; }
.sf-cap-section-sub {
  font-family: var(--sf-font-serif);
  font-style: italic;
  font-size: clamp(14px, 1.1vw, 17px);
  color: var(--sf-ink-2);
  margin: -8px 0 20px;
  line-height: 1.5;
}

/* CTA variant: copy left + two buttons stacked right */
.sf-cta-strip-inner--cap {
  grid-template-columns: 1fr auto;
  align-items: center;
}
.sf-cta-strip-copy { min-width: 0; }
.sf-cta-strip-btns {
  display: flex;
  flex-direction: column;
  gap: 12px;
  align-items: stretch;
  min-width: 220px;
}

/* B3 — Architettura feature pills */
.sf-cap-arch-features { display: flex; flex-direction: column; gap: 0; margin-top: 32px; border-top: 1px solid var(--sf-line); padding-top: 8px; }
.sf-cap-arch-pill { display: flex; align-items: baseline; gap: 16px; padding: 14px 0; border-bottom: 1px solid var(--sf-line); }
.sf-cap-arch-n { font-family: var(--sf-font-serif); font-style: italic; font-size: 20px; color: var(--sf-red); flex-shrink: 0; line-height: 1; }
.sf-cap-arch-label { font-size: 15px; font-weight: 500; letter-spacing: 0.01em; color: var(--sf-ink); }

/* B4 — Affreschi */
.sf-cap-affreschi { background: var(--sf-bone); }

/* B5 — Viaggio nel tempo */
.sf-cap-viaggio { background: var(--sf-cream); }
.sf-cap-viaggio-inner { display: grid; grid-template-columns: 3fr 2fr; gap: clamp(48px, 6vw, 96px); align-items: center; max-width: 1200px; margin: 0 auto; }
.sf-cap-viaggio-h { font-family: var(--sf-font-display); font-weight: 400; font-size: clamp(26px, 2.8vw, 42px); letter-spacing: -0.02em; margin: 0 0 22px; }
.sf-cap-viaggio-p { font-size: clamp(15px, 1.2vw, 18px); line-height: 1.45; color: var(--sf-ink-2); max-width: 52ch; }
.sf-cap-viaggio-media { aspect-ratio: 3/4; overflow: hidden; background: var(--sf-cream); }
.sf-cap-viaggio-media img { width: 100%; height: 100%; object-fit: cover; }

/* B8 — Interno Santa Teresa (solo testo) */
.sf-cap-interior { background: #FAFAF8; }
.sf-cap-interior-inner { max-width: 720px; margin: 0 auto; }
.sf-cap-interior-inner .sf-cap-block-h { margin-bottom: 28px; }
.sf-cap-interior-inner p { font-size: 17px; line-height: 1.45; color: var(--sf-ink-2); margin: 0 0 20px; }
.sf-cap-interior-inner p:last-child { margin: 0; }

/* B9 — Altre opere */
.sf-cap-works-intro { font-size: 15px; font-style: italic; color: var(--sf-ink-2); margin: -16px auto 36px; max-width: 800px; text-align: center; }

/* B10 — CTA con sfondo foto */
.sf-cap-cta { position: relative; padding: clamp(80px, 10vw, 140px) 0; background-size: cover; background-position: center; }
.sf-cap-cta-overlay { position: absolute; inset: 0; background: rgba(22, 16, 10, 0.68); }
.sf-cap-cta-inner { position: relative; z-index: 1; text-align: center; color: var(--sf-bone); }
.sf-cap-cta-title { font-family: var(--sf-font-display); font-weight: 400; font-size: clamp(28px, 3.5vw, 54px); letter-spacing: -0.02em; margin: 0 0 16px; color: var(--sf-bone); }
.sf-cap-cta-sub { font-size: clamp(14px, 1.1vw, 17px); line-height: 1.45; color: rgba(250, 247, 240, 0.80); max-width: 52ch; margin: 0 auto 40px; }
.sf-cap-cta-btns { display: flex; gap: 16px; justify-content: center; flex-wrap: wrap; }

/* ============================================================
   Ristoranti — Mappa dei sapori
   ============================================================ */
.sf-risto-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 48px;
  margin-bottom: clamp(48px, 6vw, 80px);
}
.sf-risto-header-main { flex: 1; min-width: 0; }
.sf-risto-title {
  font-family: var(--sf-font-display);
  font-weight: 500;
  font-size: var(--sf-fs-h1);
  letter-spacing: -0.025em;
  line-height: 1.0;
  margin: 8px 0 16px;
  color: var(--sf-ink);
}
.sf-risto-title em {
  font-family: var(--sf-font-serif);
  font-style: italic;
  font-weight: 400;
}
.sf-risto-sub {
  font-size: var(--sf-fs-body);
  line-height: 1.5;
  color: var(--sf-ink-2);
  max-width: 52ch;
  margin: 0;
}
.sf-risto-aside {
  flex-shrink: 0;
  width: 180px;
  text-align: right;
  padding-top: 32px;
}
.sf-risto-aside-text {
  font-family: var(--sf-font-serif);
  font-style: italic;
  font-size: 15px;
  line-height: 1.5;
  color: var(--sf-ink-2);
  margin: 0 0 10px;
}
.sf-risto-aside-place {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--sf-red);
}

/* Griglia 3+2 */
.sf-risto-grid {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: clamp(20px, 2.5vw, 32px);
}
.sf-risto-card { grid-column: span 2; display: flex; flex-direction: column; }

.sf-risto-card-media {
  position: relative;
  aspect-ratio: 4/3;
  overflow: hidden;
  background: var(--sf-cream);
  margin-bottom: 20px;
}
.sf-risto-card-media img {
  width: 100%; height: 100%;
  object-fit: cover;
  transition: transform 700ms var(--sf-ease);
}
.sf-risto-card:hover .sf-risto-card-media img { transform: scale(1.03); }

.sf-risto-num {
  position: absolute;
  top: 14px;
  left: 14px;
  width: 36px;
  height: 36px;
  background: var(--sf-ink);
  color: var(--sf-bone);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 14px;
  font-weight: 700;
  border-radius: 50%;
  letter-spacing: 0;
  font-variant-numeric: tabular-nums;
}
.sf-risto-card-name {
  font-family: var(--sf-font-serif);
  font-weight: 400;
  font-size: clamp(18px, 1.8vw, 24px);
  letter-spacing: -0.012em;
  line-height: 1.1;
  margin: 0 0 4px;
  color: var(--sf-ink);
}
.sf-risto-card-cat {
  display: block;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--sf-ink-2);
  margin-bottom: 12px;
}
.sf-risto-card-text {
  font-size: 15px;
  line-height: 1.55;
  color: var(--sf-ink-2);
  margin: 0 0 14px;
  flex: 1;
}

/* ============================================================
   Terme — 3-column block list
   ============================================================ */
.sf-terme-hero {
  width: 100%;
  aspect-ratio: 21/9;
  overflow: hidden;
  background: var(--sf-cream);
  margin: 0 0 48px;
}
.sf-terme-hero img { width: 100%; height: 100%; object-fit: cover; }
.sf-exp-intro.sf-terme-intro-text { max-width: none; margin-bottom: 56px; }
.sf-terme-list { display: flex; flex-direction: column; }
.sf-terme-item {
  display: grid;
  grid-template-columns: 10% 26% 1fr;
  gap: 0 clamp(32px, 4vw, 60px);
  padding: 52px 0;
  border-bottom: 1px solid var(--sf-line);
  align-items: center;
}
.sf-terme-item:last-child { border-bottom: 0; }
.sf-terme-idx {
  font-family: var(--sf-font-serif);
  font-style: italic;
  font-weight: 400;
  font-size: clamp(48px, 5.5vw, 80px);
  color: var(--sf-red);
  letter-spacing: -0.03em;
  line-height: 1;
  align-self: start;
  padding-top: 4px;
  text-align: right;
}
.sf-terme-media {
  aspect-ratio: 4/3;
  overflow: hidden;
  background: var(--sf-cream);
}
.sf-terme-media img { width: 100%; height: 100%; object-fit: cover; }
.sf-terme-name {
  font-family: var(--sf-font-serif);
  font-weight: 400;
  font-size: clamp(22px, 2.2vw, 34px);
  letter-spacing: -0.018em;
  line-height: 1.08;
  margin: 0 0 16px;
  color: var(--sf-ink);
}
.sf-terme-body {
  font-size: 17px;
  line-height: 1.45;
  color: var(--sf-ink-2);
  margin: 0 0 18px;
  max-width: 58ch;
}

/* ============================================================
   Esperienze
   ============================================================ */
.sf-exp-nav {
  background: var(--sf-sage);
  position: sticky;
  top: 100px;
  z-index: 30;
}
.sf-exp-nav ul {
  list-style: none; padding: 0; margin: 0;
  display: flex;
  gap: clamp(20px, 3vw, 48px);
  justify-content: center;
  padding: 18px 0;
}
.sf-exp-nav a {
  font-size: var(--sf-fs-body);
  font-weight: 300;
  letter-spacing: 0.01em;
  color: rgba(255, 255, 255, 0.85);
  text-decoration: none;
  padding-bottom: 4px;
  border-bottom: 1px solid transparent;
  transition: border-color var(--sf-dur-1) var(--sf-ease), color var(--sf-dur-1) var(--sf-ease);
}
.sf-exp-nav a:hover {
  color: #fff;
  border-bottom-color: rgba(255, 255, 255, 0.6);
}

.sf-exp-block { padding: clamp(80px, 10vw, 140px) 0; }
.sf-exp-block--alt { background: var(--sf-cream); }
.sf-exp-header {
  max-width: 780px;
  margin: 0 auto clamp(48px, 6vw, 80px);
  text-align: center;
}
.sf-exp-eyebrow {
  font-size: 12px; font-weight: 600;
  letter-spacing: 0.18em; text-transform: uppercase;
  color: var(--sf-sage-deep);
  margin-bottom: 18px;
}
.sf-exp-h2 {
  font-family: var(--sf-font-display);
  font-weight: 400;
  font-size: var(--sf-fs-h1);
  line-height: 1.04;
  letter-spacing: -0.025em;
  margin: 0 0 18px;
  text-wrap: balance;
}
.sf-exp-h2 em {
  font-family: var(--sf-font-serif);
  font-style: italic;
  font-weight: 400;
  color: var(--sf-red);
}
.sf-exp-subtitle {
  font-size: 17px;
  color: var(--sf-ink-2);
  margin: 0 0 16px;
}
.sf-exp-subtitle strong { font-weight: 600; color: var(--sf-ink); }
.sf-exp-intro {
  font-size: 17px;
  line-height: 1.45;
  color: var(--sf-ink-2);
  margin: 0;
  max-width: 60ch;
  margin-left: auto;
  margin-right: auto;
}

.sf-exp-items-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: clamp(28px, 4vw, 56px);
}
.sf-exp-card {
  display: flex; flex-direction: column;
}
.sf-exp-card-media {
  aspect-ratio: 4/3;
  overflow: hidden;
  background: var(--sf-cream);
  margin-bottom: 22px;
}
.sf-exp-card-media img {
  width: 100%; height: 100%;
  object-fit: cover;
  transition: transform 700ms var(--sf-ease);
}
.sf-exp-card:hover .sf-exp-card-media img { transform: scale(1.03); }
.sf-exp-card-name {
  font-family: var(--sf-font-serif);
  font-weight: 400;
  font-size: clamp(26px, 2.6vw, 36px);
  letter-spacing: -0.018em;
  line-height: 1.05;
  margin: 0 0 14px;
  color: var(--sf-ink);
}
.sf-exp-card-text {
  font-size: 17px;
  line-height: 1.45;
  color: var(--sf-ink-2);
  margin: 0 0 16px;
}
.sf-exp-card-links {
  display: flex; gap: 10px;
  flex-direction: column;
}

.sf-exp-list {
  display: flex;
  flex-direction: column;
  max-width: 880px;
  margin: 0 auto;
}
.sf-exp-list-item {
  display: grid;
  grid-template-columns: 80px 1fr;
  gap: 28px;
  padding: 32px 0;
  border-bottom: 1px solid var(--sf-line);
  align-items: start;
}
.sf-exp-list-item:last-child { border-bottom: 0; }
.sf-exp-list-idx {
  font-family: var(--sf-font-serif);
  font-style: italic;
  font-weight: 400;
  font-size: 38px;
  color: var(--sf-red);
  letter-spacing: -0.02em;
  line-height: 1;
}
.sf-exp-list-name {
  font-family: var(--sf-font-serif);
  font-weight: 400;
  font-size: clamp(24px, 2.4vw, 32px);
  letter-spacing: -0.018em;
  line-height: 1.05;
  margin: 0 0 12px;
  color: var(--sf-ink);
}
.sf-exp-list-body p {
  font-size: 17px;
  line-height: 1.45;
  color: var(--sf-ink-2);
  margin: 0 0 14px;
  max-width: 64ch;
}

.sf-exp-feature {
  padding: clamp(60px, 8vw, 120px) 0;
}
.sf-exp-feature--warm { background: #f3f2ee; }
.sf-exp-feature--rev .sf-exp-feature-grid { direction: rtl; }
.sf-exp-feature--rev .sf-exp-feature-grid > * { direction: ltr; }
.sf-exp-feature-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(40px, 5vw, 80px);
  align-items: center;
}
.sf-exp-feature-media {
  aspect-ratio: 4/3;
  overflow: hidden;
  background: var(--sf-cream);
}
.sf-exp-feature-media img { width: 100%; height: 100%; object-fit: cover; }
.sf-exp-feature-text p {
  font-size: var(--sf-fs-body);
  line-height: 1.45;
  color: var(--sf-ink-2);
  margin: 0 0 24px;
  max-width: 50ch;
}

/* ============================================================
   Inline underlined link (used in cards)
   ============================================================ */
.sf-ulink {
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.04em;
  color: var(--sf-sage-deep);
  text-decoration: none;
  border-bottom: 1px solid var(--sf-sage);
  padding-bottom: 3px;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  transition: color var(--sf-dur-1) var(--sf-ease), border-color var(--sf-dur-1) var(--sf-ease);
}
.sf-ulink:hover {
  color: var(--sf-red);
  border-bottom-color: var(--sf-red);
}

/* ============================================================
   Contatti
   ============================================================ */
.sf-contact-h2 {
  font-family: var(--sf-font-display);
  font-weight: 400;
  font-size: var(--sf-fs-h2);
  line-height: 1.1;
  letter-spacing: -0.02em;
  margin: 0 0 12px;
}
.sf-contact-sub {
  font-size: var(--sf-fs-body);
  line-height: 1.45;
  color: var(--sf-ink-2);
  margin: 0 0 32px;
  max-width: 40ch;
}
.sf-contact-grid {
  display: grid;
  grid-template-columns: 1.4fr 1fr;
  gap: clamp(40px, 6vw, 96px);
  align-items: start;
}
.sf-contact-success {
  padding: 40px 0;
  text-align: center;
}
.sf-contact-success h3 {
  font-family: var(--sf-font-display);
  font-weight: 400;
  font-size: clamp(28px, 3.2vw, 42px);
  letter-spacing: -0.02em;
  margin: 0;
}
.sf-contact-success h3 em {
  font-family: var(--sf-font-serif);
  font-style: italic;
  color: var(--sf-red);
}
.sf-contact-direct {
  padding: 28px;
  background: var(--sf-cream);
}
.sf-contact-direct-list {
  list-style: none; padding: 0; margin: 0;
  display: flex; flex-direction: column;
  gap: 16px;
}
.sf-contact-direct-list li {
  display: flex; flex-direction: column;
  gap: 4px;
  padding-bottom: 16px;
  border-bottom: 1px solid var(--sf-line);
}
.sf-contact-direct-list li:last-child { border-bottom: 0; padding-bottom: 0; }
.sf-contact-direct-kind {
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--sf-ink-3);
}
.sf-contact-direct-list a {
  font-size: 15px;
  font-weight: 500;
  color: var(--sf-ink);
  text-decoration: none;
  transition: color var(--sf-dur-1) var(--sf-ease);
}
.sf-contact-direct-list a:hover { color: var(--sf-sage-deep); }
.sf-contact-address {
  font-style: normal;
  font-size: 14px;
  line-height: 1.45;
  color: var(--sf-ink-2);
}
.sf-contact-address > div:first-child {
  font-family: var(--sf-font-serif);
  font-size: 20px;
  letter-spacing: -0.015em;
  color: var(--sf-ink);
  margin-bottom: 4px;
}
.sf-contact-map {
  width: 100%;
  aspect-ratio: 21/9;
  overflow: hidden;
  background: var(--sf-cream);
  border-block: 1px solid var(--sf-line);
}
.sf-contact-map iframe { width: 100%; height: 100%; border: 0; }
.sf-contact-map > div { width: 100%; height: 100%; }

/* Leaflet custom pin */
.sf-map-pin {
  width: 48px;
  height: 48px;
  background: #fff;
  border: 3px solid #C5302C;
  border-radius: 50% 50% 50% 0;
  transform: rotate(-45deg);
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 3px 10px rgba(0,0,0,0.25);
}
.sf-map-pin img {
  transform: rotate(45deg);
  width: 28px;
  height: 28px;
  object-fit: contain;
}
.sf-contact-dir-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(20px, 3vw, 40px);
}
.sf-contact-dir-card {
  padding: 28px;
  background: var(--sf-bone);
  border: 1px solid var(--sf-line);
}
.sf-contact-dir-card h4 {
  font-family: var(--sf-font-display);
  font-weight: 500;
  font-size: 18px;
  letter-spacing: -0.01em;
  margin: 0 0 10px;
  color: var(--sf-ink);
}
.sf-contact-dir-card p {
  font-size: 14px;
  line-height: 1.45;
  color: var(--sf-ink-2);
  margin: 0;
}

/* ============================================================
   INQUIRY MODAL — Richiesta di disponibilità (Suite Farnese style)
   ============================================================ */
.sf-modal--inquiry { background: var(--sf-bone); }

.sf-inq-step { max-width: 920px; margin: 0 auto; }
.sf-inq-step-head { text-align: center; margin-bottom: clamp(28px, 4vw, 48px); }
.sf-inq-step-eyebrow {
  display: inline-block;
  font-size: 11px; font-weight: 600;
  letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--sf-sage-deep);
  margin-bottom: 14px;
}
.sf-inq-step-eyebrow::before,
.sf-inq-step-eyebrow::after {
  content: ""; display: inline-block;
  width: 22px; height: 1px; vertical-align: middle;
  background: var(--sf-sage); margin: 0 12px;
}
.sf-inq-step-title {
  font-family: var(--sf-font-serif);
  font-weight: 400;
  font-size: clamp(28px, 3.6vw, 44px);
  letter-spacing: -0.022em;
  line-height: 1.08;
  color: var(--sf-ink);
  margin: 0 0 12px;
  text-wrap: balance;
}
.sf-inq-step-sub {
  font-size: 17px;
  line-height: 1.45;
  color: var(--sf-ink-2);
  max-width: 52ch;
  margin: 0 auto;
}

/* Two-up dimora picker — editorial cards matching site style */
.sf-inq-dimore {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(16px, 2vw, 28px);
  margin-bottom: clamp(20px, 2.4vw, 28px);
}
.sf-inq-dimora {
  appearance: none;
  background: var(--sf-bone);
  border: 1px solid var(--sf-line);
  padding: 0;
  text-align: left;
  cursor: pointer;
  display: flex; flex-direction: column;
  transition: border-color var(--sf-dur-2) var(--sf-ease),
              transform var(--sf-dur-2) var(--sf-ease);
  position: relative;
  overflow: hidden;
}
.sf-inq-dimora:hover { border-color: var(--sf-sage); }
.sf-inq-dimora[data-selected="true"] {
  border-color: var(--sf-sage-deep);
  box-shadow: 0 0 0 1px var(--sf-sage-deep);
}
.sf-inq-dimora-media {
  position: relative;
  aspect-ratio: 4/3;
  overflow: hidden;
  background: var(--sf-cream);
}
.sf-inq-dimora-media img {
  width: 100%; height: 100%; object-fit: cover;
  transition: transform 700ms var(--sf-ease);
}
.sf-inq-dimora:hover .sf-inq-dimora-media img { transform: scale(1.03); }
.sf-inq-dimora-check {
  position: absolute; top: 12px; right: 12px;
  width: 30px; height: 30px;
  border-radius: 50%;
  background: var(--sf-sage-deep); color: var(--sf-white);
  display: inline-flex; align-items: center; justify-content: center;
  opacity: 0; transform: scale(0.6);
  transition: opacity var(--sf-dur-2) var(--sf-ease),
              transform var(--sf-dur-2) var(--sf-ease);
}
.sf-inq-dimora[data-selected="true"] .sf-inq-dimora-check {
  opacity: 1; transform: scale(1);
}
.sf-inq-dimora-body {
  padding: 22px 24px 26px;
  text-align: center;
  display: flex; flex-direction: column; align-items: center; gap: 10px;
}
.sf-inq-dimora-name {
  font-family: var(--sf-font-serif);
  font-weight: 400;
  font-size: clamp(22px, 2.2vw, 30px);
  letter-spacing: -0.018em;
  margin: 0;
  color: var(--sf-ink);
}
.sf-inq-dimora-rule {
  width: 48px; height: 1px; background: var(--sf-sage); display: block;
}
.sf-inq-dimora-sub {
  font-size: 12px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--sf-ink-3);
  font-weight: 500;
  margin: 0;
}

/* "No preference" — quiet inline option below the cards */
.sf-inq-nopref {
  appearance: none;
  background: transparent;
  border: 1px solid var(--sf-line);
  padding: 14px 20px;
  width: 100%;
  display: flex; align-items: center; gap: 14px;
  text-align: left;
  cursor: pointer;
  transition: border-color var(--sf-dur-2) var(--sf-ease),
              background var(--sf-dur-2) var(--sf-ease);
}
.sf-inq-nopref:hover { border-color: var(--sf-sage); }
.sf-inq-nopref.is-selected {
  border-color: var(--sf-sage-deep);
  background: var(--sf-sage-tint);
}
.sf-inq-nopref-radio {
  width: 18px; height: 18px; border-radius: 50%;
  border: 1.5px solid var(--sf-ink-3);
  display: inline-flex; align-items: center; justify-content: center;
  flex-shrink: 0;
  transition: border-color var(--sf-dur-1) var(--sf-ease);
}
.sf-inq-nopref-radio > span {
  width: 8px; height: 8px; border-radius: 50%;
  background: var(--sf-sage-deep);
  transform: scale(0);
  transition: transform var(--sf-dur-1) var(--sf-ease);
}
.sf-inq-nopref.is-selected .sf-inq-nopref-radio { border-color: var(--sf-sage-deep); }
.sf-inq-nopref.is-selected .sf-inq-nopref-radio > span { transform: scale(1); }
.sf-inq-nopref-text {
  display: flex; flex-direction: column; gap: 2px;
}
.sf-inq-nopref-text strong {
  font-family: var(--sf-font-serif);
  font-style: normal;
  font-weight: 400;
  font-size: 18px;
  letter-spacing: -0.012em;
  color: var(--sf-ink);
}
.sf-inq-nopref-text span {
  font-size: 13px;
  color: var(--sf-ink-2);
}

/* Calendar step refinements */
.sf-inq-dates-summary {
  text-align: center;
  margin: 0 auto 22px;
  font-size: 15px;
  color: var(--sf-ink);
  font-family: var(--sf-font-serif);
  letter-spacing: -0.012em;
}
.sf-inq-dates-prompt {
  font-family: var(--sf-font-body);
  font-size: 14px;
  color: var(--sf-ink-3);
  letter-spacing: 0.01em;
}
.sf-inq-cal-disclaimer {
  margin: clamp(20px, 2.4vw, 32px) auto 0;
  max-width: 60ch;
  text-align: center;
  font-size: 12px;
  line-height: 1.45;
  color: var(--sf-ink-3);
  font-style: italic;
}

/* Footer adjustments — inquiry has 3 elements + platforms hint */
.sf-modal-foot--inquiry {
  grid-template-columns: 1fr auto auto;
  gap: 16px;
  align-items: center;
}
.sf-modal-platforms {
  font-size: 12px;
  color: var(--sf-ink-2);
  line-height: 1.5;
}
.sf-modal-platforms a {
  color: var(--sf-sage-deep);
  text-decoration: none;
  border-bottom: 1px solid var(--sf-sage);
  font-weight: 600;
  transition: color var(--sf-dur-1) var(--sf-ease), border-color var(--sf-dur-1) var(--sf-ease);
}
.sf-modal-platforms a:hover {
  color: var(--sf-red);
  border-bottom-color: var(--sf-red);
}

@media (max-width: 720px) {
  .sf-inq-dimore { grid-template-columns: 1fr; }
  .sf-modal-foot--inquiry {
    grid-template-columns: 1fr;
    grid-template-areas: "platforms" "back" "next";
  }
  .sf-modal-platforms { grid-area: platforms; text-align: center; }
  .sf-modal-foot--inquiry > .sf-btn-sage--ghost { grid-area: back; justify-content: center; }
  .sf-modal-foot--inquiry > .sf-btn-sage:not(.sf-btn-sage--ghost) { grid-area: next; justify-content: center; }
}
/* CIN below intro */
.sf-apt-cin {
  margin-top: 24px;
  text-align: center;
  font-family: var(--sf-font-mono);
  font-size: 11px;
  letter-spacing: 0.16em;
  color: var(--sf-ink-3);
}

/* 3-up highlights strip */
.sf-apt-highlights { background: var(--sf-cream); }
.sf-apt-highlights-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(40px, 5vw, 72px);
  padding-inline: clamp(0px, 2vw, 32px);
}
.sf-apt-highlight {
  text-align: center;
  padding-inline: clamp(0px, 1vw, 16px);
}
.sf-apt-highlight h4 {
  font-family: var(--sf-font-serif);
  font-weight: 400;
  font-size: clamp(22px, 2vw, 28px);
  letter-spacing: -0.015em;
  line-height: 1.1;
  margin: 0 0 14px;
  color: var(--sf-ink);
}
.sf-apt-highlight p {
  font-size: 17px;
  line-height: 1.45;
  color: var(--sf-ink-2);
  margin: 0;
  max-width: 32ch;
  margin-inline: auto;
}

/* House rules */
.sf-apt-rules { background: var(--sf-bone); }
.sf-apt-rules-h { text-align: center; margin-bottom: 40px; }
.sf-apt-rules-grid {
  display: flex;
  flex-direction: column;
  max-width: 780px;
  margin: 0 auto;
}
.sf-apt-rule {
  display: flex;
  align-items: baseline;
  gap: 24px;
  padding: 14px 0;
  border-bottom: 1px solid var(--sf-line);
}
.sf-apt-rule:first-child { border-top: 1px solid var(--sf-line); }
.sf-apt-rule-k {
  flex: 0 0 110px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--sf-ink-3);
}
.sf-apt-rule-v {
  font-size: 15px;
  line-height: 1.5;
  color: var(--sf-ink);
}

@media (max-width: 1024px) {
  .sf-apt-highlights-grid { grid-template-columns: 1fr; gap: 32px; }
}
@media (max-width: 720px) {
  .sf-apt-rule { gap: 16px; }
  .sf-apt-rule-k { flex: 0 0 80px; }
}

.sf-cta-strip {
  padding: clamp(60px, 8vw, 110px) 0;
  background: var(--sf-cream);
}
.sf-cta-strip--dark { background: #0f0e0c; }
.sf-cta-strip--dark .sf-cta-strip-title { color: #fafaf8; }
.sf-cta-strip--photo {
  position: relative;
  background-size: cover;
  background-position: center bottom;
}
.sf-cta-strip-overlay {
  position: absolute;
  inset: 0;
  background: rgba(15, 14, 12, 0.55);
}
.sf-cta-strip--photo .sf-cta-strip-title { color: var(--sf-bone); }
.sf-cta-strip-title .sf-kw-red { font-family: var(--sf-font-serif); font-style: italic; font-weight: 400; color: #C5302C !important; }
.sf-cta-strip--photo .sf-cta-strip-sub { color: rgba(250,250,248,0.80); }
.sf-cta-strip-design {
  font-family: var(--sf-font-serif);
  font-style: italic;
  font-size: clamp(28px, 3.5vw, 52px);
  font-weight: 400;
  color: #C5302C;
  letter-spacing: -0.02em;
  margin: 12px 0 0;
  line-height: 1;
}
.sf-cta-strip-inner {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: center;
  gap: clamp(28px, 4vw, 56px);
}
.sf-cta-strip-title {
  font-family: var(--sf-font-display);
  font-weight: 400;
  font-size: var(--sf-fs-h2);
  line-height: 1.04;
  letter-spacing: -0.025em;
  margin: 0;
  text-wrap: balance;
  max-width: 22ch;
}
.sf-cta-strip-sub {
  font-size: var(--sf-fs-body);
  color: var(--sf-ink-2);
  margin: 8px 0 0;
}

/* ============================================================
   Responsive
   ============================================================ */
@media (max-width: 1024px) {
  .sf-apt-feature-grid,
  .sf-apt-specs-grid,
  .sf-apt-other-grid,
  .sf-cap-intro-grid,
  .sf-cap-intro-grid--rev,
  .sf-cap-block-grid,
  .sf-cap-block-grid--rev,
  .sf-exp-feature-grid,
  .sf-exp-feature--rev .sf-exp-feature-grid,
  .sf-contact-grid {
    grid-template-columns: 1fr;
    direction: ltr !important;
    gap: clamp(28px, 4vw, 48px);
  }

  /* Testo sempre sopra, foto sempre sotto su mobile */
  .sf-cap-intro-text,
  .sf-exp-feature-text { order: 1; }

  .sf-cap-intro-media,
  .sf-exp-feature-media { order: 2; }
  .sf-cap-places-grid { grid-template-columns: 1fr 1fr; }
  .sf-cap-viaggio-inner { grid-template-columns: 1fr; }
  .sf-terme-item { grid-template-columns: 10% 30% 1fr; }
  .sf-risto-grid { grid-template-columns: repeat(2, 1fr); }
  .sf-risto-card { grid-column: span 1; }
  .sf-amenities { grid-template-columns: 1fr; }
  .sf-exp-items-grid { grid-template-columns: 1fr; }
  .sf-contact-dir-grid { grid-template-columns: 1fr; }
  .sf-exp-nav { top: 100px; }
}

@media (max-width: 720px) {
  .sf-pagehero { height: clamp(280px, 50vh, 380px); }
  .sf-pagehero-title { font-size: clamp(30px, 8vw, 44px); }
  .sf-pagehero-sub { font-size: 14px; }
  .sf-cap-places-grid { grid-template-columns: 1fr; }
  .sf-cta-strip-inner {
    grid-template-columns: 1fr;
    text-align: center;
    gap: 18px;
  }
  .sf-cta-strip-inner .sf-btn-sage { width: 100%; justify-content: center; }
  .sf-cta-strip-inner--cap { grid-template-columns: 1fr; }
  .sf-cta-strip-btns { min-width: 0; width: 100%; }
  .sf-cta-strip-btns .sf-btn-sage { justify-content: center; }
  .sf-exp-nav ul { flex-wrap: wrap; gap: 14px; }
  .sf-exp-nav a { font-size: 11px; }
  .sf-exp-list-item { grid-template-columns: 1fr; gap: 12px; }
  .sf-cap-work { grid-template-columns: 40px 1fr; gap: 14px; }
  .sf-cap-cta-btns { flex-direction: column; align-items: stretch; }
  .sf-cap-cta-btns .sf-btn-sage { justify-content: center; width: 100%; }
  .sf-terme-item { grid-template-columns: 1fr; gap: 20px 0; padding: 36px 0; }
  .sf-terme-hero { aspect-ratio: 16/9; }
  .sf-terme-name { font-size: clamp(26px, 6.5vw, 34px); }
  .sf-risto-grid { grid-template-columns: 1fr; }
  .sf-risto-header { flex-direction: column; gap: 24px; }
  .sf-risto-aside { width: auto; text-align: left; padding-top: 0; }
  .sf-risto-card-name { font-size: clamp(24px, 6vw, 32px); }
  .sf-risto-card-media { order: 2; }
  .sf-risto-card-body { order: 1; }
}

/* ============================================================
   Caprarola redesign — Palazzo Farnese sections
   ============================================================ */

/* ── Split hero ─────────────────────────────────────────── */
.sf-cap-split-hero {
  background: #f3f2ee;
  padding: clamp(32px, 4vw, 56px) 0;
}
.sf-cap-split-inner {
  display: grid;
  grid-template-columns: 2fr 3fr;
  gap: clamp(40px, 5vw, 72px);
  align-items: center;
}
.sf-cap-split-left {
  display: flex;
  flex-direction: column;
  justify-content: center;
  overflow: hidden;
}

/* Secondary photo strip in split hero */
.sf-cap-split-secondary {
  display: flex;
  gap: 22px;
  align-items: center;
  margin-top: 28px;
  padding-top: 24px;
  border-top: 1px solid var(--sf-line);
}
.sf-cap-split-sec-media {
  width: 260px;
  flex-shrink: 0;
  aspect-ratio: 4/3;
  overflow: hidden;
  border-radius: var(--sf-r-xs);
}
.sf-cap-split-sec-media img { width: 100%; height: 100%; object-fit: cover; }
.sf-cap-split-sec-text { padding: 0; }
.sf-cap-split-sec-line {
  width: 22px;
  height: 2px;
  background: var(--sf-sage);
  margin-bottom: 12px;
}
.sf-cap-split-sec-text p {
  font-family: var(--sf-font-body);
  font-size: 14px;
  font-weight: 400;
  line-height: 1.6;
  color: var(--sf-ink-2);
  margin: 0;
  max-width: 22ch;
}
.sf-cap-palazzo-name {
  font-family: var(--sf-font-display);
  font-size: clamp(40px, 5.2vw, 80px);
  font-weight: 500;
  font-variation-settings: 'opsz' 72;
  letter-spacing: -0.03em;
  text-transform: none;
  line-height: 1.0;
  color: var(--sf-ink);
  margin: 0 0 18px;
}
.sf-cap-palazzo-name .sf-cap-palazzo-accent {
  font-family: var(--sf-font-serif);
  font-style: italic;
  font-weight: 400;
  color: #C5302C !important;
  letter-spacing: -0.015em;
}
.sf-cap-split-title {
  font-family: var(--sf-font-display);
  font-weight: 400;
  font-size: clamp(17px, 1.8vw, 25px);
  line-height: 1.2;
  letter-spacing: -0.01em;
  color: var(--sf-ink-2);
  margin: 0 0 20px;
  text-wrap: balance;
}
.sf-cap-split-body {
  font-family: var(--sf-font-body);
  font-size: 17px;
  font-weight: 300;
  line-height: 1.55;
  color: var(--sf-ink-2);
  max-width: 44ch;
  margin: 0;
}
.sf-cap-split-right {
  position: relative;
  aspect-ratio: 4/3;
  overflow: hidden;
  border-radius: var(--sf-r-xs);
}
.sf-cap-split-right img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* ── Perché vale il viaggio ─────────────────────────────── */
.sf-cap-why { background: var(--sf-cream); }
.sf-cap-why-eyebrow { margin-bottom: 48px; }
.sf-cap-why-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(32px, 4vw, 60px);
}
.sf-cap-why-card { display: flex; flex-direction: column; }
.sf-cap-why-icon {
  width: 68px;
  height: 68px;
  border-radius: 50%;
  border: 1.5px solid var(--sf-line-strong);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--sf-ink);
  margin-bottom: 22px;
  flex-shrink: 0;
}
.sf-cap-why-icon img {
  width: 100% !important;
  height: 100% !important;
  object-fit: contain;
  display: block;
}
.sf-cap-why-card-title {
  font-size: clamp(22px, 2vw, 30px);
  color: var(--sf-ink);
  margin: 0 0 14px;
  line-height: 1.1;
}
.sf-cap-why-rule {
  width: 36px;
  height: 2px;
  background: var(--sf-terracotta);
  margin-bottom: 16px;
}
.sf-cap-why-card-body {
  font-family: var(--sf-font-body);
  font-size: var(--sf-fs-body);
  font-weight: 300;
  line-height: 1.55;
  color: var(--sf-ink-2);
  margin: 0;
}

/* ── Architettura v2 ────────────────────────────────────── */
.sf-cap-arch-v2 { background: var(--sf-bone); }
.sf-cap-arch-v2-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(36px, 4vw, 64px);
  align-items: start;
}
.sf-cap-arch-v2-body {
  font-family: var(--sf-font-body);
  font-size: 17px;
  font-weight: 300;
  line-height: 1.55;
  color: var(--sf-ink-2);
  margin: 0 0 32px;
}
.sf-cap-arch-pills-v2 {
  border-top: 1px solid var(--sf-line);
  padding-top: 8px;
  display: flex;
  flex-direction: column;
}
.sf-cap-arch-pill-v2 {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 14px 0;
  border-bottom: 1px solid var(--sf-line);
}
.sf-cap-arch-pill-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  flex-shrink: 0;
  color: var(--sf-terracotta);
}
.sf-cap-arch-pill-label {
  font-family: var(--sf-font-body);
  font-size: 15px;
  font-weight: 500;
  letter-spacing: 0.01em;
  color: var(--sf-ink);
}
.sf-cap-arch-v2-media {
  aspect-ratio: 4/3;
  max-height: 420px;
  overflow: hidden;
  border-radius: var(--sf-r-xs);
}
.sf-cap-arch-v2-media img { width: 100%; height: 100%; object-fit: cover; }

/* ── Affreschi light ────────────────────────────────────── */
.sf-cap-affreschi-light { background: var(--sf-cream); }
.sf-cap-affreschi-light .sf-cap-affreschi-h  { color: var(--sf-ink); }
.sf-cap-affreschi-light .sf-cap-affreschi-body { color: var(--sf-ink-2); }

/* ── Affreschi dark (kept for reference) ────────────────── */
.sf-cap-affreschi-dark {
  background: var(--sf-ink);
  padding: clamp(80px, 10vw, 140px) 0;
}
.sf-cap-affreschi-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(36px, 4vw, 64px);
  align-items: start;
}
.sf-cap-affreschi-h {
  font-family: var(--sf-font-display);
  font-weight: 500;
  font-size: clamp(22px, 2.4vw, 36px);
  line-height: 1.1;
  letter-spacing: -0.02em;
  color: var(--sf-bone);
  margin: 0 0 24px;
}
.sf-cap-affreschi-body {
  font-family: var(--sf-font-body);
  font-size: 17px;
  font-weight: 300;
  line-height: 1.55;
  color: rgba(250, 250, 248, 0.72);
  margin: 0;
}
.sf-cap-affreschi-media {
  aspect-ratio: 4/3;
  max-height: 380px;
  overflow: hidden;
  border-radius: var(--sf-r-xs);
}
.sf-cap-affreschi-media img { width: 100%; height: 100%; object-fit: cover; }

/* ── Viaggio nel tempo (testo sx, sfondo foto) ──────────── */
.sf-cap-viaggio-dark {
  position: relative;
  padding: clamp(100px, 12vw, 160px) 0;
  background-size: cover;
  background-position: center 30%;
}
.sf-cap-viaggio-overlay {
  position: absolute;
  inset: 0;
  background: rgba(15, 14, 12, 0.62);
}
.sf-cap-viaggio-dark-inner {
  position: relative;
  z-index: 1;
  max-width: 860px;
  text-align: center;
  margin-left: auto;
  margin-right: auto;
}
.sf-cap-viaggio-dark-title {
  font-family: var(--sf-font-display);
  font-weight: 400;
  font-size: var(--sf-fs-display);
  line-height: 1.05;
  letter-spacing: -0.03em;
  color: var(--sf-bone);
  margin: 0 0 24px;
}
.sf-cap-viaggio-dark-body {
  font-family: var(--sf-font-body);
  font-size: 17px;
  font-weight: 300;
  line-height: 1.55;
  color: rgba(250, 250, 248, 0.80);
  max-width: 52ch;
  margin: 0 auto;
  text-align: center;
}

/* ── Pausa narrativa ────────────────────────────────────── */
.sf-cap-narrative {
  position: relative;
  padding: clamp(100px, 13vw, 180px) 0;
  background-size: cover;
  background-position: center;
}
.sf-cap-narrative-overlay {
  position: absolute;
  inset: 0;
  background: rgba(15, 14, 12, 0.72);
}
.sf-cap-narrative-inner {
  position: relative;
  z-index: 1;
  text-align: center;
  max-width: 760px;
  margin: 0 auto;
}
.sf-cap-narrative-title {
  font-family: var(--sf-font-display);
  font-weight: 400;
  font-size: clamp(24px, 3vw, 48px);
  line-height: 1.15;
  letter-spacing: -0.025em;
  color: var(--sf-bone);
  margin: 0 0 28px;
  text-wrap: balance;
}
.sf-cap-narrative-rule {
  width: 40px;
  height: 2px;
  background: var(--sf-terracotta);
  margin: 0 auto 28px;
}
.sf-cap-narrative-body {
  font-family: var(--sf-font-body);
  font-size: 17px;
  font-weight: 300;
  line-height: 1.55;
  color: rgba(250, 250, 248, 0.78);
  max-width: 52ch;
  margin: 0 auto;
}

/* ── Cosa non perdere v2 ────────────────────────────────── */
.sf-cap-highlights-v2 { background: var(--sf-bone); }
.sf-cap-hl-header {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 48px;
}
.sf-cap-hl-header--center {
  flex-direction: column;
  justify-content: center;
  text-align: center;
  gap: 8px;
}
.sf-cap-hl-ornament {
  font-size: 13px;
  color: var(--sf-terracotta);
  line-height: 1;
}
.sf-cap-hl-title {
  font-family: var(--sf-font-display);
  font-weight: 500;
  font-size: clamp(22px, 2.2vw, 32px);
  line-height: 1.1;
  letter-spacing: -0.02em;
  color: var(--sf-ink);
  margin: 0;
}
.sf-cap-hl-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(20px, 2.5vw, 32px);
}
.sf-cap-hl-card {
  border: 1px solid var(--sf-line);
  border-radius: var(--sf-r-sm);
  overflow: hidden;
}
.sf-cap-hl-media {
  position: relative;
  aspect-ratio: 4/3;
  overflow: hidden;
}
.sf-cap-hl-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform var(--sf-dur-2) var(--sf-ease);
}
.sf-cap-hl-card:hover .sf-cap-hl-media img { transform: scale(1.04); }
.sf-cap-hl-num {
  position: absolute;
  top: 14px;
  left: 14px;
  width: 32px;
  height: 32px;
  background: #B8935A;
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--sf-font-body);
  font-size: 12px;
  font-weight: 600;
  border-radius: 50%;
}
.sf-cap-hl-body { padding: 20px 22px 24px; }
.sf-cap-hl-name {
  font-family: var(--sf-font-display);
  font-weight: 500;
  font-size: clamp(17px, 1.5vw, 22px);
  line-height: 1.2;
  letter-spacing: -0.01em;
  color: var(--sf-ink);
  margin: 0 0 10px;
}
.sf-cap-hl-text {
  font-family: var(--sf-font-body);
  font-size: 15px;
  font-weight: 300;
  line-height: 1.55;
  color: var(--sf-ink-2);
  margin: 0;
}

/* ── Responsive overrides ───────────────────────────────── */
@media (max-width: 1024px) {
  .sf-cap-split-inner { grid-template-columns: 1fr 1fr; }
  .sf-cap-arch-v2-grid { gap: 40px; }
  .sf-cap-affreschi-grid { gap: 40px; }
}
@media (max-width: 768px) {
  .sf-cap-split-inner { grid-template-columns: 1fr; }
  .sf-cap-split-right { aspect-ratio: 16/9; }
  .sf-cap-why-grid { grid-template-columns: 1fr; gap: 40px; }
  .sf-cap-arch-v2-grid { grid-template-columns: 1fr; }
  .sf-cap-arch-v2-media { aspect-ratio: 16/9; }
  .sf-cap-affreschi-grid { grid-template-columns: 1fr; }
  .sf-cap-hl-grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 480px) {
  .sf-cap-hl-grid { grid-template-columns: 1fr; }
}

/* ============================================================
   Santa Teresa — B7 red em title
   ============================================================ */
.sf-cap-teresa .sf-cap-h2 em {
  font-family: var(--sf-font-serif);
  font-style: italic;
  font-weight: 400;
  color: #C5302C !important;
}

/* ============================================================
   Santa Teresa — Shared two-column grid (B8 + B9)
   ============================================================ */
.sf-cap-st-two-col {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(48px, 6vw, 80px);
  align-items: start;
}

/* Text column shared */
.sf-cap-st-text-col p {
  font-size: 17px;
  line-height: 1.5;
  color: var(--sf-ink-2);
  margin: 0 0 20px;
}
.sf-cap-st-text-col p:last-child { margin: 0; }

/* Red accent line */
.sf-cap-st-accent-line { display: none; }

/* Art column */
.sf-cap-st-art-figure { margin: 0; }
.sf-cap-st-art-media {
  aspect-ratio: 3/4;
  max-height: 480px;
  overflow: hidden;
  border-radius: 2px;
}
.sf-cap-st-art-media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.sf-cap-st-caption {
  display: block;
  font-size: 12px;
  line-height: 1.5;
  color: var(--sf-ink-2);
  opacity: 0.65;
  margin-top: 10px;
  font-style: italic;
}

/* B9 works intro */
.sf-cap-st-works-intro {
  font-size: 15px;
  color: var(--sf-ink-2);
  margin: 0 0 28px;
  line-height: 1.5;
}

/* B9 title left-aligned */
.sf-cap-highlights-h--left { text-align: left; margin-bottom: 0; }

/* B9 numbered works list */
.sf-cap-st-works-list { display: flex; flex-direction: column; }
.sf-cap-st-work {
  display: grid;
  grid-template-columns: 44px 1fr;
  gap: 16px;
  padding: 24px 0;
  border-bottom: 1px solid var(--sf-line);
  align-items: start;
}
.sf-cap-st-work:first-child { border-top: 1px solid var(--sf-line); }
.sf-cap-st-work-num {
  font-family: var(--sf-font-serif);
  font-style: italic;
  font-size: 28px;
  font-weight: 400;
  color: #C5302C;
  line-height: 1;
  letter-spacing: -0.02em;
}
.sf-cap-st-work-title {
  font-family: var(--sf-font-display);
  font-weight: 500;
  font-size: 16px;
  letter-spacing: -0.01em;
  color: var(--sf-ink);
  margin: 0 0 6px;
}
.sf-cap-st-work-text {
  font-size: 14px;
  line-height: 1.5;
  color: var(--sf-ink-2);
  margin: 0;
}

/* Responsive */
@media (max-width: 768px) {
  .sf-cap-st-two-col { grid-template-columns: 1fr; }
  .sf-cap-st-art-media { max-height: 320px; aspect-ratio: 4/3; }
}

/* ============================================================
   Dimore Hero — split layout (foto sx, titolo dx)
   ============================================================ */
.sf-dimore-hero {
  position: relative;
  height: clamp(560px, 80vh, 860px);
  margin-top: 0;
  display: flex;
  align-items: center;
}
.sf-dimore-hero-media {
  position: absolute;
  inset: 0;
  overflow: hidden;
}
.sf-dimore-hero-media img {
  width: 100%; height: 100%;
  object-fit: cover;
  object-position: center center;
  display: block;
  filter: brightness(0.85) contrast(1.12);
}
.sf-dimore-hero-overlay {
  position: absolute;
  inset: 0;
  background: rgba(10, 10, 8, 0.55);
}
.sf-dimore-hero-text {
  position: relative;
  z-index: 1;
  text-align: left;
  max-width: 640px;
}
.sf-dimore-hero-eyebrow {
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: rgba(250,250,248,0.65);
  margin: 0 0 20px;
}
.sf-dimore-hero-title {
  font-family: var(--sf-font-display);
  font-weight: 400;
  font-size: clamp(38px, 5vw, 72px);
  line-height: 1.0;
  letter-spacing: -0.025em;
  color: #fafaf8;
  margin: 0 0 4px;
  font-variation-settings: 'opsz' 72;
}
.sf-dimore-hero-italic {
  font-family: var(--sf-font-serif);
  font-style: italic;
  font-weight: 400;
  color: #fafaf8;
  letter-spacing: -0.02em;
}
@keyframes sf-draw-house {
  0%   { stroke-dashoffset: 600; }
  42%  { stroke-dashoffset: 0; }
  54%  { stroke-dashoffset: 0; }
  96%  { stroke-dashoffset: 600; }
  100% { stroke-dashoffset: 600; }
}
.sf-dimore-hero-line {
  display: block;
  width: 100%;
  max-width: 520px;
  height: 92px;
  margin: -36px 0 20px;
  overflow: visible;
}
@media (max-width: 880px) {
  .sf-dimore-hero-line { margin: 12px 0 20px; }
}
.sf-dimore-house-path {
  stroke-dasharray: 600;
  stroke-dashoffset: 600;
  animation: sf-draw-house 7s linear infinite;
}
.sf-dimore-hero-body {
  font-size: clamp(14px, 1.1vw, 17px);
  line-height: 1.6;
  color: rgba(250,250,248,0.80);
  margin: 0 0 32px;
  max-width: 40ch;
}

/* ============================================================
   Storia Hero — intro editoriale tipografica
   ============================================================ */
.sf-cap-storia {
  position: relative;
  min-height: clamp(600px, 80vh, 900px);
  display: flex;
  align-items: flex-end;
  background-size: cover;
  background-position: center 70%;
}
.sf-cap-storia-inner {
  padding-bottom: clamp(32px, 4vw, 48px);
  padding-top: clamp(32px, 4vw, 48px);
}
.sf-cap-storia-video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 70%;
  z-index: 0;
}
.sf-cap-storia-overlay { display: none; }
.sf-cap-storia-title { color: #fafaf8 !important; }
.sf-cap-storia-em { color: #C5302C !important; }
.sf-cap-storia-body { color: rgba(250,250,248,0.85) !important; }
.sf-cap-storia-inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 20px;
}
.sf-cap-storia-title {
  font-family: var(--sf-font-display);
  font-weight: 400;
  font-size: var(--sf-fs-display);
  line-height: 1.0;
  letter-spacing: -0.03em;
  color: var(--sf-ink);
  margin: 0;
  text-wrap: balance;
}
.sf-cap-storia-em {
  font-family: var(--sf-font-serif);
  font-style: italic;
  font-weight: 400;
  color: #C5302C;
  letter-spacing: -0.025em;
}
.sf-cap-storia-body {
  font-size: clamp(15px, 1.2vw, 18px);
  line-height: 1.6;
  color: var(--sf-ink-2);
  margin: 0;
  max-width: 64ch;
}

/* ---- Finestra animata (Caprarola hero) ---- */
.sf-cap-storia { overflow: visible !important; }
.sf-cap-storia-inner { overflow: visible !important; }
.sf-cap-storia .sf-container { overflow: visible !important; }
.sf-cap-finestra {
  display: block;
  width: clamp(260px, 34vw, 420px);
  margin-bottom: 1.4rem;
  overflow: visible;
}
.sf-cap-finestra path {
  fill: none;
  stroke: #fafaf8;
  stroke-dasharray: 1;
  stroke-dashoffset: 1;
}

.sf-cap-fin-p1 { animation: sf-fin1 4s ease-in-out infinite; }
.sf-cap-fin-p2 { animation: sf-fin2 4s ease-in-out infinite; }
.sf-cap-fin-p3 { animation: sf-fin3 4s ease-in-out infinite; }

@keyframes sf-fin1 {
  0%   { stroke-dashoffset: 1; }
  18%  { stroke-dashoffset: 0; }
  50%  { stroke-dashoffset: 0; }
  90%  { stroke-dashoffset: 1; }
  100% { stroke-dashoffset: 1; }
}
@keyframes sf-fin2 {
  0%, 10% { stroke-dashoffset: 1; }
  30%     { stroke-dashoffset: 0; }
  50%     { stroke-dashoffset: 0; }
  85%     { stroke-dashoffset: 1; }
  100%    { stroke-dashoffset: 1; }
}
@keyframes sf-fin3 {
  0%, 20% { stroke-dashoffset: 1; }
  40%     { stroke-dashoffset: 0; }
  50%     { stroke-dashoffset: 0; }
  80%     { stroke-dashoffset: 1; }
  100%    { stroke-dashoffset: 1; }
}

