/* =====================================================================
   Gestionale B&B — restyling "editoriale / lusso"
   Playfair Display + Inter · palette carta / bosco / oro
   ===================================================================== */

:root{
  --ink:#101a14;
  --ink-soft:#4d5a51;
  --paper:#f7f4ec;
  --paper-2:#efe9dc;
  --forest:#14261c;
  --forest-2:#1b3325;
  --gold:#b98b3e;
  --gold-2:#d8b475;
  --gold-3:#e8cfa2;
  /* Oro da leggere.
     --gold-deep e' la tinta scura che raggiunge AA (>=4.5:1) su fondo chiaro;
       e' tarata per ogni tema, quindi ognuno la propria percentuale.
     --gold-ink e' il valore che le regole usano: parte scuro su fondo chiaro
       e si schiarisce da solo su tutte le superfici scure (vedi blocco sotto),
       dove serve invece l'oro acceso --gold-2. */
  --gold-deep:color-mix(in srgb,var(--gold) 70%,#000);
  --gold-ink:var(--gold-deep);
  /* Fondo dei pulsanti a testo bianco: sui temi chiari e' l'oro scuro
     gia' calibrato, sui temi scuri un oro appositamente piu' profondo. */
  --gold-btn:var(--gold-deep);
  --line:rgba(16,26,20,.16);
  --line-light:rgba(255,255,255,.18);
  --surface:#fff;
  --surface-raised:#fff;
  --field-placeholder:#8c8c86;
  --danger:#b3392b;
  /* Testi su fondi scuri (sezioni scure, footer, modali, cookie, menu mobile).
     La tinta segue il --forest del tema attivo e il contrasto e' verificato AA. */
  --on-dark:#f6f1e6;
  --on-dark-body:#d9e2da;
  --on-dark-soft:#b9c7bc;
  --on-dark-mute:#a9b9ae;
  --on-dark-dim:#8fa295;
  /* Sfondo di attesa delle tessere della galleria. */
  --tile:#ddd6c6;
  /* Stati del calendario: libero, occupato, passato. */
  --free-bg:#e0f3e7; --free-ink:#14532d; --free-line:#a7d8b8;
  --busy-bg:#fde7e7; --busy-ink:#9f2525; --busy-line:#f2b9b9;
  --past-bg:#f0efec; --past-ink:#6f6b64; --past-line:#dedbd4;
  /* Esiti delle operazioni. */
  --ok-bg:#eef5ef;   --ok-ink:#1d5a35;   --ok-line:#3d7a5b;
  --err-bg:#fbeeec;  --err-ink:#8a2a1d;  --err-line:#b23a26;
  --serif:"Playfair Display","Iowan Old Style",Georgia,serif;
  --sans:"Inter","Segoe UI",system-ui,-apple-system,sans-serif;
  --shadow:0 30px 70px -40px rgba(16,26,20,.65);
  --header-h:92px;
}

/* --- contesto dell'oro da leggere ------------------------------------
   Su fondo chiaro vale --gold-deep; su ogni superficie scura --gold-ink
   passa a --gold-2, cosi' regole come .sec-num, .sec-aside .micro o
   .sec-title h2 em restano leggibili dentro le sezioni scure senza bisogno
   di ulteriori selettori (ereditano la variabile dall'elemento scuro). */
.hero,.section-dark,.site-footer,.legal-hero,.page-hero,.cookie-banner,
.concierge-toggle,.concierge-header{--gold-ink:var(--gold-2)}
/* Card chiare annidate nelle sezioni scure: tornano all'oro scuro. */
.section-dark .platform-card,.section-dark .platform-highlights,
.section-dark .contact-form,.section-dark .booking-card,
.section-dark .legal-card,.section-dark .post-card,
.section-dark .reviews-summary,.section-dark .review-card{--gold-ink:var(--gold-deep)}

*,*::before,*::after{box-sizing:border-box}
/* testo visibile solo ai lettori di schermo */
.vh{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}
/* NB: nessun 'scroll-behavior:smooth' su <html>: renderebbe animato anche il
   ripristino della posizione di scroll al caricamento (la pagina sembrerebbe
   scorrere da sola). Lo scorrimento fluido è applicato via JS solo ai click
   sui link ancora. */
html{overflow-x:clip}
body{
  margin:0;background:var(--paper);color:var(--ink);
  font-family:var(--sans);font-size:16.5px;line-height:1.75;
  font-weight:400;-webkit-font-smoothing:antialiased;overflow-x:hidden;
}
/* grana editoriale sopra il contenuto */
body::after{
  content:"";position:fixed;inset:0;z-index:5;pointer-events:none;opacity:.05;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
::selection{background:var(--gold-2);color:#0d1712}
img{max-width:100%;display:block}
a{color:inherit}
h1,h2,h3,h4{font-family:var(--serif);font-weight:500;line-height:1.08;margin:0 0 .45em;letter-spacing:-.015em}
h1{font-size:clamp(3rem,8.5vw,7.5rem)}
h2{font-size:clamp(2.2rem,4.6vw,4rem)}
h3{font-size:clamp(1.35rem,2.2vw,2rem)}
p{margin:0 0 1.1em}
.container{width:min(1280px,90vw);margin-inline:auto}
.pre-line{white-space:pre-line}

::-webkit-scrollbar{width:11px}
::-webkit-scrollbar-track{background:var(--paper-2)}
::-webkit-scrollbar-thumb{background:#c7bda8;border:3px solid var(--paper-2);border-radius:8px}
::-webkit-scrollbar-thumb:hover{background:var(--gold)}

/* micro-etichette editoriale */
.micro{
  font-family:var(--sans);font-size:.66rem;font-weight:600;
  letter-spacing:.34em;text-transform:uppercase;color:var(--gold-ink);margin:0 0 .85em;
  display:flex;align-items:center;gap:14px;
}
.micro .rule{display:inline-block;width:56px;height:1px;background:currentColor;opacity:.7}
.micro-light{color:var(--gold-3)}
.hairline{display:block;height:1px;background:var(--line);margin-bottom:12px}
.section-dark .hairline{background:var(--line-light)}

/* animazioni d'ingresso hero */
.anim{opacity:0;animation:rise 1s cubic-bezier(.19,.86,.28,1) forwards;animation-delay:var(--d,0s)}
@keyframes rise{from{opacity:0;transform:translateY(30px)}to{opacity:1;transform:none}}

/* ------------------------------ Header ---------------------------- */
.site-header{
  position:fixed;inset:0 0 auto;z-index:60;padding:16px 0;
  height:var(--header-h);
  transition:background .4s ease,padding .4s ease,box-shadow .4s ease;
  --logo-ink:var(--on-dark);--logo-sub:#cbb489;--logo-mark:var(--gold-2);
  --nav-ink:#f4efe4;
}
.site-header.is-scrolled{
  background:var(--paper);padding:8px 0;
  box-shadow:0 1px 0 var(--line),0 18px 40px -34px rgba(16,26,20,.7);
  --logo-ink:var(--forest);--logo-sub:color-mix(in srgb,var(--gold) 76%,#000);--logo-mark:var(--gold);
  --nav-ink:var(--ink);
}
.header-inner{display:flex;align-items:center;gap:34px}
.brand{display:block;text-decoration:none;line-height:0;transition:transform .4s}
.brand svg{height:58px;width:auto;display:block;transition:height .35s}
.brand .logo-img{height:52px;width:auto}
.is-scrolled .brand svg,.is-scrolled .brand .logo-img{height:44px}
.brand:hover{transform:translateY(-1px)}

.nav{display:flex;align-items:center;gap:clamp(16px,1.7vw,30px);margin-left:auto}
.nav a{
  position:relative;text-decoration:none;color:var(--nav-ink);
  font-family:var(--sans) !important;
  font-size:.78rem;font-weight:500;letter-spacing:.2em;text-transform:uppercase;
  padding:8px 0;display:inline-flex;align-items:baseline;transition:color .3s;
  white-space:nowrap;flex-shrink:0;
}
/* Google Traduttore avvolge i testi tradotti in <font> con font propri:
   qui li si forza a ereditare il sans del menu, per qualsiasi lingua. */
.site-header .nav a *,
.site-header .nav a font{
  font-family:var(--sans) !important;
  font-weight:500 !important;
  letter-spacing:inherit !important;
  text-transform:inherit !important;
}
.nav a::after{
  content:"";position:absolute;left:0;bottom:2px;height:1px;width:100%;
  background:currentColor;transform:scaleX(0);transform-origin:right;transition:transform .4s cubic-bezier(.19,.86,.28,1);
}
.nav a:hover::after{transform:scaleX(1);transform-origin:left}
.nav-phone{
  border:1px solid currentColor;padding:11px 20px !important;border-radius:0;letter-spacing:.16em;
}
.nav-phone::after{display:none}
.nav-phone:hover{background:var(--gold-btn);border-color:var(--gold-btn);color:#fff !important}
/* Header: mostra solo l'icona del telefono, mantenendo il collegamento tel: */
.site-header .nav > .nav-phone-icon{
  display:inline-flex;align-items:center;justify-content:center;
  width:42px;min-width:42px;height:42px;min-height:42px;
  padding:0 !important;margin-inline-start:2px;
  border:1px solid currentColor;border-radius:50%;
  letter-spacing:0 !important;line-height:1;flex:0 0 42px;
}
.site-header .nav > .nav-phone-icon svg{display:block;width:20px;height:20px;flex:none}
.site-header .nav > .nav-phone-icon::after{display:none!important}
.site-header .nav > .nav-phone-icon:hover{background:var(--gold-btn);border-color:var(--gold-btn);color:#fff!important}
.site-header .nav > .nav-phone-icon:focus-visible{outline:2px solid var(--gold-2);outline-offset:4px}

.nav-toggle{
  display:none;flex-direction:column;gap:6px;background:none;border:0;cursor:pointer;padding:10px 4px;z-index:80;
}
.nav-toggle span{width:28px;height:1.5px;background:var(--nav-ink);transition:.35s}
.nav-toggle.is-open span:nth-child(1){transform:translateY(7.5px) rotate(45deg)}
.nav-toggle.is-open span:nth-child(2){opacity:0}
.nav-toggle.is-open span:nth-child(3){transform:translateY(-7.5px) rotate(-45deg)}

/* -------------------- Selettore lingue (header) ------------------- */
.lang-switch{position:relative;display:inline-block;flex-shrink:0}
.lang-btn{
  display:inline-flex;align-items:center;gap:8px;cursor:pointer;
  background:none;border:1px solid currentColor;color:var(--nav-ink);
  font-family:var(--sans);font-size:.72rem;font-weight:500;letter-spacing:.16em;
  text-transform:uppercase;padding:9px 14px;transition:background .3s,color .3s,border-color .3s;
}
.lang-btn:hover{background:var(--gold-btn);border-color:var(--gold-btn);color:#fff}
.lang-btn svg{width:15px;height:15px;display:block;flex-shrink:0}
/* Larghezza fissa del codice lingua: cambiando lingua il selettore non varia. */
.lang-current{display:inline-block;min-width:2.4ch;text-align:center}
.lang-caret{
  width:6px;height:6px;margin-top:-3px;flex-shrink:0;
  border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;
  transform:rotate(45deg);transition:transform .3s,margin .3s;
}
.lang-switch.is-open .lang-caret{transform:rotate(-135deg);margin-top:3px}
.lang-menu{
  position:absolute;top:calc(100% + 10px);right:0;z-index:90;display:none;
  min-width:200px;max-height:62vh;overflow-y:auto;padding:8px;
  background:var(--paper);border:1px solid var(--line);box-shadow:var(--shadow);
}
.lang-switch.is-open .lang-menu{display:block}
.lang-menu button{
  display:block;width:100%;text-align:left;cursor:pointer;
  background:none;border:0;color:var(--ink);font-family:var(--sans);
  font-size:.86rem;padding:9px 12px;transition:background .25s,color .25s;
}
.lang-menu button:hover,.lang-menu button.is-active{background:var(--paper-2);color:var(--gold-ink)}
.lang-menu button.is-active{font-weight:600}

/* ------------------------------- Hero ----------------------------- */
.hero{position:relative;min-height:100svh;display:flex;flex-direction:column;justify-content:center;overflow:hidden;background:var(--forest)}
.hero-bg{position:absolute;inset:-8% 0;will-change:transform}
.hero-bg::before{
  content:"";position:absolute;inset:0;
  background:inherit;background-size:cover;background-position:center;
  animation:kenburns 30s ease-in-out infinite alternate;
}
@keyframes kenburns{from{transform:scale(1.02)}to{transform:scale(1.14)}}
.hero-veil{
  position:absolute;inset:0;
  background:
    linear-gradient(180deg,rgba(10,20,15,.78) 0%,rgba(10,20,15,.30) 38%,rgba(10,20,15,.86) 100%),
    linear-gradient(90deg,rgba(10,20,15,.62) 0%,rgba(10,20,15,0) 62%);
}
.hero-inner{position:relative;z-index:2;color:#fff;padding:150px 0 46px;max-width:960px}
.hero-inner h1{color:#fff;margin-bottom:.18em;text-transform:uppercase;font-weight:400;letter-spacing:-.03em}
.hero-inner h1 em{
  font-style:italic;color:var(--gold-3);font-weight:400;
  display:inline-block;text-transform:none;letter-spacing:-.01em;
}
.hero-lead{margin:0 0 1.1em;font-size:1.1rem;color:var(--on-dark-body);max-width:540px;font-weight:300;letter-spacing:.01em}
.hero-lead > :first-child,.sec-lead > :first-child,.rich-content > :first-child{margin-top:0}
.hero-lead > :last-child,.sec-lead > :last-child,.rich-content > :last-child{margin-bottom:0}
.hero-lead p,.sec-lead p,.rich-content p{margin:0 0 1em}
.hero-lead ul,.hero-lead ol,.sec-lead ul,.sec-lead ol,.rich-content ul,.rich-content ol{padding-left:1.35em;margin:.5em 0 1em}
.hero-lead img,.sec-lead img,.rich-content img{max-width:100%;height:auto}
.hero-actions{display:flex;flex-wrap:wrap;gap:16px;margin-top:38px}

.hero-facts{position:static;z-index:2;margin-top:auto;border-top:1px solid rgba(255,255,255,.2);background:rgba(8,18,13,.32)}
.facts-row{display:flex;gap:0}
.fact{
  flex:1;padding:22px 26px 26px;color:var(--on-dark);display:flex;align-items:baseline;gap:14px;
  border-left:1px solid rgba(255,255,255,.14);
}
.fact:first-child{border-left:0;padding-left:0}
.fact strong{font-family:var(--serif);font-size:2rem;font-weight:500;color:var(--gold-2);line-height:1}
.fact span{font-size:.72rem;letter-spacing:.22em;text-transform:uppercase;opacity:.82}

.hero-vertical{
  position:absolute;right:1.6vw;top:50%;z-index:2;
  transform:rotate(90deg) translateX(-50%);transform-origin:right center;
  font-size:.62rem;letter-spacing:.5em;text-transform:uppercase;color:rgba(255,255,255,.6);
}
.hero-scroll{
  position:absolute;left:50%;bottom:104px;transform:translateX(-50%);z-index:2;
  width:1px;height:64px;background:rgba(255,255,255,.35);overflow:hidden;
}
.hero-scroll span{
  position:absolute;left:0;top:0;width:1px;height:24px;background:var(--gold-2);
  animation:scrollLine 1.9s cubic-bezier(.6,0,.3,1) infinite;
}
@keyframes scrollLine{0%{transform:translateY(-26px)}100%{transform:translateY(66px)}}

/* ------------------------------ Buttons --------------------------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  padding:17px 38px;border:1px solid transparent;border-radius:0;cursor:pointer;
  font-family:var(--sans);font-size:.74rem;font-weight:600;letter-spacing:.26em;
  text-transform:uppercase;text-decoration:none;transition:.35s;position:relative;overflow:hidden;
}
.btn-solid{background:var(--gold-btn);color:#fff;border-color:var(--gold-btn)}
.btn-solid::after{
  content:"";position:absolute;inset:0;background:var(--forest);
  transform:translateY(101%);transition:transform .4s cubic-bezier(.19,.86,.28,1);z-index:-1;
}
.btn-solid:hover{color:#fff;border-color:var(--forest)}
.btn-solid:hover::after{transform:translateY(0)}
.btn-line{border-color:rgba(255,255,255,.55);color:#fff;background:transparent}
.btn-line:hover{background:#fff;color:var(--forest);border-color:#fff}
.btn-block{width:100%}
.link-arrow{
  background:none;border:0;padding:0 0 6px;cursor:pointer;font-family:var(--sans);
  color:inherit;font-size:.74rem;font-weight:600;letter-spacing:.26em;text-transform:uppercase;
  text-decoration:none;display:inline-flex;align-items:center;gap:12px;position:relative;
}
.link-arrow::after{content:"→";transition:transform .35s}
.link-arrow::before{
  content:"";position:absolute;left:0;bottom:0;height:1px;width:100%;background:currentColor;opacity:.45;
  transform-origin:left;transition:transform .4s;
}
.link-arrow:hover::after{transform:translateX(8px)}
.link-arrow:hover::before{transform:scaleX(1.08)}

/* ------------------------------ Sections -------------------------- */
/* NB: nessun 'content-visibility:auto' sulle sezioni: le sezioni fuori
   schermo verrebbero stimate con 'contain-intrinsic-size' e la posizione
   di arrivo dei link ancora risulterebbe imprecisa (es. il link Contatti
   si fermava 288px oltre la sezione). */
.section{
  padding:clamp(80px,10vw,150px) 0;position:relative;scroll-margin-top:var(--header-h);
}
.section-dark{background:var(--forest);color:var(--on-dark-body)}
.section-paper2{background:var(--paper-2)}
.section-dark h2,.section-dark h3{color:var(--on-dark)}
.section-dark .micro{color:var(--gold-2)}
.section-dark .sec-head{border-color:var(--line-light)}
.section-dark .sec-num{color:color-mix(in srgb,var(--gold-2) 75%,transparent)}
.section-dark .sec-lead{color:var(--on-dark-soft)}

.sec-head{
  display:grid;grid-template-columns:auto 1fr minmax(220px,380px);
  gap:20px 40px;align-items:end;
  padding-bottom:30px;margin-bottom:clamp(44px,6vw,74px);
  border-bottom:1px solid var(--line);
}
.sec-num{
  font-family:var(--serif);font-size:clamp(2.4rem,4vw,3.6rem);line-height:.8;
  color:var(--gold-ink);opacity:.85;font-style:italic;
}
.sec-title .micro{margin-bottom:.7em}
.sec-title h2{margin:0}
.sec-title h2 em{font-style:italic;color:var(--gold-ink)}
.sec-subtitle{margin:.5em 0 0;font-size:1.05rem;font-weight:500;color:var(--ink-soft);max-width:46ch}
.sec-lead{color:var(--ink-soft);margin:0;font-size:1.02rem;justify-self:end;text-align:left}
.sec-aside{justify-self:end;text-align:right}
.sec-aside .micro{justify-content:flex-end;margin:0;color:var(--gold-ink)}

/* ------------------------- 01 Benvenuto --------------------------- */
.split{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(36px,6vw,90px);align-items:center}
.split-media{position:relative;padding-bottom:64px}
.frame{margin:0;overflow:hidden;box-shadow:var(--shadow)}
.frame img{width:100%;height:100%;object-fit:cover;transition:transform 1.4s cubic-bezier(.19,.86,.28,1)}
.frame-main{aspect-ratio:4/5;border-radius:2px}
.frame-main:hover img{transform:scale(1.05)}
.frame-sub{
  position:absolute;right:-6%;bottom:0;width:52%;aspect-ratio:4/3;
  border:8px solid var(--paper);border-radius:2px;
}
.frame-wide{aspect-ratio:21/9;border-radius:2px;margin-bottom:clamp(28px,4vw,52px)}
.frame-wide:hover img{transform:scale(1.03)}
.split-stamp{
  position:absolute;left:-24px;top:34px;background:var(--forest);color:var(--gold-3);
  font-size:.62rem;letter-spacing:.3em;text-transform:uppercase;padding:12px 18px;
  writing-mode:vertical-rl;
}
.lead{color:var(--ink-soft);font-size:1.06rem}
.lead-drop::first-letter,.lead-drop > p:first-child::first-letter{
  float:left;font-family:var(--serif);font-size:4.6rem;line-height:.82;font-weight:500;
  color:var(--gold-ink);padding:.06em .14em 0 0;
}
.tick-list{list-style:none;padding:0;margin:34px 0 34px;border-top:1px solid var(--line)}
.tick-list li{
  display:flex;align-items:baseline;gap:18px;padding:15px 0;border-bottom:1px solid var(--line);
  color:var(--ink);font-size:.98rem;
}
.tick-num{font-family:var(--serif);font-style:italic;color:var(--gold-ink);font-size:.9rem}

/* ------------------------- 02 Servizi ----------------------------- */
.svc{display:grid;grid-template-columns:.85fr 1.15fr;gap:clamp(34px,5vw,80px);align-items:start}
.svc-index{display:flex;flex-direction:column;border-top:1px solid var(--line-light)}
.tab{
  display:flex;align-items:center;gap:18px;width:100%;text-align:left;cursor:pointer;
  background:none;border:0;border-bottom:1px solid var(--line-light);
  padding:22px 6px;color:var(--on-dark-soft);transition:.35s;position:relative;
}
.tab-num{font-family:var(--serif);font-style:italic;font-size:.82rem;color:var(--gold-2)}
.tab-label{
  font-family:var(--serif);font-size:clamp(1.3rem,2vw,1.75rem);color:var(--on-dark);flex:1;
  transition:color .35s,transform .45s cubic-bezier(.19,.86,.28,1);
}
.tab-arrow{opacity:0;transform:translateX(-14px);color:var(--gold-2);transition:.4s}
.tab::before{
  content:"";position:absolute;left:0;top:0;bottom:0;width:2px;background:var(--gold);
  transform:scaleY(0);transform-origin:top;transition:transform .45s cubic-bezier(.19,.86,.28,1);
}
.tab:hover .tab-label{transform:translateX(8px);color:#fff}
.tab.is-active::before{transform:scaleY(1)}
.tab.is-active .tab-label{color:var(--gold-3)}
.tab.is-active .tab-arrow{opacity:1;transform:none}

.tab-panels{position:relative;min-height:420px}
.tab-panel{display:none}
.tab-panel.is-active{display:block;animation:panelIn .7s cubic-bezier(.19,.86,.28,1) both}
@keyframes panelIn{from{opacity:0;transform:translateY(26px)}to{opacity:1;transform:none}}
.tab-media{margin:0 0 30px;overflow:hidden;aspect-ratio:16/9;position:relative}
.tab-media img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s}
.tab-panel.is-active:hover .tab-media img{transform:scale(1.03)}
.tab-media::after{
  content:"";position:absolute;inset:14px;border:1px solid rgba(255,255,255,.35);pointer-events:none;
}
.tab-body h3{margin-bottom:.35em}
.tab-body p:last-child{color:var(--on-dark-soft);margin:0;font-size:1.02rem;font-weight:300}
.tab-body .micro{color:var(--gold-2)}

/* ------------------------- 03 Camere ------------------------------ */
.chips{display:flex;flex-wrap:wrap;gap:0;margin-bottom:clamp(40px,5vw,64px);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.chip{
  padding:16px 30px 16px 0;margin-right:30px;font-size:.7rem;letter-spacing:.26em;
  text-transform:uppercase;color:var(--ink-soft);display:flex;align-items:center;gap:14px;
}
.chip::before{content:"◆";color:var(--gold-ink);font-size:.55rem}

.room-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(24px,3vw,42px);align-items:start}
.room-card{background:transparent}
.room-card:nth-child(2){margin-top:56px}
.room-media{position:relative;overflow:hidden;aspect-ratio:3/4;background:var(--paper-2)}
.room-media img{width:100%;height:100%;object-fit:cover;transition:transform 1.3s cubic-bezier(.19,.86,.28,1),filter .6s}
.room-card:hover .room-media img{transform:scale(1.07)}
.room-media::after{
  content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(10,20,15,.35),transparent 45%);
  pointer-events:none;
}
.room-idx{
  position:absolute;top:16px;left:18px;z-index:2;color:#fff;font-family:var(--serif);
  font-style:italic;font-size:1.15rem;letter-spacing:.08em;text-shadow:0 2px 14px rgba(0,0,0,.5);
}
.room-btn{
  position:absolute;right:16px;bottom:16px;z-index:2;border:1px solid rgba(255,255,255,.6);
  background:rgba(10,20,15,.55);backdrop-filter:blur(6px);color:#fff;padding:12px 24px;
  font-size:.66rem;letter-spacing:.26em;text-transform:uppercase;cursor:pointer;
  opacity:0;transform:translateY(12px);transition:.4s;
}
.room-card:hover .room-btn,.room-media:focus-within .room-btn{opacity:1;transform:none}
.room-btn:hover{background:var(--gold-btn);border-color:var(--gold-btn)}
.room-body{padding:24px 2px 0}
.room-body h3{margin-bottom:.3em}
.room-body p{color:var(--ink-soft);font-size:.97rem;min-height:3.4em}
.room-body .link-arrow{color:var(--gold-ink);position:static;background:none}
.room-body .link-arrow:hover{color:var(--ink)}

/* ------------------------- 04 Galleria ---------------------------- */
.gallery-grid{display:grid;grid-template-columns:repeat(6,1fr);grid-auto-rows:130px;gap:14px}
.gallery-item{
  grid-column:span 2;grid-row:span 2;margin:0;position:relative;overflow:hidden;
  cursor:pointer;background:var(--tile);border-radius:2px;
}
.gallery-item:nth-child(1){grid-column:span 4;grid-row:span 4}
.gallery-item:nth-child(6){grid-column:span 4}
.gallery-item:nth-child(9){grid-column:span 4}
.gallery-item img{width:100%;height:100%;object-fit:cover;transition:transform 1.3s cubic-bezier(.19,.86,.28,1),filter .6s;filter:saturate(.9)}
.gallery-item:hover img{transform:scale(1.07);filter:saturate(1.05)}
.gallery-item figcaption{
  position:absolute;inset:auto 0 0;padding:52px 20px 18px;color:#fff;
  background:linear-gradient(transparent,rgba(8,18,13,.9));
  display:flex;align-items:baseline;gap:14px;font-family:var(--serif);font-size:1.05rem;
  opacity:0;transform:translateY(14px);transition:.45s cubic-bezier(.19,.86,.28,1);
}
.gallery-item figcaption .micro{color:var(--gold-3);margin:0}
.gallery-item:hover figcaption{opacity:1;transform:none}

/* ------------------------- 05 Visita ------------------------------ */
.dest-list{display:flex;flex-direction:column}
.dest{
  display:grid;grid-template-columns:1.02fr .98fr;gap:clamp(26px,5vw,80px);
  align-items:center;padding:clamp(34px,4vw,58px) 0;border-top:1px solid var(--line);
}
.dest:last-child{border-bottom:1px solid var(--line)}
.dest-alt .dest-media{order:2}
.dest-media{margin:0;overflow:hidden;border-radius:2px}
.dest-media img{width:100%;aspect-ratio:16/10;object-fit:cover;transition:transform 1.4s cubic-bezier(.19,.86,.28,1)}
.dest:hover .dest-media img{transform:scale(1.06)}
.dest-num{
  font-family:var(--serif);font-style:italic;font-size:clamp(2.6rem,4vw,4rem);
  color:var(--gold-ink);opacity:.75;display:block;line-height:1;margin-bottom:.1em;
}
.dest-body h3{margin:.1em 0 .4em}
.dest-body p{color:var(--ink-soft);margin:0}

/* ---------------------- 06 Recensioni ----------------------------- */
.slider{position:relative}
.slider-track{
  display:flex;gap:clamp(20px,3vw,46px);overflow-x:auto;scroll-snap-type:x mandatory;
  padding:8px 2px 30px;scrollbar-width:none;scroll-behavior:smooth;
}
.slider-track::-webkit-scrollbar{display:none}
.quote{
  flex:0 0 min(560px,86vw);scroll-snap-align:center;margin:0;
  border-top:1px solid var(--line-light);padding-top:34px;position:relative;
}
.stars{color:var(--gold-2);letter-spacing:.3em;font-size:.85rem;margin-bottom:22px}
.quote p{
  font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:clamp(1.25rem,2.1vw,1.75rem);line-height:1.5;color:var(--on-dark);margin-bottom:26px;
}
.quote cite{
  font-style:normal;font-size:.7rem;letter-spacing:.3em;text-transform:uppercase;
  color:var(--gold-2);display:flex;align-items:center;gap:14px;
}
.quote cite::before{content:"";width:38px;height:1px;background:currentColor;opacity:.7}
.slider-nav{display:flex;gap:12px;justify-content:flex-end;margin-top:6px}
.slider-btn{
  width:58px;height:58px;border-radius:0;border:1px solid var(--line-light);
  background:transparent;color:var(--on-dark);cursor:pointer;font-size:1rem;transition:.3s;
}
.slider-btn:hover{background:var(--gold-btn);border-color:var(--gold-btn);color:#fff}

/* ------------------------- 07 Contatti ---------------------------- */
.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(32px,5vw,80px);align-items:start}
.info-list{margin:0 0 34px;border-top:1px solid var(--line)}
.info-row{display:grid;grid-template-columns:130px 1fr;gap:20px;align-items:baseline;padding:20px 0;border-bottom:1px solid var(--line)}
.info-row dt{margin:0}
.info-row dd{margin:0;font-family:var(--serif);font-size:clamp(1.15rem,1.7vw,1.5rem)}
.info-row a{text-decoration:none;border-bottom:1px solid transparent;transition:.3s}
.info-row a:hover{color:var(--gold-ink);border-color:var(--gold)}
.map{position:relative;border:1px solid var(--line);border-radius:2px;overflow:hidden;box-shadow:var(--shadow)}
.map iframe{width:100%;height:330px;border:0;display:block;filter:saturate(.85)}

.contact-form{background:var(--surface);border:1px solid var(--line);padding:clamp(28px,3.4vw,52px);box-shadow:var(--shadow);position:relative}
.contact-form::before{
  content:"";position:absolute;left:0;top:0;width:56px;height:56px;
  border-top:2px solid var(--gold);border-left:2px solid var(--gold);transform:translate(-1px,-1px);
}
.form-title{margin-bottom:1.1em}
.contact-form label{display:flex;flex-direction:column;font-size:.68rem;font-weight:600;letter-spacing:.24em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:26px}
.contact-form input,.contact-form textarea,.contact-form select{
  width:100%;margin-top:10px;padding:12px 8px 12px 2px;border:0;border-bottom:1px solid var(--line);
  border-radius:0;background:transparent;font-family:var(--sans);font-size:1rem;color:var(--ink);
  transition:border-color .3s;
}
.contact-form select{
  padding-right:32px;
  appearance:none;
  background-image:linear-gradient(45deg,transparent 50%,var(--ink-soft) 50%),linear-gradient(135deg,var(--ink-soft) 50%,transparent 50%);
  background-position:calc(100% - 14px) 60%,calc(100% - 9px) 60%;background-size:5px 5px,5px 5px;background-repeat:no-repeat;
}
.contact-form select:focus{outline:2px solid color-mix(in srgb,var(--gold) 35%,transparent);outline-offset:2px;border-color:var(--gold)}
.contact-form input[type="date"]{
  appearance:none;
  min-height:45px;
}
.contact-form input[type="date"]::-webkit-calendar-picker-indicator{
  cursor:pointer;opacity:.6;transition:.3s;
}
.contact-form input[type="date"]::-webkit-calendar-picker-indicator:hover{opacity:1}
.contact-form input::placeholder,.contact-form textarea::placeholder{color:var(--field-placeholder);font-size:.92rem;opacity:1}
.contact-form input:focus,.contact-form textarea:focus{outline:2px solid color-mix(in srgb,var(--gold) 35%,transparent);outline-offset:2px;border-color:var(--gold)}
.contact-form textarea{resize:vertical;min-height:130px}
/* Campi e controlli ereditano la palette del template attivo. */
.contact-form input,.contact-form textarea,.contact-form select,
.contact-form input option,.contact-form select option{color:var(--ink)}
.contact-form input:disabled,.contact-form textarea:disabled,.contact-form select:disabled{opacity:.62;cursor:not-allowed}
.contact-form input[type="checkbox"],.contact-form input[type="radio"]{accent-color:var(--gold)}
.contact-form input[type="date"]{color-scheme:light}
.row-2{display:grid;grid-template-columns:1fr 1fr;gap:32px}
.booking-form .btn-block{display:flex;margin-top:20px;margin-bottom:24px}

.alert{border-radius:0;padding:14px 18px;margin-bottom:24px;font-size:.92rem;border-left:2px solid}
.alert-success{background:var(--ok-bg);border-color:var(--ok-line);color:var(--ok-ink)}
.alert-error{background:var(--err-bg);border-color:var(--err-line);color:var(--err-ink)}

/* ----------------------- 08 Prenotazioni -------------------------- */
.booking-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.02fr);gap:clamp(32px,5vw,72px);align-items:start}
.booking-side{display:grid;gap:clamp(24px,3vw,36px)}
.booking-card{background:var(--surface);border:1px solid var(--line);padding:clamp(22px,2.4vw,34px);box-shadow:var(--shadow)}
.booking-card>.micro{margin-bottom:20px}
/* La tabella riprende lo stile di .legal-table (bordi e celle), ma non la sua
   min-width da 520px: nella colonna laterale della sezione prenotazioni
   sborderebbe dalla scheda e finirebbe sopra il modulo. */
.booking-card .rate-table{width:100%;min-width:0;margin:0}
.booking-card .rate-table th,.booking-card .rate-table td{padding:11px 10px}
.booking-card .rate-table th:first-child,.booking-card .rate-table td:first-child{padding-left:0}
.booking-card .rate-table th:last-child,.booking-card .rate-table td:last-child{padding-right:0;text-align:right;white-space:nowrap}
.rate-table th:last-child,.rate-table td:last-child{text-align:right;white-space:nowrap}
.rate-table td strong{font-family:var(--serif);font-size:1.06rem;font-weight:600;color:var(--ink)}
.rate-period{display:block;margin-top:4px;font-size:.76rem;letter-spacing:.02em;color:var(--ink-soft)}
.rate-price{font-family:var(--serif);font-size:1.16rem;color:var(--ink)}
.booking-note{margin:0 0 24px;font-size:.84rem;line-height:1.6;color:var(--ink-soft)}
.booking-note-last{margin:18px 0 0}
.contact-form .booking-note{margin-top:-10px}
/* Esito della verifica disponibilità: verde quando c'è posto, rosso quando no. */
.booking-availability{margin:8px 0 0;font-size:.82rem;line-height:1.55;color:var(--ink-soft)}
.booking-availability.is-empty{color:var(--danger)}
.booking-availability.is-loading{color:var(--ink-soft)}
.cal-month+.cal-month{margin-top:24px}
.cal-month h3{margin:0 0 12px;font-family:var(--serif);font-size:1.1rem;font-weight:600}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.cal-wd{padding-bottom:6px;font-size:.6rem;letter-spacing:.1em;text-transform:uppercase;text-align:center;color:var(--ink-soft)}
.cal-day{
  display:flex;align-items:center;justify-content:center;aspect-ratio:1;position:relative;
  font-size:.82rem;background:var(--paper);color:var(--ink);border-radius:2px;
}
.cal-day.is-empty{background:transparent}
/* Colori ad alto contrasto: verde = disponibilità, rosso = completo, grigio = passato. */
.cal-day.is-free{background:var(--free-bg);color:var(--free-ink);box-shadow:inset 0 0 0 1px var(--free-line)}
.cal-day.is-past{background:var(--past-bg);color:var(--past-ink);box-shadow:inset 0 0 0 1px var(--past-line)}
.cal-day.is-busy{background:var(--busy-bg);color:var(--busy-ink);box-shadow:inset 0 0 0 1px var(--busy-line);text-decoration:line-through}
/* Ultimi giorni di un periodo completo: pulsano per indicare che la camera
   sta per liberarsi. Il segno dorato resta anche a fine animazione. */
.cal-day.is-ending{box-shadow:inset 0 0 0 2px var(--gold-deep);animation:calSoon 1.2s ease-in-out 6}
.cal-day.is-ending .cal-soon{
  position:absolute;top:3px;right:3px;width:5px;height:5px;border-radius:50%;
  background:var(--gold-deep);box-shadow:0 0 0 1px var(--busy-bg);
}
@keyframes calSoon{
  0%,100%{box-shadow:inset 0 0 0 2px var(--gold-deep)}
  50%{box-shadow:inset 0 0 0 2px var(--gold-deep),0 0 0 4px color-mix(in srgb,var(--gold-deep) 22%,transparent)}
}
@media (prefers-reduced-motion:reduce){
  .cal-day.is-ending{animation:none}
}
.cal-legend{display:flex;flex-wrap:wrap;gap:12px 16px;margin:20px 0 0;font-size:.76rem;color:var(--ink-soft)}
.cal-legend span{display:flex;align-items:center;gap:7px}
.cal-key{display:inline-block;flex:0 0 12px;width:12px;height:12px;border:1px solid var(--free-line);border-radius:3px;background:var(--free-bg)}
.cal-key.is-free{background:var(--free-bg);border-color:var(--free-line)}
.cal-key.is-busy{background:var(--busy-bg);border-color:var(--busy-line)}
.cal-key.is-ending{background:var(--busy-bg);border:2px solid var(--gold-deep)}
/* Dettaglio del giorno: posizione calcolata via JS, così non viene mai tagliato. */
.cal-day[data-tip]{cursor:help}
.cal-day[data-tip]:focus-visible{outline:2px solid var(--gold-ink);outline-offset:2px}
.cal-tip{
  position:fixed;z-index:1200;left:0;top:0;max-width:260px;
  padding:10px 12px;border-radius:4px;background:var(--forest);color:#fff;
  font-family:var(--sans);font-size:.74rem;line-height:1.55;letter-spacing:0;
  text-align:left;text-decoration:none;white-space:pre-line;
  box-shadow:0 10px 28px rgba(0,0,0,.28);pointer-events:none;
  opacity:0;visibility:hidden;transition:opacity .15s;
}
.cal-tip.is-open{opacity:1;visibility:visible}
.cal-key.is-past{background:var(--past-bg);border-color:var(--past-line)}

/* ------------------------------ Footer ---------------------------- */
.site-footer{background:var(--forest);color:var(--on-dark-soft);padding-top:clamp(60px,7vw,110px);overflow:hidden}
.footer-wordmark{
  font-family:var(--serif);font-size:clamp(3rem,11vw,9.5rem);line-height:.94;
  color:rgba(246,241,230,.13);letter-spacing:-.03em;margin-bottom:clamp(30px,4vw,58px);
  white-space:nowrap;
}
.footer-wordmark em{font-style:italic;color:color-mix(in srgb,var(--gold-2) 42%,transparent)}
.footer-grid{
  display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr;gap:40px;
  padding-bottom:52px;border-bottom:1px solid var(--line-light);
}
.footer-about p{font-size:.98rem;color:var(--on-dark-mute);max-width:44ch}
.socials{display:flex;gap:12px;margin-top:24px}
.socials a{
  text-decoration:none;border:1px solid var(--line-light);padding:11px 22px;
  font-size:.66rem;letter-spacing:.26em;text-transform:uppercase;transition:.3s;
}
.socials a:hover{background:var(--gold-btn);border-color:var(--gold-btn);color:#fff}
.footer-col h3{
  font-family:var(--sans);font-size:.66rem;letter-spacing:.3em;text-transform:uppercase;
  color:var(--gold-2);font-weight:600;margin-bottom:22px;
}
.footer-col a,.footer-col span{display:block;text-decoration:none;color:var(--on-dark-mute);font-size:.94rem;margin-bottom:13px;transition:.25s}
.footer-col a:hover{color:var(--gold-2);transform:translateX(4px)}
.footer-bottom{padding:26px 0 30px;font-size:.78rem;letter-spacing:.06em}
.footer-bottom .container{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;color:var(--on-dark-dim)}
.footer-admin{color:var(--gold-2);text-decoration:none;letter-spacing:.2em;text-transform:uppercase;font-size:.66rem}
.footer-admin:hover{text-decoration:underline}

/* --------------------------- Torna su ---------------------------- */
.back-to-top{
  position:fixed;right:26px;bottom:26px;z-index:60;width:50px;height:50px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;cursor:pointer;
  background:var(--forest);color:var(--gold-3);border:1px solid color-mix(in srgb,var(--gold-2) 45%,transparent);
  opacity:0;visibility:hidden;transform:translateY(14px);
  transition:opacity .35s,transform .35s,visibility 0s .35s,background .25s,color .25s;
}
.back-to-top.is-visible{opacity:1;visibility:visible;transform:none;transition:opacity .35s,transform .35s,visibility 0s,background .25s,color .25s}
.back-to-top:hover{background:var(--gold);color:var(--forest);border-color:var(--gold)}
.back-to-top svg{transition:transform .3s}
.back-to-top:hover svg{transform:translateY(-3px)}
/* Su smartphone il menu rapido fisso occupa il bordo inferiore: mantieni il
   pulsante «Torna su» sopra quel menu, incluso il safe-area degli iPhone. */
@media (max-width:640px){.back-to-top{right:16px;bottom:calc(78px + env(safe-area-inset-bottom, 0px));width:44px;height:44px}}

/* --------------------------- Modal camera ------------------------- */
.modal,.lightbox{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:20px}
.modal[hidden],.lightbox[hidden]{display:none}
.modal-backdrop,.lightbox{background:rgba(8,18,13,.9);backdrop-filter:blur(5px)}
.modal-dialog{
  background:var(--paper);width:min(1020px,100%);max-height:90vh;overflow-y:auto;
  display:grid;grid-template-columns:1fr 1fr;position:relative;border-radius:2px;
  animation:panelIn .45s cubic-bezier(.19,.86,.28,1) both;box-shadow:var(--shadow);
}
.modal-media img{width:100%;height:100%;min-height:320px;object-fit:cover}
.modal-body{padding:clamp(28px,3vw,48px)}
.modal-summary{font-family:var(--serif);font-style:italic;color:var(--gold-ink);font-size:1.18rem}
.modal-body p{color:var(--ink-soft)}
.modal-features{display:flex;flex-wrap:wrap;gap:8px;margin:22px 0 30px}
.modal-features span{
  border:1px solid var(--line);padding:8px 16px;font-size:.64rem;letter-spacing:.2em;
  text-transform:uppercase;color:var(--ink-soft);
}
.modal-close,.lightbox-close{
  position:absolute;top:14px;right:16px;z-index:5;width:46px;height:46px;border-radius:0;
  border:1px solid var(--line);background:var(--paper);color:var(--ink);font-size:1.3rem;cursor:pointer;line-height:1;
}
.modal-close:hover,.lightbox-close:hover{background:var(--gold-btn);border-color:var(--gold-btn);color:#fff}

/* ---------------------------- Lightbox ---------------------------- */
.lightbox figure{margin:0;max-width:min(1180px,92vw);text-align:center}
.lightbox img{max-height:78vh;width:auto;margin-inline:auto;border-radius:2px;box-shadow:0 40px 90px -40px #000}
.lightbox figcaption{color:var(--on-dark);margin-top:16px;font-family:var(--serif);font-style:italic;font-size:1.05rem}
.lightbox-prev,.lightbox-next{
  position:absolute;top:50%;transform:translateY(-50%);width:60px;height:60px;border-radius:0;
  border:1px solid rgba(255,255,255,.4);background:transparent;color:#fff;font-size:1.1rem;cursor:pointer;transition:.3s;
}
.lightbox-prev{left:18px}
.lightbox-next{right:18px}
.lightbox-prev:hover,.lightbox-next:hover{background:var(--gold-btn);border-color:var(--gold-btn)}

/* --------------------------- Reveal on scroll --------------------- */
.reveal{opacity:0;transform:translateY(34px);transition:opacity .9s cubic-bezier(.19,.86,.28,1) var(--d,0s),transform .9s cubic-bezier(.19,.86,.28,1) var(--d,0s)}
.reveal.is-visible{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){
  .reveal,.anim{opacity:1;transform:none;animation:none;transition:none}
  .hero-bg{animation:none}
  html{scroll-behavior:auto}
}

/* ---------------------------- Responsive -------------------------- */
@media (max-width:1080px){
  .sec-head{grid-template-columns:auto 1fr;gap:18px 30px}
  .sec-lead,.sec-aside{grid-column:1/-1;justify-self:start;text-align:left}
  .sec-aside .micro{justify-content:flex-start}
  .svc{grid-template-columns:1fr}
  .room-grid{grid-template-columns:repeat(2,1fr)}
  .room-card:nth-child(2){margin-top:40px}
  .footer-grid{grid-template-columns:1fr 1fr}
}
@media (max-width:900px){
  .split,.dest,.contact-grid,.booking-grid,.modal-dialog{grid-template-columns:1fr}
  .dest-alt .dest-media{order:0}
  .split-media{padding-bottom:44px}
  .frame-main{aspect-ratio:16/11;max-height:56vh}
  .frame-sub{right:0;width:46%}
  .dest-media img{aspect-ratio:16/9}
  .hero-vertical{display:none}
  .gallery-grid{grid-template-columns:repeat(4,1fr);grid-auto-rows:110px}
  .gallery-item:nth-child(1){grid-column:span 4;grid-row:span 3}
  .gallery-item:nth-child(6),.gallery-item:nth-child(9){grid-column:span 4}
}
/* Schermi medi (laptop): voci un po' più compatte per far stare tutto su una riga. */
@media (max-width:1280px){
  .nav{gap:clamp(12px,1.4vw,20px)}
  .nav a{font-size:.72rem;letter-spacing:.16em}
}
/* Menu a scomparsa: su tablet e schermi stretti la navigazione diventa un pannello
   laterale, così le voci non vanno mai a capo. Vale sia per desktop sia per mobile. */
@media (max-width:1080px){
  .nav{
    position:fixed;inset:0 0 0 auto;width:min(360px,86vw);background:var(--forest);
    flex-direction:column;align-items:flex-start;justify-content:center;gap:26px;
    padding:60px 44px;transform:translateX(100%);visibility:hidden;
    transition:transform .45s cubic-bezier(.19,.86,.28,1),visibility 0s .45s;z-index:70;
    --nav-ink:#f4efe4;--gold-ink:var(--gold-2);overflow-y:auto;
  }
  .nav.is-open{transform:none;visibility:visible;transition:transform .45s cubic-bezier(.19,.86,.28,1),visibility 0s 0s;box-shadow:-40px 0 80px -40px #000}
  .nav a{font-size:1rem;color:var(--nav-ink);white-space:nowrap}
  .nav-toggle{display:flex}
  .lang-switch{width:100%}
  .lang-btn{width:100%;justify-content:space-between;font-size:.8rem;padding:12px 16px}
  .lang-menu{
    position:static;width:100%;margin-top:12px;max-height:46vh;
    background:var(--forest-2);border-color:var(--line-light);box-shadow:none;
  }
  .lang-menu button{color:var(--nav-ink)}
  .lang-menu button:hover,.lang-menu button.is-active{background:rgba(0,0,0,.12);color:var(--gold-3)}
}
@media (max-width:820px){
  .facts-row{flex-wrap:wrap}
  .fact{flex:1 1 100%;border-left:0;border-top:1px solid rgba(255,255,255,.14);padding:14px 0}
  .fact:first-child{border-top:0}
  .hero-inner{padding-top:132px}
  .hero-scroll{display:none}
}
@media (max-width:640px){
  body{font-size:16px}
  .room-grid{grid-template-columns:1fr}
  .room-card:nth-child(2){margin-top:0}
  .row-2{grid-template-columns:1fr}
  .footer-grid{grid-template-columns:1fr}
  .gallery-grid{grid-template-columns:repeat(2,1fr);grid-auto-rows:100px;gap:10px}
  .gallery-item,.gallery-item:nth-child(1),.gallery-item:nth-child(6),.gallery-item:nth-child(9){grid-column:span 2;grid-row:span 2}
  .info-row{grid-template-columns:1fr;gap:4px}
  .split-stamp{left:-14px}
  .slider-btn{width:52px;height:52px}
  .brand svg{height:46px}
}

/* =====================================================================
   Pagina legale (Privacy & Cookie Policy)
   ===================================================================== */
.legal-hero{
  position:relative;overflow:hidden;background:var(--forest);color:var(--on-dark);
  padding:calc(var(--header-h) + 64px) 0 clamp(44px,6vw,84px);
}
.legal-hero::after{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(120% 95% at 82% 0%,color-mix(in srgb,var(--gold) 20%,transparent),transparent 62%);
}
.legal-hero .container{position:relative;z-index:2}
.legal-hero .micro{color:var(--gold-2)}
.legal-hero h1{color:#fff;font-size:clamp(2.2rem,5vw,4.4rem);margin:0;text-transform:none;letter-spacing:-.02em}
.legal-hero p{color:var(--on-dark-soft);max-width:70ch;margin:20px 0 0;font-weight:300}
.legal-updated{
  font-size:.68rem;letter-spacing:.26em;text-transform:uppercase;
  color:var(--gold-2) !important;margin-top:26px !important;
}

.legal{padding:clamp(46px,6vw,96px) 0 clamp(70px,9vw,130px)}
.legal-layout{display:grid;grid-template-columns:minmax(210px,290px) 1fr;gap:clamp(34px,5vw,84px);align-items:start}

.legal-toc{position:sticky;top:calc(var(--header-h) + 26px);border-top:1px solid var(--line);padding-top:22px}
.legal-toc h2{font-family:var(--sans);font-size:.64rem;letter-spacing:.3em;text-transform:uppercase;color:var(--gold-ink);font-weight:600;margin:0 0 18px}
.legal-toc ol{list-style:none;margin:0;padding:0;counter-reset:toc}
.legal-toc li{counter-increment:toc}
.legal-toc a{
  display:block;text-decoration:none;color:var(--ink-soft);font-size:.92rem;
  padding:9px 0;border-bottom:1px solid var(--line);transition:color .25s,padding .25s;
}
.legal-toc a::before{content:counter(toc,decimal-leading-zero) "  ";font-family:var(--serif);font-style:italic;color:var(--gold-ink)}
.legal-toc a:hover{color:var(--ink);padding-left:7px}

.legal-body{max-width:80ch}
.legal-sec{padding:clamp(28px,3.4vw,48px) 0;border-top:1px solid var(--line);scroll-margin-top:calc(var(--header-h) + 20px)}
.legal-body > .legal-sec:first-child{border-top:0;padding-top:0}
.legal-sec > h2{
  display:flex;align-items:baseline;gap:20px;font-size:clamp(1.5rem,2.6vw,2.05rem);margin:0 0 .7em;
}
.legal-sec > h2 .n{font-family:var(--serif);font-style:italic;font-size:.9em;color:var(--gold-ink);flex:none}
.legal-sec h3{
  font-family:var(--sans);font-size:.7rem;letter-spacing:.24em;text-transform:uppercase;
  color:var(--ink);font-weight:600;margin:1.9em 0 .7em;
}
.legal-sec p{color:var(--ink-soft);font-size:1rem}
.legal-sec ul{list-style:none;margin:0 0 1.2em;padding:0}
.legal-sec ul li{position:relative;padding:8px 0 8px 30px;border-bottom:1px solid var(--line);color:var(--ink-soft);font-size:1rem}
.legal-sec ul li::before{content:"◆";position:absolute;left:0;top:9px;color:var(--gold-ink);font-size:.55rem}
.legal-sec ul li:last-child{border-bottom:0}
.legal-sec ol{list-style:none;margin:0 0 1.2em;padding:0;counter-reset:leg}
.legal-sec ol li{counter-increment:leg;position:relative;padding:9px 0 9px 44px;border-bottom:1px solid var(--line);color:var(--ink-soft);font-size:1rem}
.legal-sec ol li::before{content:counter(leg);position:absolute;left:0;top:9px;font-family:var(--serif);font-style:italic;color:var(--gold-ink)}
.legal-sec ol li:last-child{border-bottom:0}
.legal-sec strong{color:var(--ink);font-weight:600}
.legal-sec a{color:var(--ink);text-decoration:none;border-bottom:1px solid var(--gold)}
.legal-sec .link-arrow{border-bottom:0}

.legal-card{
  background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);
  padding:clamp(22px,3vw,36px);margin:0 0 1.4em;
}
.legal-card dl{margin:0;display:grid;grid-template-columns:auto 1fr;gap:12px 26px;align-items:baseline}
.legal-card dt{
  font-family:var(--sans);font-size:.64rem;letter-spacing:.16em;text-transform:uppercase;
  color:var(--ink-soft);font-weight:600;
}
.legal-card dd{margin:0;font-family:var(--serif);font-size:clamp(1.05rem,1.5vw,1.25rem);color:var(--ink)}
.legal-card dd a{text-decoration:none;border-bottom:1px solid transparent;transition:.25s}
.legal-card dd a:hover{color:var(--gold-ink);border-color:var(--gold)}

.legal-table-wrap{overflow-x:auto;margin:0 0 1.4em}
.legal-table{width:100%;border-collapse:collapse;font-size:.95rem;min-width:520px}
.legal-table caption{
  text-align:left;font-size:.64rem;letter-spacing:.22em;text-transform:uppercase;
  color:var(--gold-ink);font-weight:600;margin-bottom:12px;
}
.legal-table th,.legal-table td{text-align:left;padding:13px 16px;border-bottom:1px solid var(--line);vertical-align:top;color:var(--ink-soft)}
.legal-table th{font-family:var(--sans);font-size:.64rem;letter-spacing:.16em;text-transform:uppercase;color:var(--ink);font-weight:600;background:var(--paper-2)}
.legal-back{margin-top:44px}

@media (max-width:900px){
  .legal-layout{grid-template-columns:1fr}
  .legal-toc{position:static;margin-bottom:34px}
}

/* =====================================================================
   Pagine libere, diario e articoli (creati dal backend)
   ===================================================================== */
.page-hero{
  position:relative;overflow:hidden;background:var(--forest);color:var(--on-dark);
  padding:calc(var(--header-h) + 58px) 0 clamp(40px,5.5vw,76px);
}
.page-hero::after{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(120% 95% at 78% 0%,color-mix(in srgb,var(--gold) 20%,transparent),transparent 62%);
}
.page-hero .container{position:relative;z-index:2}
.page-hero .micro{color:var(--gold-2)}
.page-hero .micro a{text-decoration:none;border-bottom:1px solid var(--gold-2)}
.page-hero h1{color:#fff;font-size:clamp(2.2rem,6vw,4.6rem);margin:0;letter-spacing:-.02em}
.page-hero .post-meta{color:var(--gold-2)}
.page-sub{color:var(--on-dark-soft);max-width:66ch;margin:18px 0 0;font-weight:300;font-size:1.05rem}
.page-cover{margin:0}
.page-cover img{width:100%;height:clamp(240px,46vw,540px);object-fit:cover}
.page-content{padding:clamp(46px,6vw,104px) 0 clamp(60px,8vw,120px)}
.prose{max-width:74ch;margin-inline:auto;color:var(--ink-soft);font-size:1.06rem}
.prose > *:first-child{margin-top:0}
.prose h2{font-size:clamp(1.7rem,3vw,2.5rem);color:var(--ink);margin:1.6em 0 .55em}
.prose h3{font-size:clamp(1.3rem,2vw,1.7rem);color:var(--ink);margin:1.5em 0 .5em}
.prose h4{font-size:1.15rem;color:var(--ink);margin:1.4em 0 .5em}
.prose p{margin:0 0 1.15em}
.prose ul,.prose ol{margin:0 0 1.3em;padding-left:1.35em}
.prose li{margin-bottom:.5em}
.prose blockquote{
  margin:1.6em 0;padding:18px 26px;border-left:3px solid var(--gold);
  background:var(--paper-2);font-family:var(--serif);font-style:italic;font-size:1.18rem;color:var(--ink);
}
.prose img{margin:1.4em auto;border-radius:2px;box-shadow:var(--shadow)}
.prose a{color:var(--ink);text-decoration:none;border-bottom:1px solid var(--gold)}
.prose a:hover{color:var(--gold-ink)}
.prose hr{border:0;border-top:1px solid var(--line);margin:2.4em 0}
.prose figure{margin:1.6em 0}
.prose figcaption{font-size:.8rem;color:var(--ink-soft);text-align:center;margin-top:10px;font-style:italic}

.post-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(310px,1fr));gap:34px}
.post-card{
  background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);display:flex;flex-direction:column;
  transition:transform .4s cubic-bezier(.19,.86,.28,1);
}
.post-card:hover{transform:translateY(-6px)}
.post-media{display:block;overflow:hidden}
.post-media img{width:100%;height:230px;object-fit:cover;transition:transform .7s cubic-bezier(.19,.86,.28,1)}
.post-card:hover .post-media img{transform:scale(1.05)}
.post-body{padding:26px 26px 30px;display:flex;flex-direction:column;flex:1}
.post-meta{font-size:.66rem;letter-spacing:.24em;text-transform:uppercase;color:var(--gold-ink);font-weight:600;margin:0 0 12px}
.post-body h2{margin:0 0 12px;font-size:1.4rem}
.post-body h2 a{text-decoration:none;color:var(--ink)}
.post-body h2 a:hover{color:var(--gold-ink)}
.post-excerpt{color:var(--ink-soft);font-size:.98rem;flex:1}
.post-body .link-arrow{margin-top:auto}
.post-back{margin-top:56px}

/* =====================================================================
   Notifiche toast e modale festiva (in tema)
   ===================================================================== */
.site-toast-stack{position:fixed;right:24px;bottom:24px;z-index:300;display:flex;flex-direction:column;gap:12px;width:min(380px,calc(100vw - 32px));pointer-events:none}
.site-toast{
  pointer-events:auto;display:flex;align-items:flex-start;gap:13px;
  background:var(--paper);color:var(--ink);border:1px solid var(--line);border-left:3px solid var(--gold);
  box-shadow:var(--shadow);padding:15px 17px;
  transform:translateY(16px);opacity:0;transition:transform .35s cubic-bezier(.19,.86,.28,1),opacity .35s;
}
.site-toast.is-visible{transform:none;opacity:1}
.site-toast.is-hiding{transform:translateY(10px);opacity:0}
.site-toast-success{border-left-color:var(--ok-line)}
.site-toast-error{border-left-color:var(--err-line)}
.site-toast-icon{width:26px;height:26px;display:grid;place-items:center;flex:none;border-radius:50%;background:var(--gold-btn);color:#fff;font-size:.85rem;font-weight:700}
.site-toast-success .site-toast-icon{background:var(--ok-line)}
.site-toast-error .site-toast-icon{background:var(--err-line)}
.site-toast-body{flex:1;min-width:0}
.site-toast-body strong{display:block;font-family:var(--sans);font-size:.62rem;letter-spacing:.24em;text-transform:uppercase;color:var(--gold-ink);margin-bottom:3px}
.site-toast-body p{margin:0;font-size:.94rem;color:var(--ink);line-height:1.5}
.site-toast-close{background:none;border:0;cursor:pointer;color:var(--ink-soft);font-size:1.2rem;line-height:1;padding:0 4px}
.site-toast-close:hover{color:var(--ink)}

.holiday-modal{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;padding:20px}
.holiday-modal[hidden]{display:none}
.holiday-backdrop{position:absolute;inset:0;background:rgba(8,18,13,.86);backdrop-filter:blur(5px);animation:fadeIn .3s ease}
.holiday-card{
  position:relative;width:min(520px,100%);max-height:92vh;overflow:auto;background:var(--paper);
  text-align:center;box-shadow:var(--shadow);border-top:4px solid var(--hm-accent,var(--gold));
  animation:panelIn .5s cubic-bezier(.19,.86,.28,1) both;
}
.holiday-media{height:190px;background-size:cover;background-position:center}
.holiday-body{padding:clamp(28px,5vw,44px)}
.holiday-emoji{font-size:3rem;line-height:1;display:block;margin-bottom:14px}
.holiday-kicker{font-size:.64rem;letter-spacing:.3em;text-transform:uppercase;color:var(--hm-accent,var(--gold-ink));font-weight:600;margin:0 0 12px}
.holiday-body h3{font-size:clamp(1.7rem,4vw,2.4rem);margin:0 0 14px;color:var(--ink)}
.holiday-body p{color:var(--ink-soft);margin:0 0 26px}
.holiday-close{
  position:absolute;top:12px;right:14px;z-index:5;width:42px;height:42px;cursor:pointer;
  border:1px solid var(--line);background:var(--paper);color:var(--ink);font-size:1.2rem;line-height:1;
}
.holiday-close:hover{background:var(--gold-btn);border-color:var(--gold-btn);color:#fff}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}

@media (max-width:640px){
  .post-grid{grid-template-columns:1fr;gap:24px}
  .post-media img{height:190px}
  .site-toast-stack{right:14px;left:14px;bottom:14px;width:auto}
}

/* =====================================================================
   Google Traduttore — interfaccia nativa nascosta (banner, tooltip, spinner)
   Resta visibile solo il selettore in tema nell'header.
   Il contenitore NON va nascosto con display:none: il widget non verrebbe
   creato. Lo si sposta fuori schermo, restando nel layout.
   ===================================================================== */
#googleTranslateElement{position:absolute !important;left:-9999px !important;top:0 !important}
/* Un'unica regola per tutta l'interfaccia nativa (banner, tooltip, spinner e
   gli overlay a classi offuscate aggiunti dinamicamente dal widget). */
.skiptranslate iframe.skiptranslate,
body>iframe.skiptranslate,
body>.skiptranslate,
iframe[src*="translate.google"],
iframe[src*="translate.googleapis"],
.goog-te-banner-frame,
.goog-te-balloon-frame,
.goog-te-spinner,
.goog-te-spinner-pos,
.goog-te-spinner-pos *,
.goog-te-spinner-layer,
.goog-te-spinner-animation,
.goog-te-spinner-frame,
iframe.goog-te-spinner-frame,
#goog-gt-tt,
.goog-te-ftab,
.goog-te-gadget-icon,
.goog-tooltip,
.goog-tooltip:hover,
[class*="ZVi9od-aZ2wEe"]{
  display:none !important;visibility:hidden !important;opacity:0 !important;pointer-events:none !important;
  width:0 !important;height:0 !important;max-width:0 !important;max-height:0 !important;border:0 !important;
}
.goog-text-highlight{background:none !important;box-shadow:none !important}
/* =====================================================================
   Google Traduttore — protezione tipografica universale
   Qualsiasi lingua (presente o futura) non deve alterare i font del sito.
   Google avvolge i testi tradotti in <font>, aggiunge le classi
   .translated-ltr/.translated-rtl e inietta un <style> in coda: le regole
   seguenti usano specificità elevata per vincere su tali stili.
   ===================================================================== */
html.translated-ltr, html.translated-rtl,
body.translated-ltr, body.translated-rtl{
  font-family:var(--sans) !important;
}
font, font[face], font font, font *{
  font-family:inherit !important;font-size:inherit !important;
  font-style:inherit !important;font-variant:inherit !important;
  font-weight:inherit !important;letter-spacing:inherit !important;
  line-height:inherit !important;color:inherit !important;
  text-transform:inherit !important;background:transparent !important;
}
/* Google talvolta applica il font tradotto a livello di <body>: lo si
   riporta al sans del sito. I titoli (h1-h4) mantengono il proprio serif
   perché possiedono una dichiarazione font-family dedicata più specifica. */
body{
  font-family:var(--sans) !important;
}
html{margin-top:0 !important}
body{top:0 !important}

/* =====================================================================
   Banner promozionale a tempo (Impostazioni → Promozioni)
   Il banner vive sopra l'header fisso: l'altezza reale, misurata da JS,
   viene scritta in --promo-h e tiene allineati header e ancoraggi.
   ===================================================================== */
.promo-bar{
  position:fixed;inset:0 0 auto;z-index:70;min-height:44px;
  display:flex;align-items:center;justify-content:center;gap:16px;flex-wrap:wrap;
  padding:9px 48px;background:var(--promo-accent,var(--gold));color:#fff;
  font-size:.82rem;line-height:1.4;text-align:center;letter-spacing:.02em;
}
.promo-text{max-width:min(78ch,100%)}
.promo-cta{
  color:#fff;font-weight:600;text-decoration:none;white-space:nowrap;
  border-bottom:1px solid rgba(255,255,255,.65);padding-bottom:1px;
}
.promo-cta:hover{border-bottom-color:#fff}
.promo-close{
  position:absolute;right:12px;top:50%;transform:translateY(-50%);
  background:none;border:0;color:#fff;font-size:1.3rem;line-height:1;
  cursor:pointer;padding:4px 8px;opacity:.85;
}
.promo-close:hover{opacity:1}
html.has-promo{--header-h:calc(92px + var(--promo-h,44px))}
html.has-promo .site-header{top:var(--promo-h,44px)}

/* =====================================================================
   Banner di consenso ai cookie (GDPR)
   ===================================================================== */
.cookie-banner{
  position:fixed;left:0;right:0;bottom:0;z-index:250;padding:22px 0;
  background:var(--forest);color:var(--on-dark-soft);border-top:1px solid var(--line-light);
  box-shadow:0 -24px 60px -30px rgba(8,18,13,.9);
  transition:transform .45s cubic-bezier(.19,.86,.28,1),opacity .35s;
}
.cookie-banner.is-hidden{transform:translateY(110%);opacity:0;pointer-events:none}
.cookie-inner{width:min(1280px,90vw);margin-inline:auto;display:flex;align-items:center;gap:32px}
.cookie-copy{flex:1;min-width:0}
.cookie-copy h4{
  font-family:var(--sans);font-size:.68rem;font-weight:600;letter-spacing:.26em;
  text-transform:uppercase;color:var(--gold-2);margin:0 0 9px;
}
.cookie-copy p{margin:0;font-size:.9rem;line-height:1.62;color:var(--on-dark-soft)}
.cookie-copy a{color:var(--gold-2);text-decoration:underline;text-underline-offset:3px}
.cookie-actions{display:flex;gap:12px;flex:none}
.cookie-actions .btn{padding:14px 26px;font-size:.68rem;letter-spacing:.2em}
@media (max-width:900px){
  .cookie-inner{flex-direction:column;align-items:stretch;gap:16px}
  .cookie-actions{flex-direction:column-reverse}
  .cookie-actions .btn{width:100%}
}

/* =====================================================================
   Newsletter nel footer + mappa bloccata dal consenso
   ===================================================================== */
.footer-news{
  display:flex;align-items:center;gap:40px;flex-wrap:wrap;
  padding:0 0 clamp(34px,4vw,54px);margin-bottom:clamp(34px,4vw,54px);
  border-bottom:1px solid var(--line-light);
}
.footer-news-copy{flex:1;min-width:min(340px,100%)}
.footer-news-copy h3{
  font-family:var(--serif);font-weight:500;font-size:clamp(1.4rem,2.4vw,2rem);
  color:var(--on-dark);margin:0 0 8px;
}
.footer-news-copy p{margin:0;font-size:.95rem;color:var(--on-dark-mute);max-width:52ch}
.newsletter-form{display:flex;gap:12px;flex:none;flex-wrap:wrap;align-items:center}
.newsletter-form input[type=email]{
  min-width:min(300px,72vw);padding:15px 16px;border:1px solid var(--line-light);
  background:transparent;color:var(--on-dark);font-family:var(--sans);font-size:.95rem;
}
.newsletter-form input[type=email]::placeholder{color:var(--on-dark-dim)}
.newsletter-form input[type=email]:focus{outline:none;border-color:var(--gold-2)}
.nl-note{flex:1 0 100%;margin:14px 0 0;font-size:.76rem;color:var(--on-dark-dim);max-width:64ch}
/* campo esca antispam: nascosto agli occhi, raggiungibile solo dai bot */
.nl-hp{position:absolute !important;left:-9999px !important;width:1px;height:1px;overflow:hidden}
@media (max-width:640px){
  .footer-news{flex-direction:column;align-items:stretch;gap:20px}
  .newsletter-form{flex-direction:column;align-items:stretch}
  .newsletter-form input[type=email]{min-width:0;width:100%}
}

.map-blocked{
  height:330px;display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:18px;text-align:center;padding:32px;background:var(--paper-2);
}
.map-blocked p{margin:0;color:var(--ink-soft);font-size:.92rem;max-width:44ch}
.btn-quiet{border-color:var(--line);color:var(--ink);background:transparent}
.btn-quiet:hover{background:var(--forest);border-color:var(--forest);color:#fff}


/* ---------------- Popup di validazione prenotazioni, coerente col tema attivo ---------------- */
.booking-validation-modal{position:fixed;inset:0;z-index:500;display:flex;align-items:center;justify-content:center;padding:20px}
.booking-validation-modal[hidden]{display:none}
.booking-validation-backdrop{position:absolute;inset:0;background:rgba(8,18,13,.76);backdrop-filter:blur(6px);animation:fadeIn .18s ease}
.booking-validation-dialog{position:relative;z-index:1;width:min(480px,100%);max-height:min(85vh,720px);overflow:auto;padding:clamp(26px,5vw,42px);background:var(--paper);color:var(--ink);border:1px solid var(--line);border-top:3px solid var(--gold);box-shadow:var(--shadow);animation:panelIn .25s cubic-bezier(.19,.86,.28,1) both}
.booking-validation-dialog h2{font-family:var(--serif);font-size:clamp(1.7rem,4vw,2.2rem);line-height:1.15;margin:8px 0 12px;color:var(--ink)}
.booking-validation-dialog p{color:var(--ink-soft);line-height:1.6}
.booking-validation-symbol{display:grid;place-items:center;width:42px;height:42px;margin-bottom:18px;border-radius:50%;border:1px solid var(--gold);color:var(--gold-ink);font-size:1.35rem;font-weight:700}
.booking-validation-list{margin:18px 0 24px;padding-left:22px;color:var(--ink);line-height:1.65}
.booking-validation-list li+li{margin-top:5px}
.booking-validation-x{position:absolute;top:10px;right:12px;width:38px;height:38px;border:1px solid var(--line);background:transparent;color:var(--ink);font-size:1.55rem;cursor:pointer}
.booking-validation-x:hover{background:var(--gold-btn);color:#fff;border-color:var(--gold-btn)}
.booking-validation-ok{width:100%;justify-content:center}
body.booking-validation-open{overflow:hidden}
@media(max-width:480px){.booking-validation-modal{padding:14px}.booking-validation-dialog{padding:26px 22px}}


/* Preventivo in tempo reale nel modulo prenotazioni: eredita il tema attivo. */
.booking-quote-preview{margin:18px 0 22px;padding:18px 20px;border:1px solid var(--line);border-left:3px solid var(--gold);background:var(--paper);color:var(--ink);box-shadow:var(--shadow-soft,none)}
.booking-quote-preview[hidden]{display:none}
.booking-quote-preview>div{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
.booking-quote-label{font-size:.72rem;text-transform:uppercase;letter-spacing:.12em;color:var(--ink-soft)}
.booking-quote-preview strong{font-family:var(--serif);font-size:clamp(1.45rem,3vw,2rem);line-height:1.2;color:var(--ink)}
.booking-quote-preview p{margin:8px 0;color:var(--ink);font-size:.94rem}
.booking-quote-preview small{display:block;color:var(--ink-soft);font-size:.78rem;line-height:1.5}
@media(max-width:560px){.booking-quote-preview{padding:15px}.booking-quote-preview>div{align-items:flex-start;flex-direction:column;gap:5px}}

/* ---------------- Prenotazione guidata ---------------- */
.booking-stepper{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;list-style:none;padding:0;margin:0 0 28px}
.booking-stepper li{display:flex;align-items:center;gap:9px;min-width:0;padding:10px 8px;border-bottom:2px solid var(--line);color:var(--ink-soft);transition:border-color .2s,color .2s}
.booking-stepper li>span{display:grid;place-items:center;flex:0 0 28px;width:28px;height:28px;border:1px solid var(--line);border-radius:50%;font-size:.78rem;font-weight:700}
.booking-stepper li small{font-size:.75rem;letter-spacing:.02em}
.booking-stepper li.is-active,.booking-stepper li.is-complete{border-color:var(--gold);color:var(--ink)}
.booking-stepper li.is-active>span,.booking-stepper li.is-complete>span{background:var(--gold-btn);border-color:var(--gold-btn);color:#fff}
.booking-step-panel[hidden]{display:none!important}
.booking-step-actions{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:26px}
.booking-step-actions-end{justify-content:flex-end}
.booking-step-actions .btn{min-height:48px}
.booking-review{padding:20px;margin:0 0 22px;background:var(--paper-2);border:1px solid var(--line);color:var(--ink)}
.booking-review h4{font-family:var(--serif);font-size:1.35rem;margin:0 0 16px}
.booking-review dl{margin:0;display:grid;gap:0}
.booking-review dl>div{display:grid;grid-template-columns:minmax(110px,.7fr) minmax(0,1.3fr);gap:12px;padding:9px 0;border-bottom:1px solid var(--line)}
.booking-review dl>div:last-child{border-bottom:0}
.booking-review dt{font-size:.82rem;color:var(--ink-soft)}
.booking-review dd{margin:0;font-weight:600;overflow-wrap:anywhere}
.booking-review .booking-note{margin:16px 0 0}
@media(max-width:520px){.booking-stepper{gap:4px}.booking-stepper li{padding:8px 4px;gap:6px;flex-direction:column;text-align:center}.booking-stepper li small{font-size:.68rem}.booking-step-actions{align-items:stretch;flex-direction:column-reverse}.booking-step-actions .btn{width:100%;justify-content:center}.booking-review{padding:15px}.booking-review dl>div{grid-template-columns:1fr;gap:2px}}

/* ---------------- Assistente informativo: colori dal template attivo ---------------- */
.fdc-concierge{position:fixed;left:22px;right:auto;bottom:22px;z-index:420;font-family:var(--sans);color:var(--ink)}
.concierge-toggle{display:flex;align-items:center;gap:10px;min-height:54px;padding:0 20px;border:1px solid var(--gold);border-radius:999px;background:var(--forest);color:#fff;box-shadow:0 12px 34px rgba(0,0,0,.22);font:600 .9rem var(--sans);cursor:pointer;transition:transform .2s,box-shadow .2s}
.concierge-toggle:hover{transform:translateY(-2px);box-shadow:0 16px 38px rgba(0,0,0,.27)}
.concierge-toggle>span:first-child{display:grid;place-items:center;width:25px;height:25px;border-radius:50%;background:var(--gold-btn);color:#fff}
.concierge-panel{position:absolute;left:0;right:auto;bottom:68px;display:flex;flex-direction:column;width:min(390px,calc(100vw - 28px));height:min(560px,calc(100dvh - 120px));overflow:hidden;background:var(--paper);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:18px;color:var(--ink)}
.concierge-panel[hidden]{display:none!important}
.concierge-header{display:flex;align-items:center;gap:11px;padding:16px;background:var(--forest);color:#fff}
.concierge-avatar{display:grid;place-items:center;flex:0 0 38px;height:38px;border-radius:50%;background:var(--gold-btn);color:#fff;font-size:1.2rem}
.concierge-header>div{display:flex;flex:1;flex-direction:column;min-width:0;line-height:1.35}
.concierge-header strong{font-size:.88rem}.concierge-header small{margin-top:4px;font-size:.72rem;color:rgba(255,255,255,.76)}
.concierge-header button{width:34px;height:34px;border:1px solid rgba(255,255,255,.28);border-radius:50%;background:transparent;color:#fff;font-size:1.4rem;cursor:pointer}.concierge-header .concierge-reset{font-size:1.05rem;line-height:1}.concierge-typing{opacity:.68}.concierge-typing p{letter-spacing:.16em}.concierge-message p{white-space:pre-line}
.concierge-log{flex:1;overflow:auto;padding:16px;display:flex;flex-direction:column;gap:12px;overscroll-behavior:contain}
.concierge-message{max-width:92%;padding:11px 13px;border-radius:13px;font-size:.86rem;line-height:1.55;overflow-wrap:anywhere}
.concierge-message p{margin:0}.concierge-bot{align-self:flex-start;background:var(--paper-2);border:1px solid var(--line)}.concierge-user{align-self:flex-end;background:var(--forest);color:#fff}
.concierge-action{display:inline-block;margin-top:9px;color:var(--gold);font-weight:700;text-decoration:underline;text-underline-offset:3px}
.concierge-prompts{display:flex;flex-wrap:wrap;gap:7px;margin-top:3px}
.concierge-prompts button{padding:8px 10px;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:var(--ink);font:500 .75rem var(--sans);cursor:pointer}
.concierge-prompts button:hover{border-color:var(--gold)}
.concierge-form{display:flex;gap:8px;padding:12px;border-top:1px solid var(--line);background:var(--surface)}
.concierge-form input{flex:1;min-width:0;width:0;padding:12px;border:1px solid var(--line);border-radius:8px;background:var(--paper);color:var(--ink);font:inherit;font-size:.86rem}
.concierge-form input:focus{outline:2px solid var(--gold);outline-offset:1px}
.concierge-form button{flex:0 0 44px;border:0;border-radius:8px;background:var(--gold-btn);color:#fff;font-size:1.45rem;cursor:pointer}
.concierge-disclaimer{margin:0;padding:0 13px 12px;background:var(--surface);color:var(--ink-soft);font-size:.68rem;line-height:1.4}
@media(max-width:520px){.fdc-concierge{left:12px;right:auto;bottom:12px}.concierge-toggle{min-height:49px;padding:0 15px}.concierge-panel{left:0;right:auto;bottom:60px;height:min(540px,calc(100dvh - 95px));width:min(390px,calc(100vw - 24px))}}
@media(prefers-reduced-motion:reduce){.concierge-toggle,.booking-stepper li{transition:none}}

/* Correzioni di fino: header compatto e assistente meno invasivo */
@media (min-width:1081px) and (max-width:1380px){
  .header-inner{gap:clamp(12px,1.4vw,22px)}
  .brand svg{height:48px}
  .brand .logo-img{height:44px}
  .nav{gap:clamp(8px,.85vw,13px)}
  .nav a{font-size:.65rem;letter-spacing:.07em}
  .nav .nav-phone{padding:9px 11px!important;letter-spacing:.04em;max-width:190px;overflow-wrap:anywhere}
}
@media (min-width:1081px) and (max-width:1180px){
  .header-inner{gap:10px}
  .brand svg{height:42px}
  .brand .logo-img{height:40px}
  .nav{gap:7px}
  .nav a{font-size:.61rem;letter-spacing:.035em}
  .nav .nav-phone{padding:8px 8px!important;font-size:.6rem;letter-spacing:0}
}
.fdc-concierge{left:18px;right:auto;bottom:18px}
.concierge-toggle{position:relative;justify-content:center;gap:0;width:46px;height:46px;min-height:46px;padding:0;border-radius:50%;border:1px solid color-mix(in srgb,var(--gold) 72%,transparent);background:var(--forest);box-shadow:0 4px 14px rgba(0,0,0,.14);}
.concierge-toggle>span:first-child{width:22px;height:22px;font-size:.9rem}
.concierge-toggle>span:nth-child(2){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.concierge-toggle:hover{transform:translateY(-1px);box-shadow:0 6px 18px rgba(0,0,0,.18)}
.concierge-toggle:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
.concierge-toggle::after{content:"Assistente";position:absolute;left:54px;bottom:4px;padding:5px 8px;border-radius:6px;background:var(--forest);color:#fff;font:500 .72rem var(--sans);white-space:nowrap;opacity:0;pointer-events:none;transform:translateX(-3px);transition:opacity .15s,transform .15s}
.concierge-toggle:hover::after,.concierge-toggle:focus-visible::after{opacity:1;transform:none}
.concierge-panel{bottom:56px}
@media(max-width:520px){
  .fdc-concierge{left:12px;right:auto;bottom:12px}
  .concierge-toggle{width:42px;height:42px;min-height:42px}
  .concierge-toggle::after{display:none}
  .concierge-panel{left:0;right:auto;bottom:50px;height:min(500px,calc(100dvh - 75px));width:min(360px,calc(100vw - 24px))}
}

/* Header essenziale: lingua e telefono sono link/controlli tipografici, non pulsanti bordati. */
.nav .lang-btn,
.nav .nav-phone{
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
}
.nav .lang-btn{padding:8px 2px!important;gap:7px;color:var(--nav-ink)}
.nav .lang-btn:hover,.nav .nav-phone:hover{background:transparent!important;color:var(--gold-2)!important}
.nav .nav-phone{padding:8px 0 8px 4px!important;letter-spacing:.06em!important;max-width:none;overflow:visible;font-size:.72rem}
.nav .nav-phone::after{display:none!important}
.nav .lang-btn:focus-visible,.nav .nav-phone:focus-visible{outline:2px solid var(--gold-2);outline-offset:5px}
@media(max-width:1080px){
  .nav .lang-btn{width:auto;justify-content:flex-start;padding:8px 0!important}
  .nav .nav-phone{font-size:1rem;max-width:100%;white-space:normal;overflow-wrap:anywhere}
  .nav .lang-switch{width:auto}
  .nav .lang-menu{position:static;margin-top:8px}
}

/* Mobile-first: il sito si comporta come un'esperienza touch dedicata. */
@media(max-width:640px){
  html{scroll-padding-top:calc(var(--header-h) + 14px);-webkit-text-size-adjust:100%;text-size-adjust:100%}
  body{padding-bottom:env(safe-area-inset-bottom);overscroll-behavior-x:none}
  .container{width:min(100% - 32px, 560px)}
  .site-header{padding-top:env(safe-area-inset-top)}
  .header-inner{min-height:68px;gap:12px}
  .brand svg{max-width:clamp(112px,38vw,164px);height:42px}
  .nav-toggle{min-width:44px;min-height:44px;align-items:center;justify-content:center;margin-left:auto}
  .nav{padding:calc(64px + env(safe-area-inset-top)) 28px calc(34px + env(safe-area-inset-bottom));gap:clamp(18px,4vh,30px)}
  .nav a{font-size:.96rem;letter-spacing:.12em;white-space:normal;max-width:100%;line-height:1.4}
  .nav .nav-phone{font-size:1.02rem;letter-spacing:.04em!important}
  .hero-inner{padding-top:calc(var(--header-h) + 48px);padding-bottom:56px}
  .hero h1{font-size:clamp(2.45rem,11vw,4rem);line-height:1.02;letter-spacing:-.035em;text-wrap:balance}
  .hero p{font-size:1rem;line-height:1.7}
  .section{padding-block:clamp(52px,12vw,76px)}
  .sec-head{gap:14px 18px;margin-bottom:28px}
  .sec-title h2{font-size:clamp(1.8rem,8vw,2.6rem);line-height:1.08;text-wrap:balance}
  .btn{min-height:48px;touch-action:manipulation}
  .room-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:18px}
  .room-card{border-radius:18px;overflow:hidden;box-shadow:0 8px 28px rgba(30,43,34,.07)}
  .room-card .room-media img,.dest-media img{width:100%;object-fit:cover}
  .room-body{padding:22px}
  .gallery-grid{gap:8px;grid-auto-rows:clamp(108px,30vw,160px)}
  .gallery-item{border-radius:12px;overflow:hidden;cursor:zoom-in;touch-action:pan-y}
  .gallery-item img{width:100%;height:100%;object-fit:cover;transition:transform .35s ease}
  .gallery-item:active img{transform:scale(1.025)}
  .booking-grid{gap:24px}
  .booking-form{padding:clamp(18px,5vw,26px);border-radius:20px;box-shadow:0 12px 36px rgba(30,43,34,.08)}
  .booking-stepper{position:relative;gap:4px;margin-bottom:24px}
  .booking-stepper li{min-height:66px;border-bottom-width:3px}
  .booking-stepper li>span{width:30px;height:30px;flex-basis:30px}
  .booking-stepper li small{font-size:.66rem;letter-spacing:0;line-height:1.2}
  .booking-step-panel label{display:block;margin-bottom:16px}
  .booking-step-panel input,.booking-step-panel select,.booking-step-panel textarea{font-size:16px;min-height:48px;border-radius:10px;max-width:100%}
  .booking-step-panel textarea{min-height:100px}
  .booking-quote-preview{border-radius:14px;padding:17px;margin-top:16px}
  .booking-step-actions{gap:10px;margin-top:22px}
  .booking-step-actions .btn{min-height:50px;border-radius:12px}
  .booking-review{border-radius:14px}
  .contact-form,.service-card,.testimonial-card{border-radius:18px}
  .fdc-concierge{bottom:calc(12px + env(safe-area-inset-bottom));left:12px}
  .concierge-panel{height:min(480px,calc(100dvh - 86px - env(safe-area-inset-top)));max-height:calc(100dvh - 86px);border-radius:18px}
  .concierge-log{overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
  input,select,textarea,button,a{-webkit-tap-highlight-color:transparent}
  a,button,select{touch-action:manipulation}
}
@media(max-width:380px){
  .container{width:calc(100% - 26px)}
  .booking-stepper li{padding-inline:2px}
  .booking-stepper li>span{width:27px;height:27px;flex-basis:27px}
  .booking-stepper li small{font-size:.61rem}
  .brand svg{max-width:112px}
}
@media(prefers-reduced-motion:reduce){.gallery-item img{transition:none}}

.booking-stepper{grid-template-columns:repeat(4,minmax(0,1fr))}
@media(max-width:520px){.booking-stepper{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(min-width:1081px) and (max-width:1380px){
  .header-inner{gap:clamp(8px,1vw,16px)}
  .nav{gap:clamp(7px,.7vw,10px)}
  .nav a{font-size:.61rem;letter-spacing:.045em}
  .nav .nav-phone{font-size:.64rem;letter-spacing:0!important;white-space:nowrap;max-width:none;padding:8px 0 8px 2px!important}
  .nav .lang-btn{font-size:.65rem;letter-spacing:.04em;padding:8px 0!important}
}
@media(min-width:1081px) and (max-width:1180px){
  .nav{gap:6px}
  .nav a{font-size:.57rem;letter-spacing:.02em}
  .nav .nav-phone{font-size:.59rem}
  .nav .lang-btn{font-size:.6rem}
}


/* Responsive hardening: prevent booking actions from overlapping the final note. */
.booking-form,
.booking-step-panel,
.booking-step-panel > *,
.booking-step-actions,
.booking-note-last{box-sizing:border-box;min-width:0;max-width:100%}
.booking-step-actions{
  display:grid!important;
  grid-template-columns:repeat(2,minmax(0,1fr));
  align-items:stretch;
  gap:12px;
  width:100%;
  margin:24px 0 0;
  position:relative;
}
.booking-step-actions-end{grid-template-columns:minmax(0,1fr);justify-items:end}
.booking-step-actions .btn{
  display:flex;
  align-items:center;
  justify-content:center;
  width:100%;
  min-width:0;
  max-width:100%;
  min-height:50px;
  height:auto;
  padding:12px clamp(10px,1.4vw,20px);
  white-space:normal;
  overflow-wrap:anywhere;
  word-break:normal;
  line-height:1.35;
  text-align:center;
  box-sizing:border-box;
}
.booking-step-actions .btn span{flex:0 0 auto}
.booking-note-last{
  display:block;
  clear:both;
  position:relative;
  width:100%;
  margin:26px 0 0!important;
  padding:14px 0 0;
  border-top:1px solid var(--line);
  font-size:clamp(.76rem,1.2vw,.86rem);
  line-height:1.65;
  overflow-wrap:anywhere;
}
.booking-quote-preview,.booking-review,.booking-stepper{min-width:0;max-width:100%}
.booking-step-panel input,.booking-step-panel select,.booking-step-panel textarea{box-sizing:border-box;width:100%;min-width:0;max-width:100%}
@media(max-width:620px){
  .booking-step-actions{grid-template-columns:minmax(0,1fr);gap:10px;margin-top:20px}
  .booking-step-actions-end{grid-template-columns:minmax(0,1fr)}
  .booking-step-actions .btn{font-size:.94rem;padding:13px 14px}
  .booking-note-last{margin-top:22px!important;padding-top:12px}
}
@media(min-width:621px) and (max-width:900px){
  .booking-step-actions{gap:10px}
  .booking-step-actions .btn{padding-inline:10px;font-size:.9rem}
}
/* Icona cuffie per l'assistente, con colori ereditati dal template attivo. */
.concierge-toggle>span:first-child{width:24px;height:24px;display:grid;place-items:center;background:transparent;color:var(--gold)}
.concierge-toggle>span:first-child svg{display:block;width:24px;height:24px;stroke:currentColor;fill:none;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.concierge-avatar svg{width:23px;height:23px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}

/* ---------------- Prestazioni e scorrimento mobile ----------------
   Riduce animazioni costose e cambiamenti di layout sui dispositivi touch.
   Le variabili colore del template rimangono invariate. */
@media (hover:none), (pointer:coarse), (max-width:820px){
  html{-webkit-overflow-scrolling:touch;scroll-behavior:auto}
  body{overscroll-behavior-y:auto}
  .hero-bg{will-change:auto;transform:none!important}
  .hero-bg::before{animation:none!important;transform:scale(1.04)}
  .hero-scroll span{animation:none!important}
  .site-header,.brand,.brand svg,.brand .logo-img{
    transition:background-color .18s ease,color .18s ease,box-shadow .18s ease!important
  }
  .site-header{padding-top:env(safe-area-inset-top)}
  .reveal{opacity:1;transform:none;transition:none!important}
  .anim{opacity:1;transform:none;animation:none!important}
  .frame img,.tab-media img,.room-media img,.gallery-item img,.dest-media img,.post-media img{
    transition:none!important;filter:none!important
  }
  .gallery-item:active img{transform:none!important}
  .modal-backdrop,.lightbox,.holiday-backdrop,.booking-validation-backdrop{
    -webkit-backdrop-filter:none!important;backdrop-filter:none!important
  }
  .map iframe{filter:none}
  .slider-track{scroll-behavior:auto;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch}
  .concierge-log,.nav,.room-calendar-scroll,.admin-scroll-region{
    -webkit-overflow-scrolling:touch;overscroll-behavior:contain
  }
}
@media (max-width:640px){
  .site-header,.site-header.is-scrolled{padding:8px 0!important;transition:background-color .18s ease,box-shadow .18s ease!important}
  .brand svg,.brand .logo-img,.is-scrolled .brand svg,.is-scrolled .brand .logo-img{height:42px!important;transition:none!important}
  .room-card,.booking-form,.testimonial-card,.service-card{transform:none!important}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}

/* =====================================================================
   Rifiniture responsive, controlli di prenotazione e Google Traduttore.
   ===================================================================== */

/* Correzioni responsive finali; palette ereditata dal template attivo. */
/* Rifiniture responsive e controlli di prenotazione: usano solo variabili del tema attivo. */
.site-header .brand svg{height:68px;width:auto}
.site-header .brand .logo-img{height:64px;width:auto}
.site-header.is-scrolled .brand svg{height:58px}
.site-header.is-scrolled .brand .logo-img{height:56px}
@media(min-width:1081px) and (max-width:1380px){
  .site-header .brand svg{height:60px}
  .site-header .brand .logo-img{height:58px}
  .site-header.is-scrolled .brand svg{height:52px}
  .site-header.is-scrolled .brand .logo-img{height:50px}
}
@media(max-width:1080px){
  .site-header .brand svg{height:58px;max-width:clamp(145px,40vw,190px)}
  .site-header .brand .logo-img{height:56px;max-width:clamp(145px,40vw,190px)}
  .site-header.is-scrolled .brand svg{height:52px}
  .site-header.is-scrolled .brand .logo-img{height:50px}
}
@media(max-width:640px){
  .site-header .brand svg{height:56px;max-width:clamp(150px,44vw,190px)}
  .site-header .brand .logo-img{height:54px;max-width:clamp(150px,44vw,190px)}
  .site-header.is-scrolled .brand svg{height:49px}
  .site-header.is-scrolled .brand .logo-img{height:47px}
}
@media(max-width:380px){
  .site-header .brand svg,.site-header .brand .logo-img{max-width:148px}
}

/* I pulsanti del passaggio Camera non possono mai accavallarsi o uscire dal pannello. */
.booking-step-panel{min-width:0;max-width:100%}
.booking-step-actions{display:flex;flex-flow:row wrap;justify-content:space-between;align-items:stretch;gap:12px;min-width:0}
.booking-step-actions .btn{flex:1 1 210px;min-width:0;max-width:100%;white-space:normal;overflow-wrap:anywhere;text-align:center;line-height:1.35;padding:13px 16px}
.booking-step-actions .btn span{flex:0 0 auto}
.booking-step-actions-end{justify-content:flex-end}
@media(max-width:720px){
  .booking-step-actions{flex-direction:column;align-items:stretch;gap:10px}
  .booking-step-actions .btn{width:100%;flex:1 1 auto;padding:14px 16px}
}

/* Campi nativi rifiniti con la palette del template selezionato. */
.contact-form select,.booking-step-panel select{
  appearance:none;-webkit-appearance:none;display:block;width:100%;max-width:100%;min-width:0;
  min-height:48px;padding:12px 42px 12px 14px;margin-top:10px;
  border:1px solid var(--line);border-radius:10px;
  background-color:var(--surface);
  background-image:linear-gradient(45deg,transparent 50%,var(--gold) 50%),linear-gradient(135deg,var(--gold) 50%,transparent 50%);
  background-position:calc(100% - 19px) 52%,calc(100% - 14px) 52%;background-size:5px 5px,5px 5px;background-repeat:no-repeat;
  color:var(--ink);font:500 1rem var(--sans);letter-spacing:normal;text-transform:none;
  box-shadow:0 2px 8px rgba(0,0,0,.025);cursor:pointer;
}
.contact-form select:focus,.booking-step-panel select:focus{outline:2px solid color-mix(in srgb,var(--gold) 38%,transparent);outline-offset:2px;border-color:var(--gold)}
.contact-form select option,.booking-step-panel select option{background:var(--surface);color:var(--ink)}
.contact-form input[type="date"],.booking-step-panel input[type="date"]{
  width:100%;min-width:0;max-width:100%;min-height:48px;padding:11px 13px;
  border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--ink);
  font:500 1rem var(--sans);letter-spacing:normal;color-scheme:light;accent-color:var(--gold);
}
.contact-form input[type="date"]::-webkit-calendar-picker-indicator,.booking-step-panel input[type="date"]::-webkit-calendar-picker-indicator{
  padding:5px;border-radius:6px;cursor:pointer;opacity:.78;filter:sepia(.25) saturate(.85);background-color:transparent
}
.contact-form input[type="date"]::-webkit-calendar-picker-indicator:hover,.booking-step-panel input[type="date"]::-webkit-calendar-picker-indicator:hover{background:var(--paper-2);opacity:1}



/* Selettore lingue: bandiera e sigla compatte esclusivamente sugli smartphone. */
.lang-mobile-flag,.lang-mobile-code,.lang-flag,.lang-option-code{display:none}
.lang-menu button{display:flex;align-items:center;gap:10px}
.lang-option-name{display:inline}
@media(max-width:640px){
  .lang-btn{justify-content:flex-start!important;gap:10px!important}
  .lang-btn .lang-globe,.lang-desktop-code{display:none!important}
  .lang-current{display:inline-flex;align-items:center;gap:7px;min-width:0}
  .lang-mobile-flag{display:inline-block;font-size:1.05rem;line-height:1}
  .lang-mobile-code{display:inline-block;font-size:.82rem;font-weight:700;letter-spacing:.08em}
  .lang-caret{margin-left:auto}
  .lang-menu button{min-height:42px;padding:10px 12px}
  .lang-flag{display:inline-block;flex:0 0 22px;text-align:center;font-size:1.05rem;line-height:1}
  .lang-option-name{display:none}
  .lang-option-code{display:inline-block;font-size:.8rem;font-weight:700;letter-spacing:.06em}
  .lang-menu button.is-active .lang-option-code{color:var(--gold-3)}
}

/* Piccole correzioni tipografiche e stabilità dello scroll sui telefoni. */
@media(max-width:640px){
  .site-header,.site-header.is-scrolled{transform:translateZ(0);backface-visibility:hidden}
  .header-inner{contain:layout;gap:10px}
  .nav{overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
  .map-heading{top:10px;left:10px;padding:8px 11px;font-size:.92rem}
}

/* Menu smartphone a schermo intero: evita che il pannello sembri tagliato o si apra solo in parte. */
@media(max-width:640px){
  .site-header .nav,
  .site-header .nav.is-open{
    position:fixed!important;
    inset:0!important;
    width:100vw!important;
    max-width:none!important;
    height:100vh!important;
    height:100dvh!important;
    max-height:none!important;
    box-sizing:border-box!important;
    margin:0!important;
    padding:calc(88px + env(safe-area-inset-top)) 24px calc(28px + env(safe-area-inset-bottom))!important;
    flex-direction:column!important;
    align-items:stretch!important;
    justify-content:flex-start!important;
    gap:clamp(14px,2.8vh,22px)!important;
    overflow-x:hidden!important;
    overflow-y:auto!important;
    overscroll-behavior:contain;
    -webkit-overflow-scrolling:touch;
    border-radius:0!important;
    transform:translateX(100%)!important;
    visibility:hidden!important;
    transition:transform .28s ease,visibility 0s .28s!important;
    z-index:1000!important;
  }
  .site-header .nav.is-open{
    transform:translateX(0)!important;
    visibility:visible!important;
    transition:transform .28s ease,visibility 0s 0s!important;
  }
  .site-header .nav>a{width:100%;box-sizing:border-box}

  /* Tutte le lingue visibili insieme: bandiera e sigla in una riga compatta. */
  .site-header .nav .lang-switch{width:100%!important;display:block!important;flex:0 0 auto}
  .site-header .nav .lang-btn{display:none!important}
  .site-header .nav .lang-menu,
  .site-header .nav .lang-switch .lang-menu{
    position:static!important;
    display:flex!important;
    flex-flow:row wrap!important;
    align-items:center!important;
    justify-content:flex-start!important;
    gap:8px!important;
    width:100%!important;
    max-height:none!important;
    overflow:visible!important;
    margin:4px 0 0!important;
    padding:0!important;
    background:transparent!important;
    border:0!important;
    box-shadow:none!important;
  }
  .site-header .nav .lang-menu button{
    display:inline-flex!important;
    flex:0 0 auto!important;
    align-items:center!important;
    justify-content:center!important;
    gap:5px!important;
    min-width:54px!important;
    min-height:42px!important;
    padding:8px 9px!important;
    border:1px solid var(--line-light)!important;
    border-radius:999px!important;
    background:rgba(255,255,255,.055)!important;
    color:var(--nav-ink)!important;
    font-size:.78rem!important;
    line-height:1!important;
  }
  .site-header .nav .lang-menu button.is-active{border-color:var(--gold-3)!important;background:rgba(0,0,0,.18)!important;color:var(--gold-3)!important}
  .site-header .nav .lang-menu .lang-flag{display:inline-block!important;flex:0 0 auto!important;width:auto!important;font-size:1.05rem!important}
  .site-header .nav .lang-menu .lang-option-code{display:inline-block!important;font-size:.76rem!important;font-weight:700!important;letter-spacing:.04em!important}
  .site-header .nav .lang-menu .lang-option-name{display:none!important}
}

/* Rifinitura definitiva del menu mobile: chiusura sempre visibile e lingue in tre colonne. */
.nav-close{display:none}
@media(max-width:1080px){
  .site-header .nav-close{
    display:flex;position:fixed;top:calc(12px + env(safe-area-inset-top));right:18px;
    z-index:1002;width:46px;height:46px;align-items:center;justify-content:center;
    padding:0;border:1px solid var(--line-light);border-radius:50%;
    background:rgba(255,255,255,.08);color:var(--nav-ink);font:300 2rem/1 var(--sans);
    cursor:pointer;appearance:none;-webkit-appearance:none;
  }
  .site-header .nav-close:focus-visible{outline:2px solid var(--gold-2);outline-offset:3px}
}
@media(max-width:640px){
  .site-header .nav{padding-top:calc(82px + env(safe-area-inset-top))!important}
  .site-header .nav .lang-menu,
  .site-header .nav .lang-switch .lang-menu{
    display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;
    grid-auto-flow:row;align-items:stretch;justify-content:initial;gap:8px!important;
    width:100%!important;max-width:100%;box-sizing:border-box;
  }
  .site-header .nav .lang-menu button{
    display:inline-flex!important;width:100%!important;min-width:0!important;max-width:100%;
    box-sizing:border-box;flex:none!important;gap:5px!important;padding:8px 4px!important;
    white-space:nowrap;overflow:hidden;
  }
  .site-header .nav .lang-menu .lang-flag{font-size:1rem!important}
  .site-header .nav .lang-menu .lang-option-code{font-size:.74rem!important}
}

/* Recensioni esterne: citazioni brevi attribuite e collegate alla fonte originale. */
.reviews-summary{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:0 0 26px;padding:20px 22px;border:1px solid var(--line);background:color-mix(in srgb,var(--surface) 88%,transparent);color:var(--ink);border-radius:var(--radius,12px)}
.reviews-score{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.reviews-score strong{font-size:1.25rem;font-variant-numeric:tabular-nums}
.reviews-score>span:last-child{font-size:.88rem;color:var(--ink-soft)}
.reviews-stars{color:var(--gold-ink);letter-spacing:.08em}
.reviews-source-link,.review-card-bottom a{color:var(--gold-ink);font-size:.85rem;font-weight:600;text-decoration:none}
.reviews-source-link:hover,.review-card-bottom a:hover{text-decoration:underline;text-underline-offset:3px}
.reviews-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-top:clamp(30px,4.5vw,52px)}
.review-card{display:flex;flex-direction:column;min-width:0;padding:22px;border:1px solid var(--line);border-radius:var(--radius,12px);background:color-mix(in srgb,var(--surface) 94%,transparent);color:var(--ink);box-shadow:0 8px 24px rgba(0,0,0,.08)}
.review-card-top,.review-card-bottom{display:flex;align-items:center;justify-content:space-between;gap:12px}
.review-source{font-size:.72rem;letter-spacing:.09em;text-transform:uppercase;font-weight:700}
.review-mark{font-family:var(--serif);font-size:2.8rem;line-height:.7;color:var(--gold-ink)}
.review-card blockquote{margin:20px 0 26px;font-family:var(--serif);font-size:1.12rem;line-height:1.65;flex:1;overflow-wrap:anywhere}
.review-card-bottom{padding-top:14px;border-top:1px solid var(--line);align-items:flex-start;flex-wrap:wrap}
.review-card-bottom cite{font-style:normal;font-size:.86rem;font-weight:600}
.review-card-bottom a{font-size:.78rem}
.reviews-disclaimer{margin:16px 0 0;font-size:.78rem;line-height:1.5;color:var(--on-dark-mute)}
.map-heading{display:flex;flex-direction:column;gap:5px;margin:18px 0 10px;padding:14px 16px;border-left:3px solid var(--gold);background:var(--surface);color:var(--ink);border-radius:var(--radius,10px)}
.map-heading strong{font-family:var(--serif);font-size:1.05rem;font-weight:600;line-height:1.3}
.map-heading span{font-size:.88rem;line-height:1.45;color:var(--ink-soft);overflow-wrap:anywhere}
@media(max-width:800px){.reviews-grid{grid-template-columns:1fr}.reviews-summary{align-items:flex-start;flex-direction:column;gap:12px}.review-card{padding:19px}}
@media(min-width:801px) and (max-width:1080px){.reviews-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.review-card:last-child{grid-column:1/-1}}


/* Finitura performance/accessibilità: contenuti, controlli e animazioni si adattano al tema attivo. */
:where(img, video, iframe){max-width:100%}
img{height:auto}
:where(button,a,input,select,textarea):focus-visible{outline:2px solid var(--gold-ink);outline-offset:3px}
/* Link di salto: fuori schermo finché non riceve il focus da tastiera. */
.skip-link{
  position:fixed;top:0;left:0;z-index:2000;transform:translateY(-150%);
  background:var(--forest);color:#fff;padding:14px 22px;
  font-family:var(--sans);font-size:.72rem;font-weight:600;letter-spacing:.18em;
  text-transform:uppercase;text-decoration:none;transition:transform .2s;
}
.skip-link:focus,.skip-link:focus-visible{transform:none;outline:2px solid var(--gold-2);outline-offset:-4px}
main:focus{outline:none}
html{scroll-behavior:auto}
@media(max-width:820px), (hover:none), (pointer:coarse){
  /* Evita che transizioni di trasformazione, ombre e parallasse rendano lo scroll irregolare. */
  .hero-bg{transform:none!important;will-change:auto!important}
  .reveal{transition:opacity .24s ease!important;transform:none!important;filter:none!important;will-change:auto!important}
  .reveal:not(.is-visible){transform:none!important}
  .gallery-item img,.room-card img,.dest-media img{transition:none!important;will-change:auto!important}
  .room-card,.dest,.gallery-item,.booking-form,.booking-card{backface-visibility:hidden}
  .site-header,.site-header.is-scrolled{will-change:auto!important}
  .btn,.nav a,.lang-menu button{transition:color .15s ease,background-color .15s ease,border-color .15s ease!important}
}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}
/* L'interfaccia nativa di Google Traduttore (banner, tooltip, spinner e le
   classi offuscate aggiunte dinamicamente) è nascosta in un blocco unico in
   testa a app.css. */


/* ---------------- Reputazione e aggiornamenti delle piattaforme ---------------- */
.platform-overview{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;margin:0 0 34px;align-items:stretch}
.platform-card{--platform-accent:var(--gold,#b89a65);display:flex;flex-direction:column;min-width:0;padding:clamp(22px,3vw,32px);border:1px solid var(--line);border-radius:var(--radius,14px);background:color-mix(in srgb,var(--surface) 94%,transparent);color:var(--ink);box-shadow:var(--shadow-soft,0 10px 30px rgba(0,0,0,.07));overflow:hidden;position:relative}
.platform-card:before{content:"";position:absolute;inset:0 auto 0 0;width:3px;background:var(--platform-accent)}
.platform-tripadvisor{--platform-accent:#58a889}.platform-booking{--platform-accent:#6c9fce}
.platform-card-top{display:flex;align-items:center;gap:13px;min-width:0;margin-bottom:24px}
.platform-mark{display:grid;place-items:center;flex:0 0 44px;width:44px;height:44px;border-radius:13px;font-weight:800;letter-spacing:-.06em;font-size:1.02rem}
.platform-mark-tripadvisor{background:color-mix(in srgb,#58a889 17%,var(--surface));color:#26765a}.platform-mark-booking{background:color-mix(in srgb,#6c9fce 18%,var(--surface));color:#1557a0;font-size:1.25rem}
.platform-eyebrow{margin:0 0 4px;color:var(--ink-soft);font-size:.7rem;letter-spacing:.12em;text-transform:uppercase}.platform-card h3{margin:0;font-family:var(--serif);font-size:clamp(1.45rem,2.5vw,1.9rem);font-weight:500;line-height:1.15;overflow-wrap:anywhere}
.platform-live-dot{width:8px;height:8px;border-radius:50%;background:#58a889;margin-left:auto;box-shadow:0 0 0 4px color-mix(in srgb,#58a889 14%,transparent)}.platform-booking-label{margin-left:auto;color:var(--ink-soft);font-size:.72rem;max-width:112px;text-align:right;line-height:1.35}
.platform-rating-line{display:flex;align-items:center;flex-wrap:wrap;gap:13px;margin-bottom:7px}.platform-rating-line>strong{font-family:var(--serif);font-size:clamp(2.6rem,5vw,3.8rem);line-height:1;color:var(--ink);font-weight:500;letter-spacing:-.045em}.platform-rating-line>strong small{font-family:Arial,sans-serif;font-size:.9rem;letter-spacing:0;color:var(--ink-soft);margin-left:4px}.platform-stars{color:#c9a45e;letter-spacing:.13em;font-size:1rem;white-space:nowrap}
.platform-count{margin:0 0 16px;color:var(--ink-soft);font-size:.83rem;line-height:1.55}.platform-copy{font-size:.94rem;line-height:1.75;margin:0 0 18px;overflow-wrap:anywhere}.platform-updated{margin:auto 0 18px;padding-top:14px;color:var(--ink-soft);font-size:.74rem;line-height:1.5;border-top:1px solid var(--line)}
.platform-cta{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:13px 15px;border:1px solid var(--line);border-radius:var(--radius,10px);color:var(--ink);text-decoration:none;font-size:.87rem;font-weight:650;transition:background-color .2s ease,border-color .2s ease}.platform-cta:hover{background:var(--surface-2,var(--surface));border-color:var(--platform-accent)}.platform-cta span{font-size:1.1rem;flex:0 0 auto}
.platform-booking-visual{display:flex;align-items:center;justify-content:center;gap:13px;height:84px;margin:0 0 18px;border-radius:10px;background:linear-gradient(120deg,color-mix(in srgb,#6c9fce 18%,var(--surface)),color-mix(in srgb,var(--surface) 85%,transparent));color:#3c77ae;font-size:2rem}.platform-booking-visual span:nth-child(2){font-size:3.4rem;opacity:.45;transform:translateY(-4px)}
.platform-highlights{padding:clamp(22px,4vw,38px);border:1px solid var(--line);border-radius:var(--radius,14px);background:color-mix(in srgb,var(--surface) 75%,transparent)}.platform-highlights-head{max-width:650px;margin-bottom:25px}.platform-highlights-head .micro{margin:0 0 9px}.platform-highlights-head h3{font-family:var(--serif);font-weight:500;font-size:clamp(1.7rem,3.5vw,2.5rem);line-height:1.15;margin:0 0 10px}.platform-highlights-head>p:last-child{margin:0;color:var(--ink-soft);line-height:1.7}
.platform-highlight-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0}.platform-highlight-grid article{padding:17px 18px 4px;border-left:1px solid var(--line);min-width:0}.platform-highlight-grid article:first-child{padding-left:0;border-left:0}.platform-highlight-grid article>span{display:grid;place-items:center;width:34px;height:34px;margin-bottom:13px;border-radius:50%;background:color-mix(in srgb,var(--gold,#b89a65) 16%,var(--surface));color:var(--gold-2,var(--gold,#b89a65));font-size:1.1rem}.platform-highlight-grid h4{font-family:var(--serif);font-size:1.08rem;font-weight:500;line-height:1.3;margin:0 0 8px}.platform-highlight-grid p{margin:0;color:var(--ink-soft);font-size:.83rem;line-height:1.65}
@media(max-width:800px){.platform-overview{grid-template-columns:1fr;gap:15px}.platform-highlight-grid{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:18px}.platform-highlight-grid article:nth-child(odd){padding-left:0;border-left:0}.platform-highlight-grid article:nth-child(even){padding-right:0}}
@media(max-width:460px){.platform-card{padding:21px 18px}.platform-card-top{gap:10px;margin-bottom:20px}.platform-mark{width:39px;height:39px;flex-basis:39px}.platform-booking-label{max-width:85px;font-size:.66rem}.platform-highlight-grid{grid-template-columns:1fr}.platform-highlight-grid article{border-left:0;border-top:1px solid var(--line);padding:16px 0 0!important}.platform-highlight-grid article:first-child{border-top:0;padding-top:0!important}}
@media(prefers-reduced-motion:reduce){.platform-cta{transition:none}}

/* Contrasto accessibile per "L'esperienza degli ospiti" in tutti i template.
   La sezione usa esclusivamente i token del tema attivo, senza colori fissi. */
.platform-highlights{
  background:var(--surface)!important;
  color:var(--ink)!important;
  border-color:var(--line);
  isolation:isolate;
}
.platform-highlights .platform-highlights-head,
.platform-highlights .platform-highlights-head .micro,
.platform-highlights .platform-highlights-head h3,
.platform-highlights .platform-highlights-head>p:last-child,
.platform-highlights .platform-highlight-grid article,
.platform-highlights .platform-highlight-grid h4,
.platform-highlights .platform-highlight-grid p{
  color:var(--ink)!important;
  opacity:1!important;
}
.platform-highlights .platform-highlights-head .micro{
  letter-spacing:.12em;
  font-weight:700;
}
.platform-highlights .platform-highlight-grid article>span{
  background:var(--surface-raised,var(--surface-2,var(--surface)))!important;
  color:var(--ink)!important;
  border:1px solid var(--line);
}
.platform-highlights .platform-highlight-grid article{
  border-color:var(--line);
}
@media(max-width:800px){
  .platform-highlights .platform-highlight-grid article{min-width:0;overflow-wrap:anywhere}
}


/* Fix mirato: evita che il testo tradotto venga ritagliato ai bordi.
   Il tracking molto ampio originale (.2em) rende le etichette tradotte più larghe;
   alcuni wrapper inseriti dal traduttore possono inoltre restringere il testo.
   Si mantiene il testo su una riga e si elimina il ritaglio, senza forzare
   dimensioni diverse in base alla lingua. */
.site-header .nav {
  min-width: 0;
  gap: clamp(8px, 1.1vw, 18px);
}
.site-header .nav > a {
  display: inline-flex;
  flex: 0 0 auto;
  box-sizing: border-box;
  padding-left: 2px;
  padding-right: 2px;
  overflow: visible !important;
  clip-path: none !important;
  white-space: nowrap !important;
  word-break: normal !important;
  overflow-wrap: normal !important;
  line-height: 1.35 !important;
}
.site-header .nav > a *,
.site-header .nav > a font {
  display: inline !important;
  width: auto !important;
  max-width: none !important;
  min-width: 0 !important;
  box-sizing: content-box !important;
  overflow: visible !important;
  clip-path: none !important;
  font-family: var(--sans) !important;
  font-size: inherit !important;
  font-weight: 500 !important;
  letter-spacing: inherit !important;
  line-height: inherit !important;
  white-space: nowrap !important;
  word-break: normal !important;
  overflow-wrap: normal !important;
}
.site-header .nav > .nav-phone {
  min-width: max-content;
  width: max-content;
  flex: 0 0 auto;
  padding-left: 10px !important;
  padding-right: 10px !important;
  letter-spacing: .015em !important;
}
@media (min-width: 1081px) and (max-width: 1450px) {
  .site-header .header-inner { gap: clamp(10px, 1vw, 18px); }
  .site-header .nav { gap: clamp(7px, .65vw, 10px); }
  .site-header .nav > .nav-phone {
    letter-spacing: 0 !important;
    padding-left: 7px !important;
    padding-right: 7px !important;
  }
  /* Le larghezze fisse delle voci sono calcolate da app.js: qui non vanno
     imposte larghezze basate sul contenuto, altrimenti i link si spostano. */
}
@media (max-width: 1080px) {
  .site-header .nav > a {
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    box-sizing: border-box;
    padding-left: 0;
    padding-right: 0;
    letter-spacing: .06em !important;
  }
}

/* =====================================================================
   BLOCCO TIPOGRAFICO UNIVERSALE — vale per ogni lingua, presente o futura
   ---------------------------------------------------------------------
   Google Traduttore avvolge i testi tradotti in tag <font> (a volte
   annidati due o tre volte). Anche quando questi tag vengono svuotati
   dagli stili inline, restano elementi inline che generano un proprio
   box: è questo box che altera larghezza, interlinea, ritaglio e
   allineamento del testo, facendo sembrare i contenuti "rimpiccioliti"
   o diversi rispetto all'italiano.
   Con display:contents il tag NON genera alcun box: il testo si dispone
   esattamente come se non fosse mai stato avvolto, cioè identico
   all'italiano. Nessuna dimensione, nessun interlinea, nessun ritaglio
   può quindi cambiare al cambio lingua.
   ===================================================================== */
font,
font font,
font font font,
font font font font {
  display: contents !important;
}

/* Anche nel menu: il <font> non deve creare un box, così la larghezza
   misurata da app.js è quella reale del testo. */
.site-header .nav > a font,
.site-header .nav > a font font,
.site-header .nav > a * {
  display: contents !important;
  width: auto !important;
  min-width: 0 !important;
  max-width: none !important;
  overflow: visible !important;
  clip-path: none !important;
  font-family: var(--sans) !important;
  font-size: inherit !important;
  font-weight: inherit !important;
  letter-spacing: inherit !important;
  line-height: inherit !important;
  text-transform: inherit !important;
  white-space: nowrap !important;
}

/* Il corpo del documento conserva la dimensione base dell'italiano anche
   quando la pagina è tradotta (Google aggiunge .translated-ltr a <html>). */
html.translated-ltr body,
html.translated-rtl body {
  line-height: 1.75 !important;
}
/* Solo su desktop il corpo base e' 16.5px: su mobile il sito usa 16px e
   forzare 16.5px faceva crescere l'interlinea dei paragrafi. */
@media (min-width: 1081px) {
  html.translated-ltr body,
  html.translated-rtl body {
    font-size: 16.5px !important;
  }
}

/* Google impone al body position/top per il proprio banner: si neutralizza
   per non alterare il posizionamento dell'header fisso. */
html.translated-ltr body,
html.translated-rtl body {
  position: static !important;
  top: 0 !important;
  min-height: 0 !important;
}

/* ---------------------------------------------------------------------
   Il badge della lingua cambia larghezza da sola (le sigle IT/EN/DE e le
   bandiere hanno ingombri diversi): essendo l'ultimo elemento prima del
   telefono, allargandosi spostava TUTTO il menu di 1-2 px. Qui la sigla
   ha una larghezza minima fissa, così il menu parte sempre dallo stesso
   pixel in ogni lingua.
   --------------------------------------------------------------------- */
@media (min-width: 1081px) {
  .site-header .nav .lang-current {
    min-width: 26px;
    display: inline-block;
    text-align: center;
  }
  .site-header .nav .lang-switch {
    flex: 0 0 auto;
  }
}

/* =====================================================================
   CAMBIO LINGUA SENZA MOVIMENTI
   ---------------------------------------------------------------------
   1) Dopo un eventuale ricaricamento per cambio lingua, le animazioni
      d'ingresso vengono disattivate: la pagina appare già "ferma",
      nella stessa posizione di scorrimento.
   2) Il testo verticale "Scorri" e la linea di scorrimento hanno una
      geometria FISSA: qualunque sia la parola tradotta (Scroll, Scrollen,
      Rouleau, Rol, Rulla...) il blocco resta esattamente dove è in
      italiano e con lo stesso corpo, senza allungarsi o accorciarsi.
   ===================================================================== */
html.fdc-no-anim .anim,
html.fdc-no-anim .reveal,
html.fdc-no-anim .anim *,
html.fdc-no-anim .reveal * {
  opacity: 1 !important;
  transform: none !important;
  animation: none !important;
  transition: none !important;
  visibility: visible !important;
}

.hero-vertical {
  height: 66px !important;
  width: 66px !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  overflow: visible !important;
  white-space: nowrap !important;
  font-size: .62rem !important;
  letter-spacing: .5em !important;
  line-height: 1 !important;
}
.hero-vertical font,
.hero-vertical * {
  font-size: inherit !important;
  letter-spacing: inherit !important;
  line-height: inherit !important;
  white-space: nowrap !important;
  display: contents !important;
}
.hero-scroll {
  height: 64px !important;
  width: 1px !important;
}

/* La dimensione base del documento non deve cambiare con la lingua:
   tutte le misure in rem restano identiche all'italiano. */
html.translated-ltr,
html.translated-rtl {
  font-size: 100% !important;
}

/* =====================================================================
   PRENOTAZIONE � ORARI, TASSE E CONDIZIONI
   ===================================================================== */
.booking-conditions-list{list-style:none;margin:0;padding:0;display:grid;gap:14px}
.booking-conditions-list li{
  display:grid;grid-template-columns:110px 1fr;gap:12px;align-items:start;
  padding-bottom:14px;border-bottom:1px solid var(--line);
}
.booking-conditions-list li:last-child{padding-bottom:0;border-bottom:0}
.booking-conditions-list strong{
  font-family:var(--sans);font-size:.66rem;font-weight:600;letter-spacing:.14em;
  text-transform:uppercase;color:var(--gold-ink);padding-top:3px;
}
.booking-conditions-list span{font-size:.86rem;line-height:1.65;color:var(--ink-soft);overflow-wrap:anywhere}
.info-secondary{display:block;margin-top:6px;font-family:var(--sans);font-size:.92rem;line-height:1.4}
@media(max-width:600px){
  .booking-conditions-list li{grid-template-columns:1fr;gap:4px}
}

/* Logo testuale di ripiego (quando il cliente non ha ancora caricato un logo).
   Usa --logo-ink come il logo SVG: chiaro sopra l'hero, scuro a header compatto.
   Il nome può essere lungo: va a capo invece di allargare l'header. */
.brand .logo-text{
  display:inline-block;font-family:var(--serif);font-size:clamp(1.4rem,2.2vw,1.9rem);
  line-height:1.12;letter-spacing:.01em;color:var(--logo-ink,var(--ink));
  max-width:min(52vw,360px);overflow-wrap:break-word;
}
.is-scrolled .brand .logo-text{font-size:clamp(1.25rem,1.9vw,1.6rem)}
@media(max-width:600px){
  .site-header .brand .logo-text{font-size:1.3rem;max-width:54vw}
}

/* =====================================================================
   FDC v9 — PWA e pianificatore di itinerari (rispetta le variabili tema)
   ===================================================================== */
.trip-planner{margin:clamp(28px,5vw,68px) 0;padding:clamp(22px,4vw,42px);border:1px solid var(--line);border-radius:var(--radius,18px);background:var(--surface,var(--paper-2));color:var(--ink);box-shadow:0 16px 44px rgba(0,0,0,.06)}
.trip-planner-intro{max-width:700px}.trip-planner-intro h3{margin:8px 0 10px;font:500 clamp(1.7rem,3.5vw,2.6rem)/1.12 var(--serif);color:var(--ink)}
.trip-planner-intro p,.trip-note{color:var(--ink-soft);line-height:1.65;font-size:.92rem}
.trip-planner-controls{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr) auto;align-items:end;gap:14px;margin-top:24px}
.trip-planner-controls label{display:grid;gap:7px;font-size:.78rem;font-weight:600;color:var(--ink)}
.trip-planner-controls select{width:100%;min-height:48px;padding:0 13px;border:1px solid var(--line);border-radius:10px;background:var(--paper);color:var(--ink);font:inherit;font-size:.9rem}
.trip-planner-controls .btn{min-height:48px;white-space:normal}
.trip-note{font-size:.75rem;margin:18px 0 0}
.trip-results{margin-top:26px;padding-top:22px;border-top:1px solid var(--line)}.trip-results[hidden]{display:none!important}
.trip-results-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:18px}.trip-results-head h4{margin:6px 0;font:500 1.5rem/1.2 var(--serif);color:var(--ink)}.trip-results-head p{margin:0;color:var(--ink-soft);font-size:.84rem}
.trip-share{border:1px solid var(--line);border-radius:999px;background:transparent;color:var(--ink);padding:10px 14px;font:600 .78rem var(--sans);cursor:pointer}.trip-share:hover{border-color:var(--gold)}
.trip-stop-list{list-style:none;margin:0;padding:0;display:grid;gap:12px}.trip-stop-list li{display:grid;grid-template-columns:36px minmax(0,1fr);gap:13px;padding:15px;border:1px solid var(--line);border-radius:12px;background:var(--paper)}.trip-stop-number{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:var(--forest);color:#fff;font-size:.8rem;font-weight:700}.trip-stop-list h5{margin:2px 0 6px;color:var(--ink);font-size:1rem}.trip-stop-list p{margin:0 0 8px;color:var(--ink-soft);font-size:.84rem;line-height:1.6}.trip-stop-list a{font-size:.82rem;font-weight:650;color:var(--gold-ink,var(--gold));text-underline-offset:3px}.trip-footnote{font-size:.75rem;color:var(--ink-soft);line-height:1.5;margin:14px 0 0}
.pwa-install{position:fixed;z-index:460;left:50%;bottom:max(16px,env(safe-area-inset-bottom));transform:translateX(-50%);display:flex;align-items:center;gap:12px;width:min(560px,calc(100vw - 28px));padding:12px 14px;border:1px solid var(--line);border-radius:15px;background:var(--paper);color:var(--ink);box-shadow:0 12px 38px rgba(0,0,0,.2)}.pwa-install[hidden],.network-status[hidden]{display:none!important}.pwa-install>div{display:grid;gap:3px;flex:1;min-width:0}.pwa-install strong{font-size:.86rem}.pwa-install span{font-size:.75rem;color:var(--ink-soft)}.pwa-install button{border:0;border-radius:9px;background:var(--forest);color:#fff;padding:10px 13px;font:600 .8rem var(--sans);cursor:pointer}.pwa-install #pwaInstallClose{padding:7px 10px;background:transparent;color:var(--ink);font-size:1.25rem}
.network-status{position:fixed;z-index:470;left:50%;bottom:max(18px,env(safe-area-inset-bottom));transform:translateX(-50%);width:max-content;max-width:calc(100vw - 28px);padding:12px 16px;border-radius:12px;background:var(--forest);color:#fff;box-shadow:0 10px 30px rgba(0,0,0,.2);font:500 .82rem/1.45 var(--sans)}
@media(max-width:760px){.trip-planner-controls{grid-template-columns:1fr}.trip-planner-controls .btn{width:100%}.trip-results-head{align-items:flex-start;flex-direction:column}.trip-share{width:100%}.trip-planner{border-radius:14px}.pwa-install{gap:8px;padding:10px}.pwa-install span{font-size:.7rem}}
@media(prefers-reduced-motion:reduce){.trip-planner *{scroll-behavior:auto!important;transition:none!important;animation:none!important}}



/* FDC v10 — navigazione mobile rapida e installazione PWA */
.mobile-quick-nav{display:none}
@media(max-width:760px){
  body{padding-bottom:calc(66px + env(safe-area-inset-bottom))}
  .mobile-quick-nav{position:fixed;z-index:410;left:0;right:0;bottom:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:2px;padding:7px 8px calc(7px + env(safe-area-inset-bottom));border-top:1px solid var(--line);background:color-mix(in srgb,var(--paper) 94%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
  .mobile-quick-nav a{display:flex;min-width:0;min-height:48px;flex-direction:column;align-items:center;justify-content:center;gap:3px;border-radius:10px;color:var(--ink);text-decoration:none;font:600 .68rem/1.15 var(--sans);-webkit-tap-highlight-color:transparent}
  .mobile-quick-nav a span:first-child{font-size:1.15rem;line-height:1.1;color:var(--gold)}
  .mobile-quick-nav a:focus-visible{outline:2px solid var(--gold);outline-offset:-2px}
  .mobile-quick-nav a:active{background:var(--paper-2)}
  .fdc-concierge{bottom:calc(76px + env(safe-area-inset-bottom))}
  .concierge-panel{bottom:52px;max-height:calc(100dvh - 150px - env(safe-area-inset-bottom))}
  .pwa-install{bottom:calc(76px + env(safe-area-inset-bottom));}
  .network-status{bottom:calc(76px + env(safe-area-inset-bottom));}
}
@media(min-width:761px){.mobile-quick-nav{display:none!important}}

/* V16 — Icona telefono esplicita e indipendente dai display SVG globali.
   Il glifo è generato da CSS: i reset tipografici del sito non possono
   nascondere l'icona SVG, perché l'icona è resa dal pseudo-elemento. */
.site-header #nav > a.nav-phone.nav-phone-icon,
.site-header #nav > a.nav-phone.nav-phone-icon:link,
.site-header #nav > a.nav-phone.nav-phone-icon:visited {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  box-sizing: border-box !important;
  position: relative !important;
  visibility: visible !important;
  opacity: 1 !important;
  flex: 0 0 42px !important;
  width: 42px !important;
  min-width: 42px !important;
  max-width: 42px !important;
  height: 42px !important;
  min-height: 42px !important;
  max-height: 42px !important;
  padding: 0 !important;
  margin: 0 0 0 8px !important;
  border: 1px solid currentColor !important;
  border-radius: 50% !important;
  overflow: visible !important;
  color: var(--nav-ink, #173a2c) !important;
  background: transparent !important;
  font-size: 0 !important;
  line-height: 1 !important;
  letter-spacing: 0 !important;
  text-indent: 0 !important;
  z-index: 5 !important;
  text-decoration: none !important;
}
.site-header #nav > a.nav-phone.nav-phone-icon::before {
  content: "☎" !important;
  display: block !important;
  visibility: visible !important;
  opacity: 1 !important;
  position: static !important;
  width: auto !important;
  height: auto !important;
  min-width: 0 !important;
  max-width: none !important;
  margin: 0 !important;
  padding: 0 !important;
  color: currentColor !important;
  font-family: "Segoe UI Symbol", "Arial Unicode MS", sans-serif !important;
  font-size: 23px !important;
  font-weight: 400 !important;
  line-height: 1 !important;
  letter-spacing: 0 !important;
  text-indent: 0 !important;
  transform: none !important;
  background: none !important;
  border: 0 !important;
}
.site-header #nav > a.nav-phone.nav-phone-icon svg {
  display: none !important;
}
.site-header #nav > a.nav-phone.nav-phone-icon::after {
  content: none !important;
  display: none !important;
}
.site-header #nav > a.nav-phone.nav-phone-icon:hover,
.site-header #nav > a.nav-phone.nav-phone-icon:focus-visible {
  color: var(--gold-btn, #bd8b3d) !important;
  background: transparent !important;
}
.site-header #nav > a.nav-phone.nav-phone-icon:focus-visible {
  outline: 2px solid var(--gold-2, #bd8b3d) !important;
  outline-offset: 4px !important;
}
@media (max-width: 1080px) {
  .site-header #nav > a.nav-phone.nav-phone-icon {
    display: inline-flex !important;
    flex: 0 0 42px !important;
    width: 42px !important;
    min-width: 42px !important;
    max-width: 42px !important;
    height: 42px !important;
    min-height: 42px !important;
    max-height: 42px !important;
    margin-inline-start: 8px !important;
  }
}


/* FDC V22 — Itinerario interattivo in tema */
.trip-planner{overflow:hidden;position:relative}
.trip-planner:before{content:"";position:absolute;inset:0 auto 0 0;width:4px;background:var(--forest);opacity:.9}
.trip-planner-topline{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:18px}
.trip-planner-kicker{display:inline-flex;align-items:center;gap:8px;color:var(--gold-ink,var(--gold));font:700 .7rem/1.4 var(--sans);letter-spacing:.12em;text-transform:uppercase}
.trip-planner-kicker>span{display:grid;place-items:center;width:23px;height:23px;border:1px solid var(--line);border-radius:50%;font-size:.85rem}
.trip-data-promise{display:inline-flex;align-items:center;gap:7px;padding:7px 10px;border:1px solid var(--line);border-radius:999px;color:var(--ink-soft);font:500 .72rem/1.2 var(--sans);background:var(--paper)}
.trip-live-dot{width:7px;height:7px;background:var(--forest);border-radius:50%;box-shadow:0 0 0 3px color-mix(in srgb,var(--forest) 13%,transparent)}
.trip-planner-intro{max-width:760px}.trip-planner-intro h3{margin:0 0 10px}.trip-planner-intro p{max-width:690px;margin:0}
.trip-planner-builder{margin-top:27px;padding:clamp(17px,3vw,25px);border:1px solid var(--line);border-radius:15px;background:color-mix(in srgb,var(--paper) 62%,transparent)}
.trip-interests{min-width:0;margin:0;padding:0;border:0}
.trip-interests legend{display:flex;align-items:center;gap:10px;margin-bottom:14px;padding:0;color:var(--ink);font:600 .91rem/1.4 var(--sans)}
.trip-step{display:inline-grid;place-items:center;min-width:28px;height:25px;padding:0 5px;border:1px solid var(--line);border-radius:7px;color:var(--gold-ink,var(--gold));font:700 .65rem/1 var(--sans);letter-spacing:.06em}
.trip-interest-options{display:flex;align-items:stretch;gap:9px;flex-wrap:wrap}
.trip-interest-option{position:relative;display:inline-flex;cursor:pointer;min-width:0}
.trip-interest-option input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.trip-interest-option>span{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:42px;padding:9px 13px;border:1px solid var(--line);border-radius:999px;background:var(--paper);color:var(--ink-soft);font:600 .77rem/1.3 var(--sans);transition:background .18s,border-color .18s,color .18s,transform .18s}
.trip-interest-option>span>span{color:var(--gold-ink,var(--gold));font-size:1rem;line-height:1}
.trip-interest-option.is-active>span{border-color:var(--forest);background:var(--forest);color:#fff;box-shadow:0 4px 12px rgba(24,58,43,.12)}
.trip-interest-option.is-active>span>span{color:#fff}
.trip-interest-option:focus-within>span{outline:3px solid color-mix(in srgb,var(--gold) 48%,transparent);outline-offset:2px}
.trip-interest-option:hover>span{transform:translateY(-1px);border-color:var(--gold)}
.trip-field-help{margin:10px 0 0;color:var(--ink-soft);font-size:.73rem;line-height:1.5}
.trip-planner-fields{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(170px,.8fr) minmax(190px,.9fr);gap:13px;margin-top:24px}
.trip-field{display:grid;gap:9px;min-width:0;color:var(--ink);font:600 .77rem/1.4 var(--sans)}
.trip-field>span:first-child{display:flex;align-items:center;gap:8px;min-height:25px}
.trip-field input,.trip-field select,.trip-field textarea{box-sizing:border-box;width:100%;min-width:0;height:48px;padding:0 13px;border:1px solid var(--line);border-radius:10px;background:var(--paper);color:var(--ink);font:500 .85rem/1.3 var(--sans);box-shadow:0 2px 5px rgba(20,35,25,.025);transition:border-color .18s,box-shadow .18s}
.trip-field input::placeholder,.trip-field textarea::placeholder{color:var(--ink-soft);opacity:.82}
.trip-field input:focus,.trip-field select:focus,.trip-field textarea:focus{outline:0;border-color:var(--gold);box-shadow:0 0 0 3px color-mix(in srgb,var(--gold) 18%,transparent)}
.trip-input-wrap{position:relative;display:block!important;min-height:48px!important}
.trip-input-wrap>svg{position:absolute;z-index:1;top:50%;left:13px;transform:translateY(-50%);width:18px;height:18px;fill:none;stroke:var(--gold-ink,var(--gold));stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}
.trip-input-wrap input,.trip-input-wrap textarea{padding-left:40px}.trip-input-textarea>svg{top:15px;transform:none}.trip-input-wrap textarea{display:block;min-height:92px;height:auto;padding-top:13px;padding-bottom:13px;resize:vertical;line-height:1.55}
.trip-builder-actions{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:21px}
.trip-progress{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;margin-top:14px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--paper-2)}
.trip-progress[hidden]{display:none}
.trip-progress-track{height:8px;border-radius:999px;background:color-mix(in srgb,var(--forest) 12%,transparent);overflow:hidden}
.trip-progress-bar{height:100%;width:0%;border-radius:999px;background:linear-gradient(90deg,var(--forest),var(--gold));transition:width .25s ease}
.trip-progress-label{color:var(--ink-soft);font:600 .72rem/1.2 var(--sans);white-space:nowrap}
.trip-create-button{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:48px;padding-inline:19px;border-radius:999px;box-shadow:0 7px 18px rgba(25,60,44,.14)}
.trip-create-button>span{font-size:1rem}
.trip-reset-button{min-height:42px;padding:9px 11px;border:1px solid transparent;border-radius:9px;background:transparent;color:var(--ink-soft);font:600 .77rem/1.3 var(--sans);cursor:pointer;text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:4px}
.trip-reset-button:hover,.trip-reset-button:focus-visible{color:var(--ink);border-color:var(--line);outline:none}
.trip-note{display:flex;align-items:flex-start;gap:8px;margin:16px 2px 0}.trip-note>span{color:var(--gold-ink,var(--gold));font-size:1rem}
.trip-results{margin-top:29px;padding-top:26px;border-top:1px solid var(--line)}
.trip-results-head{align-items:flex-start}.trip-results-head>div:first-child{min-width:0;flex:1}
.trip-results-head h4{font-size:clamp(1.45rem,3vw,1.85rem)}
.trip-result-badges{display:flex;align-items:center;justify-content:flex-end;gap:7px;flex-wrap:wrap}
.trip-stat-pill{display:inline-flex;align-items:baseline;gap:5px;padding:8px 11px;border:1px solid var(--line);border-radius:999px;background:var(--paper);color:var(--ink-soft);font:500 .7rem/1.2 var(--sans);white-space:nowrap}
.trip-stat-pill strong{color:var(--forest);font-size:.78rem}
.trip-result-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 17px}
.trip-action-button{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:39px;padding:8px 12px;border:1px solid var(--line);border-radius:999px;background:var(--paper);color:var(--ink);font:600 .74rem/1.2 var(--sans);cursor:pointer;transition:background .18s,border-color .18s,color .18s}
.trip-action-button>span{color:var(--gold-ink,var(--gold));font-size:.9rem}
.trip-action-button:hover,.trip-action-button:focus-visible{border-color:var(--gold);outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--gold) 14%,transparent)}
.trip-action-primary{border-color:var(--forest);background:var(--forest);color:#fff}.trip-action-primary>span{color:#fff}.trip-action-primary:hover,.trip-action-primary:focus-visible{background:var(--ink);color:#fff}
.trip-action-subtle{margin-left:auto;background:transparent}
.trip-stop-list{gap:10px}
.trip-stop-card{position:relative;grid-template-columns:34px 128px minmax(0,1fr)!important;align-items:start;gap:16px!important;padding:16px!important;border:1px solid var(--line)!important;border-radius:14px!important;background:var(--paper)!important;box-shadow:0 4px 15px rgba(20,35,25,.025)}
.trip-stop-number{margin-top:1px}
.trip-stop-media{width:128px;height:128px;margin:0;overflow:hidden;border-radius:14px;background:transparent}
.trip-stop-media img{display:block;width:100%;height:100%;object-fit:cover;background:transparent}
.trip-stop-media[hidden]{display:none!important}
.trip-stop-media img{display:block;width:100%;height:100%;object-fit:contain;background:var(--paper-2)}
.trip-stop-media-external{display:grid;place-items:center;background:linear-gradient(145deg,var(--paper-2),#e5eadf);color:var(--forest);font:500 2rem/1 var(--sans)}
.trip-nearby-divider{display:block;margin:18px 0 6px;padding:12px 2px 8px;border-top:1px solid var(--line);color:var(--forest);font:600 .92rem/1.3 var(--sans);list-style:none}
.trip-nearby-divider small{display:block;margin-top:4px;color:var(--ink-soft);font:400 .72rem/1.5 var(--sans)}
.trip-stop-origin{margin:0 0 7px!important;color:var(--gold-ink,var(--gold))!important;font:700 .63rem/1.4 var(--sans)!important;letter-spacing:.045em;text-transform:uppercase}
.trip-data-attribution{margin:15px 0 0;padding:10px 12px;border:1px solid var(--line);border-radius:9px;color:var(--ink-soft);font:500 .68rem/1.5 var(--sans)}
.trip-data-attribution a{color:var(--forest);text-decoration:underline;text-underline-offset:2px}

.trip-stop-body{min-width:0}
.trip-stop-day{margin:0 0 5px!important;color:var(--gold-ink,var(--gold))!important;font:700 .66rem/1.3 var(--sans)!important;letter-spacing:.08em;text-transform:uppercase}
.trip-stop-list h5{font-size:1.05rem;line-height:1.3}
.trip-stop-description{max-width:850px}
.trip-stop-fit{margin:8px 0 0!important;color:var(--ink-soft)!important;font-size:.74rem!important;line-height:1.45!important;font-style:italic}
.trip-stop-actions{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:11px}
.trip-stop-map{display:inline-flex;align-items:center;gap:6px;color:var(--forest)!important;font:700 .75rem/1.3 var(--sans)!important;text-decoration:none!important}
.trip-stop-map:after{content:'↗';color:var(--gold-ink,var(--gold))}
.trip-stop-remove{padding:5px 0;border:0;background:transparent;color:var(--ink-soft);font:600 .72rem/1.3 var(--sans);cursor:pointer;text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:3px}
.trip-stop-remove:hover,.trip-stop-remove:focus-visible{color:#9b3e32;outline:none}
.trip-empty-state{display:grid;justify-items:center;gap:7px;padding:28px 18px;border:1px dashed var(--line);border-radius:12px;text-align:center;background:var(--paper)}
.trip-empty-state[hidden]{display:none!important}.trip-empty-state>span{display:grid;place-items:center;width:38px;height:38px;border-radius:50%;background:var(--paper-2);color:var(--gold);font-size:1.5rem}
.trip-empty-state strong{color:var(--ink);font:600 .9rem var(--sans)}.trip-empty-state p{margin:0;color:var(--ink-soft);font-size:.82rem}
.trip-footnote{display:flex;align-items:flex-start;gap:8px;margin-top:17px}.trip-footnote>span{color:var(--gold-ink,var(--gold))}
@media(max-width:900px){.trip-planner-fields{grid-template-columns:1fr 1fr}.trip-field-search{grid-column:1/-1}.trip-results-head{flex-wrap:wrap}.trip-result-badges{justify-content:flex-start}}
@media(max-width:600px){.trip-planner-topline{align-items:flex-start;flex-direction:column;gap:8px}.trip-planner-builder{padding:15px;border-radius:12px}.trip-interest-options{display:grid;grid-template-columns:1fr 1fr;gap:7px}.trip-interest-option>span{justify-content:flex-start;width:100%;min-height:45px;padding:8px 10px;border-radius:10px;font-size:.72rem}.trip-planner-fields{grid-template-columns:1fr;gap:15px}.trip-field-search{grid-column:auto}.trip-builder-actions{align-items:stretch;flex-direction:column}.trip-create-button{width:100%}.trip-reset-button{align-self:center}.trip-results-head{flex-direction:column}.trip-result-badges{justify-content:flex-start}.trip-result-toolbar{display:grid;grid-template-columns:1fr 1fr}.trip-action-button{min-height:42px;padding:9px 7px;font-size:.7rem}.trip-action-subtle{margin-left:0}.trip-stop-card{grid-template-columns:30px minmax(0,1fr)!important;gap:10px!important;padding:13px!important}.trip-stop-media{grid-column:2;grid-row:1;width:100%;height:150px}.trip-stop-body{grid-column:2}.trip-stop-number{grid-column:1;grid-row:1}.trip-stop-actions{gap:12px}.trip-stop-map,.trip-stop-remove{font-size:.7rem!important}}
@media print{
  body.trip-print-mode *{visibility:hidden!important}
  body.trip-print-mode .trip-results,body.trip-print-mode .trip-results *{visibility:visible!important}
  body.trip-print-mode .trip-results{display:block!important;position:absolute!important;left:0!important;top:0!important;width:100%!important;margin:0!important;padding:0!important;border:0!important;box-shadow:none!important;background:#fff!important;color:#111!important}
  body.trip-print-mode .trip-result-toolbar,body.trip-print-mode .trip-stop-remove,body.trip-print-mode .trip-stop-map:after{display:none!important}
  body.trip-print-mode .trip-stop-card{break-inside:avoid;background:#fff!important;border:1px solid #ccc!important;box-shadow:none!important}
  body.trip-print-mode .trip-stop-list h5,body.trip-print-mode .trip-stop-description,body.trip-print-mode .trip-results-head h4,body.trip-print-mode .trip-results-head p{color:#111!important}
}
@media(prefers-reduced-motion:reduce){.trip-interest-option>span,.trip-action-button{transition:none!important}}

/* Header desktop: gutter stabile a destra, limitato al menu orizzontale.
   Il menu laterale tablet/mobile mantiene le proprie regole originali. */
@media (min-width: 1081px) {
  .site-header .header-inner > .nav { margin-right: clamp(18px, 1.6vw, 26px); }
}


/* Concierge compact: azioni discrete, leggibili e senza pulsantoni. */
.concierge-header{padding:12px 14px;gap:9px}
.concierge-header button{display:grid;place-items:center;flex:0 0 30px;width:30px;height:30px;min-width:30px;padding:0;font-size:1.15rem;line-height:1}
.concierge-header .concierge-reset{font-size:.95rem}
.concierge-header small[data-concierge-status]{font-size:.66rem;line-height:1.25;max-width:230px;white-space:normal}
.concierge-prompts{display:flex;flex-wrap:nowrap;gap:5px;margin-top:3px;padding:1px 0 4px;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:thin}
.concierge-prompts button{flex:0 0 auto;min-height:27px;padding:5px 8px;border-radius:7px;font-size:.68rem;line-height:1.2;white-space:nowrap}
.concierge-form{gap:6px;padding:9px}
.concierge-form input{padding:9px 10px;font-size:.82rem}
.concierge-form button{flex:0 0 36px;width:36px;height:36px;min-height:36px;font-size:1.15rem;border-radius:7px}
.concierge-disclaimer{padding:0 10px 9px;font-size:.62rem;line-height:1.35}
.concierge-message{padding:10px 12px;font-size:.84rem;line-height:1.52}
@media(max-width:520px){
  .concierge-header{padding:11px 12px}
  .concierge-header button{flex-basis:32px;width:32px;height:32px;min-width:32px}
  .concierge-form{padding:8px}
  .concierge-form button{flex-basis:38px;width:38px;height:38px;min-height:38px}
  .concierge-prompts{gap:4px}
  .concierge-prompts button{padding:6px 8px;min-height:30px}
}


/* Concierge layout hardening: prevent flex compression, text/chip collisions,
   and keep dynamic conversation messages outside the translated-page geometry. */
#fdcConcierge,
#fdcConcierge * { box-sizing: border-box; }
#fdcConcierge .concierge-panel {
  display: flex;
  flex-direction: column;
  min-width: 0;
  min-height: 0;
  isolation: isolate;
}
#fdcConcierge .concierge-header {
  flex: 0 0 auto;
  min-width: 0;
  align-items: center;
}
#fdcConcierge .concierge-header > div { min-width: 0; overflow-wrap: anywhere; }
#fdcConcierge .concierge-header button { position: relative; flex-shrink: 0; }
#fdcConcierge .concierge-log {
  flex: 1 1 auto;
  min-width: 0;
  min-height: 0;
  display: flex;
  flex-direction: column;
  gap: 10px;
  overflow-x: hidden;
  overflow-y: auto;
  align-items: stretch;
}
#fdcConcierge .concierge-message {
  position: relative;
  display: block;
  flex: 0 0 auto;
  width: fit-content;
  min-width: 0;
  max-width: 92%;
  white-space: normal;
  overflow-wrap: anywhere;
  word-break: normal;
}
#fdcConcierge .concierge-message p {
  position: static;
  display: block;
  margin: 0;
  line-height: 1.5;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}
#fdcConcierge .concierge-prompts {
  position: relative;
  z-index: 0;
  display: flex;
  flex: 0 0 auto;
  align-self: stretch;
  flex-wrap: wrap;
  gap: 6px;
  min-width: 0;
  max-width: 100%;
  margin: 2px 0 4px;
  padding: 0 0 2px;
  overflow: visible;
}
#fdcConcierge .concierge-prompts[hidden] { display: none !important; }
#fdcConcierge .concierge-prompts button {
  position: static;
  flex: 0 1 auto;
  min-width: 0;
  min-height: 28px;
  max-width: 100%;
  padding: 5px 9px;
  line-height: 1.25;
  white-space: normal;
  overflow-wrap: anywhere;
}
#fdcConcierge .concierge-form {
  position: relative;
  z-index: 1;
  display: flex;
  flex: 0 0 auto;
  align-items: center;
  min-width: 0;
}
#fdcConcierge .concierge-form input { min-width: 0; flex: 1 1 auto; }
#fdcConcierge .concierge-form button { position: static; flex: 0 0 38px; }
#fdcConcierge .concierge-disclaimer {
  position: relative;
  z-index: 1;
  display: block;
  flex: 0 0 auto;
  margin: 0;
  white-space: normal;
  overflow-wrap: anywhere;
}
@media (max-width: 520px) {
  #fdcConcierge .concierge-panel { max-height: calc(100dvh - 76px - env(safe-area-inset-top)); }
  #fdcConcierge .concierge-log { padding: 12px; }
  #fdcConcierge .concierge-prompts button { min-height: 28px; }
}


/* FDC v11 — intestazione itinerario stabile e riepilogo compatto.
   Su desktop separa testo e statistiche; su mobile conserva il flusso a colonna. */
@media screen {
  .trip-results-head {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) minmax(250px, 360px);
    align-items: start !important;
    column-gap: clamp(16px, 2.5vw, 28px) !important;
    row-gap: 12px !important;
    width: 100%;
  }
  .trip-results-head > div:first-child {
    display: block;
    min-width: 0 !important;
    width: 100%;
    max-width: 100%;
  }
  .trip-results-head [data-trip-summary] {
    display: block;
    width: 100%;
    max-width: 66ch;
    margin: 7px 0 0;
    line-height: 1.55;
    white-space: normal;
    overflow-wrap: anywhere;
    word-break: normal;
  }
  .trip-result-badges {
    display: flex !important;
    min-width: 0;
    max-width: 360px;
    justify-content: flex-end !important;
    align-content: flex-start;
    align-items: flex-start;
    flex-wrap: wrap;
    gap: 7px;
  }
  .trip-fallback-note {
    display: block;
    box-sizing: border-box;
    width: 100%;
    max-width: 66ch;
    margin: 12px 0 0 !important;
    padding: 10px 13px;
    border-left: 3px solid var(--gold-ink, var(--gold));
    border-radius: 0 9px 9px 0;
    background: color-mix(in srgb, var(--paper) 78%, var(--gold) 7%);
    color: var(--ink-soft);
    font: 500 .76rem/1.5 var(--sans);
    white-space: normal;
    overflow-wrap: anywhere;
  }
  @media (max-width: 760px) {
    .trip-results-head {
      grid-template-columns: minmax(0, 1fr);
      row-gap: 12px;
    }
    .trip-result-badges {
      max-width: none;
      justify-content: flex-start !important;
    }
    .trip-results-head [data-trip-summary], .trip-fallback-note {
      max-width: none;
    }
  }
}


/* FDC 2.11 — sezione luoghi esterni separata dalla lista delle tappe pubblicate. */
.trip-nearby-section{clear:both;display:block;width:100%;min-width:0;margin:24px 0 0;padding:0}
.trip-nearby-header{display:flex;align-items:center;justify-content:flex-start;gap:12px;min-width:0;margin:0 0 13px;padding:0 0 11px;border-bottom:1px solid var(--line)}
.trip-nearby-header>div{min-width:0}
.trip-nearby-header strong{display:block;margin:0;color:var(--forest);font:600 .98rem/1.3 var(--sans);overflow-wrap:normal;word-break:normal}
.trip-nearby-header small{display:block;margin-top:4px;color:var(--ink-soft);font:400 .72rem/1.45 var(--sans);overflow-wrap:normal;word-break:normal}
.trip-nearby-list{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch;gap:12px!important;width:100%;min-width:0}
.trip-nearby-list>li{width:100%;min-width:0;min-height:100%;box-sizing:border-box}
.trip-nearby-list .trip-stop-body{min-width:0;overflow-wrap:anywhere}
.trip-nearby-list .trip-stop-body h5{overflow-wrap:anywhere;word-break:normal}
.trip-nearby-list .trip-stop-description,.trip-nearby-list .trip-stop-fit{overflow-wrap:anywhere;word-break:normal}
.trip-nearby-section+.trip-data-attribution{margin-top:12px}
@media(max-width:760px){.trip-nearby-list{grid-template-columns:minmax(0,1fr)!important}.trip-nearby-header{align-items:flex-start}}


/* FDC 2.12 — luoghi esterni in card ordinate con fotografie reali e crediti leggibili. */
.trip-stop-card-nearby{grid-template-columns:32px minmax(104px,124px) minmax(0,1fr)!important;align-items:start}
.trip-stop-card-nearby .trip-stop-media{display:flex;flex-direction:column;align-self:start;gap:5px;width:100%;height:auto;min-width:0;margin:0;overflow:visible;border-radius:0;background:transparent}
.trip-stop-card-nearby .trip-stop-media img{display:block;flex:0 0 auto;width:100%;height:104px;max-width:100%;object-fit:cover;object-position:center;border-radius:11px;background:var(--paper-2)}
.trip-stop-card-nearby .trip-photo-credit{display:block;margin:0;color:var(--ink-soft);font:500 .57rem/1.35 var(--sans);overflow-wrap:anywhere}
.trip-stop-card-nearby .trip-photo-credit a{color:var(--ink-soft);font:inherit;text-decoration:underline;text-underline-offset:2px}
.trip-stop-card-nearby .trip-stop-media-missing{display:flex;align-items:center;justify-content:center;min-height:90px;padding:8px;text-align:center;color:var(--ink-soft);font:500 .66rem/1.35 var(--sans);border:1px dashed var(--line);border-radius:11px;background:var(--paper-2)}
@media(max-width:760px){.trip-stop-card-nearby{grid-template-columns:30px minmax(0,1fr)!important}.trip-stop-card-nearby .trip-stop-media,.trip-stop-card-nearby .trip-stop-media-missing{grid-column:2;width:100%}.trip-stop-card-nearby .trip-stop-media img{height:180px}}


/* =====================================================================
   FDC MOBILE LAYOUT FIX — pagine legali e contenuti del sito
   Corregge le colonne intrinseche che su smartphone potevano allargare
   la pagina oltre il viewport (in particolare email e indirizzo privacy).
   ===================================================================== */
@media (max-width: 760px) {
  /* Evita che i figli di grid/flex impongano una larghezza minima involontaria. */
  .legal-page,
  .legal-page .container,
  .legal-layout,
  .legal-body,
  .legal-sec,
  .page-view,
  .page-content,
  .prose,
  .post-body,
  .contact-grid,
  .contact-info,
  .info-list,
  .booking-grid,
  .booking-form,
  .booking-side,
  .split,
  .dest,
  .dest-body,
  .svc,
  .room-grid,
  .room-card,
  .footer-grid,
  .footer-col {
    min-width: 0;
    max-width: 100%;
  }

  /* Privacy/Cookie: una sola colonna reale, senza larghezze minime nascoste. */
  .legal-layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 22px;
    width: 100%;
  }
  .legal-toc {
    position: static;
    width: 100%;
    min-width: 0;
    margin: 0 0 8px;
  }
  .legal-toc ol,
  .legal-toc li,
  .legal-toc a {
    max-width: 100%;
    min-width: 0;
    overflow-wrap: anywhere;
  }
  .legal-body {
    width: 100%;
    max-width: 100%;
  }
  .legal-sec {
    width: 100%;
    padding-block: 26px;
    overflow-wrap: anywhere;
  }
  .legal-sec > h2 {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 8px 12px;
    font-size: clamp(1.38rem, 5.8vw, 1.8rem);
    line-height: 1.14;
    overflow-wrap: anywhere;
  }
  .legal-sec > h2 .n {
    flex: 0 0 auto;
  }
  .legal-sec p,
  .legal-sec li,
  .legal-sec dd,
  .legal-sec dt,
  .legal-sec a {
    min-width: 0;
    overflow-wrap: anywhere;
    word-break: normal;
  }

  /* Le righe della scheda titolare diventano etichetta + valore su due righe. */
  .legal-card {
    width: 100%;
    min-width: 0;
    max-width: 100%;
    padding: 19px 17px;
    overflow: hidden;
  }
  .legal-card dl {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 4px 0;
    width: 100%;
    min-width: 0;
  }
  .legal-card dt {
    min-width: 0;
    margin-top: 12px;
    line-height: 1.35;
    overflow-wrap: anywhere;
  }
  .legal-card dt:first-child {
    margin-top: 0;
  }
  .legal-card dd {
    min-width: 0;
    max-width: 100%;
    margin: 0 0 5px;
    line-height: 1.4;
    overflow-wrap: anywhere;
    word-break: normal;
  }
  .legal-card dd a {
    display: inline;
    max-width: 100%;
    overflow-wrap: anywhere;
    word-break: break-word;
  }

  /* Le tabelle legali restano leggibili e scorrono dentro il proprio riquadro. */
  .legal-table-wrap {
    display: block;
    width: 100%;
    max-width: 100%;
    overflow-x: auto;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior-x: contain;
  }
  .legal-table {
    width: 100%;
    min-width: 520px;
  }

  /* Protezioni comuni per pagine, articoli, contatti e contenuti inseriti dal CMS. */
  .page-view .prose,
  .page-content .prose,
  .post-body.prose {
    width: 100%;
    max-width: 100%;
    min-width: 0;
  }
  .prose :where(p, li, blockquote, a, strong, em, code),
  .page-content :where(p, li, a, strong, em),
  .post-meta :where(a, span),
  .info-row :where(dt, dd, a, span),
  .footer-grid :where(p, li, a, span) {
    min-width: 0;
    overflow-wrap: anywhere;
    word-break: normal;
  }
  .post-grid {
    grid-template-columns: minmax(0, 1fr);
  }
  .post-grid > *,
  .contact-grid > *,
  .booking-grid > *,
  .split > *,
  .dest > *,
  .svc > *,
  .footer-grid > * {
    min-width: 0;
    max-width: 100%;
  }
}

@media (max-width: 420px) {
  .legal { padding-top: 34px; padding-bottom: 64px; }
  .legal-hero { padding-bottom: 38px; }
  .legal-hero h1 { font-size: clamp(2rem, 9vw, 2.6rem); line-height: 1.08; }
  .legal-card { padding: 17px 15px; }
  .legal-sec > h2 { gap: 7px 10px; }
  .legal-toc a { font-size: .88rem; line-height: 1.45; }
}


/* =====================================================================
   FDC MOBILE FIX 2 — tabelle Privacy/Cookie trasformate in schede verticali
   Su smartphone non chiediamo all'utente di scorrere una tabella larga:
   ogni riga diventa una scheda con etichetta e valore leggibili.
   ===================================================================== */
@media (max-width: 640px) {
  .legal-table-wrap {
    display: block;
    width: 100%;
    max-width: 100%;
    overflow: visible !important;
    margin: 0 0 1.35em;
  }
  .legal-table {
    display: block;
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    table-layout: fixed;
    font-size: .9rem;
  }
  .legal-table caption {
    display: block;
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
    margin: 0 0 10px;
    line-height: 1.45;
    overflow-wrap: anywhere;
  }
  .legal-table thead { display: none !important; }
  .legal-table tbody {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 11px;
    width: 100%;
    min-width: 0;
  }
  .legal-table tbody tr {
    display: block;
    width: 100%;
    min-width: 0;
    box-sizing: border-box;
    padding: 8px 14px;
    border: 1px solid var(--line);
    border-radius: 10px;
    background: var(--surface, #fff);
    box-shadow: 0 5px 18px rgba(25, 38, 30, .045);
  }
  .legal-table tbody td {
    display: grid;
    grid-template-columns: minmax(92px, 31%) minmax(0, 1fr);
    align-items: start;
    gap: 11px;
    width: 100%;
    min-width: 0;
    box-sizing: border-box;
    padding: 10px 0;
    border: 0;
    border-bottom: 1px solid var(--line);
    font-size: .88rem;
    line-height: 1.48;
    overflow-wrap: anywhere;
    word-break: normal;
  }
  .legal-table tbody td:last-child { border-bottom: 0; }
  .legal-table tbody td::before {
    content: attr(data-label);
    display: block;
    min-width: 0;
    color: var(--gold-ink, #8b672e);
    font: 600 .61rem/1.4 var(--sans, Arial, sans-serif);
    letter-spacing: .09em;
    text-transform: uppercase;
    overflow-wrap: anywhere;
  }
  .legal-table tbody td > * { min-width: 0; max-width: 100%; }
}

@media (max-width: 380px) {
  .legal-table tbody tr { padding: 7px 11px; }
  .legal-table tbody td {
    grid-template-columns: minmax(76px, 29%) minmax(0, 1fr);
    gap: 8px;
    font-size: .84rem;
  }
  .legal-table tbody td::before { font-size: .57rem; letter-spacing: .07em; }
}

/* =====================================================================
   FDC — TIPOGRAFIA UNICA PER I TESTI DESCRITTIVI PUBBLICI
   Regola condivisa per descrizioni, introduzioni e contenuti editoriali.
   Non modifica titoli, micro-etichette, pulsanti, citazioni speciali o testi legali.
   ===================================================================== */
:root {
  --description-font-family: var(--sans);
  --description-font-size: 16.5px;
  --description-line-height: 1.5;
}

/* Contenitori descrittivi principali: stessa base tipografica in ogni sezione. */
.hero-lead,
.rich-content,
.split-body .lead,
.sec-lead,
.tab-body,
.room-body,
.dest-body,
.page-content .prose,
.post-body.prose,
.modal-body #roomModalDescription {
  font-family: var(--description-font-family);
  font-size: var(--description-font-size);
  line-height: var(--description-line-height);
}

/* Normalizza anche la formattazione inline proveniente dall'editor WYSIWYG.
   La regola si applica ai paragrafi e agli elementi testuali interni, ma non
   ai titoli, alle etichette .micro, ai numeri decorativi o alle citazioni .prose. */
.hero-lead :where(p:not(.micro), li, p:not(.micro) *, li *),
.rich-content :where(p:not(.micro), li, p:not(.micro) *, li *),
.sec-lead :where(p:not(.micro), li, p:not(.micro) *, li *),
.tab-body :where(p:not(.micro), li, p:not(.micro) *, li *),
.room-body :where(p:not(.micro), li, p:not(.micro) *, li *),
.dest-body :where(p:not(.micro), li, p:not(.micro) *, li *),
.page-content .prose :where(p:not(.micro), li, p:not(.micro) *, li *),
.post-body.prose :where(p:not(.micro), li, p:not(.micro) *, li *),
.modal-body #roomModalDescription :where(p, li, p *, li *) {
  font-family: var(--description-font-family) !important;
  font-size: inherit !important;
  line-height: inherit !important;
}

/* Spaziatura coerente tra paragrafi e punti elenco, senza alterare i titoli. */
.hero-lead :where(p:not(.micro), li),
.rich-content :where(p:not(.micro), li),
.sec-lead :where(p:not(.micro), li),
.tab-body :where(p:not(.micro), li),
.room-body :where(p:not(.micro), li),
.dest-body :where(p:not(.micro), li),
.page-content .prose :where(p:not(.micro), li),
.post-body.prose :where(p:not(.micro), li),
.modal-body #roomModalDescription :where(p, li) {
  line-height: var(--description-line-height) !important;
}
