/*
Theme Name: Siena UpTown
Theme URI: https://www.sienauptown.com/
Author: Siena UpTown
Description: Tema custom per Siena UpTown — Sabrina's Mood Apartments. Costruito da zero in HTML/CSS/PHP puro, senza page builder.
Version: 2.0.0
Requires at least: 6.0
Requires PHP: 7.4
Text Domain: siena-uptown
*/

/* ==========================================================================
   Siena UpTown — Design System "Editoriale Senese"
   Impianto editoriale: griglia asimmetrica a tre colonne, indici di sezione
   numerati, filetti da 1px al posto delle ombre, molta aria.
   Tipografia: Italiana (display, alto contrasto, sottile) + DM Sans (testo).
   Colore: carta calda come base, mattone/siena per i dati, oxblood per i
   momenti pieni. Il colore non decora: struttura la pagina.
   ========================================================================== */

:root{
  --paper:        #f2eadc;
  --paper-2:      #e5d5bd;
  --paper-3:      #ede2d0;
  --white:        #fbf7f0;
  --ink:          #181512;
  --ink-soft:     #5e554d;
  --ink-faint:    #8b8076;
  --siena:        #a4462a;
  --siena-light:  #c0684b;
  --siena-on-dark:#eaa88d;   /* accento leggibile sopra fotografia */
  --oxblood:      #681f29;
  --oxblood-deep: #531821;
  --olive:        #6b6f57;

  --line:         rgba(24, 21, 18, .22);
  --line-soft:    rgba(24, 21, 18, .12);
  --light-line:   rgba(242, 234, 220, .25);

  --font-display: 'Italiana', 'Iowan Old Style', Georgia, serif;
  --font-body:    'DM Sans', -apple-system, 'Segoe UI', sans-serif;

  --container: 1480px;
  --gutter: clamp(20px, 3.4vw, 56px);
  /* griglia editoriale: margine numerato / colonna principale / spalla */
  --grid: minmax(0, 1fr) minmax(0, 4.5fr) minmax(0, 1.6fr);
  --header-h: 84px;

  --ease: cubic-bezier(.2,.75,.25,1);
}

*, *::before, *::after{ box-sizing: border-box; }
html{
  scroll-behavior: smooth;
  scroll-padding-top: var(--header-h);
  -webkit-text-size-adjust: 100%;
}
body{
  margin:0;
  background: var(--paper);
  color: var(--ink);
  font-family: var(--font-body);
  font-size: 16.5px;
  line-height: 1.62;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}
body.nav-open, body.lightbox-open{ overflow: hidden; }
img{ max-width:100%; display:block; }
a{ color: inherit; text-decoration: none; }
ul{ margin:0; padding:0; list-style:none; }
button{ font-family: inherit; color: inherit; }
button:focus-visible, a:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible{
  outline: 2px solid var(--siena-light); outline-offset: 3px;
}
::selection{ background: var(--oxblood); color: var(--paper); }

.container{
  width: 100%;
  max-width: var(--container);
  margin-inline: auto;
  padding-inline: var(--gutter);
}

/* Griglia editoriale a tre colonne, usata dentro .container */
.page-grid{
  display: grid;
  grid-template-columns: var(--grid);
  column-gap: clamp(24px, 3vw, 56px);
}

/* Indice di sezione: "01 — Chi siamo" */
.section-index{
  margin: 0;
  padding-top: .55rem;
  font-size: .7rem;
  font-weight: 700;
  letter-spacing: .13em;
  text-transform: uppercase;
  color: var(--siena);
}
.section-index span{ color: var(--ink-soft); font-weight: 600; }
.section-index-light{ color: var(--paper); }
.section-index-light span{ color: rgba(242,234,220,.6); }

/* Skip link */
.skip-link{
  position: fixed; z-index: 999; top: 8px; left: 8px;
  background: var(--paper); color: var(--ink);
  padding: 12px 20px; font-size: .8rem; font-weight: 700;
  transform: translateY(-160%);
}
.skip-link:focus{ transform: none; }

/* ---------- Tipografia ---------- */
h1,h2,h3,h4{
  font-family: var(--font-display);
  font-weight: 400;
  line-height: .92;
  letter-spacing: -.03em;
  margin: 0;
  text-wrap: balance;
}
h1{ font-size: clamp(3.2rem, 7.4vw, 8rem); line-height: .84; letter-spacing: -.042em; }
h2{ font-size: clamp(2.5rem, 5.4vw, 5.4rem); line-height: .88; letter-spacing: -.035em; }
h3{ font-size: clamp(1.6rem, 3vw, 2.5rem); line-height: .98; }
h4{ font-size: 1.2rem; }
p{ margin: 0; }

.lede{
  font-size: clamp(1rem, 1.35vw, 1.15rem);
  color: var(--ink-soft);
  max-width: 50ch;
  line-height: 1.72;
}
/* Micro-etichetta in maiuscoletto: non più un badge pieno, solo lettering */
.eyebrow{
  display: block;
  font-size: .69rem;
  font-weight: 700;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--siena);
  margin-bottom: 18px;
}
.bg-ink .eyebrow, .cta-band .eyebrow, .page-header .eyebrow, .hero .eyebrow, .visit-panel .eyebrow{
  color: var(--siena-light);
}
.italic{
  font-family: var(--font-display);
  font-style: italic;
  font-weight: 400;
  color: var(--siena);
}
/* Sopra una fotografia il terracotta pieno non tiene: serve un tono più chiaro */
.hero .italic, .statement .italic, .cta-band .italic,
.page-header .italic, .visit-panel .italic, .bg-ink .italic{
  color: var(--siena-on-dark);
}

/* ---------- Bottoni ---------- */
.btn{
  display: inline-flex; align-items: center; justify-content: center; gap: 10px;
  min-height: 50px;
  padding: 14px 26px;
  border-radius: 0;
  border: 1px solid transparent;
  font-size: .71rem; font-weight: 700; letter-spacing: .11em; text-transform: uppercase;
  cursor: pointer; white-space: nowrap;
  transition: transform .25s var(--ease), background-color .3s ease, color .3s ease, border-color .3s ease;
}
.btn:hover{ transform: translateY(-2px); }
.btn:active{ transform: translateY(0); }
.btn svg{ width: 16px; height: 16px; }

.btn-primary{ background: var(--oxblood); color: var(--paper); }
.btn-primary:hover{ background: var(--oxblood-deep); }

.btn-outline{ background: transparent; color: var(--ink); border-color: var(--ink); }
.btn-outline:hover{ background: var(--ink); color: var(--paper); }

.btn-ghost-light{ background: transparent; color: var(--paper); border-color: rgba(242,234,220,.62); }
.btn-ghost-light:hover{ background: var(--paper); color: var(--ink); border-color: var(--paper); }

.btn-light{ background: var(--paper); color: var(--ink); }
.btn-light:hover{ background: var(--white); }

.link-arrow{
  display: inline-flex; align-items: center; gap: 9px;
  padding-bottom: 4px;
  border-bottom: 1px solid var(--ink);
  font-size: .71rem; font-weight: 700; letter-spacing: .11em; text-transform: uppercase;
  transition: color .3s ease, border-color .3s ease, gap .3s ease;
}
.link-arrow svg{ width: 15px; height: 15px; transition: transform .35s var(--ease); }
.link-arrow:hover{ color: var(--siena); border-color: var(--siena); gap: 15px; }
.link-arrow:hover svg{ transform: translateX(3px); }
.bg-ink .link-arrow, .visit-panel .link-arrow{ border-color: rgba(242,234,220,.6); }
.bg-ink .link-arrow:hover, .visit-panel .link-arrow:hover{ color: var(--paper); border-color: var(--paper); }

/* Pulsante circolare: il gesto "indicazioni / scopri" */
.round-link{
  display: grid; place-items: center; align-content: center; gap: 6px;
  width: 130px; height: 130px;
  border: 1px solid rgba(242,234,220,.6); border-radius: 50%;
  font-size: .64rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase;
  text-align: center;
  transition: background-color .3s ease, color .3s ease, transform .4s var(--ease);
}
.round-link:hover{ background: var(--paper); color: var(--ink); transform: rotate(-3deg) scale(1.04); }
.round-link svg{ width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.5; }
.round-link-dark{ border-color: var(--ink); color: var(--ink); }
.round-link-dark:hover{ background: var(--oxblood); color: var(--paper); border-color: var(--oxblood); }

/* ---------- Header / Nav ---------- */
/* La admin bar di WordPress è fissa in alto: l'header le si posiziona sotto */
body.admin-bar .site-header,
body.admin-bar .site-header::before,
body.admin-bar .mobile-panel{ top: 32px; }
@media (max-width: 782px){
  body.admin-bar .site-header,
  body.admin-bar .site-header::before,
  body.admin-bar .mobile-panel{ top: 46px; }
}

.site-header{
  position: fixed; top:0; left:0; right:0; z-index: 500;
  height: var(--header-h);
  display: flex; align-items: center;
  color: var(--paper);
  border-bottom: 1px solid rgba(242,234,220,.2);
  transition: height .4s var(--ease), background-color .4s var(--ease), color .4s var(--ease), border-color .4s ease;
}
.site-header::before{
  content:''; position: fixed; top:0; left:0; right:0; height: 220px; z-index:-1;
  background: linear-gradient(180deg, rgba(14,11,9,.62) 0%, rgba(14,11,9,.26) 62%, transparent 100%);
  pointer-events: none; transition: opacity .4s ease;
}
.site-header.is-scrolled{
  height: 68px;
  background: rgba(242,234,220,.95);
  backdrop-filter: blur(14px);
  color: var(--ink);
  border-color: var(--line);
}
.site-header.is-scrolled::before{ opacity: 0; }
.site-header .container{ display:flex; align-items:center; justify-content:space-between; gap: 24px; width:100%; }

.brand{ display:flex; align-items:center; gap: 13px; color: inherit; }
.logo-mark{ display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.brand img{ height: 40px; width:auto; display:block; transition: height .4s var(--ease); }
.site-header.is-scrolled .brand img{ height: 34px; }
.brand-word{ display:flex; flex-direction:column; line-height:1.04; color: inherit; }
.brand-word b{
  font-family: var(--font-display); font-weight: 400;
  font-size: 1.42rem; letter-spacing: .015em;
}
.brand-word span{
  font-size: .58rem; font-weight: 600; letter-spacing: .2em; text-transform: uppercase;
  opacity: .72; margin-top: 3px;
}

.nav-desktop{ display:flex; align-items:center; gap: clamp(18px, 2.1vw, 34px); }
.nav-desktop a{
  position: relative; padding: 8px 0;
  font-size: .71rem; font-weight: 600; letter-spacing: .11em; text-transform: uppercase;
  color: inherit; opacity: .88; white-space: nowrap;
  transition: opacity .3s ease, color .3s ease;
}
.nav-desktop a::after{
  content:''; position:absolute; left:0; right:100%; bottom:0; height:1px;
  background: currentColor; transition: right .3s var(--ease);
}
.nav-desktop a:hover{ opacity:1; }
.nav-desktop a:hover::after{ right:0; }
.nav-desktop a.active{ opacity:1; }
.nav-desktop a.active::after{ right:0; }
.site-header.is-scrolled .nav-desktop a.active{ color: var(--siena); }

.nav-cta{ display:flex; align-items:center; gap: 14px; }
.nav-cta .btn-outline{ color: inherit; border-color: rgba(242,234,220,.55); min-height: 44px; padding: 12px 20px; }
.nav-cta .btn-outline:hover{ background: var(--paper); color: var(--ink); border-color: var(--paper); }
.site-header.is-scrolled .nav-cta .btn-outline{ border-color: var(--ink); }
.site-header.is-scrolled .nav-cta .btn-outline:hover{ background: var(--ink); color: var(--paper); }

/* ---------- Selettore di lingua (header) ---------- */
.lang-switch{
  display: flex; align-items: center; gap: 10px;
  padding-right: 14px;
  border-right: 1px solid rgba(242,234,220,.3);
}
.site-header.is-scrolled .lang-switch{ border-color: var(--line); }
.lang-switch a{
  position: relative; padding: 4px 1px;
  font-size: .66rem; font-weight: 700; letter-spacing: .1em;
  color: inherit; opacity: .5;
  transition: opacity .25s ease;
}
.lang-switch a:hover{ opacity: .8; }
.lang-switch a.is-active{ opacity: 1; }
.lang-switch a.is-active::after{
  content: ''; position: absolute; left: 0; right: 0; bottom: -1px; height: 1px;
  background: currentColor;
}

.nav-toggle{
  display:none; width: 46px; height: 46px; padding: 0;
  border: 1px solid currentColor; background: transparent;
  align-items:center; justify-content:center; cursor:pointer; flex-shrink:0;
}
.nav-toggle-bars{ position:relative; width:19px; height:11px; }
.nav-toggle-bars span{
  position:absolute; left:0; width:100%; height:1px; background: currentColor;
  transition: transform .35s var(--ease), opacity .25s ease, top .35s var(--ease);
}
.nav-toggle-bars span:nth-child(1){ top:0; }
.nav-toggle-bars span:nth-child(2){ top:50%; }
.nav-toggle-bars span:nth-child(3){ top:100%; }
.nav-open .nav-toggle{ color: var(--paper); border-color: rgba(242,234,220,.5); }
/* Se l'header è già nello stato "panna" (is-scrolled) quando il menu si apre,
   l'icona chiara sopra un fondo altrettanto chiaro sparirebbe: qui vince per
   specificità (3 classi contro 2) e riporta l'icona sul colore scuro. */
.site-header.is-scrolled .nav-toggle{ color: var(--ink); border-color: var(--line); }
.nav-open .nav-toggle-bars span:nth-child(1){ top:50%; transform: rotate(45deg); }
.nav-open .nav-toggle-bars span:nth-child(2){ opacity:0; }
.nav-open .nav-toggle-bars span:nth-child(3){ top:50%; transform: rotate(-45deg); }

.mobile-panel{
  position:fixed; inset:0; z-index:490;
  background: var(--oxblood); color: var(--paper);
  display:flex; flex-direction:column; justify-content:flex-start;
  overflow-y: auto;
  padding: calc(var(--header-h) + 24px) var(--gutter) 40px;
  opacity: 0; visibility: hidden;
  transform: translateY(-24px);
  transition: opacity .4s var(--ease), transform .5s var(--ease), visibility .4s;
}
.nav-open .mobile-panel{ opacity: 1; visibility: visible; transform: translateY(0); }
.mobile-panel a{
  display:grid; grid-template-columns: 46px 1fr; align-items: baseline;
  padding: 13px 0; border-bottom: 1px solid var(--light-line);
}
.mobile-panel a i{ font-style: normal; font-size: .68rem; font-weight: 700; letter-spacing: .1em; opacity: .6; }
.mobile-panel a b{ font-family: var(--font-display); font-weight: 400; font-size: clamp(2.1rem, 9vw, 3.4rem); }
.mobile-panel .mobile-cta{
  display:flex; grid-template-columns: none; justify-content:center;
  margin-top: 34px; border-bottom: 0;
  background: var(--paper); color: var(--ink);
}
.mobile-panel-lang{
  display: flex; justify-content: center; align-items: baseline; gap: 12px;
  margin-top: 22px;
  font-size: .78rem; letter-spacing: .04em;
}
.mobile-panel-lang span{ opacity: .4; }
.mobile-panel-lang a{ padding: 6px 2px; opacity: .55; transition: opacity .25s ease; }
.mobile-panel-lang a:hover{ opacity: .85; }
.mobile-panel-lang a.is-active{ opacity: 1; font-weight: 700; border-bottom: 1px solid currentColor; }
.mobile-panel-foot{
  margin-top: 30px; display:flex; justify-content:space-between; gap: 18px; flex-wrap: wrap;
  font-size: .74rem; color: rgba(242,234,220,.75);
}

/* ---------- Hero ---------- */
.hero{
  position:relative; min-height: 100svh; display:flex; align-items:flex-end;
  overflow:hidden; background: var(--ink); isolation: isolate;
}
.hero-slideshow{ position:absolute; inset:0; z-index:0; }
.hero-slide{ position:absolute; inset:0; opacity:0; transition: opacity 1.4s var(--ease); }
.hero-slide.is-active{ opacity:1; z-index:1; }
.hero-slide img{
  width:100%; height:100%; object-fit:cover;
  transform: scale(1.05); transition: transform 8s linear;
}
.hero-slide.is-active img{ transform: scale(1.14); }
.hero-slideshow::after{
  content:''; position:absolute; inset:0; z-index:2;
  background:
    linear-gradient(90deg, rgba(16,13,11,.9) 0%, rgba(16,13,11,.66) 38%, rgba(16,13,11,.3) 68%, rgba(16,13,11,.08) 92%),
    linear-gradient(0deg, rgba(16,13,11,.78) 0%, rgba(16,13,11,.3) 42%, rgba(16,13,11,.04) 70%);
}
.hero-content{
  position:relative; z-index:3; color: var(--paper); width:100%;
  padding-top: calc(var(--header-h) + 48px);
  padding-bottom: clamp(76px, 9vw, 130px);
  display: grid; grid-template-rows: 1fr auto; gap: 30px;
  min-height: 100svh;
}
.hero-copy{ align-self: end; max-width: 1120px; }
.hero-eyebrow{
  display:block; margin-bottom: 20px;
  font-size: .67rem; font-weight: 700; letter-spacing: .22em; text-transform: uppercase;
  color: rgba(242,234,220,.9);
}
.hero h1{
  color: var(--paper); max-width: 15ch;
  text-shadow: 0 2px 30px rgba(12,9,7,.55), 0 1px 5px rgba(12,9,7,.4);
}
.hero .lede{
  color: rgba(242,234,220,.9); margin-top: 30px; max-width: 48ch;
  font-size: clamp(1rem, 1.35vw, 1.16rem);
  text-shadow: 0 1px 14px rgba(12,9,7,.55);
}
.hero-eyebrow{ text-shadow: 0 1px 12px rgba(12,9,7,.6); }
.hero-actions{ display:flex; gap: 12px; margin-top: 34px; flex-wrap:wrap; }
.hero-foot{ display:flex; align-items:flex-end; justify-content:space-between; gap: 24px; }
.hero-dots{ display:flex; gap: 8px; }
.hero-dots button{
  width: 30px; height: 2px; border:0; padding:0; background: rgba(242,234,220,.35);
  cursor:pointer; transition: background-color .3s ease;
}
.hero-dots button.is-active{ background: var(--paper); }
.hero-scroll{
  display:flex; align-items:center; gap: 12px; color: var(--paper); opacity: .85;
  font-size: .64rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase;
}
.hero-scroll svg{ width: 20px; height: 20px; fill:none; stroke: currentColor; stroke-width: 1.4; }
.hero-scroll:hover{ opacity: 1; }

/* ---------- Intestazione pagine interne ---------- */
.page-header{
  position:relative; overflow:hidden; background: var(--ink); color: var(--paper);
  padding: calc(var(--header-h) + clamp(70px, 9vw, 130px)) 0 clamp(60px, 7vw, 100px);
}
.page-header-media{ position:absolute; inset:0; z-index:0; }
.page-header-media img{ width:100%; height:100%; object-fit:cover; opacity:.5; }
.page-header::after{
  content:''; position:absolute; inset:0; z-index:1;
  background: linear-gradient(90deg, rgba(16,13,11,.8) 0%, rgba(16,13,11,.45) 55%, rgba(16,13,11,.15) 100%);
}
.page-header .container{ position:relative; z-index:2; }
.page-header h1{
  color: var(--paper); max-width: 18ch;
  text-shadow: 0 2px 28px rgba(12,9,7,.5), 0 1px 4px rgba(12,9,7,.35);
}
.page-header .lede{ color: rgba(242,234,220,.82); margin-top: 26px; }
.breadcrumb{
  margin-top: 26px; display:flex; gap: 9px; align-items:center; flex-wrap: wrap;
  font-size: .66rem; font-weight: 600; letter-spacing: .12em; text-transform: uppercase;
  color: rgba(242,234,220,.7);
}
.breadcrumb a:hover{ color: var(--paper); }

/* ---------- Sezioni ---------- */
section{ position:relative; }
.section{ padding: clamp(80px, 10vw, 160px) 0; }
.section-tight{ padding: clamp(60px, 7vw, 105px) 0; }
.section-head{
  display:grid; grid-template-columns: var(--grid); column-gap: clamp(24px, 3vw, 56px);
  align-items: end; row-gap: 26px;
  margin-bottom: clamp(48px, 6vw, 86px);
}
.section-head > .section-index{ grid-column: 1; align-self: start; }
.section-head > div{ grid-column: 2; }
/* Qualsiasi elemento di spalla (link, nota) va nella terza colonna */
.section-head > .section-aside,
.section-head > a,
.section-head > p:not(.section-index){ grid-column: 3; justify-self: end; align-self: end; }
.section-head h2{ max-width: 18ch; }

.bg-sand{ background: var(--paper-2); }
.bg-sand .amenity, .bg-sand .rules-strip .rule{ background: var(--paper); }
.bg-ink{ background: var(--ink); color: rgba(242,234,220,.78); }
.bg-ink h2, .bg-ink h3, .bg-ink h4{ color: var(--paper); }
.bg-ink .lede{ color: rgba(242,234,220,.72); }
.bg-ink .section-index{ color: var(--siena-light); }
.bg-ink .section-index span{ color: rgba(242,234,220,.55); }
.bg-oxblood{ background: var(--oxblood); color: rgba(242,234,220,.8); }
.bg-oxblood h2, .bg-oxblood h3{ color: var(--paper); }

.divider{ height:1px; background: var(--line); border:0; margin:0; }

/* ---------- Split intro ---------- */
.split{
  display:grid; grid-template-columns: 1fr 1fr; gap: clamp(32px, 5vw, 86px); align-items:center;
}
.split.reverse .split-media{ order:2; }
.split-media{ position:relative; }
.split-media img{ width:100%; height:100%; object-fit:cover; aspect-ratio: 4/5; }
.split-media .float-card{
  position:absolute; left:0; bottom:0;
  background: var(--paper); border-top: 3px solid var(--siena);
  padding: 22px 26px; max-width: 250px;
}
.split-media .float-card b{
  display:block; font-family: var(--font-display); font-size: 2rem; line-height:1;
  color: var(--oxblood); margin-bottom: 6px;
}
.split-media .float-card span{ font-size:.78rem; color: var(--ink-soft); line-height:1.5; display:block; }
.split-body p + p{ margin-top: 16px; }
.split-body .lede{ max-width: 54ch; }

.stat-row{
  display:flex; gap: clamp(24px, 4vw, 56px); margin-top: 40px; flex-wrap:wrap;
  padding-top: 28px; border-top: 1px solid var(--line);
}
.stat b{
  display:block; font-family: var(--font-display); font-weight: 400;
  font-size: 2.6rem; line-height: 1; color: var(--siena); letter-spacing: -.02em;
}
.stat span{
  display:block; margin-top: 8px;
  font-size:.66rem; font-weight: 700; letter-spacing:.12em; text-transform:uppercase; color: var(--ink-soft);
}

/* ---------- Momenti / carte esperienza ---------- */
.moment-grid{ display:grid; row-gap: clamp(60px, 8vw, 120px); }
.moment{
  display:grid; grid-template-columns: minmax(0, 1.35fr) minmax(240px, .65fr);
  gap: clamp(26px, 4vw, 70px); align-items: end;
}
.moment.offset{ grid-template-columns: minmax(240px, .65fr) minmax(0, 1.35fr); }
.moment.offset .moment-media{ order: 2; }
.moment-media{ position:relative; overflow:hidden; background: var(--paper-2); }
.moment-media img{
  width:100%; height:100%; object-fit:cover;
  transition: transform .9s var(--ease);
}
.moment:hover .moment-media img{ transform: scale(1.035); }
.moment-media .moment-number{
  position:absolute; top:0; left:0; z-index:2;
  width: 52px; height: 52px; display:grid; place-items:center;
  background: var(--paper); color: var(--ink);
  font-size:.7rem; font-weight:700; letter-spacing:.06em;
}
.moment:nth-child(1) .moment-media{ aspect-ratio: 1.3; }
.moment:nth-child(2) .moment-media{ aspect-ratio: 1.45; }
.moment:nth-child(3) .moment-media{ aspect-ratio: 1.18; }
.moment-body{ padding-bottom: 10px; }
.moment-body .moment-meta{
  display:flex; justify-content:space-between; gap: 14px;
  margin: 0 0 28px; padding-bottom: 12px; border-bottom: 1px solid var(--line);
  font-size:.66rem; font-weight: 700; letter-spacing:.12em; text-transform:uppercase; color: var(--ink-soft);
}
.moment-body h3{ font-size: clamp(1.9rem, 3.4vw, 3.4rem); }
.moment-body p:last-child{ max-width: 42ch; margin-top: 20px; color: var(--ink-soft); }

/* ---------- Statement a tutta pagina ---------- */
.statement{
  position:relative; min-height: 84svh; display:flex; align-items:flex-end;
  overflow:hidden; background: var(--ink); color: var(--paper);
}
.statement-media{ position:absolute; inset:0; }
.statement-media img{ width:100%; height:100%; object-fit:cover; object-position: center 58%; }
.statement::after{
  content:''; position:absolute; inset:0;
  background: linear-gradient(0deg, rgba(15,12,10,.82), rgba(15,12,10,.06) 72%),
              linear-gradient(90deg, rgba(15,12,10,.3), transparent 62%);
}
.statement-copy{
  position:relative; z-index:2; width:100%;
  padding-bottom: clamp(52px, 7vw, 110px); padding-top: clamp(90px, 12vw, 170px);
  align-items: end; row-gap: 28px;
}
.statement-copy > .section-index{ grid-column: 1; }
.statement-copy h2{
  grid-column: 2; color: var(--paper); max-width: 15ch;
  text-shadow: 0 2px 28px rgba(12,9,7,.55), 0 1px 4px rgba(12,9,7,.4);
}
.statement-copy .round-link{ grid-column: 3; justify-self: end; }

/* ---------- Appartamenti (zig-zag) ---------- */
.room-row{
  display:grid; grid-template-columns: 1.05fr .95fr; gap: clamp(30px, 5vw, 80px);
  align-items:center; padding: clamp(50px, 7vw, 96px) 0;
}
.room-row:not(:last-child){ border-bottom: 1px solid var(--line); }
.room-row.reverse{ grid-template-columns: .95fr 1.05fr; }
.room-row.reverse .room-gallery{ order:2; }
.room-gallery{ position:relative; display:grid; grid-template-columns: 1.45fr 1fr; gap: 12px; }
.room-gallery img{ object-fit:cover; width:100%; height:100%; transition: transform .8s var(--ease); }
.room-gallery a, .room-gallery .shot{ overflow:hidden; display:block; background: var(--paper-2); }
.room-gallery .tall{ aspect-ratio: 3/4; }
.room-gallery .stack{ display:flex; flex-direction:column; gap: 12px; height:100%; }
.room-gallery .short{ flex: 1 1 0; min-height: 0; }
.room-gallery:hover img{ transform: scale(1.02); }
.room-gallery [data-lightbox-item]{ cursor: zoom-in; }
.room-gallery-hidden{
  position:absolute; width:1px; height:1px;
  padding:0; margin:-1px; overflow:hidden;
  clip:rect(0,0,0,0); white-space:nowrap; border:0;
}
.room-gallery-more{ position:relative; }
.room-gallery-more::after{
  content: attr(data-count);
  position:absolute; inset:0; z-index:2;
  display:flex; align-items:center; justify-content:center;
  background: rgba(24,21,18,.5);
  color: var(--paper);
  font-size:.72rem; font-weight:700; letter-spacing:.1em; text-transform:uppercase;
  transition: background-color .3s ease;
}
.room-gallery-more:hover::after{ background: rgba(24,21,18,.62); }
.room-body .eyebrow{ color: var(--ink-soft); }
.room-body h3{ font-size: clamp(2.2rem, 4vw, 3.6rem); margin-bottom: 18px; }
.room-price{ display:flex; align-items:baseline; gap:9px; margin-bottom: 20px; }
.room-price b{
  font-family: var(--font-display); font-weight: 400; font-size: 2.3rem; line-height:1;
  color: var(--siena);
}
.room-price span{ color: var(--ink-soft); font-size:.8rem; letter-spacing:.06em; text-transform:uppercase; }
.room-meta{ display:grid; gap: 0; margin: 26px 0 0; border-top: 1px solid var(--line); }
.room-meta div{
  display:flex; align-items:center; gap: 11px; padding: 13px 0;
  border-bottom: 1px solid var(--line); font-size:.84rem; color: var(--ink-soft);
}
.room-meta svg{ width:17px; height:17px; color: var(--siena); flex-shrink:0; }
.room-actions{ display:flex; gap: 12px; margin-top: 30px; flex-wrap:wrap; align-items:center; }

/* ---------- Comfort / griglia a filetti ---------- */
.amenity-grid{
  display:grid; grid-template-columns: repeat(3, 1fr);
  border-top: 1px solid var(--line); border-left: 1px solid var(--line);
}
.amenity{
  padding: clamp(28px, 3vw, 44px) clamp(22px, 2.4vw, 36px);
  border-right: 1px solid var(--line); border-bottom: 1px solid var(--line);
  transition: background-color .35s ease;
}
.amenity:hover{ background: var(--white); }
.amenity .icn{ width: 30px; height: 30px; color: var(--siena); margin-bottom: 22px; }
.amenity h3{
  font-family: var(--font-body); font-size: .88rem; font-weight: 700;
  letter-spacing: .1em; text-transform: uppercase; line-height: 1.3;
  margin-bottom: 10px; color: var(--ink);
}
.amenity p{ color: var(--ink-soft); font-size:.9rem; line-height: 1.65; }

/* ---------- Galleria a scorrimento orizzontale ---------- */
.rail{
  display:flex; gap: 14px; width:100%; overflow-x:auto;
  scroll-snap-type: x mandatory;
  scrollbar-width: none; cursor: grab;
  padding: 0 var(--gutter) 16px;
  margin-top: clamp(44px, 5vw, 74px);
}
.rail::-webkit-scrollbar{ display:none; }
.rail.is-dragging{ cursor: grabbing; user-select: none; }
.rail-shot{
  flex: 0 0 auto; position:relative; border:0; padding:0; overflow:hidden;
  background: var(--paper-2); scroll-snap-align: start; cursor: zoom-in;
  border: 1px solid var(--line-soft);
  transition: transform .42s var(--ease);
}
.rail-shot img{ width:100%; height:100%; object-fit:cover; transition: transform .9s var(--ease); }
.rail-shot:hover img{ transform: scale(1.04); }
.rail-shot-wide{   width: min(68vw, 880px); aspect-ratio: 1.55; }
.rail-shot-tall{   width: min(36vw, 440px); aspect-ratio: .74; }
.rail-shot-square{ width: min(44vw, 540px); aspect-ratio: 1; }
.rail-shot span{
  position:absolute; left:12px; right:12px; bottom:12px; z-index:2;
  display:flex; gap: 9px; padding: 10px 13px;
  background: rgba(242,234,220,.94); color: var(--ink);
  font-size:.64rem; font-weight: 700; letter-spacing:.09em; text-transform: uppercase;
  text-align:left;
}
.rail-shot span b{ font-weight: 500; letter-spacing: .02em; text-transform: none; }
.rail-foot{
  display:grid; grid-template-columns: var(--grid); column-gap: clamp(24px,3vw,56px);
  align-items:center; margin-top: 24px; row-gap: 16px;
}
.rail-foot p{
  grid-column: 1 / 3; margin:0;
  font-size:.68rem; font-weight: 600; letter-spacing:.12em; text-transform:uppercase; color: var(--ink-soft);
}
.rail-foot a{ grid-column: 3; justify-self: end; }

/* Griglia galleria classica (pagine interne) */
.gallery-grid{ display:grid; grid-template-columns: repeat(4, 1fr); grid-auto-rows: 190px; gap: 12px; }
.gallery-grid a{ overflow:hidden; display:block; background: var(--paper-2); }
.gallery-grid img{ width:100%; height:100%; object-fit:cover; transition: transform .7s var(--ease); }
.gallery-grid a:hover img{ transform: scale(1.05); }
.gallery-grid .g-big{ grid-column: span 2; grid-row: span 2; }
.gallery-grid .g-wide{ grid-column: span 2; }
.gallery-grid .g-tall{ grid-row: span 2; }

/* ---------- Lightbox ---------- */
.lightbox{
  width:100vw; height:100vh; max-width:none; max-height:none; margin:0;
  border:0; padding:0; background: rgba(18,15,13,.97); color: var(--paper);
}
.lightbox::backdrop{ background: rgba(18,15,13,.97); }
.lightbox[open]{ display:grid; place-items:center; }
.lightbox figure{
  margin:0; width:min(90vw, 1240px); height:min(84vh, 880px);
  display:grid; grid-template-rows: minmax(0,1fr) auto;
}
.lightbox figure img{ width:100%; height:100%; object-fit:contain; }
.lightbox figcaption{
  padding-top: 14px; font-size:.7rem; font-weight: 600; letter-spacing:.1em; text-transform: uppercase;
  color: rgba(242,234,220,.7);
}
.lightbox-close{
  position:fixed; z-index:2; top: 24px; right: 26px; width: 46px; height: 46px;
  border:1px solid rgba(242,234,220,.45); border-radius:50%; background:transparent; cursor:pointer;
}
.lightbox-close i{
  position:absolute; left:12px; right:12px; top:22px; height:1px; background: var(--paper);
  transform: rotate(45deg);
}
.lightbox-close i:last-child{ transform: rotate(-45deg); }
.lightbox-nav{
  position:fixed; top:50%; width:48px; height:48px; border:1px solid rgba(242,234,220,.35);
  border-radius:50%; background:transparent; color: var(--paper); cursor:pointer;
}
.lightbox-prev{ left: 24px; }
.lightbox-next{ right: 24px; }

/* ---------- Citazioni brevi (usata per la scheda "Tre spazi, uno stile") ---------- */
.quote-grid{ display:grid; grid-template-columns: repeat(3,1fr); gap: clamp(18px, 2vw, 30px); }
.quote-card{
  background: transparent; padding: 32px 0 0;
  border-top: 1px solid var(--ink);
  display:flex; flex-direction:column;
}
.quote-card .stars{ color: var(--siena); letter-spacing: 3px; margin-bottom: 20px; font-size:.85rem; }
.quote-card p{
  font-family: var(--font-display); font-weight: 400;
  font-size: clamp(1.35rem, 1.9vw, 1.75rem); line-height: 1.24; letter-spacing: -.02em;
}
.quote-card footer{
  margin-top: auto; padding-top: 24px;
  font-size:.66rem; font-weight: 600; letter-spacing:.12em; text-transform:uppercase; color: var(--ink-faint);
}
.quote-card footer b{ color: var(--ink); font-weight: 700; }
.bg-ink .quote-card{ border-color: rgba(242,234,220,.4); }
.bg-ink .quote-card p{ color: var(--paper); }
.bg-ink .quote-card footer{ color: rgba(242,234,220,.55); }
.bg-ink .quote-card footer b{ color: var(--paper); }

/* ---------- Recensioni (link a Booking.com e Airbnb) ---------- */
.review-links{
  display: grid; grid-template-columns: repeat(2, 1fr);
  border-top: 1px solid var(--ink); border-left: 1px solid var(--ink);
}
.review-link{
  padding: clamp(32px, 4vw, 52px) clamp(24px, 3vw, 40px);
  border-right: 1px solid var(--ink); border-bottom: 1px solid var(--ink);
  transition: background-color .35s ease;
}
.review-link:hover{ background: var(--white); }
.review-link-name{
  display: block;
  font-family: var(--font-display); font-weight: 400;
  font-size: clamp(1.9rem, 3vw, 2.6rem); line-height: 1.05;
  margin-bottom: 22px;
}
.review-link-cta{
  display: inline-flex; align-items: center; gap: 9px;
  padding-bottom: 4px; border-bottom: 1px solid var(--ink);
  font-size: .71rem; font-weight: 700; letter-spacing: .11em; text-transform: uppercase;
  transition: color .3s ease, border-color .3s ease, gap .3s ease;
}
.review-link-cta svg{ width: 15px; height: 15px; transition: transform .35s var(--ease); }
.review-link:hover .review-link-cta{ color: var(--siena); border-color: var(--siena); gap: 15px; }
.review-link:hover .review-link-cta svg{ transform: translateX(3px); }

/* ---------- Visita / pannello contatti ---------- */
.visit{
  display:grid; grid-template-columns: 1.1fr .9fr;
  background: var(--ink); color: var(--paper); min-height: 740px;
}
.visit-photo{ overflow:hidden; }
.visit-photo img{ width:100%; height:100%; object-fit:cover; object-position: center 62%; }
.visit-map{ position:relative; overflow:hidden; background: var(--paper-2); min-height: 460px; }
.visit-map iframe{
  width:100%; height:100%; border:0; display:block; position:absolute; inset:0;
}
.visit-map-link{
  position:absolute; z-index:2; left:0; bottom:0;
  display:inline-flex; align-items:center; gap: 9px;
  padding: 15px 20px; background: var(--paper); color: var(--ink);
  font-size:.68rem; font-weight:700; letter-spacing:.11em; text-transform:uppercase;
  transition: background-color .3s ease, color .3s ease;
}
.visit-map-link:hover{ background: var(--oxblood); color: var(--paper); }
.visit-map-link svg{ width:15px; height:15px; }
.visit-panel{
  position:relative; overflow:hidden; display:flex; flex-direction:column;
  padding: clamp(56px, 6vw, 100px) clamp(28px, 4.5vw, 80px);
}
.visit-panel > *{ position:relative; z-index:1; }
.visit-copy{ margin-top: auto; }
.visit-copy h2{ color: var(--paper); max-width: 14ch; }
.visit-copy p{ margin-top: 26px; max-width: 46ch; color: rgba(242,234,220,.72); }
.visit-details{ margin: clamp(44px, 5vw, 76px) 0 0; border-top: 1px solid var(--light-line); }
.visit-details div{
  display:grid; grid-template-columns: minmax(96px,.5fr) 1.5fr; gap: 18px;
  padding: 15px 0; border-bottom: 1px solid var(--light-line);
}
.visit-details dt{
  font-size:.64rem; font-weight: 700; letter-spacing:.13em; text-transform:uppercase;
  color: rgba(242,234,220,.55);
}
.visit-details dd{ margin:0; font-size:.88rem; color: var(--paper); }
.visit-details a{ border-bottom: 1px solid rgba(242,234,220,.45); }
.visit-details a:hover{ border-color: var(--paper); }
.visit-actions{ display:flex; gap: 12px; margin-top: 32px; flex-wrap:wrap; }

/* Variante chiara della stessa lista descrittiva (pagina Contatti) */
.contact-details{ margin: 0; border-top: 1px solid var(--line); }
.contact-details div{
  display:grid; grid-template-columns: minmax(96px,.5fr) 1.5fr; gap: 18px;
  padding: 18px 0; border-bottom: 1px solid var(--line);
}
.contact-details dt{
  font-size:.64rem; font-weight: 700; letter-spacing:.13em; text-transform:uppercase; color: var(--ink-faint);
}
.contact-details dd{ margin:0; font-size:.92rem; color: var(--ink); }
.contact-details a{ border-bottom: 1px solid var(--line); }
.contact-details a:hover{ color: var(--siena); border-color: var(--siena); }

/* ---------- Banda CTA ---------- */
.cta-band{
  position:relative; overflow:hidden;
  padding: clamp(64px, 8vw, 118px) clamp(26px, 5vw, 80px);
  background: var(--oxblood); color: var(--paper);
}
.cta-band img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; opacity:.24; }
.cta-band::after{
  content:''; position:absolute; inset:0;
  background: linear-gradient(90deg, rgba(104,31,41,.86), rgba(104,31,41,.5));
}
.cta-band .inner{ position:relative; z-index:2; max-width: 940px; }
.cta-band h2{ color: var(--paper); max-width: 17ch; }
.cta-band .lede{ color: rgba(242,234,220,.82); margin-top: 22px; }
.cta-band .hero-actions{ margin-top: 34px; }

/* ---------- Widget prenotazione ---------- */
.booking-bar{
  position:relative; z-index:3; margin-top: -44px;
  background: var(--paper); border: 1px solid var(--ink);
  padding: 24px 26px;
  display:grid; grid-template-columns: repeat(4,1fr) auto; gap: 22px; align-items:end;
}
.booking-field{ display:flex; flex-direction:column; gap: 9px; }
.booking-field label{
  font-size:.63rem; font-weight: 700; letter-spacing:.14em; text-transform:uppercase; color: var(--ink-faint);
}
.booking-field input, .booking-field select{
  border:none; border-bottom: 1px solid var(--line); padding: 7px 2px;
  font-family: var(--font-body); font-size:.95rem; color: var(--ink); background:transparent;
}
.booking-field input:focus, .booking-field select:focus{ outline:none; border-color: var(--siena); }

/* ---------- Form ---------- */
.form-grid{ display:grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.field{ display:flex; flex-direction:column; gap: 8px; }
.field.full{ grid-column: 1/-1; }
.field label{
  font-size:.64rem; font-weight: 700; letter-spacing:.13em; text-transform:uppercase; color: var(--ink-soft);
}
.field input, .field select, .field textarea{
  border: 1px solid var(--line); background: var(--white); border-radius: 0;
  padding: 13px 15px; font-family: var(--font-body); font-size:.95rem; color: var(--ink);
  transition: border-color .3s ease;
}
.field input:focus, .field select:focus, .field textarea:focus{ outline:none; border-color: var(--siena); }
.field-error{ font-size:.75rem; color: var(--oxblood); display:none; }
.field.has-error input, .field.has-error textarea{ border-color: var(--oxblood); }
.field.has-error .field-error{ display:block; }
.form-note{ font-size:.78rem; color: var(--ink-faint); margin-top: 14px; }
.form-success{
  display:none; background: var(--paper-2); border-left: 3px solid var(--olive); color: var(--ink);
  padding: 16px 20px; font-size:.9rem; margin-bottom: 20px;
}
.form-success.visible{ display:block; }

/* ---------- Footer ---------- */
.site-footer{ background: var(--oxblood); color: rgba(242,234,220,.8); }
.footer-main{
  display:grid; grid-template-columns: var(--grid); column-gap: clamp(24px,3vw,56px);
  padding-top: clamp(70px, 8vw, 120px); padding-bottom: clamp(56px, 7vw, 96px);
  row-gap: 48px;
}
.footer-brand{ grid-column: 1 / 3; }
.footer-brand .kicker{
  margin: 0 0 -2px; font-size:.68rem; font-weight: 700; letter-spacing:.24em; text-transform:uppercase;
  color: rgba(242,234,220,.75);
}
.footer-brand h2{
  color: var(--paper); font-size: clamp(3.4rem, 8.4vw, 9rem); line-height:.82; letter-spacing:-.045em;
}
.footer-brand p{ margin-top: 30px; max-width: 40ch; font-size:.9rem; color: rgba(242,234,220,.72); }
.footer-social{ display:flex; gap: 10px; margin-top: 26px; }
.footer-social a{
  width: 42px; height: 42px; display:flex; align-items:center; justify-content:center;
  border: 1px solid rgba(242,234,220,.32); color: var(--paper);
  transition: background-color .3s ease, border-color .3s ease, color .3s ease;
}
.footer-social a:hover{ background: var(--paper); border-color: var(--paper); color: var(--oxblood); }
.footer-social svg{ width:16px; height:16px; }

.footer-cols{ grid-column: 3; display:grid; gap: 40px; align-content: start; }
.footer-col h4{
  font-family: var(--font-body); font-size:.64rem; font-weight: 700;
  letter-spacing:.16em; text-transform:uppercase; color: rgba(242,234,220,.55);
  margin-bottom: 16px;
}
.footer-col li{ margin-bottom: 9px; font-size:.86rem; }
.footer-col li:last-child{ margin-bottom: 0; }
.footer-col a{ border-bottom: 1px solid transparent; transition: border-color .3s ease, color .3s ease; }
.footer-col a:hover{ color: var(--paper); border-color: rgba(242,234,220,.5); }
.footer-col address{ font-style:normal; }

.footer-bottom{
  display:flex; justify-content:space-between; gap: 20px; flex-wrap:wrap;
  padding: 22px 0; border-top: 1px solid var(--light-line);
  font-size:.66rem; font-weight: 600; letter-spacing:.08em; color: rgba(242,234,220,.6);
}
.footer-bottom a:hover{ color: var(--paper); }
.footer-bottom-links{ display:flex; gap: 22px; }

/* ---------- Reveal ---------- */
[data-reveal]{
  opacity:0; transform: translateY(30px);
  transition: opacity .85s var(--ease), transform .85s var(--ease);
}
[data-reveal].in-view{ opacity:1; transform: none; }
[data-reveal-group] [data-reveal]:nth-child(1){ transition-delay: 0s; }
[data-reveal-group] [data-reveal]:nth-child(2){ transition-delay: .08s; }
[data-reveal-group] [data-reveal]:nth-child(3){ transition-delay: .16s; }
[data-reveal-group] [data-reveal]:nth-child(4){ transition-delay: .24s; }
[data-reveal-group] [data-reveal]:nth-child(5){ transition-delay: .32s; }
[data-reveal-group] [data-reveal]:nth-child(6){ transition-delay: .4s; }

/* ---------- Componenti minori ---------- */
.tag-row{ display:flex; gap: 8px; flex-wrap:wrap; }
.tag{
  font-size:.63rem; font-weight: 600; letter-spacing:.1em; text-transform: uppercase;
  padding: 8px 13px; border:1px solid var(--line); color: var(--ink-soft);
}

.numbered-list{ counter-reset: step; border-top: 1px solid var(--line); }
.numbered-list li{
  counter-increment: step; display:grid; grid-template-columns: 62px 1fr; gap: 20px;
  padding: 26px 0; border-bottom: 1px solid var(--line);
}
.numbered-list li::before{
  content: counter(step, decimal-leading-zero);
  font-family: var(--font-display); font-size: 1.9rem; line-height:1; color: var(--siena);
}
.numbered-list h3{
  font-family: var(--font-body); font-size:.86rem; font-weight: 700;
  letter-spacing:.1em; text-transform: uppercase; margin-bottom: 10px;
}

.map-embed{ overflow:hidden; border:1px solid var(--line); }
.map-embed iframe{ width:100%; height: 460px; border:0; display:block; }

.promo-card{
  display:flex; flex-direction:column; background: transparent;
  border-top: 1px solid var(--ink);
}
.promo-card .promo-media{ position:relative; aspect-ratio: 16/11; overflow:hidden; margin-top: -1px; }
.promo-card .promo-media img{ width:100%; height:100%; object-fit:cover; transition: transform .8s var(--ease); }
.promo-card:hover .promo-media img{ transform: scale(1.04); }
.promo-card .promo-badge{
  position:absolute; top:0; left:0; z-index:2;
  background: var(--oxblood); color: var(--paper);
  font-size:.62rem; font-weight: 700; letter-spacing:.12em; text-transform:uppercase; padding: 9px 14px;
}
.promo-card .promo-body{ padding: 26px 0 0; display:flex; flex-direction:column; gap: 12px; flex:1; }
.promo-card .promo-body h3{ font-size: clamp(1.7rem, 2.4vw, 2.2rem); }
.promo-card .promo-body .lede{ font-size:.9rem; }
.promo-card .promo-foot{
  margin-top:auto; padding-top: 22px; display:flex; justify-content:space-between; align-items:center; gap: 16px;
}
.promo-card .promo-discount{
  font-family: var(--font-display); font-size: 2.4rem; line-height:1; color: var(--siena);
}

.activity-card{ display:flex; flex-direction:column; }
.activity-card .a-media{ aspect-ratio: 5/4; overflow:hidden; margin-bottom: 22px; background: var(--paper-2); }
.activity-card .a-media img{ width:100%; height:100%; object-fit:cover; transition: transform .8s var(--ease); }
.activity-card:hover .a-media img{ transform: scale(1.045); }
.activity-card .a-cat{
  font-size:.64rem; font-weight: 700; letter-spacing:.14em; text-transform:uppercase;
  color: var(--siena); margin-bottom: 10px;
}
.activity-card h3{ font-size: clamp(1.4rem, 2vw, 1.8rem); margin-bottom: 10px; }

.rules-strip{
  display:grid; grid-template-columns: repeat(4,1fr);
  border-top: 1px solid var(--line); border-left: 1px solid var(--line);
}
.rules-strip .rule{
  padding: clamp(26px, 3vw, 40px) clamp(20px, 2.2vw, 32px);
  border-right: 1px solid var(--line); border-bottom: 1px solid var(--line);
}
.rules-strip .rule b{
  display:block; font-family: var(--font-display); font-weight: 400; font-size: 2.2rem; line-height:1;
  margin-bottom: 12px; color: var(--siena);
}
.rules-strip .rule span{ font-size:.85rem; color: var(--ink-soft); line-height:1.6; }

/* 404 */
.notfound{ min-height: 100svh; display:flex; align-items:center; justify-content:center; text-align:center; padding: 180px 20px 90px; }
.notfound .code{ font-family: var(--font-display); font-size: clamp(6rem,18vw,14rem); color: var(--siena); line-height:.9; }

/* Contenuto generico */
.simple-content{ max-width: 68ch; }
.simple-content > * + *{ margin-top: 20px; }
.simple-content h2, .simple-content h3{ margin-top: 48px; }
.simple-content h3{
  font-family: var(--font-body); font-size:.86rem; font-weight: 700;
  letter-spacing:.12em; text-transform:uppercase; padding-bottom: 12px; border-bottom: 1px solid var(--line);
}
.simple-content a{ border-bottom: 1px solid var(--line); }
.simple-content a:hover{ color: var(--siena); border-color: var(--siena); }

/* ---------- Responsive ---------- */
@media (max-width: 1200px){
  :root{ --grid: minmax(0, .8fr) minmax(0, 4fr) minmax(0, 1.5fr); }
}

@media (max-width: 1040px){
  .nav-desktop, .nav-cta .btn-outline{ display:none; }
  .nav-toggle{ display:flex; }
  .split{ grid-template-columns: 1fr; }
  .split .split-media{ order:1 !important; }
  .split .split-body{ order:2; }
  .amenity-grid{ grid-template-columns: repeat(2,1fr); }
  .moment, .moment.offset{ grid-template-columns: 1fr; gap: 26px; }
  .moment.offset .moment-media{ order: 0; }
  .moment:nth-child(n) .moment-media{ aspect-ratio: 1.28; }
  .room-row, .room-row.reverse{ grid-template-columns: 1fr; }
  .room-row .room-gallery{ order:1 !important; }
  .quote-grid{ grid-template-columns: 1fr; }
  .review-links{ grid-template-columns: 1fr; }
  .booking-bar{ grid-template-columns: 1fr 1fr; }
  .gallery-grid{ grid-template-columns: repeat(2,1fr); }
  .rules-strip{ grid-template-columns: repeat(2,1fr); }
  .visit{ grid-template-columns: 1fr; min-height: 0; }
  .visit-photo{ height: 62svh; min-height: 420px; }
  .visit-map{ height: 56svh; min-height: 400px; }
  .footer-main{ grid-template-columns: 1fr; }
  .footer-brand, .footer-cols{ grid-column: 1; }
  .footer-cols{ grid-template-columns: repeat(3, 1fr); gap: 32px; }
}

@media (max-width: 760px){
  :root{ --header-h: 66px; --gutter: 20px; }
  body{ font-size: 16px; }
  .page-grid, .section-head, .statement-copy, .rail-foot{ grid-template-columns: 1fr; row-gap: 20px; }
  .section-head > .section-index,
  .section-head > div,
  .section-head > .section-aside,
  .section-head > a,
  .section-head > p,
  .statement-copy > .section-index,
  .statement-copy h2,
  .statement-copy .round-link,
  .rail-foot p, .rail-foot a{ grid-column: 1; justify-self: start; }
  .section{ padding: 76px 0; }
  .section-tight{ padding: 56px 0; }

  .site-header, .site-header.is-scrolled{ height: 66px; }
  .brand img, .site-header.is-scrolled .brand img{ height: 30px; }
  .brand-word b{ font-size: 1.15rem; }
  .brand-word span{ font-size: .5rem; letter-spacing: .16em; }

  .hero{ min-height: 92svh; }
  .hero-content{ min-height: 92svh; padding-top: calc(var(--header-h) + 30px); padding-bottom: 46px; gap: 22px; }
  .hero h1{ font-size: clamp(2.9rem, 12.5vw, 4.6rem); max-width: none; }
  .hero .lede{ margin-top: 22px; }
  .hero-actions{ margin-top: 26px; display:grid; grid-template-columns: 1fr; gap: 10px; }
  .hero-actions .btn{ width: 100%; }
  .hero-foot{ flex-direction: column; align-items: flex-start; gap: 16px; }
  .hero-scroll{ display:none; }

  .amenity-grid{ grid-template-columns: 1fr; }
  .rules-strip{ grid-template-columns: 1fr; }
  /* Pagina Attività Locali: tenuta insieme solo dalla tipografia (niente foto
     di repertorio), quindi su schermi stretti impilata a una colonna diventa
     un muro di testo. Più respiro fra le schede e titoli più leggibili a
     colpo d'occhio, senza toccare la spaziatura del desktop. */
  .quote-grid{ gap: 48px; }
  .activity-card h3{ font-size: 1.55rem; }
  .activity-card .a-cat{ margin-bottom: 6px; }
  .numbered-list li{ grid-template-columns: 40px 1fr; gap: 14px; padding: 30px 0; }
  .numbered-list li::before{ font-size: 1.5rem; }
  .rules-strip .rule{ padding: 28px 22px; }
  .booking-bar{ grid-template-columns: 1fr; margin-top: -26px; }
  .form-grid{ grid-template-columns: 1fr; }
  .gallery-grid{ grid-template-columns: 1fr; grid-auto-rows: 230px; }
  .gallery-grid .g-big, .gallery-grid .g-wide{ grid-column: span 1; }
  .room-gallery{ grid-template-columns: 1fr 1fr; }
  .room-gallery .tall{ aspect-ratio: 1/1; }
  .moment:nth-child(n) .moment-media{ aspect-ratio: 1.1; }

  .rail-shot-wide, .rail-shot-tall, .rail-shot-square{ width: 80vw; aspect-ratio: .88; }
  .statement{ min-height: 66svh; }
  .visit-panel{ padding: 56px var(--gutter) 68px; }
  .footer-cols{ grid-template-columns: 1fr; gap: 34px; }
  .footer-bottom{ flex-direction:column; align-items:flex-start; gap: 14px; }
  .lightbox figure{ width:100vw; height:86vh; padding: 58px 14px 18px; }
  .lightbox-nav{ top:auto; bottom: 22px; }
  .lightbox-prev{ left: calc(50% - 58px); }
  .lightbox-next{ right: calc(50% - 58px); }
}

@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior: auto; }
  *, *::before, *::after{
    animation-duration: .01ms !important; animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
  }
  [data-reveal]{ opacity:1; transform:none; }
  .hero-slide img, .hero-slide.is-active img{ transform: scale(1.04); }
}
