/*
Theme Name: L'Angolo Immobiliare
Theme URI: https://www.analiticamarketing.it/temi/angolo-immobiliare
Author: Studio Analitica Marketing
Author URI: https://analiticamarketing.it
Description: Tema immobiliare su misura per L'Angolo Immobiliare di Arluno (MI). Ricerca in primo piano già nell'above the fold, schede immobile con badge che dicono subito contratto, novità, ribassi ed esclusive, archivio con filtri laterali e pillole rimovibili, scheda immobile con menù di sezione agganciato e preferiti senza registrazione. Gestione completa degli annunci dal backend, catalogo importabile in un clic, SEO locale per Arluno e l'Ovest Milanese.
Version: 1.3.0
Requires at least: 6.0
Tested up to: 7.1
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: angolo-immobiliare
Tags: real-estate, custom-header, custom-menu, custom-logo, featured-images, translation-ready, block-styles, wide-blocks, accessibility-ready
*/

/* ═══════════════════════════════════════════════════════════════
   TOKEN

   Tre colori e basta. Il bianco perla è il fondo: caldo, non clinico.
   Il blu notte è l'agenzia — solido, da studio serio — e tiene testata,
   titoli, prezzi e pulsanti primari. Il complementare del blu è il rame:
   compare solo dove serve un'azione o un segnale (pulsante Valuta, badge
   Nuovo, stelle), mai come decorazione. Il rame delle azioni è quello
   scuro (#A95B22): il bianco sopra regge il contrasto AA anche a 14 px.
   Il rame del marchio (#C8742F) resta per i segni grandi.

   Due font, un registro solo: DM Sans per i titoli, Inter per
   testo, prezzi e metrature (cifre tabulari). Sono entrambi grotesk
   moderni: il titolo si stacca per forma e peso, non per stile.

   I nomi delle variabili sono semantici (--primario, --accento…) così
   una futura ripalettatura si fa in questo blocco e basta.
   ═══════════════════════════════════════════════════════════════ */
:root {
  --font-display: 'DM Sans', 'DM Sans ripiego', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --font-text:    'Inter', 'Inter ripiego', system-ui, -apple-system, 'Segoe UI', sans-serif;

  /* Superfici — bianco perla */
  --bg:        #F7F6F2;
  --surface:   #FFFFFF;
  --surface-2: #EDEBE4;

  /* Testo */
  --ink:       #262836;
  --ink-soft:  #3E4152;
  --gray:      #5F6878;
  --gray-soft: #8E96A5;

  /* Blu notte (primario) */
  --primario:       #2F313F;
  --primario-deep:  #1F2130;
  --primario-mid:   #4A4D62;
  --primario-soft:  #E6E7EC;
  /* Rame (complementare) */
  --accento:        #A95B22;
  --accento-deep:   #8A4718;
  --rame-marchio:   #C8742F;
  --accento-soft:   #F7E7D8;
  /* Affitti e stati */
  --affitto:        #3B78B8;
  --affitto-soft:   #E1ECF7;
  --ribasso:        #B44A3A;

  --line:       rgba(47,49,63,0.13);
  --line-light: rgba(47,49,63,0.07);

  --wa:      #25D366;
  --wa-deep: #128C7E;

  /* Alias mantenuti per i blocchi condivisi. */
  --verde: var(--primario); --verde-deep: var(--primario-deep); --verde-mid: var(--primario-mid); --verde-soft: var(--primario-soft);
  --sole: var(--accento); --sole-deep: var(--accento-deep); --sole-soft: var(--accento-soft);
  --mattone: var(--ribasso); --mattone-soft: #F5E2DE;
  --cielo: var(--affitto); --cielo-soft: var(--affitto-soft);
  --gold: var(--accento); --alert: var(--ribasso); --accent: var(--primario-mid);
  --navy: var(--primario); --navy-deep: var(--primario-deep); --blue: var(--primario-mid);
  --periwinkle: #7C8AA8; --label: var(--gray); --accent-ink: #F3F5F9;

  --r-sm: 6px; --r-md: 10px; --r-lg: 16px; --r-xl: 22px; --r-full: 999px;

  --shadow-card: 0 1px 2px rgba(47,49,63,.06), 0 10px 30px -18px rgba(47,49,63,.35);
  --shadow-pop:  0 24px 60px -24px rgba(31,33,48,.45);

  --header-h: 88px;
  --ease: cubic-bezier(.2, .8, .2, 1);
  --container: 1400px;

  /*
     Scala tipografica indicata dal cliente (mobile / portatile / desktop):
     hero 40/92/92, H1 pagina 36/55/56, titolo scheda 24/30/30, H2 24-28/34-40,
     H3 19-22/19-28, prezzo 24, testo 19, tutto il resto 18 (menu, pulsanti,
     badge, note legali).
  */
  --t-xs: 18px; --t-sm: 18px; --t-base: 19px; --t-md: 19px;
  --t-lg:  clamp(19px, 1.6vw, 24px);           /* H3, titoli card */
  --t-xl:  clamp(24px, 2vw, 30px);             /* titolo scheda immobile */
  --t-2xl: clamp(26px, 2.7vw, 40px);           /* H2 di sezione */
  --t-h1:  clamp(36px, 3.9vw, 56px);           /* H1 delle pagine */
  --t-3xl: clamp(40px, 6.4vw, 92px);           /* titolo hero */
  --t-prezzo: 24px;
  --gutter: clamp(18px, 4vw, 48px);
  --gutter-wide: clamp(18px, 8.3vw, 120px);
}

*, *::before, *::after { box-sizing: border-box; }
[hidden] { display: none !important; }
html, body { margin: 0; padding: 0; }
html { scroll-behavior: smooth; scroll-padding-top: calc(var(--header-h) + 14px); }
body {
  background: var(--bg); color: var(--ink);
  font-family: var(--font-text); font-size: var(--t-base); line-height: 1.6;
  -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;
  overflow-x: hidden; text-rendering: optimizeLegibility;
}
.section-cv { content-visibility: auto; contain-intrinsic-size: 1px 800px; }
h1, h2, h3, h4 { color: var(--primario); }
.hero h1, .page-hero h1 { font-family: var(--font-display); }
a { color: inherit; text-decoration: none; }
img { max-width: 100%; height: auto; display: block; }
svg { max-width: 100%; max-height: 100%; }
button { font-family: inherit; }
:focus-visible { outline: 3px solid var(--accento); outline-offset: 3px; border-radius: 4px; }
::selection { background: var(--primario); color: #fff; }
html { accent-color: var(--primario); caret-color: var(--primario); scrollbar-color: #B9BFCB var(--bg); }

.screen-reader-text {
  border: 0; clip: rect(1px,1px,1px,1px); clip-path: inset(50%);
  height: 1px; width: 1px; overflow: hidden; position: absolute !important;
  word-wrap: normal !important; padding: 0; margin: -1px;
}
.skip-link {
  position: absolute; left: -9999px; top: 0; z-index: 999;
  background: var(--ink); color: #fff; padding: 12px 20px; border-radius: 0 0 var(--r-md) 0;
  font-size: var(--t-sm); font-weight: 600;
}
.skip-link:focus { left: 0; }

.container {
  max-width: var(--container); margin: 0 auto;
  padding-left: clamp(18px, 4vw, 48px); padding-right: clamp(18px, 4vw, 48px);
}

/* Cifre tabulari ovunque si mettano in colonna prezzi e metrature. */
.num, .price, .specs, .stat-item .n, .listing-price, .listing-spec .v { font-variant-numeric: tabular-nums; }

/* ═══════════════ Pulsanti ═══════════════ */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 10px;
  min-height: 48px; padding: 0 22px; border-radius: var(--r-md);
  font-size: var(--t-sm); font-weight: 600; letter-spacing: 0.005em; line-height: 1.2;
  border: 1.5px solid transparent; cursor: pointer; white-space: nowrap;
  transition: background .2s, color .2s, border-color .2s, transform .25s var(--ease), box-shadow .25s;
}
.btn svg { width: 18px; height: 18px; flex-shrink: 0; }
.btn:hover { transform: translateY(-1px); }
.btn--verde { background: var(--verde); color: #fff; }
.btn--verde:hover { background: var(--verde-deep); }
.btn--sole { background: var(--accento); color: #fff; }
.btn--sole:hover { background: var(--accento-deep); }
.btn--ghost { background: transparent; color: var(--ink); border-color: var(--line); }
.btn--ghost:hover { border-color: var(--ink); }
.btn--ghost-light { background: rgba(255,255,255,.08); color: #fff; border-color: rgba(255,255,255,.28); }
.btn--ghost-light:hover { background: rgba(255,255,255,.16); }
.btn--wa { background: var(--wa-deep); color: #fff; }
.btn--wa:hover { background: #0f7a6d; }
.btn--sm { min-height: 40px; padding: 0 16px; font-size: var(--t-sm); }
.btn--block { width: 100%; }
.btn[disabled] { opacity: .6; cursor: progress; transform: none; }

.link-arrow {
  display: inline-flex; align-items: center; gap: 8px; min-height: 44px;
  font-weight: 600; color: var(--primario); border-bottom: 2px solid var(--accento); padding-bottom: 2px;
}
.link-arrow svg { width: 18px; height: 18px; transition: transform .25s var(--ease); }
.link-arrow:hover svg { transform: translateX(4px); }

/* ═══════════════ Testata ═══════════════ */
.site-header {
  position: sticky; top: 0; z-index: 60;
  background: var(--surface);
  border-bottom: 1px solid var(--line);
}
.admin-bar .site-header { top: 32px; }
.site-header .container {
  display: flex; align-items: center; gap: clamp(14px, 2vw, 32px);
  min-height: var(--header-h); padding-top: 12px; padding-bottom: 12px;
}
@media (min-width: 1280px) { .site-header .container { max-width: none; padding-left: var(--gutter-wide); padding-right: var(--gutter-wide); } }
.brand-logo { height: 78px; width: auto; display: block; }
@media (max-width: 600px) { .brand-logo { height: 60px; } }
.brand--footer .brand-logo { height: 84px; }
.brand { display: inline-flex; align-items: center; gap: 10px; flex-shrink: 0; min-height: 44px; color: var(--verde); }
.brand img { height: 40px; width: auto; max-width: min(220px, 40vw); object-fit: contain; }
.brand .brand-mark { width: 38px; height: 38px; flex-shrink: 0; }
.brand .brand-name {
  font-family: var(--font-text); font-weight: 700; font-size: 19px; letter-spacing: -0.02em;
  line-height: 1; white-space: nowrap;
}
.brand .brand-name small { display: block; font-family: var(--font-text); font-weight: 500; font-size: var(--t-xs); letter-spacing: .04em; color: var(--gray); margin-top: 4px; }

.nav-primary { flex: 1; display: none; justify-content: center; }
.nav-primary ul { display: flex; gap: 4px; list-style: none; margin: 0; padding: 0; }
.nav-primary a {
  display: inline-flex; align-items: center; min-height: 40px; padding: 0 14px;
  border-radius: var(--r-md); font-size: var(--t-sm); font-weight: 500; letter-spacing: -0.2px; color: var(--ink-soft); white-space: nowrap;
  transition: background .2s, color .2s;
}
.nav-primary a:hover { background: var(--surface-2); color: var(--ink); }
.nav-primary .current-menu-item > a, .nav-primary .current_page_item > a { color: var(--verde); background: var(--verde-soft); }

.header-actions { margin-left: auto; display: flex; align-items: center; gap: 8px; }
.header-phone {
  display: none; align-items: center; gap: 10px; min-height: 44px; padding: 0 12px;
  font-weight: 600; font-size: var(--t-sm); color: var(--verde); border-radius: var(--r-md);
}
.header-phone:hover { background: var(--surface-2); }
.header-phone .open-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--gray-soft); }
.header-phone .open-dot.is-open { background: #2E9E5B; box-shadow: 0 0 0 3px rgba(46,158,91,.22); }
.header-cta { display: none; }
.header-fav {
  position: relative; display: inline-flex; align-items: center; justify-content: center;
  width: 44px; height: 44px; border-radius: var(--r-md); color: var(--ink-soft); border: 1px solid transparent;
}
.header-fav:hover { background: var(--surface-2); }
.header-fav .n {
  position: absolute; top: 4px; right: 4px; min-width: 18px; height: 18px; padding: 0 5px;
  border-radius: var(--r-full); background: var(--mattone); color: #fff;
  font-size: var(--t-xs); font-weight: 700; line-height: 18px; text-align: center;
}
.header-fav .n:empty, .header-fav .n[data-n="0"] { display: none; }

.nav-toggle {
  display: inline-flex; align-items: center; justify-content: center;
  width: 44px; height: 44px; border-radius: var(--r-md);
  background: var(--verde); color: #fff; border: none; cursor: pointer; padding: 0;
}
.nav-toggle span { display: block; width: 18px; height: 2px; background: currentColor; position: relative; border-radius: 2px; transition: background .2s; }
.nav-toggle span::before, .nav-toggle span::after {
  content: ''; position: absolute; left: 0; width: 18px; height: 2px; background: currentColor; border-radius: 2px;
  transition: transform .25s var(--ease);
}
.nav-toggle span::before { top: -6px; }
.nav-toggle span::after { top: 6px; }
.menu-aperto .nav-toggle span { background: transparent; }
.menu-aperto .nav-toggle span::before { transform: translateY(6px) rotate(45deg); }
.menu-aperto .nav-toggle span::after { transform: translateY(-6px) rotate(-45deg); }
.menu-aperto { overflow: hidden; }

.menu-mobile {
  position: fixed; left: 0; right: 0; bottom: 0; top: var(--header-h); z-index: 55;
  background: var(--bg); color: var(--ink); border-top: 1px solid var(--line);
  padding: 16px var(--gutter) calc(24px + env(safe-area-inset-bottom));
  display: flex; flex-direction: column; gap: 20px; overflow-y: auto; overscroll-behavior: contain;
}
.admin-bar .menu-mobile { top: calc(var(--header-h) + 46px); }
.menu-mobile[hidden] { display: none; }
.menu-mobile__voci { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.menu-mobile__voci a {
  display: flex; align-items: center; gap: 14px; min-height: 60px; padding: 8px 14px 8px 8px;
  background: var(--surface); border: 1px solid var(--line-light); border-radius: var(--r-lg);
  color: var(--primario); font-family: var(--font-display); font-size: 22px; font-weight: 600; letter-spacing: -0.01em;
  text-decoration: none; transition: border-color .2s, background .2s;
}
.menu-mobile__voci a:hover, .menu-mobile__voci a:focus-visible { border-color: var(--primario); text-decoration: none; }
.menu-mobile__ico {
  flex-shrink: 0; width: 44px; height: 44px; border-radius: var(--r-md);
  background: var(--primario-soft); color: var(--primario); display: inline-flex; align-items: center; justify-content: center;
}
.menu-mobile__ico svg { width: 20px; height: 20px; }
.menu-mobile__testo { flex: 1; min-width: 0; }
.menu-mobile__freccia { color: var(--gray-soft); display: inline-flex; }
.menu-mobile__voci a.is-corrente { background: var(--primario); border-color: var(--primario); color: #fff; }
.menu-mobile__voci a.is-corrente .menu-mobile__ico { background: rgba(255,255,255,.14); color: #fff; }
.menu-mobile__voci a.is-corrente .menu-mobile__freccia { color: rgba(255,255,255,.7); }
.menu-mobile__azioni { display: flex; flex-direction: column; gap: 10px; margin-top: auto; }
.menu-mobile__azioni .btn { min-height: 54px; }
.menu-mobile__tel { gap: 10px; }
.menu-mobile__orari { display: flex; gap: 10px; align-items: flex-start; justify-content: center; margin: 4px 0 0; font-size: 16px; color: var(--gray); text-align: center; line-height: 1.5; }
.menu-mobile__orari svg { margin-top: 4px; flex-shrink: 0; }
.menu-aperto { overflow: hidden; }

@media (min-width: 900px) {
  .nav-primary { display: flex; }
  .header-phone { display: inline-flex; }
  .header-cta { display: inline-flex; }
  .nav-toggle { display: none; }
}
@media (min-width: 900px) and (max-width: 1240px) { .header-phone { display: none; } }
@media (min-width: 900px) and (max-width: 1140px) {
  .nav-primary a { padding: 0 10px; font-size: var(--t-xs); }
  .brand .brand-name small { display: none; }
}

/* ═══════════════ Hero della home ═══════════════ */
/*
   Video a tutto schermo (115 % di larghezza e altezza, centrato, ancorato in
   alto), contenuto centrato, riquadro di ricerca scuro e sfumato sopra il
   video. Il titolo resta nel blu del logo, come tutti i titoli del sito: un
   velo chiaro sul video garantisce il contrasto.
*/
.hero {
  position: relative; overflow: hidden; color: var(--ink);
  background: var(--surface-2);
  min-height: calc(100vh - var(--header-h)); min-height: calc(100svh - var(--header-h));
  display: flex; align-items: flex-start; justify-content: center;
  padding: 60px var(--gutter-wide) 48px;
}
.hero-media { position: absolute; inset: 0; z-index: 0; overflow: hidden; }
.hero-media img, .hero-media video {
  position: absolute; top: 0; left: 50%; width: 115%; height: 115%; transform: translateX(-50%);
  object-fit: cover; object-position: center top;
}
.hero-media video { opacity: 0; pointer-events: none; } /* la dissolvenza è in JavaScript */
.hero::after {
  content: ''; position: absolute; inset: 0; z-index: 1; pointer-events: none;
  background: linear-gradient(to bottom, rgba(247,246,242,.82) 0%, rgba(247,246,242,.66) 42%, rgba(247,246,242,.2) 72%, rgba(31,33,48,.35) 100%);
}
.hero-inner { position: relative; z-index: 2; width: 100%; max-width: 1040px; margin: -50px auto 0; display: flex; flex-direction: column; align-items: center; gap: 44px; }
.hero-head { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 34px; }

.hero-badge {
  display: inline-flex; align-items: center; gap: 10px; padding: 5px 16px 5px 5px;
  background: var(--surface); color: var(--ink); border-radius: var(--r-full);
  box-shadow: 0 6px 20px -8px rgba(31,33,48,.35); font-size: var(--t-sm); line-height: 1.2; text-decoration: none;
}
.hero-badge:hover { text-decoration: none; box-shadow: 0 10px 26px -10px rgba(31,33,48,.45); }
.hero-badge__tag { display: inline-flex; align-items: center; gap: 6px; background: var(--primario); color: #fff; font-weight: 600; padding: 8px 12px; border-radius: var(--r-full); font-size: var(--t-xs); }
.hero-badge__tag svg { width: 14px; height: 14px; }

.hero h1 {
  font-family: var(--font-display); font-weight: 700; font-size: var(--t-3xl);
  line-height: 1; letter-spacing: -0.052em; margin: 0; max-width: 16ch; text-wrap: balance; color: var(--primario);
}
.hero-sub { font-family: var(--font-text); font-size: var(--t-sm); font-weight: 500; letter-spacing: -0.02em; line-height: 1.5; color: #3A3D4A; max-width: 736px; margin: 0; }

/* Il riquadro di ricerca: sfondo scuro trasparente sfocato, 728 px, angoli 18 px. */
.hero-search {
  width: 100%; max-width: 728px; border-radius: 18px; padding: 14px;
  background: rgba(0,0,0,.24); -webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px);
  color: #fff; display: flex; flex-direction: column; gap: 12px; box-shadow: 0 30px 60px -30px rgba(0,0,0,.5);
}
.hs-top { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; font-size: var(--t-xs); font-weight: 500; color: #fff; }
.hs-top__left { display: inline-flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.hs-top__left b { font-weight: 700; }
.hs-top__pill { display: inline-flex; align-items: center; min-height: 30px; padding: 0 12px; border-radius: var(--r-sm); background: var(--accento); color: #fff; font-weight: 600; font-size: var(--t-xs); }
.hs-top__pill:hover { background: var(--accento-deep); text-decoration: none; }
.hs-top__right { display: inline-flex; align-items: center; gap: 6px; opacity: .9; }
.hs-top__right svg { width: 14px; height: 14px; }

.hs-input { position: relative; display: flex; align-items: center; background: var(--surface); border-radius: 12px; box-shadow: 0 8px 24px -12px rgba(0,0,0,.4); padding: 6px 6px 6px 18px; }
.hs-input input[type="search"] {
  flex: 1; border: none; background: transparent; font: inherit; font-size: var(--t-sm); color: var(--ink); min-height: 48px; outline: none; -webkit-appearance: none; appearance: none;
}
.hs-input input::placeholder { color: rgba(0,0,0,.6); }
.hs-input input:focus-visible { outline: none; }
.hs-input:focus-within { box-shadow: 0 0 0 3px var(--primario-soft), 0 8px 24px -12px rgba(0,0,0,.4); }
.hs-go { width: 44px; height: 44px; border-radius: 50%; border: none; background: var(--primario); color: #fff; display: inline-flex; align-items: center; justify-content: center; cursor: pointer; flex-shrink: 0; }
.hs-go:hover { background: var(--primario-deep); }
.hs-go svg { width: 18px; height: 18px; }

.hs-bottom { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.hs-chips { display: flex; gap: 8px; flex-wrap: wrap; }
.hs-chip {
  position: relative; display: inline-flex; align-items: center; gap: 8px; min-height: 40px; padding: 0 12px;
  background: rgba(255,255,255,.14); border: 1px solid rgba(255,255,255,.18); border-radius: 6px; color: #fff; cursor: pointer;
}
.hs-chip:hover { background: rgba(255,255,255,.22); }
.hs-chip svg { width: 15px; height: 15px; opacity: .9; }
.hs-chip select {
  border: none; background: transparent; color: #fff; font: inherit; font-size: var(--t-xs); font-weight: 500; outline: none;
  appearance: none; -webkit-appearance: none; padding-right: 18px; cursor: pointer; max-width: 200px;
  background-image: linear-gradient(45deg, transparent 50%, #fff 50%), linear-gradient(135deg, #fff 50%, transparent 50%);
  background-position: calc(100% - 8px) 55%, calc(100% - 3px) 55%; background-size: 5px 5px; background-repeat: no-repeat;
}
.hs-chip select option { color: var(--ink); background: var(--surface); }
.hs-chip:focus-within { outline: 2px solid #fff; outline-offset: 2px; }
.hs-vendi-link { font-size: var(--t-xs); color: #fff; font-weight: 500; text-decoration: underline; text-underline-offset: 3px; }
.hs-vendi-link:hover { color: #fff; }

@media (max-width: 860px) {
  .hero { min-height: 0; padding: 40px var(--gutter) 40px; align-items: flex-start; }
  .hero-inner { margin-top: 0; gap: 28px; }
  .hero-head { gap: 22px; }
  .hero h1 { font-size: var(--t-3xl); }
  .hero-badge__text { font-size: var(--t-xs); }
  .hs-chips { width: 100%; }
  .hs-chip { flex: 1 1 auto; }
  .hs-chip select { max-width: 100%; width: 100%; }
}
@media (max-width: 560px) {
  .hero-badge { padding: 4px 12px 4px 4px; font-size: var(--t-xs); }
  .hs-top__right { display: none; }
}

/* ═══════════════ Intestazioni di sezione ═══════════════ */
.section-head {
  display: grid; grid-template-columns: minmax(0,1.2fr) minmax(0,1fr); gap: clamp(16px,3vw,48px);
  align-items: end; margin-bottom: clamp(26px,3.5vw,44px);
}
.section-head h2 {
  font-family: var(--font-display); font-weight: 700; font-size: var(--t-2xl); color: var(--primario);
  line-height: 1.1; letter-spacing: -0.025em; margin: 0; text-wrap: balance;
}
.section-head h2 em { font-style: normal; font-weight: 400; color: var(--gray); }
.section-head .lead { font-size: var(--t-base); line-height: 1.65; color: var(--ink-soft); margin: 0; max-width: 48ch; }
.section-head .lead strong { font-weight: 600; color: var(--ink); }
.section-head .side { display: flex; justify-content: flex-end; }
@media (max-width: 860px) { .section-head { grid-template-columns: 1fr; gap: 12px; } .section-head .side { justify-content: flex-start; } }

/* ═══════════════ Ultimi immobili e categorie ═══════════════ */
.ultimi { padding: clamp(44px,6vw,80px) 0 clamp(48px,6vw,88px); }
.categorie {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 10px;
  margin: 0 0 clamp(24px,3vw,36px); padding: 0; list-style: none;
}
.categorie a {
  display: flex; align-items: center; gap: 12px; min-height: 64px; height: 100%; padding: 12px 14px;
  background: var(--surface); border: 1px solid var(--line-light); border-radius: var(--r-lg);
  transition: border-color .2s, transform .25s var(--ease), box-shadow .25s;
}
.categorie a:hover { border-color: var(--verde); transform: translateY(-2px); box-shadow: var(--shadow-card); }
.categorie .ico {
  display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px;
  border-radius: 10px; background: var(--verde-soft); color: var(--verde); flex-shrink: 0;
}
.categorie .ico svg { width: 20px; height: 20px; }
.categorie b { display: block; font-size: var(--t-xs); font-weight: 600; line-height: 1.2; overflow-wrap: anywhere; }
.categorie small { display: block; font-size: var(--t-xs); color: var(--gray); margin-top: 2px; }
.categorie .is-cantieri .ico { background: var(--sole-soft); color: var(--sole-deep); }

.ultimi-cta, .cantieri-cta { margin: clamp(22px,3vw,36px) 0 0; display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 12px; }

/* Comuni: la seconda domanda di chi cerca casa è "dove". */
.comuni { padding: clamp(44px,6vw,80px) 0; background: var(--surface); border-top: 1px solid var(--line-light); border-bottom: 1px solid var(--line-light); }
.comuni-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 10px; list-style: none; margin: 0; padding: 0; }
.comuni-grid a {
  display: flex; justify-content: space-between; align-items: center; gap: 10px;
  min-height: 56px; padding: 10px 16px; border-radius: var(--r-md);
  background: var(--bg); border: 1px solid transparent; font-weight: 500;
  transition: border-color .2s, background .2s;
}
.comuni-grid a:hover { border-color: var(--verde); background: var(--surface); }
.comuni-grid a.is-sede { background: var(--verde); color: #fff; }
.comuni-grid a.is-sede:hover { background: var(--verde-deep); }
.comuni-grid .n { font-size: var(--t-xs); font-weight: 600; color: var(--gray); background: var(--surface); padding: 3px 9px; border-radius: var(--r-full); font-variant-numeric: tabular-nums; }
@media (max-width: 560px) { .comuni-grid { grid-template-columns: 1fr 1fr; gap: 8px; } .comuni-grid a { min-height: 60px; padding: 8px 12px; font-size: var(--t-xs); line-height: 1.25; } }
.comuni-grid a.is-sede .n { background: rgba(255,255,255,.16); color: #fff; }

/* Cantieri in home */
.cantieri { padding: clamp(44px,6vw,80px) 0; background: var(--verde-deep); color: #fff; }
.cantieri .section-head h2, .cantieri .section-head .lead { color: #fff; }
.cantieri .section-head h2 em { color: rgba(255,255,255,.7); }
.cantieri .section-head .lead { color: rgba(255,255,255,.75); }
.cantieri .section-head .label { color: #F2B27A; }
.cantieri .link-arrow { color: #fff; }

/* ═══════════════ Numeri ═══════════════ */
.stats-bar { padding: clamp(36px,5vw,64px) 0; }
/* Una fascia sola, divisa da filetti: quattro fatti dell'agenzia, non quattro card. */
.stats-bar .container { display: grid; grid-template-columns: repeat(4,1fr); gap: 0; background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg); padding: 0; width: calc(100% - 2 * clamp(18px, 4vw, 48px)); max-width: calc(var(--container) - 96px); }
.stat-item { display: flex; flex-direction: column; gap: 8px; padding: clamp(20px,2.4vw,30px) clamp(18px,2.2vw,28px); }
.stat-item + .stat-item { border-left: 1px solid var(--line); }
.stat-item .n { font-family: var(--font-text); font-size: clamp(34px, 3.8vw, 54px); font-weight: 700; line-height: 1; color: var(--primario); letter-spacing: -0.04em; }
.stat-item .n em { font-style: normal; font-size: .55em; color: var(--sole-deep); margin-left: 4px; }
.stat-item .l { font-size: var(--t-xs); color: var(--gray); line-height: 1.5; max-width: 24ch; }
.stat-item a.l { color: var(--verde); text-decoration: underline; text-underline-offset: 3px; }
@media (max-width: 900px) {
  .stats-bar .container { grid-template-columns: 1fr 1fr; }
  .stat-item:nth-child(3) { border-left: 0; }
  .stat-item:nth-child(n+3) { border-top: 1px solid var(--line); }
}
@media (max-width: 480px) {
  .stats-bar .container { grid-template-columns: 1fr; }
  .stat-item + .stat-item { border-left: 0; border-top: 1px solid var(--line); }
}

/* ═══════════════ Perché noi ═══════════════ */
.promise { padding: clamp(56px,8vw,120px) 0; }
.promise-list { display: flex; flex-direction: column; }
.promise-item {
  display: grid; grid-template-columns: minmax(0,1fr); gap: 24px;
  padding: clamp(22px,3vw,34px) 0; border-top: 1px solid var(--line);
}
/* L'ordine dei punti non è una sequenza: niente numeri. Titolo a sinistra,
   spiegazione a destra, come un elenco di impegni. */
.promise-item .num { display: none; }
.promise-item > div { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1.1fr); gap: 8px clamp(24px,4vw,64px); align-items: baseline; }
@media (max-width: 760px) { .promise-item > div { grid-template-columns: 1fr; } }
.promise-item h3 { font-family: var(--font-display); font-size: clamp(20px, 2vw, 26px); font-weight: 700; line-height: 1.2; letter-spacing: -0.015em; margin: 0; text-wrap: balance; }
.promise-item p { font-size: var(--t-xs); color: var(--ink-soft); line-height: 1.7; margin: 0; max-width: 60ch; }

/* ═══════════════ Il percorso ═══════════════ */
.method { background: var(--surface); padding: clamp(56px,8vw,110px) 0; border-top: 1px solid var(--line-light); border-bottom: 1px solid var(--line-light); }
.method-steps { display: grid; grid-template-columns: repeat(5,1fr); gap: 12px; list-style: none; margin: 0; padding: 0; }
.step { display: flex; flex-direction: column; gap: 12px; padding: 22px 20px; background: var(--bg); border-radius: var(--r-lg); position: relative; }
.step .ico { font-family: var(--font-text); font-size: 22px; font-weight: 700; color: var(--accento); }
.step h3 { font-family: var(--font-display); font-size: 19px; font-weight: 600; margin: 0; line-height: 1.25; }
.step p { font-size: var(--t-xs); color: var(--gray); line-height: 1.65; margin: 0; }
.method-steps--cinque .step::before { content: none; }
@media (max-width: 1100px) { .method-steps { grid-template-columns: repeat(3,1fr); } }
@media (max-width: 720px) { .method-steps { grid-template-columns: 1fr 1fr; } }
@media (max-width: 480px) { .method-steps { grid-template-columns: 1fr; } }

/* ═══════════════ Recensioni ═══════════════ */
.reviews { padding: clamp(56px,8vw,120px) 0; }
.reviews-masonry { columns: 3; column-gap: 16px; }
.reviews--pagina { padding: clamp(44px,6vw,80px) 0; }
.review-when { display: block; font-size: 16px; color: var(--gray); letter-spacing: 0; margin-top: 4px; }
.page-hero__cta { margin-top: 22px; }
.review-card {
  break-inside: avoid; display: inline-block; width: 100%; margin-bottom: 16px;
  background: var(--surface); border: 1px solid var(--line-light); border-radius: var(--r-lg); padding: 22px 24px;
}
.review-text { font-size: var(--t-xs); line-height: 1.7; color: var(--ink-soft); margin: 0 0 16px; }
.review-foot { border-top: 1px solid var(--line-light); padding-top: 14px; display: flex; align-items: center; gap: 12px; }
.review-avatar { flex: 0 0 auto; width: 38px; height: 38px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; background: var(--verde); color: #fff; font-weight: 700; font-size: var(--t-xs); }
.review-who { display: flex; flex-direction: column; gap: 2px; }
.review-name { font-weight: 600; font-size: var(--t-xs); }
.review-name a { color: inherit; }
.review-name a:hover { text-decoration: underline; text-underline-offset: 3px; }
.review-stars { color: var(--sole-deep); font-size: var(--t-xs); letter-spacing: 2px; line-height: 1; }
.review-stars, .score-stars, .footer-google .stars { display: inline-flex; gap: 2px; letter-spacing: 0; }
.review-stars svg, .score-stars svg, .footer-google .stars svg { fill: currentColor; stroke: none; flex-shrink: 0; max-height: none; }
.footer-google .stars svg, .review-stars svg { width: 15px; height: 15px; }
.link-arrow svg, .score-link svg, .wz-arrow svg { vertical-align: -3px; }
.reviews-footer { margin-top: clamp(28px,4vw,48px); display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 20px; padding: 22px 26px; background: var(--surface); border: 1px solid var(--line-light); border-radius: var(--r-lg); }
.score-group { display: flex; align-items: center; gap: 18px; }
.score-num { font-family: var(--font-text); font-size: clamp(36px,4vw,52px); font-weight: 600; line-height: 1; color: var(--verde); }
.score-right { display: flex; flex-direction: column; gap: 4px; }
.score-stars { color: var(--sole-deep); font-size: 18px; letter-spacing: 2px; line-height: 1; }
.score-label { font-size: var(--t-xs); color: var(--gray); }
.google-pill { display: inline-flex; align-items: center; gap: 8px; font-size: var(--t-xs); font-weight: 600; color: var(--gray); }
@media (max-width: 980px) { .reviews-masonry { columns: 2; } }
@media (max-width: 600px) { .reviews-masonry { columns: 1; } }

/* ═══════════════ Valutazione / modulo ═══════════════ */
section.lead { background: var(--verde); color: #fff; padding: clamp(56px,8vw,120px) 0; position: relative; overflow: hidden; }
section.lead .container { position: relative; z-index: 1; }
.lead-grid { display: grid; grid-template-columns: 1fr 1.1fr; gap: clamp(32px,5vw,80px); align-items: start; }
.lead-note { font-size: var(--t-xs); font-weight: 600; color: #F2B27A; margin: -8px 0 16px; }
.lead-intro h2 { font-family: var(--font-display); font-size: var(--t-2xl); font-weight: 800; line-height: 1.08; margin: 0 0 20px; letter-spacing: -0.025em; }
.lead-intro h2 em { font-style: normal; font-weight: 400; color: rgba(255,255,255,.7); }
.lead-intro p { color: rgba(255,255,255,.78); line-height: 1.7; max-width: 44ch; margin: 0 0 28px; }
.lead-benefits { display: flex; flex-direction: column; gap: 12px; border-top: 1px solid rgba(255,255,255,.14); padding-top: 24px; }
.lead-benefit { display: flex; gap: 12px; align-items: flex-start; }
.lead-benefit .check { flex-shrink: 0; width: 28px; height: 28px; border-radius: 50%; background: rgba(200,116,47,.22); color: #F2B27A; display: inline-flex; align-items: center; justify-content: center; font-size: var(--t-xs); }
.lead-benefit .t { font-size: var(--t-xs); line-height: 1.55; color: rgba(255,255,255,.88); }

.form-card { background: var(--surface); color: var(--ink); border-radius: var(--r-xl); padding: clamp(24px,3vw,40px); box-shadow: var(--shadow-pop); }
.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.field { display: flex; flex-direction: column; gap: 6px; }
.field.full { grid-column: 1 / -1; }
.field label { font-size: var(--t-xs); font-weight: 600; color: var(--ink-soft); }
.field input, .field select, .field textarea {
  font: inherit; font-size: var(--t-xs); color: var(--ink); background: var(--bg);
  border: 1px solid var(--line); border-radius: var(--r-md); padding: 11px 14px; outline: none;
  width: 100%; appearance: none; min-height: 46px; transition: border-color .2s, background .2s;
}
.field textarea { resize: vertical; min-height: 96px; }
.field input:focus, .field select:focus, .field textarea:focus { border-color: var(--verde); background: var(--surface); }
.field input[aria-invalid="true"], .field textarea[aria-invalid="true"] { border-color: var(--alert); }
.form-card .submit {
  background: var(--verde); color: #fff; border: none; padding: 14px 26px; border-radius: var(--r-md);
  font: inherit; font-weight: 600; font-size: var(--t-xs); cursor: pointer; display: inline-flex; align-items: center; gap: 10px;
  transition: background .2s, transform .25s var(--ease);
}
.form-card .submit:hover { background: var(--verde-deep); transform: translateY(-1px); }
.form-card .submit[disabled] { opacity: .6; cursor: progress; transform: none; }
.form-success { display: none; text-align: center; padding: 32px 0; }
.form-success.show { display: block; }
.form-success .ok { width: 56px; height: 56px; border-radius: 50%; background: var(--verde); color: #fff; display: inline-flex; align-items: center; justify-content: center; font-size: 24px; margin-bottom: 16px; }
.form-success h3 { font-family: var(--font-display); font-size: 26px; font-weight: 600; margin: 0 0 8px; }
.form-success p { color: var(--gray); max-width: 36ch; margin: 0 auto; }
.form-error { color: var(--alert); font-size: var(--t-xs); margin: 14px 0 0; }
.hp-field { position: absolute; left: -9999px; opacity: 0; height: 0; overflow: hidden; }
.field input[type="checkbox"] { appearance: auto; -webkit-appearance: auto; width: 18px; height: 18px; min-height: auto; border: none; padding: 0; background: none; flex-shrink: 0; accent-color: var(--verde); cursor: pointer; }
.privacy-label { display: flex; gap: 10px; align-items: flex-start; cursor: pointer; font-size: var(--t-xs); color: var(--gray); line-height: 1.5; font-weight: 400; }
.privacy-label input { margin-top: 2px; }
.privacy-label a { color: var(--verde); text-decoration: underline; text-underline-offset: 2px; }
.privacy-error { outline: 2px solid var(--alert); outline-offset: 4px; border-radius: 4px; }
@media (max-width: 900px) { .lead-grid { grid-template-columns: 1fr; } .form-grid { grid-template-columns: 1fr; } }

/* ═══════════════ Dove siamo ═══════════════ */
.location { padding: clamp(56px,8vw,110px) 0; }
.location-grid { display: grid; grid-template-columns: 1.15fr 1fr; gap: clamp(20px,3vw,40px); align-items: stretch; }
.location-card { background: var(--surface); border: 1px solid var(--line-light); border-radius: var(--r-xl); padding: clamp(24px,3vw,44px); display: grid; grid-template-columns: 1fr 1fr; gap: 28px; align-content: start; }
.location-card .head { grid-column: 1 / -1; display: flex; justify-content: space-between; align-items: flex-end; gap: 12px; flex-wrap: wrap; padding-bottom: 22px; border-bottom: 1px solid var(--line-light); }
.location-card .head h2 { font-family: var(--font-display); font-size: var(--t-xl); font-weight: 600; line-height: 1.1; margin: 0; }
.location-card .head h2 em { font-style: normal; font-weight: 400; color: var(--gray); }
.location-card .head .label { font-size: var(--t-xs); color: var(--gray); }
.loc-block .lbl { font-size: var(--t-xs); font-weight: 600; color: var(--gray); margin-bottom: 6px; display: flex; align-items: center; gap: 8px; }
.loc-block .lbl .wa-pill { background: var(--wa-deep); color: #fff; font-size: var(--t-xs); padding: 2px 7px; border-radius: 999px; font-weight: 700; }
.loc-block .v { font-family: var(--font-text); font-size: clamp(17px,1.5vw,21px); font-weight: 600; line-height: 1.35; color: var(--ink); }
.loc-block .v a:hover { color: var(--verde); }
.loc-block .sub { font-size: var(--t-xs); color: var(--gray); margin-top: 5px; line-height: 1.5; }
.orari-tabella { margin: 0; display: grid; grid-template-columns: auto 1fr; gap: 6px 18px; font-size: var(--t-xs); }
.orari-tabella dt { color: var(--gray); }
.orari-tabella dd { margin: 0; font-variant-numeric: tabular-nums; }
.orari-tabella .today dt, .orari-tabella .today dd { color: var(--verde); font-weight: 600; }
.open-now { display: inline-flex; align-items: center; gap: 8px; font-size: var(--t-xs); font-weight: 600; padding: 4px 10px; border-radius: var(--r-full); background: var(--verde-soft); color: var(--verde); }
.open-now::before { content: ''; width: 8px; height: 8px; border-radius: 50%; background: #2E9E5B; }
.open-now.is-closed { background: var(--surface-2); color: var(--gray); }
.open-now.is-closed::before { background: var(--gray-soft); }

.map-card { position: relative; border-radius: var(--r-xl); overflow: hidden; background: var(--verde); color: #fff; min-height: 360px; display: flex; flex-direction: column; justify-content: space-between; }
.map-iframe { flex: 1; width: 100%; border: 0; display: block; min-height: 280px; }
.map-card .map-foot { position: relative; z-index: 1; padding: 16px 22px; display: flex; justify-content: space-between; align-items: center; gap: 12px; border-top: 1px solid rgba(255,255,255,.12); }
.map-card .map-foot .coord { font-size: var(--t-xs); opacity: .85; }
.map-card .map-foot a { background: var(--surface); color: var(--ink); padding: 10px 16px; border-radius: var(--r-md); font-size: var(--t-xs); font-weight: 600; white-space: nowrap; }
.embed-blocco { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px; text-align: center; padding: 32px 24px; height: 100%; background: var(--surface-2); color: var(--gray); font-size: var(--t-xs); }
.embed-blocco button { background: var(--verde); color: #fff; border: none; border-radius: var(--r-md); padding: 11px 20px; font: inherit; font-size: var(--t-xs); font-weight: 600; cursor: pointer; }
@media (max-width: 900px) { .location-grid, .location-card { grid-template-columns: 1fr; } }

/* ═══════════════ Footer ═══════════════ */
.site-footer { background: var(--verde-deep); color: rgba(255,255,255,.75); padding: clamp(48px,6vw,80px) 0 0; font-size: var(--t-xs); }
.footer-grid { display: grid; grid-template-columns: 1.4fr 1fr 1.2fr 1fr 1.2fr; gap: clamp(24px,4vw,56px); padding-bottom: clamp(36px,5vw,56px); }
.footer-brand .brand { color: #fff; margin-bottom: 16px; }
.footer-brand p { margin: 0; max-width: 36ch; line-height: 1.7; }
.footer-col h2 { font-size: var(--t-xs); font-weight: 600; color: #fff; margin: 0 0 14px; font-family: var(--font-text); }
.footer-col ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.footer-col a { display: inline-block; min-height: 30px; }
.footer-address { font-style: normal; line-height: 1.7; }
.footer-address a { display: inline; min-height: 0; }
.footer-orari { margin: 14px 0 0; line-height: 1.6; }
.footer-col a:hover { color: #fff; text-decoration: underline; text-underline-offset: 3px; }
.footer-google { display: inline-flex; align-items: center; gap: 10px; margin-top: 14px; padding: 10px 14px; border-radius: var(--r-md); background: rgba(255,255,255,.08); color: #fff; font-weight: 600; }
.footer-google .stars { color: #F2B27A; letter-spacing: 2px; font-size: var(--t-xs); }
.footer-legal { border-top: 1px solid rgba(255,255,255,.12); padding: 20px 0 26px; display: flex; flex-wrap: wrap; gap: 8px 24px; justify-content: space-between; align-items: center; font-size: var(--t-xs); color: rgba(255,255,255,.6); line-height: 1.7; }
.footer-legal p { margin: 0; }
.footer-legal a { text-decoration: underline; text-underline-offset: 2px; }
.footer-legal a:hover { color: #fff; }
@media (max-width: 1000px) { .footer-grid { grid-template-columns: 1fr 1fr; } .footer-brand { grid-column: 1 / -1; } }
@media (max-width: 600px) { .footer-grid { grid-template-columns: 1fr; gap: 28px; } }

/* ═══════════════ Contatti fissi ═══════════════ */
.contatto-fisso { position: fixed; z-index: 50; right: 20px; bottom: 20px; display: flex; gap: 8px; }
.contatto-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 10px;
  min-height: 50px; padding: 0 20px; border-radius: var(--r-full);
  font-size: var(--t-xs); font-weight: 600; color: #fff; white-space: nowrap;
  box-shadow: 0 10px 26px -10px rgba(31,33,48,.6); transition: transform .25s var(--ease);
}
.contatto-btn svg { width: 20px; height: 20px; }
.contatto-btn:hover { transform: translateY(-2px); }
.contatto-btn--call { background: var(--verde); }
.contatto-btn--wa { background: var(--wa-deep); }
.contatto-btn--scrivi { background: var(--accento); color: #fff; }
.contatto-btn--scrivi:hover { background: var(--accento-deep); }
@media (max-width: 767px) {
  body { padding-bottom: 64px; }
  .contatto-fisso { right: 0; left: 0; bottom: 0; gap: 0; background: var(--verde-deep); box-shadow: 0 -12px 30px rgba(0,0,0,.2); padding-bottom: env(safe-area-inset-bottom, 0px); }
  .contatto-btn { flex: 1 1 50%; border-radius: 0; min-height: 56px; box-shadow: none; font-size: var(--t-xs); }
  .contatto-btn:hover { transform: none; }
  .single-immobile .contatto-fisso { display: none; } /* la scheda ha la sua barra */
}

/* ═══════════════ Pagine interne ═══════════════ */
/*
   Testate delle pagine interne: stesso linguaggio dell'hero della home, in
   scala. Video (o immagine) sotto un velo chiaro, titolo centrato nel blu del
   logo, sottotitolo in Inter.
*/
.page-hero {
  background: var(--surface-2); color: var(--ink); position: relative; overflow: hidden;
  min-height: var(--page-hero-h, clamp(320px, 52vh, 640px));
  display: flex; align-items: center; justify-content: center; text-align: center;
  padding: clamp(40px,6vw,72px) var(--gutter-wide) clamp(36px,5vw,56px);
}
.page-hero > .container { width: 100%; position: relative; z-index: 2; display: flex; flex-direction: column; align-items: center; }
.page-hero::before { content: ''; position: absolute; inset: 0; z-index: 1; pointer-events: none;
  background: linear-gradient(to bottom, rgba(247,246,242,.86) 0%, rgba(247,246,242,.74) 55%, rgba(247,246,242,.4) 100%); }
.page-meta { font-size: var(--t-sm); color: var(--gray); margin: 12px 0 0; }
.page-hero h1 { font-family: var(--font-display); font-size: var(--t-h1); font-weight: 700; line-height: 1.02; letter-spacing: -0.04em; margin: 0; max-width: 20ch; text-wrap: balance; color: var(--primario); }
.page-hero h1 em { font-style: normal; font-weight: 400; color: var(--gray); }
.page-hero p { color: #3A3D4A; max-width: 736px; margin: 24px auto 0; line-height: 1.5; font-size: var(--t-sm); font-weight: 500; letter-spacing: -0.02em; }
.page-hero--compatta { min-height: 0; padding: 28px var(--gutter-wide) 22px; }

.breadcrumbs { font-size: var(--t-xs); color: var(--gray); padding: 14px 0; }
.breadcrumbs ol { list-style: none; display: flex; flex-wrap: wrap; gap: 6px; margin: 0; padding: 0; }
.breadcrumbs li::after { content: '›'; margin-left: 6px; color: var(--gray-soft); }
.breadcrumbs li:last-child::after { content: ''; }
.breadcrumbs a { display: inline-block; min-height: 24px; }
.breadcrumbs a:hover { color: var(--verde); text-decoration: underline; }
.page-hero .breadcrumbs { color: var(--gray); padding-top: 0; padding-bottom: 16px; justify-content: center; }
.page-hero .breadcrumbs ol { justify-content: center; }
.page-hero .breadcrumbs li::after { color: rgba(255,255,255,.4); }

.entry-content { padding: clamp(40px,5vw,72px) 0; max-width: 72ch; line-height: 1.7; }
.entry-content > * + * { margin-top: 1.1em; }
.entry-content h2 { font-family: var(--font-display); font-size: var(--t-xl); font-weight: 600; line-height: 1.15; margin-top: 1.8em; }
.entry-content h3 { font-family: var(--font-display); font-size: var(--t-lg); font-weight: 600; margin-top: 1.6em; }
.entry-content a { color: var(--verde); text-decoration: underline; text-underline-offset: 3px; }
.entry-content ul, .entry-content ol { padding-left: 1.3em; }
.entry-content li + li { margin-top: .5em; }
.entry-content blockquote { border-left: 1px solid var(--rame-marchio); padding-left: 20px; font-family: var(--font-display); font-size: var(--t-md); color: var(--ink-soft); margin-left: 0; }
.entry-content img, .entry-content figure { border-radius: var(--r-md); }
.alignwide { max-width: min(1100px, 92vw); }
.alignfull { max-width: 100%; }
.aligncenter { margin-left: auto; margin-right: auto; }

.pagination { display: flex; gap: 6px; flex-wrap: wrap; justify-content: center; padding: 36px 0 8px; }
.pagination .page-numbers {
  min-width: 44px; height: 44px; padding: 0 14px; border-radius: var(--r-md);
  display: inline-flex; align-items: center; justify-content: center;
  background: var(--surface); border: 1px solid var(--line-light); font-size: var(--t-xs); font-weight: 500;
}
.pagination .page-numbers:hover { border-color: var(--verde); }
.pagination .page-numbers.current { background: var(--verde); color: #fff; border-color: var(--verde); }

/* Comparsa progressiva */
.reveal { opacity: 0; transform: translateY(14px); transition: opacity .7s var(--ease), transform .7s var(--ease); }
.reveal.is-in { opacity: 1; transform: none; }
.no-js .reveal, .no-js .promise-item, .ang-mostra-tutto .reveal, .ang-mostra-tutto .promise-item { opacity: 1; transform: none; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .reveal, .promise-item { opacity: 1; transform: none; transition: none; }
  *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; }
}

/* Chi siamo, vendere, FAQ, consulenti, zona — blocchi funzionali. */
.chi-siamo { padding: clamp(48px,7vw,100px) 0; }
.valori-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 14px; margin-top: clamp(24px,3vw,40px); }
.valore-card { background: var(--surface); border: 1px solid var(--line-light); border-radius: var(--r-lg); padding: clamp(22px,2.6vw,30px); }
.valore-card h3 { font-family: var(--font-display); font-size: 20px; font-weight: 600; line-height: 1.25; margin: 0 0 10px; }
.valore-card p { font-size: var(--t-xs); color: var(--gray); line-height: 1.7; margin: 0; }
.vendere-motivi { padding: clamp(48px,7vw,100px) 0; }
.faq { padding: clamp(48px,7vw,100px) 0; background: var(--surface); border-top: 1px solid var(--line-light); }
.faq-list { margin-top: clamp(24px,3vw,40px); max-width: 860px; }
.faq-item { border-bottom: 1px solid var(--line); }
.faq-item summary { cursor: pointer; list-style: none; padding: 18px 44px 18px 0; position: relative; font-family: var(--font-display); font-size: clamp(17px,1.5vw,20px); font-weight: 600; min-height: 44px; }
.faq-item summary::-webkit-details-marker { display: none; }
.faq-item summary::after { content: '+'; position: absolute; right: 8px; top: 50%; transform: translateY(-50%); font-size: 26px; font-weight: 400; color: var(--verde-mid); line-height: 1; transition: transform .3s var(--ease); }
.faq-item[open] summary::after { transform: translateY(-50%) rotate(45deg); }
.faq-item p { margin: 0 0 20px; max-width: 68ch; font-size: var(--t-xs); line-height: 1.75; color: var(--gray); }
.zona-intro { max-width: 68ch; margin: clamp(16px,2vw,24px) 0 0; font-size: clamp(16px,1.4vw,18px); line-height: 1.7; color: var(--ink-soft); }
.zona-testo { padding: clamp(36px,5vw,64px) 0; border-top: 1px solid var(--line-light); background: var(--surface); margin-top: clamp(28px,4vw,48px); }


/* ═══════════════ Blocchi ereditati e riallineati ai token ═══════════════ */
/* ─────────────────────────── Modulo a passi ─────────────────────────── */
.ang-wizard { position: relative; }
/* Spazio in fondo: i pulsanti fissi di contatto non devono coprire "Avanti". */
.ang-form {
  padding-bottom: 72px;
  /* La testata è agganciata in alto: senza questo margine, saltando
     all'ancora il titolo del modulo finisce coperto dalla barra. */
  scroll-margin-top: calc(var(--header-h) + 16px);
}
#valutazione { scroll-margin-top: calc(var(--header-h) + 16px); }
.wz-title {
  font-family: var(--font-display); font-size: clamp(24px, 2.6vw, 34px);
  font-weight: 700; letter-spacing: -0.025em; line-height: 1.15; margin: 0 0 10px;
  color: var(--ink);
}
.wz-sub { font-size: var(--t-xs); line-height: 1.6; color: var(--gray); margin: 0 0 22px; max-width: 48ch; }

.wz-rif {
  display: flex; align-items: center; gap: 10px;
  background: rgba(78,95,148,.07); border: 1px solid rgba(78,95,148,.2);
  border-radius: var(--r-md); padding: 11px 14px; margin: 0 0 20px;
  font-size: var(--t-xs); color: var(--ink-soft); line-height: 1.45;
}
.wz-rif svg { width: 17px; height: 17px; color: var(--accent); flex-shrink: 0; }

.wz-progress { height: 5px; background: var(--surface-2); border-radius: 3px; overflow: hidden; margin-bottom: 10px; }
.wz-progress-bar { display: block; height: 100%; width: 25%; background: var(--navy); border-radius: 3px; transition: width .35s var(--ease); }
.wz-counter { font-size: var(--t-xs); color: var(--gray); margin: 0 0 22px; }
.wz-counter strong { color: var(--ink); font-weight: 600; }

.wz-step { display: none; border: none; padding: 0; margin: 0; min-width: 0; }
.wz-step.is-current { display: block; animation: wz-in .35s var(--ease); }
@keyframes wz-in { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
.no-js .wz-step { display: block; margin-bottom: 26px; }

.wz-q {
  font-size: clamp(18px, 1.8vw, 22px); font-weight: 600; letter-spacing: -0.015em;
  color: var(--ink); padding: 0; margin: 0 0 6px; line-height: 1.3;
}
.wz-help { font-size: var(--t-xs); color: var(--gray); margin: 0 0 18px; line-height: 1.55; max-width: 52ch; }
.wz-q + .wz-options { margin-top: 18px; }

.wz-options { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.wz-options--compact { grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); }
.wz-options--comuni { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); }
.wz-options.wz-invalid .wz-option-box { border-color: var(--alert); }

.wz-option { position: relative; display: block; }
.wz-option input { position: absolute; opacity: 0; width: 0; height: 0; }
.wz-option-box {
  display: flex; align-items: center; gap: 12px; height: 100%;
  min-height: 60px; padding: 14px 18px;
  background: var(--surface-2); border: 1.5px solid transparent;
  border-radius: var(--r-md); cursor: pointer;
  font-size: var(--t-xs); color: var(--ink-soft); line-height: 1.35;
  transition: border-color .2s, background .2s, transform .2s var(--ease);
}
.wz-option-box svg { color: var(--navy); flex-shrink: 0; }
.wz-option-box strong { display: block; font-weight: 600; color: var(--ink); }
.wz-option-box small { display: block; font-size: var(--t-xs); color: var(--gray); margin-top: 2px; }
.wz-option:hover .wz-option-box { border-color: var(--gray-soft); transform: translateY(-1px); }
.wz-option input:checked + .wz-option-box {
  border-color: var(--navy); background: rgba(34,43,73,.06);
}
.wz-option input:focus-visible + .wz-option-box { outline: 3px solid var(--blue); outline-offset: 2px; }

.wz-extra { margin-top: 16px; }
.wz-step--dati .form-grid { margin-top: 18px; }

.wz-nav { display: flex; align-items: center; gap: 16px; margin-top: 28px; flex-wrap: wrap; }
.wz-next, .wz-submit {
  display: inline-flex; align-items: center; gap: 12px;
  min-height: 54px; padding: 0 30px 0 8px; border: none; border-radius: var(--r-full);
  background: var(--navy); color: #fff; cursor: pointer;
  font-family: var(--font-text); font-size: var(--t-xs); font-weight: 600;
  letter-spacing: 0.08em; 
  transition: background .22s, transform .22s var(--ease);
}
.wz-submit { padding: 0 30px; letter-spacing: 0.02em; text-transform: none; font-size: var(--t-xs); }
.wz-next:hover, .wz-submit:hover { background: var(--navy-deep); transform: translateY(-2px); }
.wz-next[disabled], .wz-submit[disabled] { opacity: .6; cursor: progress; transform: none; }
.wz-arrow {
  display: inline-flex; align-items: center; justify-content: center;
  width: 38px; height: 38px; border-radius: 50%;
  background: #fff; color: var(--navy); font-size: 18px;
}
.wz-back {
  background: none; border: none; padding: 8px 4px; cursor: pointer;
  font: inherit; font-size: var(--t-xs); color: var(--gray);
  text-decoration: underline; text-underline-offset: 4px; min-height: 44px;
}
.wz-back:hover { color: var(--navy); }
.wz-nav .wz-back { order: -1; margin-right: auto; }

@media (max-width: 560px) {
  .wz-options { grid-template-columns: 1fr; }
  .wz-options--compact, .wz-options--comuni { grid-template-columns: 1fr 1fr; }
  .wz-nav { gap: 10px; }
  .wz-next, .wz-submit { width: 100%; justify-content: center; }
  .wz-nav .wz-back { order: 1; margin: 0 auto; }
}


/* ─────────────────────────── Consenso cookie ─────────────────────────── */
.cookie-bar {
  /*
     Scheda chiara in basso a sinistra: non copre la pagina, non ha bisogno
     di una barra a tutta larghezza. Su telefono prende la larghezza dello
     schermo meno i margini, e non supera il 70 % dell'altezza.
  */
  position: fixed; left: 16px; bottom: 16px; z-index: 120;
  width: min(460px, calc(100vw - 32px)); max-height: 70vh; overflow-y: auto; overscroll-behavior: contain;
  background: var(--surface); color: var(--ink);
  border: 1px solid var(--line); border-radius: var(--r-xl);
  box-shadow: 0 24px 60px -20px rgba(31,33,48,.45);
  padding: 20px 20px calc(20px + env(safe-area-inset-bottom, 0px));
}
.cookie-bar[hidden] { display: none; }
.cookie-inner { display: flex; flex-direction: column; gap: 16px; }
.cookie-text h2 {
  font-family: var(--font-display); font-size: 22px; font-weight: 700;
  color: var(--primario); margin: 0 0 6px; letter-spacing: -0.02em; line-height: 1.2;
}
.cookie-text p { margin: 0; font-size: 16px; line-height: 1.55; color: var(--ink-soft); }
.cookie-links { display: flex; gap: 16px; margin-top: 8px !important; }
.cookie-text a { color: var(--primario); font-weight: 600; text-decoration: underline; text-underline-offset: 3px; }

.cookie-prefs { display: flex; flex-direction: column; gap: 10px; margin-top: 14px; }
.cookie-prefs[hidden] { display: none; }
.cookie-pref { display: flex; gap: 10px; align-items: flex-start; font-size: 15px; line-height: 1.45; color: var(--gray); padding: 10px 12px; border: 1px solid var(--line-light); border-radius: var(--r-md); background: var(--bg); }
.cookie-pref input { margin-top: 2px; accent-color: var(--primario); width: 18px; height: 18px; flex-shrink: 0; }
.cookie-pref b { display: block; color: var(--ink); font-weight: 600; }

.cookie-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.cookie-btn {
  min-height: 46px; border: 1px solid var(--line); background: var(--surface); color: var(--ink);
  border-radius: var(--r-md); padding: 0 14px; font: inherit; font-size: 16px; font-weight: 600;
  cursor: pointer; transition: background .2s, border-color .2s;
}
.cookie-btn:hover { border-color: var(--primario); }
.cookie-btn--accept { grid-column: 1 / -1; background: var(--primario); color: #fff; border-color: var(--primario); }
.cookie-btn--accept:hover { background: var(--primario-deep); }
.cookie-btn--save { grid-column: 1 / -1; background: var(--primario); color: #fff; border-color: var(--primario); }
.cookie-btn[hidden] { display: none; }
@media (max-width: 380px) { .cookie-actions { grid-template-columns: 1fr; } }

.cookie-link {
  background: none; border: none; padding: 0; cursor: pointer;
  font: inherit; font-size: var(--t-xs); color: inherit;
  text-decoration: underline; text-underline-offset: 2px;
}
.cookie-link:hover { color: #fff; }

.cookie-reopen {
  position: fixed; left: 18px; bottom: 18px; z-index: 90;
  background: var(--surface); color: var(--ink-soft);
  border: 1px solid var(--line); border-radius: var(--r-full);
  padding: 8px 15px; font: inherit; font-size: var(--t-xs); cursor: pointer;
  box-shadow: 0 6px 18px -10px rgba(30,38,66,.5); opacity: .75;
}
.cookie-reopen:hover { opacity: 1; }
/* Da telefono il pulsante finiva sopra "Chiama" nella barra in basso: le
   preferenze restano raggiungibili dal link "Preferenze cookie" nel piè di pagina. */
@media (max-width: 767px) { .cookie-reopen { display: none !important; } }

/* Segnaposto degli embed bloccati finché manca il consenso */
.embed-blocco {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 12px; text-align: center; padding: 32px 24px; height: 100%;
  background: var(--surface-2); color: var(--gray); font-size: var(--t-xs);
}
.embed-blocco button {
  background: var(--ink); color: #fff; border: none; border-radius: var(--r-full);
  padding: 11px 22px; font: inherit; font-size: var(--t-xs); font-weight: 600; cursor: pointer;
}
.embed-blocco button:hover { background: var(--navy); }


/* ─────────────────────────── Contatti ─────────────────────────── */
.contact-layout { display: grid; grid-template-columns: 1fr 1.05fr; gap: clamp(32px,5vw,72px); padding: clamp(56px,7vw,104px) 0; align-items: start; }
.contact-channels { display: flex; flex-direction: column; gap: 4px; }
.contact-channel { display: grid; grid-template-columns: 46px 1fr; gap: 18px; padding: 24px 0; border-top: 1px solid var(--line); align-items: start; }
.contact-channel:last-child { border-bottom: 1px solid var(--line); }
.contact-channel .ico { width: 46px; height: 46px; border-radius: 50%; background: var(--surface-2); color: var(--navy); display: flex; align-items: center; justify-content: center; }
.contact-channel .ico svg { width: 20px; height: 20px; }
.contact-channel .k { font-size: var(--t-xs); color: var(--gray); font-weight: 600; margin-bottom: 6px; display: block; }
.contact-channel .v { font-family: var(--font-text); font-size: clamp(19px,1.8vw,24px); letter-spacing: -0.015em; line-height: 1.3; }
.contact-channel .v a:hover { color: var(--navy); text-decoration: underline; text-underline-offset: 3px; }
.contact-channel .sub { font-size: var(--t-sm); color: var(--gray); margin-top: 5px; }
.contact-hours { margin-top: 34px; background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg); padding: clamp(22px,2.6vw,32px); }
.contact-hours h2 { font-family: var(--font-display); font-size: var(--t-lg); font-weight: 700; margin: 0 0 16px; letter-spacing: -0.02em; }
.contact-hours dl { margin: 0; display: grid; grid-template-columns: auto 1fr; gap: 10px 24px; font-size: var(--t-sm); }
.contact-hours dt { color: var(--gray); }
.contact-hours dd { margin: 0; text-align: right; font-variant-numeric: tabular-nums; }
.contact-hours .today { color: var(--navy); font-weight: 600; }
.contact-form-card { background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg); padding: clamp(26px,3.4vw,48px); box-shadow: 0 28px 56px -32px rgba(30,38,66,0.35); }
.contact-map { width: 100%; height: clamp(300px, 42vw, 460px); border: 0; display: block; border-radius: var(--r-lg); overflow: hidden; }
.contact-map-wrap { padding-bottom: clamp(56px,7vw,104px); }


/* ── La squadra (pagina Chi siamo) ────────────────────────────
   Griglia di ritratti 4:5: foto, nome, qualifica, recapiti. Il numero di
   colonne segue il numero di persone, così una squadra di due non lascia
   metà riga vuota. */
.team { padding: clamp(48px,7vw,100px) 0; background: var(--surface); border-top: 1px solid var(--line-light); border-bottom: 1px solid var(--line-light); }
.team-grid { list-style: none; margin: 0; padding: 0; display: grid; gap: clamp(16px,2vw,24px); grid-template-columns: repeat(4, minmax(0,1fr)); }
.team-grid--1 { grid-template-columns: minmax(0, 420px); }
.team-grid--2 { grid-template-columns: repeat(2, minmax(0, 420px)); }
.team-grid--3 { grid-template-columns: repeat(3, minmax(0,1fr)); }
.team-card { display: flex; flex-direction: column; background: var(--bg); border: 1px solid var(--line-light); border-radius: var(--r-lg); overflow: hidden; }
.team-photo { position: relative; aspect-ratio: 4 / 5; background: var(--primario-soft); display: flex; align-items: center; justify-content: center; overflow: hidden; }
.team-photo img { width: 100%; height: 100%; object-fit: cover; object-position: center top; }
.team-iniziali { font-size: clamp(40px,4vw,60px); font-weight: 700; color: var(--primario-mid); letter-spacing: -0.03em; }
.team-body { padding: 18px 20px 20px; display: flex; flex-direction: column; gap: 8px; flex: 1; }
.team-name { font-size: 19px; font-weight: 700; letter-spacing: -0.02em; line-height: 1.2; margin: 0; color: var(--ink); }
.team-role { font-size: var(--t-xs); font-weight: 600; color: var(--accento-deep); margin: 0; }
.team-bio { font-size: var(--t-xs); line-height: 1.6; color: var(--gray); }
.team-bio p { margin: 0; }
.team-bio p + p { margin-top: .6em; }
.team-tags { list-style: none; margin: 4px 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 6px; }
.team-tags li { font-size: var(--t-xs); font-weight: 600; color: var(--primario); background: var(--primario-soft); padding: 4px 9px; border-radius: var(--r-sm); }
.team-contacts { margin-top: auto; padding-top: 12px; border-top: 1px solid var(--line-light); display: flex; flex-direction: column; gap: 4px; }
.team-contacts a { display: inline-flex; align-items: center; gap: 8px; min-height: 36px; font-size: var(--t-xs); font-weight: 500; color: var(--ink-soft); }
.team-contacts a:hover { color: var(--primario); }
.team-contacts svg { width: 15px; height: 15px; color: var(--primario-mid); }
@media (max-width: 1000px) { .team-grid, .team-grid--3 { grid-template-columns: repeat(2, minmax(0,1fr)); } }
@media (max-width: 520px) { .team-grid, .team-grid--2, .team-grid--3 { grid-template-columns: 1fr; } .team-photo { aspect-ratio: 1 / 1; } }

/* Nome collegato al profilo di chi ha scritto: il sottolineato compare solo
   al passaggio, perché nella griglia delle recensioni cinque link sottolineati
   diventerebbero rumore. */
.review-name a,
.mini-recensione footer a { color: inherit; text-decoration: none; }
.review-name a:hover,
.review-name a:focus-visible,
.mini-recensione footer a:hover,
.mini-recensione footer a:focus-visible { text-decoration: underline; text-underline-offset: 3px; }


/* Il pulsante flottante dei cookie non deve coprire il pannello dei filtri. */
body.filtri-aperti .cookie-reopen, body.filtri-aperti .contatto-fisso { display: none; }

/* ═══════════════ Modulo contatti breve (scheda immobile) ═══════════════ */
.ang-form--breve { margin-top: 18px; padding-top: 18px; border-top: 1px solid var(--line-light); }
.ang-quick-form { display: flex; flex-direction: column; gap: 12px; }
.qf-title { font-family: var(--font-display); font-size: var(--t-lg); font-weight: 700; color: var(--primario); margin: 0; line-height: 1.2; }
.qf-rif { margin: -4px 0 0; font-size: 16px; color: var(--gray); }
.qf-motivi { border: 0; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.qf-motivo { position: relative; display: flex; align-items: center; gap: 10px; min-height: 44px; padding: 8px 12px; border: 1px solid var(--line); border-radius: var(--r-md); background: var(--surface); cursor: pointer; font-size: 17px; font-weight: 500; color: var(--ink); }
.qf-motivo input { accent-color: var(--primario); width: 18px; height: 18px; margin: 0; flex-shrink: 0; }
.qf-motivo:has(input:checked) { border-color: var(--primario); background: var(--primario-soft); }
.qf-motivo:has(input:focus-visible) { outline: 3px solid var(--primario-soft); outline-offset: 2px; }
.ang-quick-form .field label:not(.privacy-label) { font-size: 16px; }
.ang-quick-form .field input, .ang-quick-form .field textarea { font-size: 17px; }
.ang-quick-form .field textarea { min-height: 88px; }
.ang-quick-form .privacy-label { font-size: 15px; }
.qf-submit { min-height: 52px; }
.qf-nota { margin: 0; text-align: center; font-size: 15px; color: var(--gray); }
.ang-form--breve .form-success { padding: 18px 0 6px; }
.ang-form--breve .form-success h3 { font-size: var(--t-lg); }
.ang-quick-form p.field, .ang-quick-form p { margin: 0; }
.ang-quick-form .field { gap: 4px; }
.ang-quick-form .qf-nota { margin-top: -2px; }
.agent-card .ang-form--breve + .agent-actions { margin-top: 14px; }
