/* =========================================================
   DIMORA — Design System
   Palette calda boutique, tipografia editoriale, animazioni
   basate su transform/opacity (GPU-friendly, no layout shift)
   ========================================================= */

/* Font caricati via <link rel="stylesheet"> nell'<head> di ogni pagina (non @import: non blocca il parsing CSS) */

:root{
  /* --- Colore: base calda/ivory + accenti terracotta/oliva --- */
  --color-bg:            #FBF7F2;
  --color-surface:       #FFFFFF;
  --color-surface-tint:  #F3ECE3;
  --color-ink:           #241F1C;
  --color-ink-soft:      #554D46;
  --color-muted:         #8A7F76;
  --color-border:        #E7DED2;

  --color-accent:        #1B3A5C;   /* navy Hosteven — CTA, link */
  --color-accent-dark:   #122A44;
  --color-accent-tint:   #E7EDF5;

  --color-orange:        #E8971E;   /* arancione logo — accenti decorativi */
  --color-orange-dark:   #C87E0F;

  --color-deep:          #142E4C;   /* navy profondo — footer, contrasto */
  --color-deep-tint:     #1E3D60;

  --color-gold:          #E8971E;   /* stelle / rating */
  --color-success:       #3F6C4C;
  --color-error:         #B3452C;

  --color-overlay:       rgba(36, 31, 28, 0.55);

  /* --- Tipografia: stack di sistema, nessuna dipendenza esterna ---
     garantisce rendering istantaneo (no FOIT/FOUT) su qualsiasi dispositivo/rete */
  --font-display: Georgia, 'Iowan Old Style', 'Palatino Linotype', 'Book Antiqua', Palatino, serif;
  --font-body: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;

  --fs-xs:   0.8125rem;
  --fs-sm:   0.9375rem;
  --fs-base: 1.0625rem;
  --fs-md:   1.25rem;
  --fs-lg:   1.75rem;
  --fs-xl:   2.5rem;
  --fs-2xl:  3.5rem;
  --fs-3xl:  4.75rem;

  /* --- Spaziatura (scala 4/8) --- */
  --space-1: 0.5rem;
  --space-2: 0.75rem;
  --space-3: 1rem;
  --space-4: 1.5rem;
  --space-5: 2rem;
  --space-6: 3rem;
  --space-7: 4.5rem;
  --space-8: 6rem;
  --space-9: 9rem;

  --container-max: 1240px;
  --radius-sm: 8px;
  --radius-md: 16px;
  --radius-lg: 28px;
  --radius-pill: 999px;

  --shadow-sm: 0 2px 8px rgba(36,31,28,0.06);
  --shadow-md: 0 12px 32px rgba(36,31,28,0.10);
  --shadow-lg: 0 24px 64px rgba(36,31,28,0.16);

  --ease-out: cubic-bezier(.16,1,.3,1);
  --ease-in-out: cubic-bezier(.65,0,.35,1);
  --dur-fast: 180ms;
  --dur-base: 320ms;
  --dur-slow: 620ms;

  --nav-h: 84px;
}

:root[data-theme="dark"]{
  --color-bg: #1C1815;
  --color-surface: #241F1C;
  --color-surface-tint: #2C2622;
  --color-ink: #F6F0E8;
  --color-ink-soft: #D8CCC0;
  --color-muted: #A69A8E;
  --color-border: #3A322C;
  --color-accent-tint: #22344A;
}

/* --- Reset --- */
*, *::before, *::after{ box-sizing: border-box; }
html{ scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
body{
  margin: 0;
  background: var(--color-bg);
  color: var(--color-ink);
  font-family: var(--font-body);
  font-size: var(--fs-base);
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}
img, svg{ display:block; max-width:100%; }
a{ color: inherit; text-decoration: none; }
button{ font-family: inherit; cursor: pointer; }
ul{ list-style:none; margin:0; padding:0; }
h1,h2,h3,h4,p{ margin:0; }
input, textarea, select{ font-family: inherit; font-size: inherit; }

@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior: auto; }
  *, *::before, *::after{
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
    scroll-behavior: auto !important;
  }
}

/* --- Focus visibile (accessibilità) --- */
:focus-visible{
  outline: 2.5px solid var(--color-accent);
  outline-offset: 3px;
  border-radius: 4px;
}

/* --- Layout helpers --- */
.container{
  max-width: var(--container-max);
  margin-inline: auto;
  padding-inline: var(--space-4);
}
@media (min-width: 768px){
  .container{ padding-inline: var(--space-6); }
}

.section{ padding-block: var(--space-8); }
.section--tight{ padding-block: var(--space-7); }
.section--deep{ background: var(--color-deep); color: #F1EDE6; }

.eyebrow{
  display:inline-flex;
  align-items:center;
  gap: var(--space-1);
  font-family: var(--font-body);
  font-weight: 700;
  font-size: var(--fs-xs);
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--color-accent);
}
.eyebrow::before{
  content:"";
  width: 22px; height: 1.5px;
  background: var(--color-orange);
}

h1, .h1{
  font-family: var(--font-display);
  font-weight: 500;
  font-size: clamp(2.4rem, 5.4vw, var(--fs-3xl));
  line-height: 1.05;
  letter-spacing: -0.01em;
}
h2, .h2{
  font-family: var(--font-display);
  font-weight: 500;
  font-size: clamp(1.9rem, 3.6vw, var(--fs-2xl));
  line-height: 1.12;
  letter-spacing: -0.01em;
}
h3, .h3{
  font-family: var(--font-display);
  font-weight: 500;
  font-size: clamp(1.3rem, 2vw, var(--fs-lg));
  line-height: 1.25;
}
.lede{
  font-size: var(--fs-md);
  color: var(--color-ink-soft);
  line-height: 1.6;
  max-width: 46ch;
}
.section-head{
  display:flex;
  flex-direction:column;
  gap: var(--space-2);
  margin-bottom: var(--space-6);
  max-width: 640px;
}
.section-head.center{ margin-inline:auto; text-align:center; align-items:center; }

/* --- Bottoni --- */
.btn{
  --btn-fg: #FFF;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap: var(--space-1);
  padding: 0.95rem 1.7rem;
  min-height: 48px;
  border-radius: var(--radius-pill);
  border: 1.5px solid transparent;
  font-weight: 700;
  font-size: var(--fs-sm);
  letter-spacing: .01em;
  background: var(--color-accent);
  color: var(--btn-fg);
  transition: transform var(--dur-fast) var(--ease-out),
              box-shadow var(--dur-fast) var(--ease-out),
              background-color var(--dur-fast) var(--ease-out),
              border-color var(--dur-fast) var(--ease-out);
  white-space: nowrap;
  touch-action: manipulation;
}
.btn:hover{ background: var(--color-accent-dark); transform: translateY(-2px); box-shadow: var(--shadow-md); }
.btn:active{ transform: translateY(0); }
.btn-secondary{
  background: transparent;
  color: var(--color-ink);
  border-color: var(--color-border);
}
.btn-secondary:hover{ background: var(--color-surface-tint); border-color: var(--color-ink-soft); }
.btn-ghost-light{
  background: rgba(255,255,255,0.08);
  color:#fff;
  border-color: rgba(255,255,255,0.55);
  backdrop-filter: blur(6px);
}
.btn-ghost-light:hover{ background: rgba(255,255,255,0.18); }
.btn-block{ width:100%; }
.btn-orange{ background: var(--color-orange); color:#14263C; }
.btn-orange:hover{ background: var(--color-orange-dark); color:#14263C; }
.btn-sm{ padding: 0.65rem 1.2rem; min-height:40px; font-size: var(--fs-xs); }
.btn[disabled]{ opacity:.5; pointer-events:none; }

.link-underline{
  position:relative;
  font-weight:600;
  display:inline-block;
}
.link-underline::after{
  content:"";
  position:absolute; left:0; right:0; bottom:-3px;
  height:1.5px; background: currentColor;
  transform: scaleX(0.35); transform-origin:left;
  opacity:.5;
  transition: transform var(--dur-base) var(--ease-out), opacity var(--dur-base) var(--ease-out);
}
.link-underline:hover::after{ transform: scaleX(1); opacity:1; }

/* --- Navbar --- */
.nav{
  position: fixed; inset: 0 0 auto 0;
  height: var(--nav-h);
  z-index: 100;
  display:flex; align-items:center;
  transition: background-color var(--dur-base) var(--ease-out),
              box-shadow var(--dur-base) var(--ease-out),
              height var(--dur-base) var(--ease-out);
}
.nav .container{ display:flex; align-items:center; justify-content:space-between; width:100%; }
.nav.is-scrolled{
  height: 68px;
  background: rgba(251,247,242,0.86);
  backdrop-filter: blur(14px) saturate(1.4);
  box-shadow: var(--shadow-sm);
}
.nav.is-scrolled .nav-link, .nav.is-scrolled .brand{ color: var(--color-ink); }
.nav-top .nav-link, .nav-top .brand{ color: #fff; }
.nav.no-hero{ background: rgba(251,247,242,0.92); backdrop-filter: blur(14px); box-shadow: var(--shadow-sm); }
.nav.no-hero .nav-link, .nav.no-hero .brand{ color: var(--color-ink); }

.brand{
  font-family: var(--font-display);
  font-weight: 600;
  font-size: 1.35rem;
  letter-spacing: .02em;
  display:flex; align-items:center; gap:.55rem;
  transition: color var(--dur-base) var(--ease-out);
}
.brand small{ font-family: var(--font-body); font-weight:600; font-size:.55rem; letter-spacing:.18em; opacity:.7; text-transform:uppercase; }
.brand-logo{
  width:26px; height:36px; flex-shrink:0; display:inline-block;
  background-color: var(--color-accent);
  -webkit-mask: url(../assets/logo-mask.png) center/contain no-repeat;
  mask: url(../assets/logo-mask.png) center/contain no-repeat;
}
.brand-text{ display:flex; align-items:baseline; gap:.4rem; }
.nav-top .brand-logo{ background-color:#fff; }
.footer .brand-logo{ background-color: var(--color-orange); }

.nav-links{
  display:none;
  align-items:center;
  gap: var(--space-5);
}
@media (min-width: 900px){ .nav-links{ display:flex; } }
.nav-link{
  font-size: var(--fs-sm);
  font-weight:600;
  transition: color var(--dur-base) var(--ease-out), opacity var(--dur-fast);
  opacity:.92;
}
.nav-link:hover{ opacity:1; color: var(--color-accent); }

.nav-actions{ display:flex; align-items:center; gap: var(--space-3); }

.lang-toggle{
  display:flex; align-items:center; gap:2px;
  border:1.5px solid currentColor; border-radius: var(--radius-pill);
  padding:3px; font-size:.72rem; font-weight:800; letter-spacing:.04em;
  color:inherit;
}
.lang-toggle button{
  background:none; border:none; color:inherit;
  padding: .3rem .55rem; border-radius: var(--radius-pill);
  opacity:.6; transition: all var(--dur-fast) var(--ease-out);
}
.lang-toggle button[aria-pressed="true"]{ opacity:1; background: currentColor; }
.lang-toggle button[aria-pressed="true"]{ color: var(--color-bg); }
.nav.is-scrolled .lang-toggle button[aria-pressed="true"], .nav.no-hero .lang-toggle button[aria-pressed="true"]{ color:#fff; background: var(--color-ink); }
.nav-top .lang-toggle button[aria-pressed="true"]{ color: var(--color-ink); background:#fff; }

.nav-burger{
  display:flex; flex-direction:column; gap:5px;
  width:26px; background:none; border:none; padding:8px;
  min-width:44px; min-height:44px; align-items:center; justify-content:center;
}
@media (min-width:900px){ .nav-burger{ display:none; } }
.nav-burger span{ width:22px; height:2px; background: currentColor; border-radius:2px; transition: transform var(--dur-base) var(--ease-out), opacity var(--dur-fast); }

.mobile-menu{
  position:fixed; inset:0; z-index:99;
  background: var(--color-deep);
  color:#fff;
  display:flex; flex-direction:column;
  padding: calc(var(--nav-h) + var(--space-4)) var(--space-5) var(--space-5);
  gap: var(--space-4);
  transform: translateY(-100%);
  opacity:0;
  transition: transform var(--dur-slow) var(--ease-out), opacity var(--dur-base) var(--ease-out);
  visibility:hidden;
}
.mobile-menu.is-open{ transform: translateY(0); opacity:1; visibility:visible; }
.mobile-menu a{ font-family: var(--font-display); font-size: 1.9rem; font-weight:500; }
body.menu-open{ overflow:hidden; }

/* --- Hero --- */
.hero{
  position:relative;
  min-height: 100dvh;
  display:flex; align-items:flex-end;
  color:#fff;
  overflow:hidden;
}
.hero-media{ position:absolute; inset:0; z-index:0; }
.hero-media img{
  width:100%; height:100%; object-fit:cover;
  transform: scale(1.08);
  animation: kenburns 16s var(--ease-in-out) forwards;
}
@keyframes kenburns{ from{ transform: scale(1.08);} to{ transform: scale(1);} }
.hero-media::after{
  content:"";
  position:absolute; inset:0;
  background: linear-gradient(180deg, rgba(36,31,28,.35) 0%, rgba(36,31,28,.15) 38%, rgba(36,31,28,.78) 100%);
}
.hero-content{
  position:relative; z-index:1;
  padding-bottom: var(--space-8);
  padding-top: calc(var(--nav-h) + var(--space-6));
  width:100%;
}
.hero-eyebrow{
  display:inline-flex; align-items:center; gap:var(--space-1);
  font-size: var(--fs-xs); font-weight:700; letter-spacing:.16em; text-transform:uppercase;
  color:#fff; opacity:.9; margin-bottom: var(--space-3);
}
.hero-eyebrow::before{ content:""; width:22px; height:1.5px; background:#fff; }
.hero h1{ color:#fff; max-width: 16ch; }
.hero .lede{ color: rgba(255,255,255,.88); margin-top: var(--space-3); max-width:52ch; }
.hero-actions{ display:flex; flex-wrap:wrap; gap: var(--space-3); margin-top: var(--space-5); }
.hero-scroll{
  position:absolute; right: var(--space-5); bottom: var(--space-5); z-index:1;
  display:none; flex-direction:column; align-items:center; gap:.5rem;
  color:#fff; font-size:.7rem; letter-spacing:.14em; text-transform:uppercase; opacity:.85;
}
@media (min-width:700px){ .hero-scroll{ display:flex; } }
.hero-scroll .line{ width:1.5px; height:38px; background: rgba(255,255,255,.5); overflow:hidden; position:relative; }
.hero-scroll .line::after{ content:""; position:absolute; top:-100%; left:0; width:100%; height:100%; background:#fff; animation: scrollline 1.8s var(--ease-in-out) infinite; }
@keyframes scrollline{ to{ top:100%; } }

/* --- Stats bar --- */
.stats{
  display:grid; grid-template-columns: repeat(2,1fr); gap: var(--space-5) var(--space-4);
  padding-block: var(--space-6);
  border-block: 1px solid var(--color-border);
}
@media (min-width:768px){ .stats{ grid-template-columns: repeat(4,1fr); } }
.stat{ text-align:center; }
.stat-num{
  font-family: var(--font-display); font-weight:500;
  font-size: clamp(1.9rem, 3.4vw, 2.6rem);
  color: var(--color-accent);
  display:flex; align-items:baseline; justify-content:center; gap:2px;
}
.stat-label{ color: var(--color-muted); font-size: var(--fs-xs); letter-spacing:.05em; text-transform:uppercase; margin-top:.4rem; font-weight:700; }

/* --- Property cards --- */
.props-grid{
  display:grid; grid-template-columns: 1fr; gap: var(--space-5);
}
@media (min-width:640px){ .props-grid{ grid-template-columns: repeat(2,1fr); } }
@media (min-width:1080px){ .props-grid{ grid-template-columns: repeat(3,1fr); } }

.prop-card{
  position:relative;
  background: var(--color-surface);
  border-radius: var(--radius-md);
  overflow:hidden;
  box-shadow: var(--shadow-sm);
  transition: box-shadow var(--dur-base) var(--ease-out), transform var(--dur-base) var(--ease-out);
  display:flex; flex-direction:column;
}
.prop-card:hover{ box-shadow: var(--shadow-lg); transform: translateY(-6px); }
.prop-media{ position:relative; aspect-ratio: 4/3; overflow:hidden; }
.prop-media img, .prop-media .ph-photo{ width:100%; height:100%; object-fit:cover; transition: transform var(--dur-slow) var(--ease-out); }
.prop-card:hover .prop-media img, .prop-card:hover .prop-media .ph-photo{ transform: scale(1.08); }
.prop-tag{
  position:absolute; top:14px; left:14px;
  background: rgba(255,255,255,.92); backdrop-filter: blur(4px);
  color: var(--color-ink); font-size:.72rem; font-weight:700;
  padding: .35rem .8rem; border-radius: var(--radius-pill);
  letter-spacing:.03em;
}
.prop-fav{
  position:absolute; top:12px; right:12px;
  width:38px; height:38px; border-radius:50%;
  background: rgba(36,31,28,.28); backdrop-filter: blur(4px);
  display:flex; align-items:center; justify-content:center; color:#fff;
}
.prop-body{ padding: var(--space-4); display:flex; flex-direction:column; gap:.6rem; flex:1; }
.prop-title-row{ display:flex; justify-content:space-between; align-items:flex-start; gap:.5rem; }
.prop-body h3{ font-size: 1.25rem; }
.prop-rating{ display:flex; align-items:center; gap:.3rem; font-size:var(--fs-xs); font-weight:700; white-space:nowrap; flex-shrink:0; margin-top:.2rem;}
.prop-loc{ color: var(--color-muted); font-size: var(--fs-sm); display:flex; align-items:center; gap:.35rem; }
.prop-tagline{ color: var(--color-ink-soft); font-size: var(--fs-sm); flex:1; }
.prop-meta{ display:flex; gap: var(--space-3); color: var(--color-muted); font-size: var(--fs-xs); font-weight:600; padding-top:.3rem; border-top:1px solid var(--color-border); margin-top:.2rem;}
.prop-meta span{ display:flex; align-items:center; gap:.3rem; }
.prop-cta-row{ display:flex; gap:.6rem; margin-top:.5rem; }
.prop-price{ font-weight:800; color:var(--color-ink); }
.prop-price small{ font-weight:600; color:var(--color-muted); font-size:.72em; }

/* --- Feature blocks (perché sceglierci) --- */
.features{ display:grid; grid-template-columns:1fr; gap: var(--space-4); }
@media (min-width:700px){ .features{ grid-template-columns: repeat(2,1fr); } }
@media (min-width:1080px){ .features{ grid-template-columns: repeat(4,1fr); } }
.feature{
  padding: var(--space-5) var(--space-4);
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  transition: transform var(--dur-base) var(--ease-out), box-shadow var(--dur-base) var(--ease-out), border-color var(--dur-base) var(--ease-out);
}
.feature:hover{ transform: translateY(-4px); box-shadow: var(--shadow-md); border-color: transparent; }
.feature-icon{
  width:52px; height:52px; border-radius:14px;
  background: var(--color-accent-tint); color: var(--color-accent);
  display:flex; align-items:center; justify-content:center;
  margin-bottom: var(--space-3);
}
.feature h3{ font-size:1.15rem; margin-bottom:.5rem; }
.feature p{ color: var(--color-ink-soft); font-size: var(--fs-sm); }

/* --- Testimonials --- */
.testi-grid{ display:grid; grid-template-columns:1fr; gap: var(--space-4); }
@media (min-width:768px){ .testi-grid{ grid-template-columns: repeat(3,1fr); } }
.testi{
  background: var(--color-surface-tint);
  border-radius: var(--radius-md);
  padding: var(--space-5);
  display:flex; flex-direction:column; gap: var(--space-3);
}
.testi-stars{ color: var(--color-gold); display:flex; gap:2px; }
.testi p{ color: var(--color-ink); font-size: var(--fs-base); line-height:1.65; }
.testi-author{ display:flex; align-items:center; gap:.7rem; margin-top:auto; }
.testi-avatar{
  width:42px; height:42px; border-radius:50%;
  background: var(--color-accent); color:#fff;
  display:flex; align-items:center; justify-content:center;
  font-family: var(--font-display); font-weight:600;
  flex-shrink:0;
}
.testi-name{ font-weight:700; font-size:var(--fs-sm); }
.testi-loc{ color:var(--color-muted); font-size:var(--fs-xs); }

/* --- Area/mappa --- */
.area-wrap{ display:grid; grid-template-columns:1fr; gap: var(--space-5); align-items:center; }
@media (min-width:960px){ .area-wrap{ grid-template-columns: 1fr 1fr; } }
.area-map{
  border-radius: var(--radius-lg); overflow:hidden; box-shadow: var(--shadow-md);
  aspect-ratio: 4/3; border: 1px solid var(--color-border);
}
.area-map iframe{ width:100%; height:100%; border:0; filter: grayscale(0.15) sepia(0.08); }
.area-list{ display:flex; flex-direction:column; gap: var(--space-3); margin-top: var(--space-4); }
.area-list li{ display:flex; gap:.7rem; align-items:flex-start; color: var(--color-ink-soft); font-size: var(--fs-sm); }
.area-list svg{ color: var(--color-accent); flex-shrink:0; margin-top:2px; }

/* --- Contatti --- */
.contact-wrap{ display:grid; grid-template-columns:1fr; gap: var(--space-6); }
@media (min-width:960px){ .contact-wrap{ grid-template-columns: .85fr 1.15fr; } }
.contact-info{ display:flex; flex-direction:column; gap: var(--space-4); }
.contact-item{ display:flex; gap: var(--space-3); align-items:flex-start; }
.contact-item .ico{
  width:44px; height:44px; border-radius:12px; flex-shrink:0;
  background: var(--color-accent-tint); color: var(--color-accent);
  display:flex; align-items:center; justify-content:center;
}
.contact-item h4{ font-size:var(--fs-sm); font-weight:700; margin-bottom:.15rem; }
.contact-item p, .contact-item a{ color: var(--color-ink-soft); font-size: var(--fs-sm); }
.social-row{ display:flex; gap:.6rem; margin-top: var(--space-2); }
.social-row a{
  width:42px; height:42px; border-radius:50%; border:1.5px solid var(--color-border);
  display:flex; align-items:center; justify-content:center;
  transition: all var(--dur-fast) var(--ease-out);
}
.social-row a:hover{ background: var(--color-accent); border-color: var(--color-accent); color:#fff; }

.form-card{
  background: var(--color-surface);
  border-radius: var(--radius-lg);
  padding: var(--space-5);
  box-shadow: var(--shadow-md);
  border: 1px solid var(--color-border);
}
.form-row{ display:grid; grid-template-columns:1fr; gap: var(--space-3); margin-bottom: var(--space-3); }
@media (min-width:560px){ .form-row.two{ grid-template-columns:1fr 1fr; } }
.field label{ display:block; font-size:var(--fs-xs); font-weight:700; text-transform:uppercase; letter-spacing:.04em; color: var(--color-ink-soft); margin-bottom:.4rem; }
.field input, .field select, .field textarea{
  width:100%; border:1.5px solid var(--color-border); border-radius: var(--radius-sm);
  padding: .8rem .9rem; min-height:48px; background: var(--color-bg); color: var(--color-ink);
  transition: border-color var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out);
}
.field textarea{ min-height:120px; resize:vertical; }
.field input:focus, .field select:focus, .field textarea:focus{
  outline:none; border-color: var(--color-accent); box-shadow: 0 0 0 4px var(--color-accent-tint);
}
.field-error{ color: var(--color-error); font-size: var(--fs-xs); margin-top:.35rem; display:none; font-weight:600; }
.field.has-error input, .field.has-error select, .field.has-error textarea{ border-color: var(--color-error); }
.field.has-error .field-error{ display:block; }
.form-note{ font-size: var(--fs-xs); color: var(--color-muted); margin-top: var(--space-3); }
.form-success{
  display:none; align-items:flex-start; gap: var(--space-3);
  background: #EAF2EC; color: var(--color-success);
  padding: var(--space-4); border-radius: var(--radius-md); font-size: var(--fs-sm); font-weight:600;
}
.form-success.is-visible{ display:flex; }
.form-success svg{ flex-shrink:0; margin-top:2px; }

/* --- Footer --- */
.footer{ background: var(--color-deep); color: rgba(241,237,230,.82); padding-block: var(--space-7) var(--space-5); }
.footer .brand{ color:#fff; }
.footer-grid{ display:grid; grid-template-columns:1fr; gap: var(--space-6); padding-bottom: var(--space-6); }
@media (min-width:768px){ .footer-grid{ grid-template-columns: 1.4fr 1fr 1fr 1fr; } }
.footer-col h5{ color:#fff; font-size:var(--fs-xs); text-transform:uppercase; letter-spacing:.08em; font-weight:700; margin-bottom: var(--space-3); }
.footer-col ul{ display:flex; flex-direction:column; gap:.65rem; }
.footer-col a{ font-size: var(--fs-sm); transition: color var(--dur-fast) var(--ease-out); }
.footer-col a:hover{ color:#fff; }
.footer-bottom{ display:flex; flex-wrap:wrap; gap: var(--space-3); justify-content:space-between; align-items:center; padding-top: var(--space-5); border-top: 1px solid rgba(255,255,255,.12); font-size: var(--fs-xs); }
.footer-legal{ display:flex; gap: var(--space-4); }

/* --- Property detail page --- */
.subhero{
  padding-top: calc(var(--nav-h) + var(--space-6));
  padding-bottom: var(--space-5);
}
.breadcrumb{ display:flex; align-items:center; gap:.5rem; color: var(--color-muted); font-size: var(--fs-xs); font-weight:600; margin-bottom: var(--space-3); flex-wrap:wrap;}
.breadcrumb a:hover{ color: var(--color-accent); }
.subhero-title-row{ display:flex; flex-wrap:wrap; justify-content:space-between; gap: var(--space-4); align-items:flex-end; }
.subhero-meta{ display:flex; gap: var(--space-4); flex-wrap:wrap; color: var(--color-ink-soft); font-size: var(--fs-sm); margin-top: var(--space-2); }
.subhero-meta span{ display:flex; align-items:center; gap:.4rem; }

.gallery{
  display:grid; grid-template-columns: repeat(4, 1fr); grid-template-rows: repeat(2, 160px);
  grid-auto-rows: 160px;
  gap: var(--space-2); border-radius: var(--radius-lg); overflow:hidden;
}
@media (min-width:768px){ .gallery{ grid-template-rows: repeat(2, 220px); grid-auto-rows: 220px; } }
.gallery button{ padding:0; border:0; background:none; position:relative; overflow:hidden; cursor: zoom-in; }
.gallery img, .gallery .ph-photo{ width:100%; height:100%; object-fit:cover; transition: transform var(--dur-slow) var(--ease-out); }
.gallery button:hover img, .gallery button:hover .ph-photo{ transform: scale(1.06); }
.gallery a.g-item:nth-child(1), .gallery button:nth-child(1){ grid-column: span 2; grid-row: span 2; }
.gallery button:nth-child(n+2){ grid-column: span 1; grid-row: span 1; }
.gallery-more{
  position:absolute; inset:0; background: rgba(36,31,28,.55); color:#fff;
  display:flex; align-items:center; justify-content:center; font-weight:700; font-size: var(--fs-sm);
  opacity:0; transition: opacity var(--dur-fast) var(--ease-out);
}
.gallery button:last-child .gallery-more{ opacity:1; }
@media (max-width: 640px){
  .gallery{ grid-template-columns: repeat(2,1fr); grid-template-rows: repeat(3, 140px); }
  .gallery button:nth-child(n+4){ display:none; }
}

.detail-wrap{ display:grid; grid-template-columns:1fr; gap: var(--space-7); }
@media (min-width:980px){ .detail-wrap{ grid-template-columns: 1.6fr 1fr; } }
.detail-main > * + *{ margin-top: var(--space-6); }
.amenities{ display:grid; grid-template-columns: repeat(2,1fr); gap: var(--space-3); }
@media (min-width:560px){ .amenities{ grid-template-columns: repeat(3,1fr); } }
.amenity{ display:flex; align-items:center; gap:.6rem; font-size: var(--fs-sm); color: var(--color-ink-soft); }
.amenity svg{ color: var(--color-accent); flex-shrink:0; }

.booking-card{
  position:sticky; top: calc(var(--nav-h) + 20px);
  background: var(--color-surface); border: 1px solid var(--color-border);
  border-radius: var(--radius-lg); padding: var(--space-5); box-shadow: var(--shadow-md);
  display:flex; flex-direction:column; gap: var(--space-4);
}
.booking-price{ display:flex; align-items:baseline; gap:.3rem; }
.booking-price .num{ font-family: var(--font-display); font-size: 2rem; }
.booking-price .per{ color: var(--color-muted); font-size: var(--fs-sm); }
.booking-rating{ display:flex; align-items:center; gap:.4rem; font-size: var(--fs-sm); font-weight:700; }
.booking-actions{ display:flex; flex-direction:column; gap:.7rem; }
.booking-divider{ display:flex; align-items:center; gap: var(--space-2); color: var(--color-muted); font-size:var(--fs-xs); text-transform:uppercase; letter-spacing:.06em; font-weight:700; }
.booking-divider::before, .booking-divider::after{ content:""; flex:1; height:1px; background: var(--color-border); }

/* --- Lightbox --- */
.lightbox{
  position:fixed; inset:0; z-index:200; background: rgba(20,17,15,.94);
  display:flex; align-items:center; justify-content:center;
  opacity:0; visibility:hidden; transition: opacity var(--dur-base) var(--ease-out);
  padding: var(--space-5);
}
.lightbox.is-open{ opacity:1; visibility:visible; }
.lightbox img{ max-width:100%; max-height:82vh; border-radius: var(--radius-sm); box-shadow: var(--shadow-lg); }
.lightbox-stage{ width:min(880px,86vw); max-height:82vh; aspect-ratio: 4/3; border-radius: var(--radius-md); overflow:hidden; box-shadow: var(--shadow-lg); }
.lightbox-stage .ph-photo{ width:100%; height:100%; }
.lightbox-stage .ph-label{ font-size:.85rem; padding: var(--space-4); }
.lightbox-stage .ph-icon{ width:60px; height:60px; }
.lightbox-stage img{ width:100%; height:100%; object-fit:cover; display:block; }
.lightbox-close, .lightbox-prev, .lightbox-next{
  position:absolute; background: rgba(255,255,255,.12); color:#fff; border:none;
  width:48px; height:48px; border-radius:50%; display:flex; align-items:center; justify-content:center;
  transition: background var(--dur-fast) var(--ease-out);
}
.lightbox-close:hover, .lightbox-prev:hover, .lightbox-next:hover{ background: rgba(255,255,255,.26); }
.lightbox-close{ top: var(--space-4); right: var(--space-4); }
.lightbox-prev{ left: var(--space-4); top:50%; transform: translateY(-50%); }
.lightbox-next{ right: var(--space-4); top:50%; transform: translateY(-50%); }
@media (max-width: 640px){ .lightbox-prev, .lightbox-next{ width:40px; height:40px; } }

/* --- Reveal on scroll --- */
[data-reveal]{
  opacity:0; transform: translateY(28px);
  transition: opacity var(--dur-slow) var(--ease-out), transform var(--dur-slow) var(--ease-out);
}
[data-reveal].in-view{ opacity:1; transform: translateY(0); }
[data-reveal-group] [data-reveal]{ transition-delay: calc(var(--i, 0) * 70ms); }

.badge-strip{ display:flex; flex-wrap:wrap; gap: var(--space-4); align-items:center; color: var(--color-muted); }
.badge-strip img, .badge-strip .badge{ opacity:.75; }

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

.skip-link{
  position:absolute; left:-999px; top:0; background: var(--color-ink); color:#fff;
  padding: .8rem 1.2rem; z-index:1000; border-radius:0 0 8px 0;
}
.skip-link:focus{ left:0; }

.visually-hidden{ position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; }

/* =========================================================
   Placeholder fotografico — sostituire con foto reali
   Gradiente caldo coerente con la palette, zero dipendenze
   esterne: nessun rischio di caricamento su alcun dispositivo.
   ========================================================= */
.ph-photo{
  position:relative; width:100%; height:100%;
  background: linear-gradient(135deg, var(--ph-c1), var(--ph-c2) 55%, var(--ph-c3));
  overflow:hidden;
  display:flex; align-items:flex-end;
}
.ph-photo::before{
  content:"";
  position:absolute; inset:0;
  background-image: repeating-linear-gradient(45deg, rgba(255,255,255,.06) 0 2px, transparent 2px 7px);
  mix-blend-mode: overlay;
}
.ph-photo::after{
  content:"";
  position:absolute; inset:0;
  background: radial-gradient(120% 90% at 25% 15%, rgba(255,255,255,.28), transparent 60%);
}
.ph-icon{
  position:absolute; top:50%; left:50%; transform:translate(-50%,-70%);
  width:46px; height:46px; border-radius:50%;
  background: rgba(255,255,255,.2); backdrop-filter: blur(3px);
  display:flex; align-items:center; justify-content:center;
  color:#fff; opacity:.9;
}
.ph-label{
  position:relative; z-index:1;
  display:flex; align-items:center; gap:.4rem;
  padding: .85rem 1rem;
  font-size: .68rem; font-weight:700; letter-spacing:.03em;
  color:#fff; text-shadow: 0 1px 4px rgba(20,15,10,.4);
}
.ph-label svg{ width:14px; height:14px; flex-shrink:0; opacity:.9; }

.ph-1{ --ph-c1:#E7CBA3; --ph-c2:#C68A54; --ph-c3:#8A5A34; }
.ph-2{ --ph-c1:#CBD3B6; --ph-c2:#8A9B71; --ph-c3:#4E5C3E; }
.ph-3{ --ph-c1:#E9DCC7; --ph-c2:#B79A6F; --ph-c3:#6E5636; }
.ph-4{ --ph-c1:#DCC7B0; --ph-c2:#A9633A; --ph-c3:#5B3620; }
.ph-5{ --ph-c1:#D8CBB0; --ph-c2:#9C8352; --ph-c3:#5A4A2C; }
.ph-6{ --ph-c1:#E3D6C1; --ph-c2:#BE9A6C; --ph-c3:#6B4E30; }
.ph-7{ --ph-c1:#CCD6C6; --ph-c2:#7E9270; --ph-c3:#414F38; }
.ph-8{ --ph-c1:#EAD9BE; --ph-c2:#C9A24B; --ph-c3:#7A5F26; }

/* --- Hero manifesto (testo lungo, più contenuto) --- */
.hero-manifesto{
  font-size: clamp(0.95rem, 1.15vw, 1.08rem);
  line-height: 1.6;
  max-width: 60ch;
  color: rgba(255,255,255,.9);
}
.hero-manifesto + .hero-manifesto{ margin-top: var(--space-3); }
.hero .hero-content{ padding-bottom: var(--space-7); }

/* --- Mission band --- */
.mission{
  background: var(--color-deep);
  color:#F1EDE6;
  text-align:center;
}
.mission .container{ max-width: 900px; }
.mission .eyebrow{ color: var(--color-orange); justify-content:center; }
.mission .eyebrow::before{ background: var(--color-orange); }
.mission-quote{
  font-family: var(--font-display);
  font-weight: 500;
  font-size: clamp(1.5rem, 3vw, 2.4rem);
  line-height: 1.3;
  letter-spacing: -0.01em;
  margin-top: var(--space-4);
}
.mission-quote .accent{ color: var(--color-orange); }

/* --- Owner benefit cards (objection handlers) --- */
.owner-benefits{ display:grid; grid-template-columns: repeat(auto-fit, minmax(260px,1fr)); gap: var(--space-4); margin-bottom: var(--space-6); }
.obenefit{
  background: var(--color-surface);
  border:1px solid var(--color-border);
  border-radius: var(--radius-md);
  padding: var(--space-5) var(--space-4);
  transition: transform var(--dur-base) var(--ease-out), box-shadow var(--dur-base) var(--ease-out), border-color var(--dur-base) var(--ease-out);
}
.obenefit:hover{ transform: translateY(-4px); box-shadow: var(--shadow-md); border-color: transparent; }
.obenefit .feature-icon{ background: rgba(232,151,30,.14); color: var(--color-orange-dark); }
.obenefit h3{ font-size:1.15rem; margin-bottom:.5rem; }
.obenefit p{ color: var(--color-ink-soft); font-size: var(--fs-sm); }

/* --- Tariffario proprietari --- */
.price-card{
  max-width: 760px; margin-inline: auto;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-md);
  overflow: hidden;
}
.price-table{ width:100%; border-collapse: collapse; font-size: var(--fs-sm); }
.price-table td{ padding: 1rem 1.4rem; border-top: 1px solid var(--color-border); color: var(--color-ink-soft); }
.price-table tr:first-child td{ border-top: 0; }
.price-table td:first-child{ color: var(--color-ink); font-weight: 600; }
.price-table td:last-child{ text-align: right; font-weight: 800; white-space: nowrap; color: var(--color-accent); }
.price-table tr.featured{ background: rgba(232,151,30,.08); }
.price-table tr.featured td:first-child{ box-shadow: inset 3px 0 0 var(--color-orange); }
@media (max-width: 480px){ .price-table td{ padding: .85rem .9rem; } }

.hero .ph-photo{ animation: kenburns 16s var(--ease-in-out) forwards; }
.hero .ph-photo::after{ background: radial-gradient(120% 80% at 30% 10%, rgba(255,255,255,.24), transparent 55%); }
.hero .ph-icon{ width:64px; height:64px; }
.hero .ph-label{ font-size:.72rem; padding: var(--space-3) var(--space-4); }

/* =========================================================
   VISUAL POLISH — effetti leggeri, solo CSS, zero dipendenze
   (rispettano prefers-reduced-motion via la regola globale)
   ========================================================= */

/* --- Barra di avanzamento scroll (creata via JS) --- */
.scroll-progress{
  position: fixed; top: 0; left: 0; height: 3px; width: 0;
  background: linear-gradient(90deg, var(--color-accent), var(--color-orange));
  box-shadow: 0 0 10px rgba(232,151,30,.45);
  z-index: 200; will-change: width;
}

/* --- Texture grain sottile su tutto il sito (film editoriale) --- */
body::after{
  content:""; position: fixed; inset: 0; z-index: 1; pointer-events: none;
  opacity: .022;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

/* --- Eyebrow di sezione: dot pulsante al posto della linea --- */
.eyebrow::before{
  width: 8px; height: 8px; border-radius: 50%;
  background: var(--color-orange);
  box-shadow: 0 0 0 0 rgba(232,151,30,.55);
  animation: dotPulse 2.6s var(--ease-out) infinite;
}
@keyframes dotPulse{
  0%   { box-shadow: 0 0 0 0 rgba(232,151,30,.55); }
  70%  { box-shadow: 0 0 0 9px rgba(232,151,30,0); }
  100% { box-shadow: 0 0 0 0 rgba(232,151,30,0); }
}

/* --- Bottoni: gradiente sottile + sheen sweep all'hover --- */
.btn{ background-image: linear-gradient(135deg, var(--color-accent), var(--color-accent-dark)); position: relative; overflow: hidden; }
.btn::after{
  content:""; position:absolute; top:0; left:-130%; width:55%; height:100%;
  background: linear-gradient(100deg, transparent, rgba(255,255,255,.30), transparent);
  transform: skewX(-18deg); transition: left .6s var(--ease-out); pointer-events:none;
}
.btn:hover::after{ left: 140%; }
.btn:active{ transform: translateY(0) scale(.97); }
.btn-orange{ background-image: linear-gradient(135deg, var(--color-orange), var(--color-orange-dark)); }
.btn-secondary, .btn-ghost-light{ background-image: none; }
.btn-secondary::after{ background: linear-gradient(100deg, transparent, rgba(27,58,92,.10), transparent); }

/* --- Card: linea accento in alto + ombra calda all'hover --- */
.prop-card, .feature{ position: relative; }
.prop-card::before, .feature::before{
  content:""; position:absolute; top:0; left:0; right:0; height:3px; z-index:3;
  background: linear-gradient(90deg, var(--color-accent), var(--color-orange));
  transform: scaleX(0); transform-origin: left;
  transition: transform var(--dur-base) var(--ease-out);
}
.prop-card:hover::before, .feature:hover::before{ transform: scaleX(1); }
.prop-card:hover{ box-shadow: 0 26px 52px -14px rgba(27,58,92,.30); }
.feature:hover{ box-shadow: 0 20px 42px -14px rgba(27,58,92,.20); }

/* --- Reveal: micro-scala per un'entrata più morbida --- */
[data-reveal]{ transform: translateY(28px) scale(.985); }
[data-reveal].in-view{ transform: translateY(0) scale(1); }

/* --- Immagini galleria/card: transizione zoom più fluida già presente; press tattile --- */
.prop-media:active img{ transform: scale(1.03); }

/* --- Feature icon: leggero alone all'hover --- */
.feature:hover .feature-icon{ background: var(--color-accent); color:#fff; transition: background var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out); }
