/* ============================================================
   Casa per Ferie San Luigi — Design system & componenti
   Palette istituzionale bordeaux · Spectral + Hanken Grotesk
   Implementazione del design Claude Design (statico, no build)
   ============================================================ */

:root {
  --brand:#6E1A2B; --brand-hover:#581421; --brand-press:#460F1A;
  --brand-dark:#37101A; --brand-deep:#280B12;
  --brand-tint:#F4E8EA; --brand-wash:#FBF1F2; --brand-soft:#C58A92; --brand-line:#E6CFD3;
  --paper:#FBF8F3; --surface:#FFFFFF; --sand:#F1E9DE; --sand-2:#EAE0D2;
  --line:#E7DECF; --line-soft:#EFE8DC;
  --ink:#241E1C; --ink-2:#564C47; --ink-3:#8B807A;
  --ok:#3F6B4F; --ok-tint:#E7F0E9; --warn:#9A6A24; --warn-tint:#F7EEDB;
  --font-display:'Spectral',Georgia,serif;
  --font-body:'Hanken Grotesk',system-ui,sans-serif;
  --r-sm:7px; --r-md:13px; --r-lg:20px; --r-xl:30px;
  --sh-sm:0 1px 2px rgba(55,16,26,.08), 0 1px 1px rgba(55,16,26,.05);
  --sh-md:0 14px 34px -16px rgba(55,16,26,.28);
  --sh-lg:0 34px 70px -28px rgba(55,16,26,.34);
  --maxw:1200px;
  --header-h:78px;
}

/* ---------- reset / base ---------- */
* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
html, body { margin:0; padding:0; }
body {
  font-family:var(--font-body);
  color:var(--ink);
  background:var(--surface);
  line-height:1.5;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
img { display:block; max-width:100%; }
a { color:inherit; }
button { font-family:var(--font-body); }
::selection { background:var(--brand); color:#fff; }
h1,h2,h3,h4 { margin:0; }
p { margin:0; }
.svg-ico { width:1em; height:1em; display:inline-block; vertical-align:-.125em; flex:none; }

/* ---------- reveal on scroll ---------- */
[data-reveal] { opacity:0; transform:translateY(22px); transition:opacity .7s cubic-bezier(.2,.7,.2,1), transform .7s cubic-bezier(.2,.7,.2,1); }
[data-reveal].in { opacity:1; transform:none; }
@media (prefers-reduced-motion: reduce) {
  [data-reveal] { opacity:1 !important; transform:none !important; transition:none !important; }
  html, * { scroll-behavior:auto !important; }
}
.lift { transition:transform .35s cubic-bezier(.2,.7,.2,1), box-shadow .35s cubic-bezier(.2,.7,.2,1); }
.lift:hover { transform:translateY(-6px); box-shadow:var(--sh-md); }

/* ---------- layout ---------- */
.container { max-width:var(--maxw); margin:0 auto; padding:0 24px; }
.section { padding:96px 0; }
.section--tint { background:var(--paper); }
.section--sand { background:var(--sand); }
.section-head { max-width:62ch; margin:0 0 44px; }
.section-head.center { margin-left:auto; margin-right:auto; text-align:center; }
.eyebrow {
  font-family:var(--font-display); font-size:13px; letter-spacing:.18em;
  text-transform:uppercase; color:var(--brand); margin-bottom:14px;
}
.section-head h2 {
  font-family:var(--font-display); font-weight:700; font-size:42px; line-height:1.05;
  letter-spacing:-.02em; color:var(--ink); margin:0;
}
.section-head p { font-size:17px; color:var(--ink-2); line-height:1.6; margin:14px 0 0; }
.lead { font-size:19px; color:var(--ink-2); line-height:1.5; }

/* ---------- buttons ---------- */
.btn {
  display:inline-flex; align-items:center; justify-content:center; gap:8px;
  font-family:var(--font-body); font-weight:600; font-size:14px;
  padding:12px 22px; border-radius:999px; border:none; cursor:pointer;
  text-decoration:none; transition:background .2s, color .2s, border-color .2s, transform .15s;
}
.btn--primary { background:var(--brand); color:#fff; }
.btn--primary:hover { background:var(--brand-hover); }
.btn--primary:active { background:var(--brand-press); }
.btn--ghost { background:transparent; color:var(--brand); border:1.5px solid var(--brand); }
.btn--ghost:hover { background:var(--brand-tint); }
.btn--light { background:#fff; color:var(--brand); }
.btn--light:hover { background:var(--brand-tint); }
.btn[disabled] { background:var(--brand-soft); color:#fff; cursor:not-allowed; }
.btn--block { width:100%; }
.btn--lg { font-size:15px; padding:14px 28px; }
.link-arrow {
  display:inline-flex; align-items:center; gap:6px; font-weight:600; font-size:15px;
  color:var(--brand); text-decoration:none; cursor:pointer;
}
.link-arrow:hover { gap:9px; }

/* ---------- language switcher ---------- */
.lang { display:inline-flex; gap:2px; background:var(--sand); border-radius:999px; padding:3px; }
.lang button {
  font-weight:500; font-size:12px; padding:5px 11px; border-radius:999px;
  color:var(--ink-3); background:transparent; border:none; cursor:pointer; line-height:1;
}
.lang button.active { font-weight:600; background:#fff; color:var(--brand); box-shadow:var(--sh-sm); }

/* ---------- header / nav ---------- */
.site-header {
  position:sticky; top:0; z-index:50;
  display:flex; align-items:center; justify-content:space-between;
  padding:14px 40px; background:rgba(251,248,243,.9);
  backdrop-filter:blur(10px); -webkit-backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line-soft);
}
.site-header .logo { display:flex; align-items:center; gap:13px; text-decoration:none; color:var(--brand-deep); }
.site-header .logo .logo-svg { height:46px; width:auto; color:var(--brand); }
.site-header .logo .logo-img { height:46px; width:auto; display:block; }
.main-nav { display:flex; align-items:center; gap:30px; font-size:14px; font-weight:500; color:var(--ink-2); }
.main-nav a { text-decoration:none; color:var(--ink-2); display:inline-flex; align-items:center; gap:5px; transition:color .2s; }
.main-nav a:hover { color:var(--brand); }
.main-nav a.active { color:var(--brand); font-weight:600; }
.header-actions { display:flex; align-items:center; gap:16px; }
.nav-toggle { display:none; background:none; border:none; cursor:pointer; color:var(--ink); padding:6px; }
.nav-toggle .svg-ico { width:26px; height:26px; }

/* dropdown */
.has-drop { position:relative; }
.dropdown {
  position:absolute; top:calc(100% + 12px); left:50%; transform:translateX(-50%) translateY(8px);
  background:#fff; border:1px solid var(--line); border-radius:var(--r-md); box-shadow:var(--sh-md);
  padding:8px; min-width:210px; display:flex; flex-direction:column; gap:2px;
  opacity:0; visibility:hidden; transition:opacity .2s, transform .2s; z-index:60;
}
/* "ponte" trasparente che copre il vuoto tra voce e dropdown: senza, spostando il mouse
   verso le voci si perde l'hover e il menu si chiude prima del click */
.dropdown::before { content:''; position:absolute; left:-12px; right:-12px; top:-16px; height:16px; }
/* zona-hover estesa anche sotto la voce stessa, per partire senza scatti */
.has-drop::after { content:''; position:absolute; left:0; right:0; top:100%; height:14px; }
.has-drop:hover .dropdown, .has-drop:focus-within .dropdown { opacity:1; visibility:visible; transform:translateX(-50%) translateY(0); }
.dropdown a { padding:9px 14px; border-radius:var(--r-sm); font-size:14px; color:var(--ink-2); }
.dropdown a:hover { background:var(--brand-wash); color:var(--brand); }

/* ---------- hero ---------- */
.hero {
  position:relative; padding:84px 40px 110px; overflow:hidden;
  background:radial-gradient(120% 130% at 78% -10%, rgba(110,26,43,.16), transparent 55%),
             linear-gradient(160deg,#f0e4dc 0%,#e7d4cc 55%,#d9bfb7 100%);
}
.hero__bg { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:center 32%; }
.hero__veil { position:absolute; inset:0;
  background:linear-gradient(100deg, rgba(251,248,243,.97) 0%, rgba(251,248,243,.93) 34%, rgba(251,248,243,.58) 55%, rgba(247,238,219,.16) 76%, rgba(40,11,18,.06) 100%); }
.hero__inner { max-width:var(--maxw); margin:0 auto; position:relative; }
.hero h1 {
  font-family:var(--font-display); font-weight:700; font-size:64px; line-height:1.03;
  letter-spacing:-.025em; color:var(--brand-deep); margin:0 0 22px; max-width:18ch; text-wrap:balance;
}
.hero .lead { max-width:56ch; margin:0 0 40px; }
.pill {
  display:inline-flex; align-items:center; gap:8px; background:rgba(255,255,255,.7);
  border:1px solid var(--brand-line); padding:6px 14px; border-radius:999px;
  font-size:12px; font-weight:600; color:var(--brand); margin-bottom:24px;
}
.hero__perks { display:flex; flex-wrap:wrap; gap:24px; margin-top:20px; font-size:13px; color:var(--ink-2); }
.hero__perks span { display:inline-flex; align-items:center; gap:7px; }
.hero__perks .svg-ico { color:var(--brand); }

/* ---------- search bar ---------- */
.searchbar {
  display:flex; align-items:stretch; background:#fff; border:1px solid var(--line);
  border-radius:999px; padding:8px 8px 8px 10px; box-shadow:var(--sh-lg); max-width:820px;
}
.searchbar .field { flex:1; display:flex; align-items:center; gap:11px; padding:10px 20px; cursor:pointer; border:none; background:none; text-align:left; }
.searchbar .field.guests { flex:.85; }
.searchbar .field .svg-ico { color:var(--brand); width:20px; height:20px; }
.searchbar .field .lbl { display:block; font-size:11px; color:var(--ink-3); font-weight:700; letter-spacing:.05em; }
.searchbar .field .val { font-size:15px; font-weight:600; color:var(--ink); font-variant-numeric:tabular-nums; }
.searchbar .sep { width:1px; background:var(--line); margin:10px 0; }
.searchbar .btn { padding:0 32px; font-size:15px; }

/* ---------- stats band ---------- */
.stats { background:var(--brand-deep); color:#fff; padding:40px; }
.stats__grid { max-width:var(--maxw); margin:0 auto; display:grid; grid-template-columns:repeat(4,1fr); gap:24px; }
.stat { text-align:center; }
.stat + .stat { border-left:1px solid rgba(255,255,255,.14); }
.stat .num { font-family:var(--font-display); font-weight:700; font-size:46px; line-height:1; color:#fff; font-variant-numeric:tabular-nums; }
.stat .lbl { font-size:13px; color:var(--brand-soft); margin-top:8px; letter-spacing:.04em; }

/* ---------- generic grids ---------- */
.grid { display:grid; gap:20px; }
.grid-2 { grid-template-columns:repeat(2,1fr); }
.grid-3 { grid-template-columns:repeat(3,1fr); }
.grid-4 { grid-template-columns:repeat(4,1fr); }

/* ---------- cards ---------- */
.card { background:var(--surface); border:1px solid var(--line); border-radius:var(--r-lg); overflow:hidden; box-shadow:var(--sh-sm); }
.card--paper { background:var(--paper); }
.card__media { position:relative; overflow:hidden; }
.card__media img { width:100%; height:100%; object-fit:cover; }
.card__body { padding:24px; }

/* audience card (A chi ci rivolgiamo) */
.audience { background:var(--paper); border:1px solid var(--line); border-radius:var(--r-lg); padding:30px; }
.audience .ico-badge { width:50px; height:50px; border-radius:var(--r-md); background:var(--brand-tint); color:var(--brand); display:flex; align-items:center; justify-content:center; margin-bottom:18px; }
.audience .ico-badge .svg-ico { width:26px; height:26px; }
.audience h3 { font-family:var(--font-display); font-weight:600; font-size:23px; color:var(--ink); margin:0 0 10px; }
.audience p { font-size:15px; color:var(--ink-2); line-height:1.6; }

/* featured dark band */
.feature-band {
  position:relative; overflow:hidden; border-radius:var(--r-xl);
  background:var(--brand-deep); color:#fff; padding:48px;
  display:grid; grid-template-columns:1.3fr 1fr; gap:48px; align-items:center;
}
.feature-band .tag { display:inline-flex; align-items:center; gap:9px; background:rgba(255,255,255,.12); padding:6px 14px; border-radius:999px; font-size:12px; font-weight:600; letter-spacing:.04em; margin-bottom:18px; }
.feature-band h3 { font-family:var(--font-display); font-weight:700; font-size:30px; line-height:1.15; margin:0 0 14px; color:#fff; }
.feature-band p { font-size:16px; color:var(--brand-soft); line-height:1.6; }
.feature-list { display:flex; flex-direction:column; gap:12px; }
.feature-list .row { display:flex; align-items:center; gap:12px; background:rgba(255,255,255,.07); border:1px solid rgba(255,255,255,.12); border-radius:var(--r-md); padding:13px 16px; font-size:14px; }
.feature-list .row .svg-ico { color:var(--brand-soft); flex:none; }

/* structure card */
.structure-card .card__media { height:280px; }
.structure-card .badge-count { position:absolute; top:16px; left:16px; font-size:12px; font-weight:700; color:#fff; background:var(--brand); padding:6px 13px; border-radius:999px; font-variant-numeric:tabular-nums; }
.structure-card .card__body { padding:28px; }
.structure-card h3 { font-family:var(--font-display); font-weight:700; font-size:26px; color:var(--ink); margin:0 0 8px; }
.meta-row { display:flex; align-items:center; gap:8px; font-size:14px; color:var(--ink-3); }
.chips { display:flex; flex-wrap:wrap; gap:8px; }
.chip { font-size:12px; color:var(--ink-2); background:var(--sand); padding:6px 12px; border-radius:999px; }

/* room card */
.room-card .card__media { height:200px; display:flex; align-items:flex-end; padding:12px; }
.room-card .card__media img { position:absolute; inset:0; }
.room-card .price-badge { position:absolute; top:12px; right:12px; font-size:11px; font-weight:600; color:#fff; background:var(--brand); padding:4px 10px; border-radius:999px; font-variant-numeric:tabular-nums; z-index:2; }
.room-card .card__body { padding:20px; }
.room-card h3 { font-family:var(--font-display); font-weight:600; font-size:21px; margin:0 0 4px; color:var(--ink); }
.room-card .room-meta { font-size:13px; color:var(--ink-3); margin-bottom:14px; }
.room-icons { display:flex; gap:14px; color:var(--brand); margin-bottom:16px; }
.room-icons .svg-ico { width:18px; height:18px; }

/* poi card */
.poi-card { position:relative; border-radius:var(--r-lg); overflow:hidden; min-height:300px; display:flex; flex-direction:column; justify-content:flex-end; color:#fff; }
.poi-card img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:0; }
.poi-card .scrim { position:absolute; inset:0; background:linear-gradient(180deg, rgba(40,11,18,.05) 0%, rgba(40,11,18,.72) 100%); z-index:1; }
.poi-card .poi-body { position:relative; z-index:2; padding:22px; }
.poi-card .free { display:inline-block; font-size:11px; font-weight:700; letter-spacing:.04em; color:var(--ok); background:var(--ok-tint); padding:4px 10px; border-radius:999px; margin-bottom:10px; }
.poi-card h3 { font-family:var(--font-display); font-weight:600; font-size:22px; margin:0 0 6px; }
.poi-card p { font-size:13px; line-height:1.45; opacity:.92; }
.poi-card .link-arrow { color:#fff; margin-top:10px; }

/* review card */
.review { background:#fff; border:1px solid var(--line); border-radius:var(--r-lg); padding:24px; box-shadow:var(--sh-sm); }
.stars { display:flex; gap:3px; color:var(--brand); margin-bottom:12px; }
.stars .svg-ico { width:16px; height:16px; }
.review blockquote { font-family:var(--font-display); font-style:italic; font-size:17px; line-height:1.45; color:var(--ink); margin:0 0 18px; }
.review .who { display:flex; align-items:center; gap:11px; }
.avatar { width:38px; height:38px; border-radius:999px; background:var(--brand-tint); color:var(--brand); display:flex; align-items:center; justify-content:center; font-family:var(--font-display); font-weight:700; flex:none; }
.review .who .name { font-weight:600; font-size:14px; }
.review .who .country { font-size:12px; color:var(--ink-3); }

/* service icon + label */
.svc-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:16px; }
.svc { display:flex; align-items:center; gap:13px; padding:16px; border:1px solid var(--line); border-radius:var(--r-md); background:#fff; }
.svc .ico { width:44px; height:44px; flex:none; border-radius:var(--r-sm); background:var(--brand-tint); color:var(--brand); display:flex; align-items:center; justify-content:center; }
.svc .ico .svg-ico { width:20px; height:20px; }
.svc .name { font-size:14px; color:var(--ink); font-weight:500; }

/* contact card */
.contact-card { display:flex; align-items:center; gap:13px; padding:18px; border:1px solid var(--line); border-radius:var(--r-md); background:#fff; }
.contact-card .ico { width:46px; height:46px; flex:none; border-radius:999px; background:var(--brand); color:#fff; display:flex; align-items:center; justify-content:center; }
.contact-card .k { font-size:12px; color:var(--ink-3); }
.contact-card .v { font-weight:600; font-size:15px; color:var(--ink); font-variant-numeric:tabular-nums; }

/* availability states */
.avail { display:flex; align-items:center; gap:9px; padding:10px 13px; border-radius:var(--r-sm); font-weight:600; font-size:13px; }
.avail .dot { width:8px; height:8px; border-radius:999px; flex:none; }
.avail--ok { background:var(--ok-tint); color:var(--ok); }
.avail--ok .dot { background:var(--ok); }
.avail--warn { background:var(--warn-tint); color:var(--warn); }
.avail--warn .dot { background:var(--warn); }
.avail--no { background:var(--sand); color:var(--ink-3); }
.avail--no .dot { background:var(--ink-3); }

/* ---------- forms ---------- */
.form { display:grid; gap:18px; }
.form .field-group { display:flex; flex-direction:column; gap:7px; }
.form label { font-size:13px; font-weight:600; color:var(--ink-2); }
.form input, .form textarea, .form select {
  font-family:var(--font-body); font-size:15px; color:var(--ink);
  padding:13px 15px; border:1px solid var(--line); border-radius:var(--r-sm); background:#fff; width:100%;
}
.form textarea { min-height:130px; resize:vertical; }
.form input:focus, .form textarea:focus, .form select:focus { outline:none; border-color:var(--brand); box-shadow:0 0 0 3px var(--brand-tint); }
.form .consent { display:flex; align-items:flex-start; gap:10px; font-size:13px; color:var(--ink-2); }
.form .consent input { width:auto; margin-top:2px; }

/* ---------- detail / booking box (scheda camera) ---------- */
.booking-box { background:#fff; border:1px solid var(--line); border-radius:var(--r-lg); padding:26px; box-shadow:var(--sh-md); position:sticky; top:calc(var(--header-h) + 16px); }
.booking-box .price { font-family:var(--font-display); font-weight:700; font-size:34px; color:var(--brand); font-variant-numeric:tabular-nums; }
.detail-list { list-style:none; padding:0; margin:0; }
.detail-list li { display:flex; justify-content:space-between; gap:12px; padding:11px 0; border-bottom:1px solid var(--line-soft); font-size:14px; }
.detail-list li:last-child { border-bottom:none; }
.detail-list .k { color:var(--ink-3); }
.detail-list .v { color:var(--ink); font-weight:600; text-align:right; }

/* ---------- gallery ---------- */
.gallery-grid { display:grid; grid-template-columns:2fr 1fr 1fr; grid-auto-rows:200px; gap:14px; }
.gallery-grid > * { position:relative; border-radius:var(--r-lg); overflow:hidden; }
.gallery-grid img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.gallery-main { grid-row:span 2; }

/* photo gallery — 1 grande + 2 piccole; click apre il lightbox-carosello */
.photo-gallery { display:grid; grid-template-columns:1.8fr 1fr; grid-template-rows:1fr 1fr; gap:12px; height:480px; }
.photo-gallery .pg-item { position:relative; border-radius:var(--r-lg); overflow:hidden; cursor:zoom-in; }
.photo-gallery .pg-big { grid-row:span 2; }
.photo-gallery .pg-item img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; transition:transform .45s cubic-bezier(.2,.7,.2,1); }
.photo-gallery .pg-item:hover img { transform:scale(1.05); }
.photo-gallery .pg-more { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; gap:9px; background:rgba(40,11,18,.55); color:#fff; font-family:var(--font-display); font-weight:600; font-size:18px; pointer-events:none; }
.photo-gallery .pg-more .svg-ico { width:22px; height:22px; }
.photo-gallery .pg-hidden { display:none; }
@media (max-width:760px){
  .photo-gallery { grid-template-columns:1fr 1fr; grid-template-rows:200px 130px; height:auto; }
  .photo-gallery .pg-big { grid-column:span 2; grid-row:span 1; }
}

/* ---------- lightbox-carousel (apertura foto a tutto schermo, sfogliabile) ---------- */
.lightbox { position:fixed; inset:0; z-index:200; display:none; align-items:center; justify-content:center; background:rgba(40,11,18,.94); padding:40px; }
.lightbox.open { display:flex; }
.lightbox__stage { margin:0; max-width:92vw; max-height:86vh; display:flex; flex-direction:column; align-items:center; gap:14px; }
.lightbox__stage img { max-width:92vw; max-height:80vh; border-radius:10px; box-shadow:0 30px 80px rgba(0,0,0,.5); object-fit:contain; }
.lightbox__cap { color:rgba(255,255,255,.85); font-size:14px; text-align:center; }
.lightbox__close { position:absolute; top:18px; right:24px; width:46px; height:46px; font-size:34px; line-height:1; color:#fff; background:rgba(255,255,255,.12); border:none; border-radius:999px; cursor:pointer; }
.lightbox__close:hover { background:rgba(255,255,255,.24); }
.lightbox__nav { position:absolute; top:50%; transform:translateY(-50%); width:54px; height:54px; border-radius:999px; border:none; background:rgba(255,255,255,.14); color:#fff; cursor:pointer; display:flex; align-items:center; justify-content:center; }
.lightbox__nav:hover { background:rgba(255,255,255,.28); }
.lightbox__nav .svg-ico { width:26px; height:26px; }
.lightbox__prev { left:24px; } .lightbox__next { right:24px; }
.lightbox__counter { position:absolute; bottom:24px; left:50%; transform:translateX(-50%); color:#fff; font-size:13px; font-variant-numeric:tabular-nums; background:rgba(0,0,0,.32); padding:6px 14px; border-radius:999px; }
@media (max-width:600px){ .lightbox{ padding:16px; } .lightbox__nav{ width:44px; height:44px; } .lightbox__prev{ left:8px; } .lightbox__next{ right:8px; } }

/* ---------- map ---------- */
.map-embed { width:100%; height:420px; border:0; display:block; }

/* ---------- breadcrumb / page hero ---------- */
.page-hero { background:var(--paper); border-bottom:1px solid var(--line); padding:54px 0 48px; }
.breadcrumb { display:flex; gap:8px; font-size:13px; color:var(--ink-3); margin-bottom:14px; }
.breadcrumb a { text-decoration:none; color:var(--ink-3); }
.breadcrumb a:hover { color:var(--brand); }
.page-hero h1 { font-family:var(--font-display); font-weight:700; font-size:48px; letter-spacing:-.02em; color:var(--brand-deep); }
.page-hero p { font-size:18px; color:var(--ink-2); margin-top:12px; max-width:60ch; }

/* ---------- image placeholder (slot vuoti del design) ---------- */
.img-ph { position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
  background:radial-gradient(120% 120% at 25% 0%, rgba(110,26,43,.10), transparent 52%), linear-gradient(135deg,#efe2db,#e4d0c9 60%,#d7bdb6);
  color:var(--brand); }
.img-ph .svg-ico { width:64px; height:64px; opacity:.32; }

/* ---------- footer ---------- */
.site-footer { background:var(--brand-deep); color:#fff; padding:64px 0 28px; }
.site-footer .cols { display:grid; grid-template-columns:1.6fr 1fr 1fr 1fr; gap:40px; }
.site-footer .logo-svg { height:48px; color:#fff; margin-bottom:18px; }
.site-footer .logo-img { height:48px; width:auto; display:block; margin-bottom:18px; }
.site-footer p { color:var(--brand-soft); font-size:14px; line-height:1.6; max-width:34ch; }
.site-footer h4 { font-family:var(--font-display); font-size:13px; letter-spacing:.14em; text-transform:uppercase; color:#fff; margin:0 0 16px; font-weight:600; }
.site-footer ul { list-style:none; padding:0; margin:0; display:flex; flex-direction:column; gap:10px; }
.site-footer a { color:var(--brand-soft); text-decoration:none; font-size:14px; transition:color .2s; }
.site-footer a:hover { color:#fff; }
.site-footer .contact-line { display:flex; gap:10px; color:var(--brand-soft); font-size:14px; margin-bottom:12px; align-items:flex-start; }
.site-footer .contact-line .svg-ico { color:var(--brand-soft); flex:none; margin-top:2px; }
.footer-bottom { max-width:var(--maxw); margin:40px auto 0; padding:22px 24px 0; border-top:1px solid rgba(255,255,255,.12); display:flex; justify-content:space-between; align-items:center; gap:16px; flex-wrap:wrap; color:var(--brand-soft); font-size:13px; }

/* ---------- FAQ accordion (hook: data-faq / data-faq-q / data-faq-a) ---------- */
.faq-nav { display:flex; flex-wrap:wrap; gap:10px; margin-bottom:36px; }
.faq-nav a { font-size:14px; font-weight:600; color:var(--ink-2); background:var(--sand); padding:9px 18px; border-radius:999px; text-decoration:none; transition:background .2s,color .2s; }
.faq-nav a:hover, .faq-nav a.active { background:var(--brand); color:#fff; }
.faq-list { max-width:820px; margin:0 auto; }
.faq-item { border-bottom:1px solid var(--line); }
.faq-q { width:100%; display:flex; align-items:center; justify-content:space-between; gap:18px; background:none; border:none; cursor:pointer; padding:22px 4px; text-align:left; font-family:var(--font-display); font-weight:600; font-size:19px; color:var(--ink); }
.faq-q .ic { flex:none; width:30px; height:30px; border-radius:999px; background:var(--brand-tint); color:var(--brand); display:flex; align-items:center; justify-content:center; transition:transform .3s, background .2s; }
.faq-q .ic .svg-ico { width:18px; height:18px; }
.faq-item.open .faq-q .ic { background:var(--brand); color:#fff; transform:rotate(180deg); }
.faq-a { overflow:hidden; max-height:0; transition:max-height .35s cubic-bezier(.2,.7,.2,1); }
.faq-a > div { padding:0 4px 22px; font-size:16px; color:var(--ink-2); line-height:1.65; max-width:70ch; }

/* ---------- carousel (hook: data-carousel + track/slide/dot/prev/next/counter) ---------- */
.carousel { position:relative; }
.carousel__viewport { overflow:hidden; border-radius:var(--r-xl); }
.carousel__track { display:flex; transition:transform .55s cubic-bezier(.2,.7,.2,1); }
.carousel__slide { flex:0 0 100%; position:relative; }
.carousel__nav { width:50px; height:50px; border-radius:999px; background:#fff; border:1px solid var(--line); box-shadow:var(--sh-md); color:var(--brand); display:flex; align-items:center; justify-content:center; cursor:pointer; transition:background .2s; }
.carousel__nav:hover { background:var(--brand-tint); }
.carousel__nav .svg-ico { width:24px; height:24px; }
.carousel__dots { display:flex; gap:8px; align-items:center; }
.carousel__dots .dot { width:8px; height:8px; padding:0; border:none; border-radius:999px; background:var(--brand-soft); cursor:pointer; transition:width .3s, background .3s; }
.carousel__dots .dot.active { width:28px; background:var(--brand); }

/* ---------- staff card ---------- */
.staff-card { text-align:center; }
.staff-card .ph { width:120px; height:120px; margin:0 auto 14px; border-radius:999px; background:var(--brand-tint); color:var(--brand); display:flex; align-items:center; justify-content:center; font-family:var(--font-display); font-weight:700; font-size:42px; overflow:hidden; }
.staff-card .ph img { width:100%; height:100%; object-fit:cover; }
.staff-card .nm { font-family:var(--font-display); font-weight:600; font-size:19px; color:var(--ink); }
.staff-card .rl { font-size:13px; color:var(--ink-3); margin-top:2px; }

/* ---------- utilities ---------- */
.mt-0{margin-top:0}.mt-s{margin-top:14px}.mt-m{margin-top:22px}.mt-l{margin-top:40px}
.mb-s{margin-bottom:14px}.mb-m{margin-bottom:22px}.mb-l{margin-bottom:40px}
.text-center{text-align:center}
.flex{display:flex}.items-center{align-items:center}.gap-s{gap:10px}.gap-m{gap:18px}
.wrap{flex-wrap:wrap}

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width:1080px){
  .feature-band { grid-template-columns:1fr; gap:30px; padding:36px; }
  .gallery-grid { grid-template-columns:1fr 1fr; }
  .gallery-main { grid-row:span 1; grid-column:span 2; }
}
@media (max-width:920px){
  .hero h1 { font-size:48px; }
  .section { padding:72px 0; }
  .section-head h2 { font-size:34px; }
  .stats__grid { grid-template-columns:repeat(2,1fr); gap:28px 16px; }
  .stat:nth-child(odd){ border-left:none; }
  .svc-grid { grid-template-columns:repeat(2,1fr); }
  .site-footer .cols { grid-template-columns:1fr 1fr; gap:32px; }
}
@media (max-width:760px){
  /* header → hamburger */
  .site-header { padding:12px 20px; }
  .nav-toggle { display:inline-flex; }
  .main-nav {
    position:fixed; inset:var(--header-h) 0 auto 0; flex-direction:column; align-items:flex-start;
    gap:4px; background:var(--paper); border-bottom:1px solid var(--line); padding:16px 20px 24px;
    transform:translateY(-120%); transition:transform .3s cubic-bezier(.2,.7,.2,1); z-index:40;
    box-shadow:var(--sh-md);
  }
  .site-header.nav-open .main-nav { transform:translateY(0); }
  .main-nav a { padding:10px 0; font-size:16px; width:100%; }
  .dropdown { position:static; opacity:1; visibility:visible; transform:none; box-shadow:none; border:none; padding:0 0 0 14px; min-width:0; background:none; }
  .dropdown::before, .has-drop::after { display:none; } /* ponti hover non servono su mobile */
  .has-drop:hover .dropdown { transform:none; }
  .header-actions .lang { display:none; }

  .hero { padding:56px 20px 72px; }
  .hero h1 { font-size:36px; }
  .hero .lead { font-size:17px; }
  .searchbar { flex-direction:column; border-radius:var(--r-lg); padding:8px; }
  .searchbar .sep { width:auto; height:1px; margin:0 12px; }
  .searchbar .field { padding:13px 16px; }
  .searchbar .btn { width:100%; padding:14px; margin-top:6px; }

  .container { padding:0 20px; }
  .grid-2, .grid-3, .grid-4 { grid-template-columns:1fr; }
  .svc-grid { grid-template-columns:1fr; }
  .stats__grid { grid-template-columns:1fr 1fr; }
  .section-head h2 { font-size:28px; }
  .page-hero h1 { font-size:34px; }
  .gallery-grid { grid-template-columns:1fr; }
  .gallery-main { grid-column:span 1; }
  .booking-box { position:static; }
  .site-footer .cols { grid-template-columns:1fr; gap:28px; }
  .footer-bottom { flex-direction:column; align-items:flex-start; }
}
