/* ─── LILIUM BOUTIQUE HOTEL — shared.css ──────────────────────
   Design system condiviso. Importato da tutte le pagine.
   Non modificare senza aggiornare index.html di conseguenza.
──────────────────────────────────────────────────────────────── */

/* ─── TT MODERNOIR ──────────────────────────────────────────── */
@font-face {
  font-family: 'TT Modernoir';
  src: url('fonts/WOFF2/TT-Modernoir-Light.woff2') format('woff2'),
       url('fonts/TT_Modernoir_Trial_Light.ttf') format('truetype');
  font-weight: 300;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'TT Modernoir';
  src: url('fonts/WOFF2/TT-Modernoir-Regular.woff2') format('woff2'),
       url('fonts/TT_Modernoir_Trial_Regular.ttf') format('truetype');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'TT Modernoir';
  src: url('fonts/WOFF2/TT-Modernoir-Medium.woff2') format('woff2'),
       url('fonts/TT_Modernoir_Trial_Medium.ttf') format('truetype');
  font-weight: 500;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'TT Modernoir';
  src: url('fonts/WOFF2/TT-Modernoir-Demi-Bold.woff2') format('woff2'),
       url('fonts/TT_Modernoir_Trial_DemiBold.ttf') format('truetype');
  font-weight: 600;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'TT Modernoir';
  src: url('fonts/WOFF2/TT-Modernoir-Bold.woff2') format('woff2'),
       url('fonts/TT_Modernoir_Trial_Bold.ttf') format('truetype');
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}

/* ─── CORMORANT GARAMOND ─────────────────────────────────── */
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: italic;
  font-weight: 300;
  font-display: swap;
  src: url('fonts/google/cormorant-garamond-italic-300.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url('fonts/google/cormorant-garamond-italic-400.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: italic;
  font-weight: 500;
  font-display: swap;
  src: url('fonts/google/cormorant-garamond-italic-500.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* ─── GILDA DISPLAY ──────────────────────────────────────── */
@font-face {
  font-family: 'Gilda Display';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('fonts/google/gilda-display-400.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* ─── JOST ───────────────────────────────────────────────── */
@font-face {
  font-family: 'Jost';
  font-style: normal;
  font-weight: 200;
  font-display: swap;
  src: url('fonts/google/jost-normal-200-500.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Jost';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url('fonts/google/jost-normal-200-500.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Jost';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('fonts/google/jost-normal-200-500.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Jost';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('fonts/google/jost-normal-200-500.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Jost';
  font-style: italic;
  font-weight: 200;
  font-display: swap;
  src: url('fonts/google/jost-italic-200-300.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Jost';
  font-style: italic;
  font-weight: 300;
  font-display: swap;
  src: url('fonts/google/jost-italic-200-300.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* ─── TOKENS — light default ────────────────────────────── */
:root {
  --bg:          oklch(97% 0.008 80);
  --bg-mid:      oklch(93% 0.010 80);
  --bg-light:    oklch(89% 0.012 80);
  --ivory:       oklch(18% 0.025 195);
  --ivory-dim:   oklch(42% 0.020 195);
  --ivory-faint: oklch(62% 0.015 195);
  --teal:        oklch(52% 0.11 196);
  --teal-pale:   oklch(36% 0.09 196);
  --gold:        oklch(55% 0.100 75);
  --border:      oklch(83% 0.012 80);

  --serif:   'Cormorant Garamond', 'Gilda Display', Georgia, serif;
  --display: 'TT Modernoir', Georgia, sans-serif;
  --sans:    'Jost', system-ui, sans-serif;

  --text-2xs: clamp(0.72rem, 0.65rem + 0.2vw, 0.8rem);
  --text-xs:  clamp(0.7rem,  0.65rem + 0.2vw, 0.8rem);
  --text-sm:  clamp(0.85rem, 0.8rem  + 0.25vw, 1rem);
  --text-base:clamp(0.95rem, 0.9rem  + 0.28vw, 1.1rem);
  --text-lg:  clamp(1.15rem, 1rem    + 0.6vw,  1.5rem);
  --text-xl:  clamp(1.5rem,  1.1rem  + 1.6vw,  2.5rem);
  --text-2xl: clamp(2rem,    1.2rem  + 3.2vw,  4.5rem);
  --text-3xl: clamp(2.8rem,  1.4rem  + 5.5vw,  7rem);
  --text-hero:clamp(3.5rem,  1.5rem  + 8vw,    10rem);

  --ease: cubic-bezier(0.16, 1, 0.3, 1);
}

/* ─── DARK MODE ─────────────────────────────────────────── */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --bg:          oklch(10% 0.018 195);
    --bg-mid:      oklch(14% 0.022 195);
    --bg-light:    oklch(18% 0.025 193);
    --ivory:       oklch(94% 0.010 80);
    --ivory-dim:   oklch(72% 0.010 80);
    --ivory-faint: oklch(48% 0.008 80);
    --teal-pale:   oklch(72% 0.085 196);
    --gold:        oklch(75% 0.100 75);
    --border:      oklch(25% 0.02 195);
  }
}
html[data-theme="dark"] {
  --bg:          oklch(10% 0.018 195);
  --bg-mid:      oklch(14% 0.022 195);
  --bg-light:    oklch(18% 0.025 193);
  --ivory:       oklch(94% 0.010 80);
  --ivory-dim:   oklch(72% 0.010 80);
  --ivory-faint: oklch(48% 0.008 80);
  --teal-pale:   oklch(72% 0.085 196);
  --gold:        oklch(75% 0.100 75);
  --border:      oklch(25% 0.02 195);
}

/* ─── HERO + BOOKING BAR sempre dark (sfondo video) ─────── */
.hero {
  --bg:          oklch(10% 0.018 195);
  --bg-mid:      oklch(14% 0.022 195);
  --bg-light:    oklch(18% 0.025 193);
  --ivory:       oklch(94% 0.010 80);
  --ivory-dim:   oklch(72% 0.010 80);
  --ivory-faint: oklch(48% 0.008 80);
  --teal-pale:   oklch(72% 0.085 196);
  --border:      oklch(22% 0.02 195);
}
/* Booking bar — segue il tema della pagina */

/* ─── RESET ──────────────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body {
  background: var(--bg);
  color: var(--ivory);
  font-family: var(--sans);
  font-weight: 300;
  font-size: var(--text-base);
  line-height: 1.7;
  -webkit-font-smoothing: antialiased;
}
img, video { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
button { cursor: pointer; font: inherit; border: none; background: none; color: inherit; }
ul { list-style: none; }
address { font-style: normal; }

/* ─── FOCUS MANAGEMENT ───────────────────────────────────── */
:focus { outline: none; }
:focus-visible {
  outline: 2px solid var(--teal);
  outline-offset: 3px;
  border-radius: 2px;
}
.visually-hidden {
  position: absolute;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0,0,0,0);
  white-space: nowrap; border: 0;
}

/* ─── SECTION UTILITIES ──────────────────────────────────── */
.container {
  max-width: 1400px;
  margin: 0 auto;
  padding-inline: clamp(1.5rem, 4vw, 4rem);
}
.section { padding-block: clamp(4rem, 6vw, 7rem); }
.section--bg-mid { background: var(--bg-mid); }
.section--bg-light { background: var(--bg-light); }

/* ─── NAV ────────────────────────────────────────────────── */
.nav {
  position: fixed;
  inset-block-start: 0;
  inset-inline: 0;
  z-index: 200;
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  padding: 2rem 2.5rem;
  transition: background 0.5s var(--ease), padding 0.4s var(--ease);
}
.nav--scrolled {
  background: var(--bg);
  padding-block: 1.2rem;
  border-bottom: 1px solid var(--border);
}
/* Unscrolled nav sits over dark hero — always white, regardless of theme */
.nav:not(.nav--scrolled) .nav__lang,
.nav:not(.nav--scrolled) .nav__theme,
.nav:not(.nav--scrolled) .nav__menu {
  color: oklch(94% 0.008 80 / 0.75);
}
.nav:not(.nav--scrolled) .nav__lang:hover,
.nav:not(.nav--scrolled) .nav__theme:hover,
.nav:not(.nav--scrolled) .nav__menu:hover {
  color: oklch(98% 0.004 80);
}
/* When menu is open, nav must look like scrolled (light bg, dark text) */
body:has(.nav-menu.is-open) .nav:not(.nav--scrolled) {
  background: var(--bg);
  border-bottom: 1px solid var(--border);
}
body:has(.nav-menu.is-open) .nav:not(.nav--scrolled) .nav__lang,
body:has(.nav-menu.is-open) .nav:not(.nav--scrolled) .nav__theme,
body:has(.nav-menu.is-open) .nav:not(.nav--scrolled) .nav__menu {
  color: var(--ivory-dim);
}
body:has(.nav-menu.is-open) .nav:not(.nav--scrolled) .nav__lang:hover,
body:has(.nav-menu.is-open) .nav:not(.nav--scrolled) .nav__theme:hover,
body:has(.nav-menu.is-open) .nav:not(.nav--scrolled) .nav__menu:hover {
  color: var(--ivory);
}
/* Logo swap in light mode when menu is open */
html:not([data-theme="dark"]) body:has(.nav-menu.is-open) .nav:not(.nav--scrolled) .nav__logo-img--dark  { display: none; }
html:not([data-theme="dark"]) body:has(.nav-menu.is-open) .nav:not(.nav--scrolled) .nav__logo-img--light { display: block; }
/* Undo swap in system dark mode (nav bg stays dark, keep white logo) */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) body:has(.nav-menu.is-open) .nav:not(.nav--scrolled) .nav__logo-img--dark  { display: block; }
  :root:not([data-theme="light"]) body:has(.nav-menu.is-open) .nav:not(.nav--scrolled) .nav__logo-img--light { display: none; }
}

.nav__left {
  display: flex;
  align-items: center;
  gap: 2rem;
  visibility: hidden;
  pointer-events: none;
}
.nav__dest {
  font-size: var(--text-2xs);
  font-weight: 400;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--ivory-dim);
  transition: color 0.2s;
  display: flex;
  align-items: center;
  gap: 0.4rem;
}
.nav__dest::before {
  content: '←';
  font-size: 0.65rem;
  transition: transform 0.2s var(--ease);
}
.nav__dest:hover { color: var(--ivory); }
.nav__dest:hover::before { transform: translateX(-3px); }
.nav__dest[aria-current="page"] { color: var(--ivory); opacity: 0.5; pointer-events: none; }
.nav__dest[aria-current="page"]::before { display: none; }

.nav__logo {
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
  line-height: 1;
}
.nav__logo-img {
  height: 44px;
  width: auto;
  display: block;
  transition: filter 0.3s;
}
/* Light-mode logo swap: show dark-text logo when scrolled on light bg */
.nav__logo-img--light { display: none; }
html:not([data-theme="dark"]) .nav--scrolled .nav__logo-img--dark  { display: none; }
html:not([data-theme="dark"]) .nav--scrolled .nav__logo-img--light { display: block; }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .nav--scrolled .nav__logo-img--dark  { display: block; }
  :root:not([data-theme="light"]) .nav--scrolled .nav__logo-img--light { display: none; }
}

.nav__theme {
  color: var(--ivory-dim);
  padding: 0.3rem;
  line-height: 0;
  transition: color 0.2s;
}
.nav__theme:hover { color: var(--ivory); }
.theme-icon { display: block; }
html:not([data-theme="dark"]) .theme-icon--moon { display: none; }
html[data-theme="dark"] .theme-icon--sun { display: none; }

.nav__right {
  display: flex;
  align-items: center;
  gap: 1.75rem;
  justify-content: flex-end;
}
.nav__lang {
  font-size: var(--text-2xs);
  font-weight: 400;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--ivory-dim);
  transition: color 0.2s;
}
.nav__lang:hover { color: var(--ivory); }
.nav__menu {
  font-size: var(--text-2xs);
  font-weight: 400;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--ivory-dim);
  display: flex;
  align-items: center;
  gap: 0.5rem;
  transition: color 0.2s;
}
.nav__menu:hover { color: var(--ivory); }
.nav__menu-icon {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.nav__menu-icon span {
  display: block;
  width: 18px;
  height: 1px;
  background: currentColor;
  transition: width 0.2s, transform 0.35s var(--ease), opacity 0.2s;
  transform-origin: center;
}
.nav__menu-icon span:last-child { width: 12px; }
.nav__menu:hover .nav__menu-icon span:last-child { width: 18px; }

/* Hamburger → X when menu open */
body:has(.nav-menu.is-open) .nav__menu-icon span:first-child {
  transform: translateY(2.5px) rotate(45deg);
}
body:has(.nav-menu.is-open) .nav__menu-icon span:last-child {
  width: 18px;
  transform: translateY(-2.5px) rotate(-45deg);
}

.nav__book {
  font-size: var(--text-2xs);
  font-weight: 500;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--bg);
  background: linear-gradient(to right, var(--teal) 50%, var(--ivory) 50%);
  background-size: 200% 100%;
  background-position: right center;
  padding: 0.55rem 1.3rem;
  border-radius: 4px;
  transition: background-position 0.45s var(--ease), color 0.3s, transform 0.15s var(--ease);
}
.nav__book:hover {
  background-position: left center;
  color: var(--ivory);
}
.nav__book:active {
  transform: translateY(1px) scale(0.98);
  transition-duration: 0.08s;
}

/* ─── BOOKING BAR ────────────────────────────────────────── */
.booking-bar {
  background: var(--bg-mid);
  border-top: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
}
.booking-bar__inner {
  max-width: 1400px;
  margin: 0 auto;
  display: flex;
  align-items: stretch;
}
.bb-field {
  flex: 1;
  padding: 1.5rem 2rem;
  border-right: 1px solid var(--border);
  cursor: pointer;
  transition: background 0.2s;
}
.bb-field:hover { background: var(--bg-light); }
.bb-field:focus-within {
  background: var(--bg-light);
  box-shadow: inset 0 2px 0 var(--teal);
}
.bb-field:focus-within .bb-field__label {
  color: var(--teal-pale);
}
.bb-field__label {
  display: block;
  font-size: var(--text-2xs);
  font-weight: 400;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: var(--teal);
  margin-bottom: 0.35rem;
}
.bb-field__val {
  font-size: var(--text-sm);
  font-weight: 300;
  color: var(--ivory-dim);
}
.bb-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: var(--text-2xs);
  font-weight: 500;
  letter-spacing: 0.25em;
  text-transform: uppercase;
  color: oklch(10% 0.018 195);
  background: linear-gradient(to right, var(--teal) 50%, oklch(94% 0.010 80) 50%);
  background-size: 200% 100%;
  background-position: right center;
  padding: 0 2.5rem;
  border-radius: 0 4px 4px 0;
  white-space: nowrap;
  transition: background-position 0.45s var(--ease), color 0.45s var(--ease), transform 0.15s var(--ease);
}
.bb-btn:hover { background-position: left center; color: oklch(94% 0.010 80); }
.bb-btn:active { transform: translateY(1px) scale(0.98); transition-duration: 0.08s; }

/* ─── STICKY PRICE BAR ────────────────────────────────────── */
.price-bar {
  position: fixed;
  bottom: 0;
  inset-inline: 0;
  z-index: 300;
  background: var(--bg-mid);
  border-top: 1px solid var(--border);
  border-radius: 12px 12px 0 0;
  transform: translateY(100%);
  transition: transform 0.4s var(--ease);
}
.price-bar.is-visible { transform: translateY(0); }
.price-bar__inner {
  max-width: 1400px;
  margin: 0 auto;
  padding: 0.9rem clamp(1.5rem, 4vw, 4rem);
  display: flex;
  align-items: center;
  gap: 2rem;
  flex-wrap: wrap;
}
.price-bar__label {
  font-size: var(--text-2xs);
  font-weight: 400;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: var(--ivory-dim);
  flex: 1;
  min-width: 160px;
}
.price-bar__compare {
  display: flex;
  align-items: center;
  gap: 0.9rem;
  font-size: var(--text-xs);
}
.price-bar__ota {
  color: var(--ivory-faint);
  text-decoration: line-through;
  text-decoration-color: var(--ivory-faint);
}
.price-bar__sep { color: var(--ivory-faint); font-size: var(--text-2xs); }
.price-bar__direct { color: var(--teal); font-weight: 400; }
.price-bar__cta {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  font-size: var(--text-2xs);
  font-weight: 500;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--bg);
  background: linear-gradient(to right, var(--teal) 50%, var(--ivory) 50%);
  background-size: 200% 100%;
  background-position: right center;
  padding: 0.75rem 1.75rem;
  border-radius: 4px;
  white-space: nowrap;
  transition: background-position 0.45s var(--ease), transform 0.15s var(--ease);
  flex-shrink: 0;
}
.price-bar__cta:hover { background-position: left center; color: var(--ivory); }
.price-bar__cta:active { transform: translateY(1px) scale(0.98); transition-duration: 0.08s; }
.price-bar__close {
  font-size: 0.65rem;
  color: var(--ivory-faint);
  cursor: pointer;
  padding: 0.5rem;
  line-height: 1;
  transition: color 0.2s;
  flex-shrink: 0;
}
.price-bar__close:hover { color: var(--ivory); }

/* ─── FOOTER ─────────────────────────────────────────────── */
/* Light mode: boost faint text so it clears 4.5:1 on --bg-mid */
html:not([data-theme="dark"]) .footer { --ivory-faint: oklch(43% 0.014 195); }
@media (prefers-color-scheme: light) {
  :root:not([data-theme="dark"]) .footer { --ivory-faint: oklch(43% 0.014 195); }
}
/* Light mode price-bar also sits on --bg-mid */
html:not([data-theme="dark"]) .price-bar { --ivory-faint: oklch(43% 0.014 195); }
@media (prefers-color-scheme: light) {
  :root:not([data-theme="dark"]) .price-bar { --ivory-faint: oklch(43% 0.014 195); }
}
.footer {
  background: var(--bg-mid);
  padding-block: clamp(4rem, 6vw, 6rem) 2rem;
  color: var(--ivory);
}
html[data-theme="dark"] .footer {
  background: oklch(7% 0.015 195);
  --ivory:       oklch(94% 0.010 80);
  --ivory-dim:   oklch(72% 0.010 80);
  --ivory-faint: oklch(48% 0.008 80);
  --teal-pale:   oklch(72% 0.085 196);
  --border:      oklch(25% 0.02 195);
  color:         oklch(94% 0.010 80);
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .footer {
    background: oklch(7% 0.015 195);
    --ivory:       oklch(94% 0.010 80);
    --ivory-dim:   oklch(72% 0.010 80);
    --ivory-faint: oklch(48% 0.008 80);
    --teal-pale:   oklch(72% 0.085 196);
    --border:      oklch(25% 0.02 195);
    color:         oklch(94% 0.010 80);
  }
}
.footer__main {
  max-width: 1400px;
  margin: 0 auto;
  padding-inline: clamp(1.5rem, 4vw, 4rem);
  display: grid;
  grid-template-columns: 2fr 1fr 1fr 1fr;
  gap: clamp(2rem, 4vw, 5rem);
  padding-bottom: clamp(3rem, 5vw, 5rem);
  border-bottom: 1px solid var(--border);
  margin-bottom: 2rem;
}
.footer__brand {}
.footer__brand-name {
  font-family: var(--display);
  font-size: var(--text-lg);
  font-weight: 300;
  font-style: italic;
  letter-spacing: -0.01em;
  color: var(--ivory);
  margin-bottom: 4px;
}
.footer__brand-sub {
  font-size: var(--text-2xs);
  font-weight: 400;
  letter-spacing: 0.32em;
  text-transform: uppercase;
  color: var(--teal);
  margin-bottom: 1.5rem;
}
.footer__tagline {
  font-size: var(--text-sm);
  font-weight: 300;
  color: var(--ivory-faint);
  line-height: 1.7;
  max-width: 32ch;
}
.footer__col-title {
  font-size: var(--text-2xs);
  font-weight: 400;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: var(--teal);
  margin-bottom: 1.5rem;
}
.footer__links { display: flex; flex-direction: column; gap: 0.9rem; }
.footer__link {
  font-size: var(--text-sm);
  font-weight: 300;
  color: var(--ivory-faint);
  transition: color 0.2s;
}
.footer__link:hover { color: var(--ivory); }

.footer__bottom {
  max-width: 1400px;
  margin: 0 auto;
  padding-inline: clamp(1.5rem, 4vw, 4rem);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 2rem;
}
.footer__copy {
  font-size: var(--text-2xs);
  font-weight: 300;
  letter-spacing: 0.08em;
  color: var(--ivory-faint);
}
.footer__langs { display: flex; gap: 1.25rem; }
.footer__lang {
  font-size: var(--text-2xs);
  font-weight: 400;
  letter-spacing: 0.18em;
  color: var(--ivory-faint);
  transition: color 0.2s;
}
.footer__lang:hover, .footer__lang--active { color: var(--teal); }

/* ─── REVEAL ANIMATION ───────────────────────────────────── */
@media (prefers-reduced-motion: no-preference) {
  /* Base: opacity + Y-translate */
  .reveal {
    opacity: 0;
    transform: translateY(40px);
    transition: opacity 0.85s var(--ease), transform 0.85s var(--ease);
  }
  .reveal.visible { opacity: 1; transform: none; }

  /* Stagger delays */
  .reveal--d1 { transition-delay: 0.12s; }
  .reveal--d2 { transition-delay: 0.24s; }
  .reveal--d3 { transition-delay: 0.36s; }
  .reveal--d4 { transition-delay: 0.48s; }
  .reveal--d5 { transition-delay: 0.60s; }

  /* Photo tier: scale up from slightly smaller — longhands so delay survives */
  .reveal--photo {
    transform: translateY(28px) scale(0.96);
    transition-property: opacity, transform;
    transition-duration: 1.1s;
    transition-timing-function: var(--ease);
  }

  /* Heading tier: deeper Y + opacity — reliable cross-browser */
  .reveal--wipe {
    transform: translateY(56px);
    transition-property: opacity, transform;
    transition-duration: 0.95s;
    transition-timing-function: var(--ease);
  }

  /* Kicker line draws in on reveal */
  .kicker__line {
    width: 0;
    transition: width 0.65s var(--ease);
  }
  .kicker.visible .kicker__line { width: 36px; }
}

/* ─── KICKER ─────────────────────────────────────────────── */
.kicker {
  display: flex;
  align-items: center;
  gap: 1rem;
  font-size: var(--text-2xs);
  font-weight: 400;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: var(--teal-pale);
  margin-bottom: 2rem;
}
/* When kicker sits inside editorial__text flex, the gap already spaces it */
.editorial__text > .kicker { margin-bottom: 0; }
.kicker__line {
  display: block;
  width: 36px;
  height: 1px;
  background: var(--teal);
  flex-shrink: 0;
}

/* ─── CTA BUTTONS ────────────────────────────────────────── */
.btn-cta {
  display: inline-flex;
  align-items: center;
  gap: 0.75rem;
  font-size: var(--text-xs);
  font-weight: 500;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--bg);
  background: linear-gradient(to right, var(--teal) 50%, var(--ivory) 50%);
  background-size: 200% 100%;
  background-position: right center;
  padding: 1rem 2.25rem;
  border-radius: 5px;
  transition: background-position 0.45s var(--ease), color 0.3s, transform 0.2s var(--ease);
}
.btn-cta:hover {
  background-position: left center;
  color: var(--ivory);
  transform: translateY(-2px);
}
.btn-cta:active {
  transform: translateY(1px) scale(0.98);
  transition-duration: 0.08s;
}
.btn-cta-ghost {
  display: inline-flex;
  align-items: center;
  gap: 0.75rem;
  font-size: var(--text-xs);
  font-weight: 400;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--ivory-dim);
  border: 1px solid var(--border);
  padding: 1rem 2.25rem;
  border-radius: 5px;
  transition: border-color 0.2s, color 0.2s;
}
.btn-cta-ghost:hover {
  border-color: var(--teal);
  color: var(--teal);
}

/* ─── NAV MENU OVERLAY ───────────────────────────────────── */
.nav-menu {
  position: fixed;
  inset: 0;
  z-index: 190;
  background: var(--bg);
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding-top: clamp(5rem, 14vh, 8rem);
  padding-bottom: clamp(3rem, 8vw, 6rem);
  padding-inline: clamp(2rem, 6vw, 5rem);
  gap: 3rem;
  transform: translateX(100%);
  transition: transform 0.55s var(--ease), visibility 0s 0.55s;
  visibility: hidden;
}
.nav-menu.is-open {
  transform: translateX(0);
  visibility: visible;
  transition: transform 0.55s var(--ease), visibility 0s 0s;
}
.nav-menu__close { display: none; }
.nav-menu__nav {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}
.nav-menu__link {
  font-family: var(--display);
  font-size: clamp(2rem, 5vw, 3.5rem);
  font-weight: 300;
  color: var(--ivory-dim);
  line-height: 1.3;
  padding: 0.3rem 0;
  display: block;
  transition: color 0.2s, transform 0.2s var(--ease);
}
.nav-menu__link:hover { color: var(--ivory); transform: translateX(6px); }
.nav-menu__bottom {
  display: flex;
  flex-direction: column;
  gap: 1rem;
}
.nav-menu__addr {
  font-size: var(--text-xs);
  font-weight: 300;
  letter-spacing: 0.08em;
  color: var(--ivory-faint);
  font-style: normal;
}
.nav-menu__langs {
  display: flex;
  gap: 1.5rem;
}
.nav-menu__lang {
  font-size: var(--text-2xs);
  font-weight: 400;
  letter-spacing: 0.22em;
  color: var(--ivory-faint);
  transition: color 0.2s;
}
.nav-menu__lang--active,
.nav-menu__lang:hover { color: var(--teal-pale); }

/* ─── REDUCED MOTION: hero video ────────────────────────── */
@media (prefers-reduced-motion: reduce) {
  .hero__video { display: none; }
}

/* ─── RESPONSIVE — nav, footer, booking-bar, price-bar ──── */

/* ── Wide tablet (≤960px) — hide left nav, more room for logo + right ── */
@media (max-width: 960px) {
  .nav__left { display: none; }
  .nav { grid-template-columns: auto 1fr auto; padding-inline: 1.5rem; }
  .nav__logo { text-align: left; }
}

/* ── Large tablet / small desktop (≤1024px) ──────────────── */
@media (max-width: 1024px) {
  .footer__main  { grid-template-columns: 1fr 1fr; gap: 2.5rem; }
}

/* ── Tablet (≤860px) — booking bar wraps ── */
@media (max-width: 860px) {
  /* Booking bar: CHECK-IN / CHECK-OUT top row, OSPITI / CODICE bottom, button full-width */
  .booking-bar__inner { flex-wrap: wrap; }
  .bb-field             { flex: 1 1 50%; min-width: 0; border-bottom: 1px solid var(--border); }
  .bb-field:nth-child(2){ border-right: none; }
  .bb-field:nth-child(3){ border-bottom: none; }
  .bb-field:nth-child(4){ border-right: none; border-bottom: none; }
  .bb-btn               { flex: 1 1 100%; padding: 1.25rem 2rem; text-align: center; border-top: 1px solid var(--border); }

  /* Price strip: collapse compare to a single line */
  .price-strip__inner { gap: 0.75rem; }
}

/* ── Small tablet / large phone (≤768px) ─────────────────── */
@media (max-width: 768px) {
  .nav__left { display: none; }
  .nav__lang { display: none; }

  /* Footer */
  .footer__main   { grid-template-columns: 1fr 1fr; gap: 2rem; }
  .footer__bottom { flex-direction: column; align-items: flex-start; gap: 0.75rem; }
}

/* ── Mobile (≤640px) ─────────────────────────────────────── */
@media (max-width: 640px) {
  /* Nav: flex row — logo left, actions right */
  .nav {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 1rem 1.25rem;
  }
  .nav__logo { text-align: left; }
  .nav__lang { display: none; }
  .nav__right { gap: 0.75rem; }

  /* Section spacing tighter on phone */
  .section { padding-block: clamp(2.5rem, 7vw, 4rem); }

  /* CTA section: containment + stacked buttons on mobile */
  .cta-section__inner { padding-inline: 1.5rem; }
  .cta-section__actions { flex-direction: column; width: 100%; }
  .cta-section__actions .btn-cta,
  .cta-section__actions .btn-cta-ghost {
    width: 100%;
    justify-content: center;
  }
  .container { padding-inline: 1.5rem; }

  /* Booking bar: stacked layout */
  .booking-bar__inner { flex-direction: column; }
  .bb-field {
    flex: none;
    width: 100%;
    border-right: none;
    border-bottom: 1px solid var(--border);
    padding: 1rem 1.25rem;
  }
  .bb-field:last-of-type { border-bottom: none; }
  .bb-btn {
    width: 100%;
    padding: 1.25rem;
    text-align: center;
    font-size: var(--text-xs);
    border-top: 1px solid var(--border);
  }

  /* Footer — 2 colonne, brand full-width */
  .footer {
    padding-block: 2.5rem 1.5rem;
  }
  .footer__main {
    grid-template-columns: 1fr 1fr;
    gap: 1.5rem;
    padding-bottom: 2rem;
  }
  .footer__brand {
    grid-column: 1 / -1;
    margin-bottom: 0.25rem;
  }
  .footer__tagline { display: none; }
  .footer__col-title { margin-bottom: 0.75rem; }
  .footer__links { gap: 0.6rem; }

  /* Sticky price bar: compact — hide label and OTA comparisons */
  .price-bar__label   { display: none; }
  .price-bar__compare .price-bar__ota { display: none; }
  .price-bar__compare .price-bar__sep { display: none; }
  .price-bar__inner   { gap: 0.75rem; padding: 0.75rem 1.25rem; }
  .price-bar__compare { gap: 0; }
}

/* ── Small phone (≤390px) ────────────────────────────────── */
@media (max-width: 390px) {
  .nav__book { display: none; }
  .nav__menu { gap: 0.35rem; }
}

/* ─── COOKIE CONSENT BANNER ─────────────────────────────── */
.cookie-banner {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  z-index: 9000;
  background: var(--bg-mid);
  border-top: 1px solid var(--border);
  padding: 1.25rem clamp(1.5rem, 4vw, 4rem);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.5rem;
  flex-wrap: wrap;
  box-shadow: 0 -4px 24px oklch(0% 0 0 / 0.18);
  transform: translateY(100%);
  transition: transform 0.35s cubic-bezier(0.22, 1, 0.36, 1);
}
.cookie-banner.cookie-banner--visible {
  transform: translateY(0);
}
.cookie-banner__text {
  font-size: var(--text-xs);
  color: var(--ivory-dim);
  line-height: 1.55;
  flex: 1 1 320px;
}
.cookie-banner__text a {
  color: var(--teal);
  text-decoration: underline;
  text-underline-offset: 2px;
}
.cookie-banner__actions {
  display: flex;
  gap: 0.75rem;
  flex-shrink: 0;
  flex-wrap: wrap;
}
.cookie-btn {
  font-family: var(--sans);
  font-size: var(--text-xs);
  font-weight: 500;
  letter-spacing: 0.06em;
  padding: 0.6rem 1.25rem;
  border-radius: 3px;
  cursor: pointer;
  border: 1px solid var(--border);
  background: transparent;
  color: var(--ivory-dim);
  transition: color 0.2s, border-color 0.2s;
}
.cookie-btn:hover { color: var(--ivory); border-color: var(--ivory-faint); }
.cookie-btn--accept {
  background: linear-gradient(to right, var(--teal) 50%, var(--ivory) 50%);
  background-size: 200% 100%;
  background-position: right center;
  border-color: var(--ivory);
  color: var(--bg);
  transition: background-position 0.45s var(--ease), color 0.3s, border-color 0.2s, transform 0.15s var(--ease);
}
.cookie-btn--accept:hover {
  background-position: left center;
  border-color: var(--teal);
  color: var(--ivory);
}
.cookie-btn--accept:active {
  transform: translateY(1px) scale(0.98);
  transition-duration: 0.08s;
}

/* ─── PRIVACY PAGE ───────────────────────────────────────── */
.privacy-hero {
  padding: clamp(6rem, 12vw, 10rem) 0 clamp(3rem, 6vw, 5rem);
  background: var(--bg-mid);
  border-bottom: 1px solid var(--border);
}
.privacy-hero__kicker {
  font-family: var(--sans);
  font-size: var(--text-xs);
  font-weight: 400;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--teal);
  margin-bottom: 1rem;
}
.privacy-hero__title {
  font-family: var(--display);
  font-size: var(--text-2xl);
  font-weight: 700;
  letter-spacing: -0.02em;
  color: var(--ivory);
  line-height: 1.05;
}
.privacy-body {
  max-width: 780px;
  margin: 0 auto;
  padding: clamp(3rem, 6vw, 5rem) clamp(1.5rem, 4vw, 4rem);
}
.privacy-body h2 {
  font-family: var(--sans);
  font-size: var(--text-sm);
  font-weight: 500;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--teal);
  margin: 2.5rem 0 0.75rem;
  padding-top: 2.5rem;
  border-top: 1px solid var(--border);
}
.privacy-body h2:first-child { margin-top: 0; padding-top: 0; border-top: none; }
.privacy-body h3 {
  font-family: var(--sans);
  font-size: var(--text-sm);
  font-weight: 500;
  color: var(--ivory-dim);
  margin: 1.5rem 0 0.5rem;
}
.privacy-body p, .privacy-body li {
  font-size: var(--text-sm);
  color: var(--ivory-dim);
  line-height: 1.75;
}
.privacy-body ul {
  padding-left: 1.25rem;
  margin: 0.5rem 0 1rem;
}
.privacy-body li { margin-bottom: 0.35rem; }
.privacy-body a { color: var(--teal); text-decoration: underline; text-underline-offset: 2px; }
.privacy-body strong { color: var(--ivory); font-weight: 500; }
.privacy-body .updated {
  font-size: var(--text-xs);
  color: var(--ivory-faint);
  margin-bottom: 2rem;
}
