/* REDDIO — Sistema visivo (navy, oro, off-white; Fraunces + Inter) */
@import url('https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,400;9..144,500;9..144,600;9..144,700&family=Inter:wght@400;500;600;700&display=swap');

:root {
  --navy: #0B1B3B; --navy-2: #142951; --navy-3: #1f3a6e;
  --gold: #C4A05A; --gold-2: #A88340; --gold-soft: #E8DDC4;
  --bone: #F7F4EE; --bone-2: #EEE9DC;
  --ink: #1A2238; --ink-2: #4A5677; --ink-3: #7A8499;
  --line: #E3DDD0; --line-2: #D6CFBC;
  --green: #2E7D4F; --green-soft: #DCE9DF;
  --amber: #C8821E; --amber-soft: #F3E5CA;
  --danger: #B23A3A;
  --shadow-sm: 0 1px 3px rgba(11,27,59,.06);
  --shadow: 0 4px 16px rgba(11,27,59,.08);
  --shadow-lg: 0 12px 40px rgba(11,27,59,.12);
  --serif: 'Fraunces', Georgia, serif;
  --sans: 'Inter', -apple-system, 'Segoe UI', Roboto, sans-serif;
}

* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body { font-family: var(--sans); font-size: 16px; line-height: 1.6; color: var(--ink); background: var(--bone); -webkit-font-smoothing: antialiased; }
a { color: var(--navy); text-decoration: none; transition: color .15s ease; }
a:hover { color: var(--gold-2); }

h1, h2, h3, h4 { font-family: var(--serif); font-weight: 600; color: var(--navy); margin: 0; letter-spacing: -.01em; }
h1 { font-size: clamp(2rem, 4vw, 3.4rem); line-height: 1.08; letter-spacing: -.025em; }
h2 { font-size: clamp(1.5rem, 2.6vw, 2.1rem); line-height: 1.15; }
h3 { font-size: 1.3rem; }

/* HEADER */
header.nav { position: sticky; top: 0; z-index: 100; background: rgba(11,27,59,.97); backdrop-filter: blur(10px); color: #fff; padding: 16px 32px; display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid rgba(196,160,90,.2); }
header.nav .brand { font-family: var(--serif); font-weight: 700; font-size: 22px; letter-spacing: .04em; color: #fff; }
header.nav .brand span { color: var(--gold); font-style: italic; }
header.nav nav { display: flex; gap: 28px; align-items: center; }
header.nav nav a { color: rgba(255,255,255,.78); font-size: 14px; font-weight: 500; transition: color .15s; }
header.nav nav a:hover { color: #fff; }
header.nav nav a.cta { background: var(--gold); color: var(--navy); padding: 8px 18px; border-radius: 6px; font-weight: 600; }
header.nav nav a.cta:hover { background: #d4b06a; color: var(--navy); }

/* HERO */
.hero { position: relative; padding: 100px 32px 80px; background: linear-gradient(180deg, #0B1B3B 0%, #142951 100%); color: #fff; overflow: hidden; }
.hero::before { content: ''; position: absolute; inset: 0; background-image: radial-gradient(ellipse at 80% 20%, rgba(196,160,90,.18) 0%, transparent 50%), radial-gradient(ellipse at 10% 100%, rgba(196,160,90,.10) 0%, transparent 50%); pointer-events: none; }
.hero-inner { max-width: 1100px; margin: 0 auto; position: relative; }
.eyebrow { display: inline-block; font-size: 12px; font-weight: 600; letter-spacing: .18em; text-transform: uppercase; color: var(--gold); padding: 6px 14px; border: 1px solid rgba(196,160,90,.4); border-radius: 20px; margin-bottom: 24px; }
.hero h1 { color: #fff; max-width: 900px; }
.hero h1 em { font-style: italic; color: var(--gold-soft); font-weight: 500; }
.hero .lead { font-size: clamp(1.05rem, 1.4vw, 1.25rem); color: rgba(255,255,255,.82); max-width: 680px; margin: 24px 0 40px; line-height: 1.6; }
.hero-stats { display: flex; flex-wrap: wrap; gap: 20px; margin: 40px 0 36px; }
.hero-stat { background: rgba(255,255,255,.05); border: 1px solid rgba(196,160,90,.2); border-radius: 12px; padding: 22px 28px; min-width: 170px; }
.hero-stat b { display: block; font-family: var(--serif); font-size: 38px; font-weight: 600; color: var(--gold); line-height: 1; margin-bottom: 6px; }
.hero-stat span { font-size: 13px; color: rgba(255,255,255,.7); }
.cta-row { display: flex; gap: 14px; flex-wrap: wrap; }
.cta { display: inline-flex; align-items: center; gap: 8px; background: var(--gold); color: var(--navy); padding: 14px 28px; border-radius: 8px; font-weight: 600; font-size: 15px; transition: all .2s; border: none; cursor: pointer; }
.cta:hover { background: #d4b06a; transform: translateY(-1px); box-shadow: var(--shadow); color: var(--navy); }
.cta.ghost { background: transparent; color: #fff; border: 1px solid rgba(255,255,255,.25); }
.cta.ghost:hover { background: rgba(255,255,255,.06); color: #fff; }
/* ghost su sfondo CHIARO (dashboard, profilo, valuta...): testo e bordo scuri,
   altrimenti il testo bianco sparisce sul fondo chiaro */
.dash .cta.ghost, .va-body .cta.ghost, .auth-box .cta.ghost, .area-box .cta.ghost,
.dash-actions .cta.ghost, .va-cta-box .cta.ghost {
  color: var(--navy); border: 1px solid var(--line-2); background: #fff;
}
.dash .cta.ghost:hover, .va-body .cta.ghost:hover, .auth-box .cta.ghost:hover,
.area-box .cta.ghost:hover, .dash-actions .cta.ghost:hover, .va-cta-box .cta.ghost:hover {
  background: var(--bone); color: var(--navy);
}
.cta .arrow { transition: transform .2s; }
.cta:hover .arrow { transform: translateX(3px); }

/* SEZIONI */
.section { padding: 80px 32px; }
.section-inner { max-width: 1100px; margin: 0 auto; }
.section-eyebrow { font-size: 12px; font-weight: 600; letter-spacing: .18em; text-transform: uppercase; color: var(--gold-2); margin-bottom: 12px; }
.section h2 { margin-bottom: 16px; }
.section .lead { font-size: 1.1rem; color: var(--ink-2); max-width: 620px; line-height: 1.7; }
.bg-bone-2 { background: var(--bone-2); }
.bg-navy { background: var(--navy); color: #fff; }
.bg-navy h2, .bg-navy h3 { color: #fff; }
.bg-navy .lead { color: rgba(255,255,255,.75); }
.bg-navy .section-eyebrow { color: var(--gold); }

.steps { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 24px; margin-top: 48px; }
.step { background: #fff; border: 1px solid var(--line); border-radius: 14px; padding: 32px 28px; transition: all .25s; }
.step:hover { transform: translateY(-3px); box-shadow: var(--shadow); border-color: var(--gold-soft); }
.step .num { font-family: var(--serif); font-size: 14px; font-weight: 600; color: var(--gold-2); letter-spacing: .1em; margin-bottom: 12px; }
.step h3 { margin-bottom: 12px; }
.step p { color: var(--ink-2); font-size: .95rem; margin: 0; }

.split { display: grid; grid-template-columns: 1fr 1fr; gap: 28px; margin-top: 40px; }
@media (max-width: 760px) { .split { grid-template-columns: 1fr; } }
.feat { background: #fff; border: 1px solid var(--line); border-radius: 14px; padding: 36px 32px; position: relative; overflow: hidden; }
.feat::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 3px; background: var(--gold); }
.feat.work::before { background: var(--amber); }
.feat .tag { display: inline-block; font-size: 11px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; padding: 4px 10px; border-radius: 12px; background: var(--green-soft); color: var(--green); margin-bottom: 16px; }
.feat.work .tag { background: var(--amber-soft); color: var(--amber); }
.feat h3 { margin-bottom: 12px; }
.feat p { color: var(--ink-2); margin: 0; line-height: 1.65; }

.metrics { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 28px; margin-top: 48px; }
.metric b { display: block; font-family: var(--serif); font-size: 44px; font-weight: 600; color: var(--gold); line-height: 1; margin-bottom: 8px; }
.metric span { color: rgba(255,255,255,.7); font-size: 14px; }

/* CONTENT (legali) */
.content { max-width: 760px; margin: 48px auto; padding: 48px; background: #fff; border: 1px solid var(--line); border-radius: 14px; box-shadow: var(--shadow-sm); }
.content h1 { font-size: 2.2rem; margin-bottom: 32px; }
.content h2 { font-size: 1.3rem; margin-top: 32px; margin-bottom: 12px; color: var(--navy-2); }
.content p, .content li { line-height: 1.75; }
.content .note { background: var(--gold-soft); border-left: 3px solid var(--gold); padding: 14px 18px; font-size: 13px; color: #5b4a28; border-radius: 4px; margin: 18px 0; }

/* MAPPA con filtri + lista */
.map-page { display: grid; grid-template-columns: 380px 1fr; height: calc(100vh - 65px); }
@media (max-width: 900px) { .map-page { grid-template-columns: 1fr; height: auto; } .map-sidebar { max-height: 50vh; } #map { height: 60vh; } }
.map-sidebar { background: #fff; border-right: 1px solid var(--line); overflow-y: auto; display: flex; flex-direction: column; }
.filters { padding: 20px 22px; border-bottom: 1px solid var(--line); background: var(--bone); }
.filters h3 { font-size: 1rem; margin: 0 0 14px; color: var(--navy); }
.filter-row { display: flex; gap: 8px; margin-bottom: 12px; }
.filter-row:last-child { margin-bottom: 0; }
.filter-row label { flex: 1; font-size: 12px; color: var(--ink-2); display: flex; flex-direction: column; gap: 4px; }
.filter-row input, .filter-row select { font-family: var(--sans); font-size: 13px; padding: 7px 10px; border: 1px solid var(--line-2); border-radius: 6px; background: #fff; color: var(--ink); outline: none; }
.filter-row input:focus, .filter-row select:focus { border-color: var(--gold); }
.map-search { flex: 1; width: 100%; font-size: 14px !important; padding: 9px 12px !important; }
.map-search::placeholder { color: var(--ink-3); }
.filter-chips { display: flex; gap: 6px; flex-wrap: wrap; }
.chip { padding: 4px 12px; border-radius: 14px; background: #fff; border: 1px solid var(--line-2); font-size: 12px; color: var(--ink-2); cursor: pointer; user-select: none; transition: all .15s; }
.chip:hover { border-color: var(--gold); color: var(--navy); }
.chip.active { background: var(--navy); color: #fff; border-color: var(--navy); }
.chip.active.flip { background: var(--green); border-color: var(--green); }
.chip.active.work { background: var(--amber); border-color: var(--amber); }

.list-header { padding: 14px 22px; font-size: 12px; color: var(--ink-3); letter-spacing: .08em; text-transform: uppercase; border-bottom: 1px solid var(--line); background: #fff; display: flex; justify-content: space-between; align-items: center; }
.list-header select { font-size: 12px; border: none; background: transparent; color: var(--navy); font-weight: 600; cursor: pointer; }

.list-items { flex: 1; }
.list-item { padding: 16px 22px; border-bottom: 1px solid var(--line); cursor: pointer; transition: background .12s; display: flex; flex-direction: column; gap: 6px; }
.list-item:hover { background: var(--bone); }
.list-item.active { background: var(--bone-2); border-left: 3px solid var(--gold); padding-left: 19px; }
.list-item .li-head { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; }
.list-item .li-head b { font-family: var(--serif); font-size: 1.05rem; color: var(--navy); }
.list-item .li-roi { font-weight: 600; font-size: .95rem; }
.list-item .li-roi.green { color: var(--green); }
.list-item .li-roi.amber { color: var(--amber); }
.list-item .li-roi.gray { color: var(--ink-3); }
.list-item .li-prezzo { display: flex; align-items: baseline; gap: 8px; }
.list-item .li-occ { margin-left: auto; font-size: 11px; font-weight: 700; padding: 2px 8px; border-radius: 10px; white-space: nowrap; }
.li-occ.occ-forte { background: var(--green-soft); color: var(--green); }
.li-occ.occ-buono { background: var(--green-soft); color: var(--green); }
.li-occ.occ-allineato { background: var(--bone-2); color: var(--ink-3); }
.li-occ.occ-caro { background: #F6E4D6; color: #8A352B; }
.list-item .li-meta { font-size: 12px; color: var(--ink-3); }
.list-item .li-prezzo { font-size: 13px; color: var(--ink-2); }

#map { height: 100%; }
.leaflet-popup-content-wrapper { border-radius: 10px; box-shadow: var(--shadow-lg); }
.leaflet-popup-content { font-family: var(--sans); font-size: 13px; color: var(--ink); line-height: 1.55; margin: 14px 16px; }
.leaflet-popup-content b { color: var(--navy); font-family: var(--serif); font-size: 14px; }
.pop-tag { display: inline-block; font-size: 10px; font-weight: 700; letter-spacing: .1em; padding: 2px 8px; border-radius: 10px; margin-left: 6px; }
.pop-tag.flip { background: var(--green); color: #fff; }
.pop-tag.work { background: var(--amber); color: #fff; }
.pop-tag.none { background: var(--ink-3); color: #fff; }
.pop-link { display: inline-block; margin-top: 8px; font-weight: 600; color: var(--gold-2); font-size: 12px; }

/* SCHEDA DETTAGLIO */
.detail { max-width: 1100px; margin: 32px auto; padding: 0 32px; }
.breadcrumb { font-size: 13px; color: var(--ink-3); margin-bottom: 16px; }
.detail-head { background: #fff; border: 1px solid var(--line); border-radius: 14px; padding: 36px 40px; margin-bottom: 24px; box-shadow: var(--shadow-sm); }
.detail-head h1 { font-size: 2rem; margin-bottom: 8px; }
.detail-head .subtitle { color: var(--ink-2); font-size: 1rem; margin-bottom: 24px; }
.detail-tags { display: flex; gap: 10px; flex-wrap: wrap; }
.detail-tag { display: inline-flex; align-items: center; gap: 6px; padding: 6px 14px; border-radius: 18px; font-size: 13px; font-weight: 600; background: var(--bone-2); color: var(--ink-2); }
.detail-tag.flip { background: var(--green-soft); color: var(--green); }
.detail-tag.work { background: var(--amber-soft); color: var(--amber); }
.detail-tag.scaduta { background: #6b6b6b; color: #fff; }
.scaduto-banner { background: #2f2f2f; color: #f4eee1; border-radius: 10px; padding: 12px 16px; margin-bottom: 14px; font-size: 14px; line-height: 1.5; }
.scaduto-banner b { color: #fff; }
.detail-tag.demanio { background: #F1E3DC; color: #8A352B; }
.detail-tag.occupato { background: #F6E4D6; color: #8A352B; }
.detail-tag.libero { background: var(--green-soft); color: var(--green); }
.detail-tag .dot { width: 7px; height: 7px; border-radius: 50%; background: currentColor; }

.detail-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; margin-bottom: 24px; }
@media (max-width: 800px) { .detail-grid { grid-template-columns: 1fr; } }
.card { background: #fff; border: 1px solid var(--line); border-radius: 14px; padding: 28px 32px; box-shadow: var(--shadow-sm); }
.card h3 { font-size: 1.1rem; margin-bottom: 18px; padding-bottom: 12px; border-bottom: 1px solid var(--line); }
.kv-list { display: flex; flex-direction: column; gap: 12px; }
.kv { display: flex; justify-content: space-between; align-items: baseline; gap: 16px; padding: 6px 0; }
.kv .k { color: var(--ink-2); font-size: 14px; }
.kv .v { color: var(--navy); font-weight: 600; font-family: var(--serif); font-size: 1rem; text-align: right; }
.kv .v.big { font-size: 1.4rem; color: var(--gold-2); }
.kv .v.green { color: var(--green); }
.kv .v.amber { color: var(--amber); }

.scenarios { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
@media (max-width: 600px) { .scenarios { grid-template-columns: 1fr; } }
.scenario { background: var(--bone); border: 1px solid var(--line); border-radius: 10px; padding: 16px; text-align: center; }
.scenario h4 { font-family: var(--sans); font-size: 11px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--ink-3); margin-bottom: 12px; }
.scenario .big { font-family: var(--serif); font-size: 1.6rem; font-weight: 600; color: var(--navy); line-height: 1.1; }
.scenario .small { font-size: 12px; color: var(--ink-2); margin-top: 4px; }
.scenario.ott { background: linear-gradient(180deg, var(--gold-soft) 0%, var(--bone-2) 100%); border-color: var(--gold-soft); }
.scenario.ott .big { color: var(--gold-2); }

#mini-map { height: 280px; border-radius: 10px; margin-top: 4px; }

/* FOOTER */
footer.site { background: var(--navy); color: rgba(255,255,255,.65); padding: 56px 32px 36px; margin-top: 80px; }
footer.site .inner { max-width: 1100px; margin: 0 auto; display: grid; grid-template-columns: 2fr 1fr 1fr; gap: 40px; }
@media (max-width: 700px) { footer.site .inner { grid-template-columns: 1fr; } }
footer.site h4 { color: #fff; font-family: var(--sans); font-size: 13px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; margin-bottom: 16px; }
footer.site .brand-name { font-family: var(--serif); font-size: 22px; color: #fff; font-weight: 700; margin-bottom: 12px; }
footer.site .brand-name span { color: var(--gold); font-style: italic; }
footer.site p { font-size: 13px; line-height: 1.65; margin: 8px 0; }
footer.site a { color: rgba(255,255,255,.65); display: block; padding: 4px 0; font-size: 14px; }
footer.site a:hover { color: var(--gold); }
footer.site .bottom { max-width: 1100px; margin: 36px auto 0; padding-top: 24px; border-top: 1px solid rgba(255,255,255,.1); display: flex; justify-content: space-between; flex-wrap: wrap; gap: 16px; font-size: 12px; color: rgba(255,255,255,.45); }
footer.site .bottom .attrib { max-width: 720px; line-height: 1.6; }

/* COOKIE */
#cookie { position: fixed; bottom: 20px; left: 20px; right: 20px; max-width: 720px; margin: 0 auto; background: var(--navy); color: rgba(255,255,255,.9); padding: 18px 24px; border-radius: 12px; box-shadow: var(--shadow-lg); border: 1px solid rgba(196,160,90,.3); display: flex; gap: 16px; align-items: center; font-size: 13px; z-index: 9999; flex-wrap: wrap; }
#cookie span { flex: 1; min-width: 200px; line-height: 1.5; }
#cookie a { color: var(--gold); text-decoration: underline; }
#cookie button { background: var(--gold); border: 0; color: var(--navy); padding: 9px 18px; border-radius: 6px; font-weight: 600; cursor: pointer; font-size: 13px; font-family: var(--sans); }
#cookie button:hover { background: #d4b06a; }
#cookie button.secondary { background: transparent; border: 1px solid rgba(255,255,255,.25); color: rgba(255,255,255,.85); }

/* FORM contatti */
.form-block { background: #fff; border: 1px solid var(--line); border-radius: 14px; padding: 36px; max-width: 620px; }
.form-row { display: flex; flex-direction: column; gap: 6px; margin-bottom: 18px; }
.form-row label { font-size: 13px; color: var(--ink-2); font-weight: 500; }
.form-row input, .form-row textarea { font-family: var(--sans); font-size: 15px; padding: 12px 14px; border: 1px solid var(--line-2); border-radius: 8px; outline: none; }
.form-row input:focus, .form-row textarea:focus { border-color: var(--gold); }
.form-row textarea { min-height: 130px; resize: vertical; }

/* ANIMAZIONI */
@keyframes fadeUp { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: translateY(0); } }
.hero-inner > * { animation: fadeUp .6s ease backwards; }
.hero-inner > *:nth-child(1) { animation-delay: .05s; }
.hero-inner > *:nth-child(2) { animation-delay: .15s; }
.hero-inner > *:nth-child(3) { animation-delay: .25s; }
.hero-inner > *:nth-child(4) { animation-delay: .35s; }
.hero-inner > *:nth-child(5) { animation-delay: .45s; }

/* ============================================================
   WORKSPACE PRIVATO
   ============================================================ */

/* LOGIN */
.login-page { background: linear-gradient(180deg, #0B1B3B 0%, #142951 100%); min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: 20px; }
.login-wrap { background: #fff; padding: 48px 44px; border-radius: 16px; width: 100%; max-width: 420px; box-shadow: 0 24px 60px rgba(0,0,0,.3); text-align: center; }
.brand-big { display: inline-block; font-family: var(--serif); font-size: 32px; font-weight: 700; color: var(--navy); letter-spacing: .04em; margin-bottom: 4px; }
.brand-big span { color: var(--gold); font-style: italic; }
.login-sub { font-size: 13px; color: var(--ink-3); letter-spacing: .12em; text-transform: uppercase; margin: 0 0 32px; }
.login-form { text-align: left; }
.login-form .form-row { margin-bottom: 18px; }
.login-form input { font-family: var(--sans); font-size: 15px; padding: 12px 14px; border: 1px solid var(--line-2); border-radius: 8px; outline: none; width: 100%; }
.login-form input:focus { border-color: var(--gold); }
.login-error { background: #fde8e8; color: var(--danger, #B23A3A); padding: 10px 14px; border-radius: 8px; font-size: 14px; margin-bottom: 18px; border-left: 3px solid #B23A3A; }
.login-back { display: block; margin-top: 24px; font-size: 13px; color: var(--ink-3); }
.login-back:hover { color: var(--gold-2); }

/* WORKSPACE HEADER */
body.ws { background: var(--bone); }
.ws-nav { background: var(--navy); color: #fff; padding: 14px 28px; display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid rgba(196,160,90,.2); position: sticky; top: 0; z-index: 100; }
.ws-nav-left { display: flex; align-items: center; gap: 32px; }
.ws-nav .brand { font-family: var(--serif); font-size: 20px; font-weight: 700; color: #fff; letter-spacing: .04em; }
.ws-nav .brand span:not(.badge) { color: var(--gold); font-style: italic; }
.ws-nav .badge { font-family: var(--sans); font-size: 10px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; background: rgba(196,160,90,.15); color: var(--gold); padding: 3px 8px; border-radius: 10px; vertical-align: middle; margin-left: 6px; font-style: normal; }
.ws-tabs { display: flex; gap: 4px; }
.ws-tabs a { color: rgba(255,255,255,.7); font-size: 14px; padding: 8px 14px; border-radius: 6px; font-weight: 500; transition: all .15s; }
.ws-tabs a:hover { color: #fff; background: rgba(255,255,255,.06); }
.ws-tabs a.active { color: #fff; background: rgba(196,160,90,.15); }
.ws-tabs a.ext { color: rgba(255,255,255,.5); font-size: 13px; }
.ws-nav-right { display: flex; align-items: center; gap: 16px; }
.ws-user { font-size: 13px; color: rgba(255,255,255,.75); }
.ws-logout { background: transparent; border: 1px solid rgba(255,255,255,.2); color: rgba(255,255,255,.85); padding: 7px 14px; border-radius: 6px; font-family: var(--sans); font-size: 13px; cursor: pointer; transition: all .15s; }
.ws-logout:hover { background: rgba(255,255,255,.06); color: #fff; }

/* WORKSPACE LAYOUT */
.ws-main { padding: 32px 28px 60px; }
.ws-page { max-width: 1280px; margin: 0 auto; }
.ws-pageheader { margin-bottom: 24px; }
.ws-pageheader h2 { font-size: 1.7rem; margin-bottom: 4px; }
.ws-pageheader-sub { color: var(--ink-2); font-size: .95rem; margin: 0; }

/* WELCOME BOX */
.welcome-box { background: linear-gradient(135deg, var(--navy) 0%, var(--navy-2) 100%); color: #fff; border-radius: 14px; padding: 28px 32px; margin-bottom: 28px; display: flex; gap: 20px; align-items: flex-start; box-shadow: var(--shadow); position: relative; overflow: hidden; }
.welcome-box::before { content: ''; position: absolute; top: -40%; right: -10%; width: 300px; height: 300px; background: radial-gradient(circle, rgba(196,160,90,.2) 0%, transparent 70%); pointer-events: none; }
.welcome-content { flex: 1; position: relative; }
.welcome-content h2 { color: #fff; font-size: 1.4rem; margin: 0 0 8px; }
.welcome-content p { color: rgba(255,255,255,.85); margin: 0; line-height: 1.65; font-size: .95rem; }
.welcome-content p a { color: var(--gold); text-decoration: underline; }
.welcome-dismiss { background: transparent; border: 1px solid rgba(255,255,255,.2); color: rgba(255,255,255,.7); width: 32px; height: 32px; border-radius: 50%; font-size: 18px; cursor: pointer; transition: all .15s; position: relative; }
.welcome-dismiss:hover { background: rgba(255,255,255,.1); color: #fff; }

/* KPI ROW */
.kpi-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 16px; margin-bottom: 32px; }
.kpi { background: #fff; border: 1px solid var(--line); border-radius: 12px; padding: 22px 24px; box-shadow: var(--shadow-sm); transition: transform .15s; }
.kpi:hover { transform: translateY(-2px); }
.kpi-num { font-family: var(--serif); font-size: 2.4rem; font-weight: 600; color: var(--navy); line-height: 1; margin-bottom: 6px; }
.kpi-lab { font-size: 12px; color: var(--ink-3); letter-spacing: .08em; text-transform: uppercase; }
.kpi.flip { border-left: 3px solid var(--green); }
.kpi.flip .kpi-num { color: var(--green); }
.kpi.work { border-left: 3px solid var(--amber); }
.kpi.work .kpi-num { color: var(--amber); }
.kpi.watch { border-left: 3px solid var(--gold); }
.kpi.watch .kpi-num { color: var(--gold-2); }

/* WORKSPACE GRID */
.ws-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
@media (max-width: 900px) { .ws-grid { grid-template-columns: 1fr; } }

.ws-card { background: #fff; border: 1px solid var(--line); border-radius: 12px; padding: 24px 26px; box-shadow: var(--shadow-sm); }
.ws-card-head { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 18px; padding-bottom: 14px; border-bottom: 1px solid var(--line); }
.ws-card-head h3 { font-size: 1.05rem; margin: 0; }
.ws-link { font-size: 12px; font-weight: 600; color: var(--gold-2); letter-spacing: .04em; }
.ws-link:hover { color: var(--gold); }

.ws-list { list-style: none; padding: 0; margin: 0; }
.ws-list li { display: flex; justify-content: space-between; align-items: center; gap: 14px; padding: 10px 0; border-bottom: 1px solid var(--bone-2); }
.ws-list li:last-child { border-bottom: none; }
.ws-list li a { display: flex; flex-direction: column; gap: 2px; flex: 1; }
.ws-list .il-comune { font-family: var(--serif); font-weight: 600; color: var(--navy); font-size: 1rem; }
.ws-list .il-meta { font-size: 12px; color: var(--ink-3); }
.ws-list .roi { font-family: var(--serif); font-weight: 600; font-size: 1.15rem; min-width: 60px; text-align: right; }
.ws-list .roi small { font-size: .65em; opacity: .7; }
.ws-list .roi.green { color: var(--green); }
.ws-list .roi.amber { color: var(--amber); }
.ws-list .roi.gray { color: var(--ink-3); }
.empty { color: var(--ink-3); font-size: 13px; padding: 16px 0; }
.empty a { color: var(--gold-2); text-decoration: underline; }

/* STATO GRID */
.stato-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.stato-cell { padding: 16px; border-radius: 10px; text-align: center; transition: transform .15s; border: 1px solid var(--line); background: var(--bone); }
.stato-cell:hover { transform: translateY(-2px); }
.stato-cell b { display: block; font-family: var(--serif); font-size: 1.8rem; font-weight: 600; line-height: 1; margin-bottom: 4px; }
.stato-cell span { font-size: 12px; color: var(--ink-2); letter-spacing: .04em; }
.stato-cell.stato-nuovo b { color: var(--navy); }
.stato-cell.stato-watch { background: linear-gradient(135deg, var(--gold-soft) 0%, var(--bone-2) 100%); border-color: var(--gold-soft); }
.stato-cell.stato-watch b { color: var(--gold-2); }
.stato-cell.stato-scartato b { color: var(--ink-3); }
.stato-cell.stato-concluso { background: var(--green-soft); border-color: var(--green-soft); }
.stato-cell.stato-concluso b { color: var(--green); }

/* BAR CHART */
.bar-row { display: flex; align-items: center; gap: 12px; margin-bottom: 10px; }
.bar-lab { font-size: 13px; color: var(--ink-2); min-width: 80px; }
.bar-track { flex: 1; display: flex; height: 22px; background: var(--bone); border-radius: 6px; overflow: hidden; }
.bar-seg { display: flex; align-items: center; justify-content: center; font-size: 11px; font-weight: 600; color: #fff; min-width: 24px; }
.bar-seg.flip { background: var(--green); }
.bar-seg.work { background: var(--amber); }
.bar-seg.altro { background: var(--ink-3); }

/* TABELLA */
.tabella-filtri { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin-bottom: 20px; padding: 16px; background: #fff; border: 1px solid var(--line); border-radius: 12px; }
.t-search { flex: 1; min-width: 220px; font-family: var(--sans); font-size: 14px; padding: 9px 12px; border: 1px solid var(--line-2); border-radius: 8px; outline: none; }
.t-search:focus { border-color: var(--gold); }
.tabella-filtri select { font-family: var(--sans); font-size: 13px; padding: 8px 12px; border: 1px solid var(--line-2); border-radius: 8px; background: #fff; color: var(--ink); outline: none; }
.cta-sm { padding: 9px 18px; font-size: 14px; }
.cta-ghost { background: transparent; color: var(--navy); border: 1px solid var(--line-2); }
.cta-ghost:hover { background: var(--bone-2); color: var(--navy); }

.tabella-wrap { background: #fff; border: 1px solid var(--line); border-radius: 12px; overflow: hidden; box-shadow: var(--shadow-sm); }
.tabella { width: 100%; border-collapse: collapse; }
.tabella thead th { background: var(--bone-2); padding: 12px 16px; font-size: 11px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--ink-3); text-align: left; border-bottom: 1px solid var(--line); }
.tabella thead th.num { text-align: right; }
.tabella tbody td { padding: 14px 16px; border-bottom: 1px solid var(--bone-2); font-size: 14px; vertical-align: middle; }
.tabella tbody td.num { text-align: right; font-variant-numeric: tabular-nums; }
.tabella tbody tr:hover { background: var(--bone); }
.tabella tbody tr:last-child td { border-bottom: none; }
.td-link { color: var(--navy); display: block; }
.td-link b { font-family: var(--serif); font-weight: 600; }
.td-link small { color: var(--ink-3); font-size: 12px; }
.td-link:hover b { color: var(--gold-2); }
.empty-row { text-align: center; color: var(--ink-3); padding: 40px !important; }

.tag-mini { display: inline-block; font-size: 10px; font-weight: 700; letter-spacing: .08em; padding: 3px 8px; border-radius: 10px; margin-right: 4px; }
.tag-mini.flip { background: var(--green-soft); color: var(--green); }
.tag-mini.work { background: var(--amber-soft); color: var(--amber); }
.tag-mini.gray { background: var(--bone-2); color: var(--ink-3); }

.stato-pill { display: inline-block; font-size: 11px; font-weight: 600; padding: 4px 10px; border-radius: 12px; letter-spacing: .03em; }
.stato-pill.stato-nuovo { background: var(--bone-2); color: var(--ink-2); }
.stato-pill.stato-watch { background: var(--gold-soft); color: var(--gold-2); }
.stato-pill.stato-scartato { background: #f0eded; color: var(--ink-3); }
.stato-pill.stato-concluso { background: var(--green-soft); color: var(--green); }

.actions { text-align: right; }
.quick-form { margin: 0; display: inline; }
.quick-select { font-family: var(--sans); font-size: 12px; padding: 5px 8px; border: 1px solid var(--line-2); border-radius: 6px; background: #fff; color: var(--ink); cursor: pointer; }
.quick-select:hover { border-color: var(--gold); }

.num .green { color: var(--green); }
.num .amber { color: var(--amber); }
.num .gray { color: var(--ink-3); }

/* DETTAGLIO EDIT */
.ws-detail-head { background: #fff; border: 1px solid var(--line); border-radius: 14px; padding: 28px 32px; margin-bottom: 24px; display: flex; justify-content: space-between; align-items: flex-start; gap: 24px; box-shadow: var(--shadow-sm); flex-wrap: wrap; }
.ws-detail-head h1 { font-size: 1.6rem; margin-bottom: 4px; }
.ws-detail-head .subtitle { color: var(--ink-2); font-size: .95rem; }
.ws-detail-tags { display: flex; gap: 8px; flex-wrap: wrap; }

.edit-form .form-row { margin-bottom: 18px; }
.edit-form label { display: block; font-size: 12px; color: var(--ink-3); letter-spacing: .06em; text-transform: uppercase; margin-bottom: 8px; font-weight: 600; }
.edit-form textarea { width: 100%; min-height: 130px; font-family: var(--sans); font-size: 14px; padding: 12px 14px; border: 1px solid var(--line-2); border-radius: 8px; outline: none; resize: vertical; line-height: 1.5; }
.edit-form textarea:focus { border-color: var(--gold); }

.stato-chips { display: flex; gap: 8px; flex-wrap: wrap; }
.chip-radio { cursor: pointer; }
.chip-radio input { position: absolute; opacity: 0; }
.chip-radio .chip { padding: 7px 14px; border-radius: 16px; font-size: 13px; font-weight: 500; transition: all .15s; }
.chip-radio input:checked + .chip { background: var(--navy); color: #fff; border-color: var(--navy); }
.chip-radio input:checked + .chip.stato-watch { background: var(--gold-2); border-color: var(--gold-2); }
.chip-radio input:checked + .chip.stato-concluso { background: var(--green); border-color: var(--green); }
.chip-radio input:checked + .chip.stato-scartato { background: var(--ink-3); border-color: var(--ink-3); }

.form-actions { display: flex; gap: 12px; margin-top: 8px; }
.last-edit { font-size: 12px; color: var(--ink-3); margin: 16px 0 0; font-style: italic; }


/* ============================================================
   MENU MOBILE (hamburger)
   ============================================================ */
.nav-toggle { display: none; background: transparent; border: 0; cursor: pointer; padding: 8px; flex-direction: column; gap: 5px; }
.nav-toggle span { display: block; width: 24px; height: 2px; background: #fff; border-radius: 2px; transition: all .2s; }
@media (max-width: 720px) {
  header.nav { flex-wrap: wrap; }
  .nav-toggle { display: flex; }
  header.nav nav {
    display: none; flex-direction: column; align-items: flex-start;
    width: 100%; gap: 4px; margin-top: 16px; padding-top: 16px;
    border-top: 1px solid rgba(255,255,255,.1);
  }
  header.nav nav.open { display: flex; }
  header.nav nav a { width: 100%; padding: 10px 4px; font-size: 15px; }
  header.nav nav a.cta { text-align: center; margin-top: 8px; }
}

/* FAQ */
.faq-list { max-width: 760px; margin: 0 auto; }
.faq-item { background: #fff; border: 1px solid var(--line); border-radius: 12px; margin-bottom: 14px; overflow: hidden; transition: box-shadow .2s; }
.faq-item:hover { box-shadow: var(--shadow-sm); }
.faq-q { padding: 22px 26px; cursor: pointer; font-family: var(--serif); font-weight: 600; font-size: 1.15rem; color: var(--navy); display: flex; justify-content: space-between; align-items: center; gap: 16px; list-style: none; }
.faq-q::-webkit-details-marker { display: none; }
.faq-q::after { content: '+'; font-size: 1.5rem; color: var(--gold-2); flex-shrink: 0; transition: transform .2s; }
.faq-item[open] .faq-q::after { transform: rotate(45deg); }
.faq-a { padding: 0 26px 22px; color: var(--ink-2); line-height: 1.7; }
.faq-a p { margin: 0 0 12px; }
.faq-a p:last-child { margin: 0; }

/* Bottone dossier PDF nel workspace */
.dossier-btn { background: var(--navy) !important; color: #fff !important; font-weight: 600; cursor: pointer; transition: background .15s; }
.dossier-btn:hover { background: var(--gold-2) !important; color: #fff !important; }

/* ============================================================
   HERO con visual (home)
   ============================================================ */
.hero-grid { display: grid; grid-template-columns: 1.15fr 0.85fr; gap: 48px; align-items: center; }
.hero-visual { display: flex; justify-content: center; align-items: center; }
.hero-visual svg { width: 100%; max-width: 340px; height: auto; }
@media (max-width: 900px) {
  .hero-grid { grid-template-columns: 1fr; gap: 24px; }
  .hero-visual { order: -1; max-width: 280px; margin: 0 auto; }
  .hero-visual svg { max-width: 260px; }
}

/* ============================================================
   FORM CONTATTI in home
   ============================================================ */
.contact-inner { }
.contact-form { background:#fff; border:1px solid var(--line); border-radius:16px; padding:32px; box-shadow:var(--shadow-sm); }
.contact-grid { }
@media (min-width: 860px) {
  .contact-inner { display:grid; grid-template-columns: 1fr 1fr; gap:56px; align-items:start; }
  .contact-left { position:sticky; top:100px; }
}
.contact-right { width:100%; }
.contact-form .form-row { margin-bottom:18px; }
.contact-form label { display:block; font-size:13px; font-weight:600; color:var(--ink-2); margin-bottom:7px; }
.contact-form input, .contact-form textarea { width:100%; font-family:var(--sans); font-size:15px; padding:12px 14px; border:1px solid var(--line-2); border-radius:9px; outline:none; transition:border-color .15s; box-sizing:border-box; }
.contact-form input:focus, .contact-form textarea:focus { border-color:var(--gold); }
.contact-form textarea { min-height:120px; resize:vertical; }

/* ============================================================
   CALCOLATORE MUTUO
   ============================================================ */
.mutuo-box { background:#fff; border:1px solid var(--line); border-radius:14px; padding:24px; margin-top:24px; }
.mutuo-head { display:flex; justify-content:space-between; align-items:baseline; gap:12px; margin-bottom:18px; flex-wrap:wrap; }
.mutuo-head h3 { margin:0; font-family:var(--serif); color:var(--navy); font-size:1.2rem; }
.mutuo-disclaimer { font-size:11px; color:var(--ink-3); font-style:italic; }
.mutuo-controls { display:flex; gap:16px; flex-wrap:wrap; padding-bottom:20px; margin-bottom:20px; border-bottom:1px solid var(--bone-2); }
.mutuo-field { display:flex; flex-direction:column; gap:6px; }
.mutuo-field label { font-size:12px; font-weight:600; color:var(--ink-2); }
.mutuo-field select, .m-tasso { font-family:var(--sans); font-size:14px; padding:9px 12px; border:1px solid var(--line-2); border-radius:8px; background:#fff; outline:none; }
.mutuo-field select:focus, .m-tasso:focus { border-color:var(--gold); }
.m-tasso-wrap { display:flex; align-items:center; gap:6px; }
.m-tasso { width:70px; }
.mutuo-check { justify-content:flex-end; }
.mutuo-check label { display:flex; align-items:center; gap:7px; font-weight:500; cursor:pointer; }
.mutuo-rata { display:flex; flex-direction:column; gap:2px; margin-bottom:18px; }
.mutuo-rata .ml { font-size:13px; color:var(--ink-2); }
.mutuo-rata .m-rata { font-family:var(--serif); font-size:2.4rem; font-weight:700; color:var(--navy); line-height:1; }
.mutuo-sub { display:grid; grid-template-columns:repeat(3,1fr); gap:14px; }
.mutuo-sub > div { display:flex; flex-direction:column; gap:3px; }
.mutuo-sub span { font-size:11px; color:var(--ink-3); }
.mutuo-sub b { font-size:1.05rem; color:var(--ink); font-variant-numeric:tabular-nums; }
.mutuo-leva { margin-top:22px; padding-top:20px; border-top:1px solid var(--bone-2); }
.leva-row { display:flex; align-items:center; gap:18px; justify-content:center; }
.leva-col { display:flex; flex-direction:column; gap:4px; text-align:center; }
.leva-col span { font-size:11px; color:var(--ink-3); }
.leva-col b { font-family:var(--serif); font-size:1.7rem; font-weight:700; color:var(--ink-2); }
.leva-col.hl b { color:#2E7D4F; }
.leva-arrow { font-size:1.5rem; color:var(--gold-2); }
.leva-verdetto { margin:16px 0 0; font-size:13px; line-height:1.6; padding:12px 14px; border-radius:8px; }
.leva-verdetto.ok { background:#eaf5ee; color:#225c3a; }
.leva-verdetto.warn { background:#fdf0e3; color:#8a5a17; }
@media (max-width:640px){ .mutuo-sub{grid-template-columns:1fr 1fr;} }

/* Banner occasione + costo totale (scheda pubblica) */
.occasione-banner { display:flex; align-items:center; gap:16px; padding:18px 22px; border-radius:12px; margin-top:24px; }
.occasione-banner b { display:block; font-family:var(--serif); font-size:1.15rem; }
.occasione-banner span { font-size:13px; opacity:.85; }
.occ-icon { font-size:1.6rem; }
.occ-forte { background:#eaf5ee; color:#1d6b3f; }
.occ-buono { background:#eef6ee; color:#2e7d4f; }
.occ-allineato { background:var(--bone-2); color:var(--ink-2); }
.occ-caro { background:#fdf0e3; color:#8a5a17; }
.costo-tot-box { background:#fff; border:1px solid var(--line); border-radius:14px; padding:24px; margin-top:24px; }
.costo-tot-box h3 { margin:0 0 6px; font-family:var(--serif); color:var(--navy); font-size:1.2rem; }
.costo-intro { font-size:13px; color:var(--ink-2); margin:0 0 16px; }
.reno-interventi { display:grid; grid-template-columns:1fr 1fr; gap:8px 20px; margin-bottom:16px; }
@media (max-width:600px){ .reno-interventi { grid-template-columns:1fr; } }
.reno-interventi label { display:flex; align-items:center; gap:8px; font-size:14px; color:var(--ink-2); cursor:pointer; }
.reno-interventi input[type=checkbox] { width:16px; height:16px; accent-color:#8A352B; cursor:pointer; }
.reno-interventi .reno-bagni { color:var(--ink-3); }
.reno-interventi .reno-bagni input { width:52px; padding:4px 6px; border:1px solid var(--line-2); border-radius:6px; }
.reno-verdetto { margin-top:14px; padding:12px 16px; border-radius:10px; font-size:13.5px; font-weight:600; }
.reno-verdetto:empty { display:none; }
.reno-verdetto.sotto { background:var(--green-soft); color:var(--green); }
.reno-verdetto.vicino { background:#F6E4D6; color:#8A352B; }
.reno-verdetto.sopra { background:#F3D9D2; color:#8A352B; }
.dm-grid { display:grid; grid-template-columns:1fr 1fr; gap:16px; }
@media (max-width:600px){ .dm-grid { grid-template-columns:1fr; } }
.dm-cell { padding:14px 16px; background:var(--bone); border:1px solid var(--line); border-radius:12px; display:flex; flex-direction:column; gap:4px; }
.dm-cell .dm-lab { font-size:12px; color:var(--ink-3); }
.dm-cell .dm-val { font-family:var(--serif); font-size:1.35rem; color:var(--navy); }
.dm-cell .dm-mar { font-size:13px; font-weight:600; }
.dm-cell .dm-mar.pos { color:var(--green); }
.dm-cell .dm-mar.neg { color:#8A352B; }
.liq-flag { display:flex; gap:10px; align-items:flex-start; padding:12px 16px; border-radius:12px; margin-bottom:20px; font-size:.9rem; line-height:1.45; }
.liq-flag .liq-ico { flex:0 0 auto; }
.liq-flag.liq-bassa { background:#F3D9D2; color:#8A352B; }
.liq-flag.liq-media { background:#F4EEE1; color:var(--ink-2); border:1px solid var(--line); }
.mercato-panel .mercato-stag { color:var(--ink-2); font-size:.92rem; margin:0 0 14px; }
.mercato-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:12px; }
@media (max-width:640px){ .mercato-grid { grid-template-columns:repeat(2,1fr); } }
.mercato-grid > div { background:var(--bone); border:1px solid var(--line); border-radius:10px; padding:12px; text-align:center; }
.mercato-grid b { display:block; font-family:var(--serif); font-size:1.3rem; color:var(--navy); }
.mercato-grid span { font-size:12px; color:var(--ink-3); }
.mercato-fonte { font-size:.78rem; color:var(--ink-3); margin:12px 0 0; }
.foto-galleria { display:grid; grid-template-columns:repeat(auto-fill,minmax(140px,1fr)); gap:8px; margin:8px 0; }
.foto-thumb { display:block; aspect-ratio:4/3; overflow:hidden; border-radius:10px; border:1px solid var(--line); }
.foto-thumb img { width:100%; height:100%; object-fit:cover; display:block; }
.foto-nota { font-size:.78rem; color:var(--ink-3); margin:2px 0 10px; }
.ann-legal { font-size:.82rem; color:var(--ink-3); line-height:1.55; background:var(--bone); border:1px solid var(--line); border-radius:10px; padding:12px 14px; margin:14px 0; }
.nav-msg { position:relative; display:inline-flex; align-items:center; gap:6px; }
.nav-msg-badge { background:#8A352B; color:#fff; font-size:11px; font-weight:600; min-width:18px; text-align:center; padding:0 6px; border-radius:20px; line-height:18px; }
.bivio { max-width:1100px; margin:0 auto; padding:28px 24px 8px; display:grid; grid-template-columns:1fr 1fr; gap:20px; }
@media (max-width:760px){ .bivio { grid-template-columns:1fr; } }
.bivio-card { border:1px solid var(--line); border-radius:16px; padding:28px 26px; display:flex; flex-direction:column; gap:10px; }
.bivio-vendi { background:linear-gradient(160deg,#F7F0E4,#F4EEE1); }
.bivio-compra { background:linear-gradient(160deg,#EEF1EC,#F4EEE1); }
.bivio-eyebrow { font-size:12px; text-transform:uppercase; letter-spacing:.06em; color:var(--terra,#8A352B); font-weight:600; }
.bivio-card h2 { font-family:var(--serif); color:var(--navy); margin:2px 0 4px; font-size:1.35rem; }
.bivio-card p { color:var(--ink-2); line-height:1.6; margin:0 0 8px; flex:1; }
.bivio-links { display:flex; gap:10px; flex-wrap:wrap; }
.costo-table { width:100%; border-collapse:collapse; }
.costo-table td { padding:9px 0; border-bottom:1px solid var(--bone-2); font-size:14px; }
.costo-table td:last-child { text-align:right; font-variant-numeric:tabular-nums; font-weight:600; }
.costo-table tr.sub td { color:var(--ink-2); font-size:13px; padding-left:16px; }
.costo-table tr.sub td:first-child { color:var(--ink-2); }
.costo-table tr.tot td { font-family:var(--serif); font-size:1.15rem; color:var(--navy); font-weight:700; border-bottom:none; padding-top:14px; }
.stima { font-size:10px; background:var(--bone-2); color:var(--ink-3); padding:1px 6px; border-radius:6px; margin-left:6px; }
.costo-incidenza { font-size:13px; color:var(--ink-2); margin:16px 0 0; line-height:1.6; }

/* Box scenario affitto */
.affitto-box { background:#fff; border:1px solid var(--line); border-radius:14px; padding:24px; margin-top:24px; }
.affitto-box h3 { margin:0 0 16px; font-family:var(--serif); color:var(--navy); font-size:1.2rem; }
.affitto-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:16px; }
.aff-cell { display:flex; flex-direction:column; gap:4px; padding:14px; background:var(--bone); border-radius:10px; }
.aff-cell.hl { background:#eaf5ee; }
.aff-cell span { font-size:11px; color:var(--ink-3); }
.aff-cell b { font-family:var(--serif); font-size:1.5rem; color:var(--navy); }
.aff-cell.hl b { color:#2e7d4f; }
.aff-verdetto { font-size:13px; color:var(--ink-2); margin:14px 0 0; }
@media (max-width:640px){ .affitto-grid{grid-template-columns:1fr 1fr;} }

/* ============================================================
   VALUTA IL TUO ANNUNCIO
   ============================================================ */
.va-hero { background:var(--navy); color:#fff; padding:56px 24px 40px; }
.va-inner { max-width:1100px; margin:0 auto; }
.va-hero h1 { font-family:var(--serif); font-size:2.4rem; margin:8px 0 12px; color:#fff; }
.va-hero .lead { color:#c8d0e0; max-width:640px; }
.va-hero .va-alt-ingresso { color:#c8d0e0; max-width:640px; }
.va-hero .va-alt-ingresso a { color:var(--gold-2); font-weight:600; }
.va-hero .eyebrow { color:var(--gold-2); }
.va-body { max-width:1100px; margin:0 auto; padding:40px 24px 64px; }
.va-grid { display:grid; grid-template-columns:0.9fr 1.1fr; gap:40px; align-items:start; }
@media (max-width:860px){ .va-grid{grid-template-columns:1fr; gap:28px;} }
.va-form { background:#fff; border:1px solid var(--line); border-radius:16px; padding:28px; box-shadow:var(--shadow-sm); }
.va-form .form-row { margin-bottom:16px; }
.va-form label { display:block; font-size:13px; font-weight:600; color:var(--ink-2); margin-bottom:6px; }
.va-form input, .va-form select { width:100%; font-family:var(--sans); font-size:15px; padding:11px 13px; border:1px solid var(--line-2); border-radius:9px; box-sizing:border-box; outline:none; }
.va-form input:focus, .va-form select:focus { border-color:var(--gold); }
.form-row2 { display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.va-checks { display:flex; flex-direction:column; gap:10px; margin:8px 0 20px; }
.va-checks label { display:flex; align-items:center; gap:8px; font-size:14px; font-weight:500; color:var(--ink); cursor:pointer; }
.va-checks input { width:auto; }
.va-placeholder { background:var(--bone); border:1px dashed var(--line-2); border-radius:16px; padding:48px 28px; text-align:center; color:var(--ink-3); }
.va-error { background:#fdecec; color:#a4302a; border-radius:12px; padding:20px; font-size:14px; }
.va-verdict { margin-bottom:16px; }
.va-zona { font-size:13px; color:var(--ink-2); font-weight:600; }
.va-card { background:#fff; border:1px solid var(--line); border-radius:14px; padding:20px 22px; margin-bottom:14px; }
.va-label { display:block; font-size:12px; color:var(--ink-3); text-transform:uppercase; letter-spacing:.04em; margin-bottom:8px; }
.va-big { font-family:var(--serif); font-size:2rem; color:var(--navy); display:block; }
.va-sub { font-size:13px; color:var(--ink-2); }
.va-card.occ-forte, .va-card.occ-buono { background:#eaf5ee; border-color:#bfe0cb; }
.va-card.occ-forte .va-big, .va-card.occ-buono .va-big { color:#1d6b3f; }
.va-card.occ-caro { background:#fdf0e3; border-color:#f0d9b8; }
.va-card.occ-caro .va-big { color:#8a5a17; }
.va-affitto { display:grid; grid-template-columns:repeat(3,1fr); gap:14px; margin-bottom:8px; }
.va-affitto > div { display:flex; flex-direction:column; gap:2px; }
.va-affitto b { font-family:var(--serif); font-size:1.4rem; color:var(--navy); }
.va-affitto span { font-size:11px; color:var(--ink-3); }
.va-costo { background:var(--navy); border:none; }
.va-costo .va-label { color:var(--gold-2); }
.va-costo .va-big { color:#fff; }
.va-costo .va-sub { color:#c8d0e0; }
.va-cta-box { margin-top:20px; padding:22px; background:var(--bone); border-radius:14px; text-align:center; }
.va-cta-box p { margin:0 0 14px; font-size:14px; color:var(--ink); }

/* Link avviso ufficiale PVP */
.avviso-link { display:inline-flex; align-items:center; gap:8px; margin-top:14px; padding:11px 18px; background:var(--bone); border:1px solid var(--line-2); border-radius:10px; color:var(--navy); font-weight:600; font-size:14px; text-decoration:none; transition:all .15s; }
.avviso-link:hover { background:var(--navy); color:#fff; border-color:var(--navy); }
.avviso-link .arrow { transition:transform .15s; }
.avviso-link:hover .arrow { transform:translateX(3px); }
.foto-card { display:flex; align-items:center; gap:16px; margin-top:14px; padding:16px 18px; background:var(--bone); border:1px solid var(--line-2); border-radius:12px; text-decoration:none; color:var(--navy); transition:all .15s; }
.foto-card:hover { background:var(--bone-2); border-color:var(--gold); }
.foto-card .foto-ph { font-size:30px; line-height:1; opacity:.7; }
.foto-card .foto-txt { display:flex; flex-direction:column; gap:3px; }
.foto-card .foto-txt b { font-size:15px; }
.foto-card .foto-txt > span { font-size:13px; color:var(--ink-3); }
.foto-card .foto-go { color:var(--terracotta,#8A352B); font-weight:600; font-size:13px; margin-top:2px; }

/* Righe redditività nel workspace */
.ws-extra-row { display:flex; justify-content:space-between; gap:16px; padding:12px 0; border-bottom:1px solid var(--bone-2); flex-wrap:wrap; }
.ws-extra-row:last-child { border-bottom:none; }
.ws-extra-label { font-size:13px; color:var(--ink-2); font-weight:600; }
.ws-extra-val { font-size:14px; color:var(--ink); text-align:right; }
.ws-extra-val.occ-forte, .ws-extra-val.occ-buono { color:#1d6b3f; font-weight:600; }
.ws-extra-val.occ-caro { color:#8a5a17; font-weight:600; }

/* ============================================================
   AUTENTICAZIONE CLIENTI
   ============================================================ */
.auth-section { max-width:1100px; margin:0 auto; padding:64px 24px; display:flex; justify-content:center; }
.auth-box, .area-box { background:#fff; border:1px solid var(--line); border-radius:16px; padding:40px; max-width:440px; width:100%; box-shadow:var(--shadow-sm); }
.auth-box h1, .area-box h1 { font-family:var(--serif); color:var(--navy); font-size:1.8rem; margin:0 0 8px; }
.auth-sub { color:var(--ink-2); font-size:14px; margin:0 0 24px; }
.auth-box .form-row { margin-bottom:18px; }
.auth-box label { display:block; font-size:13px; font-weight:600; color:var(--ink-2); margin-bottom:6px; }
.auth-box input, .auth-box select { width:100%; font-family:var(--sans); font-size:15px; padding:11px 13px; border:1px solid var(--line-2); border-radius:9px; box-sizing:border-box; outline:none; }
.auth-box input:focus, .auth-box select:focus { border-color:var(--gold); }
.auth-error { background:#fdecec; color:#a4302a; border-radius:10px; padding:12px 14px; font-size:14px; margin-bottom:18px; }
.auth-alt { text-align:center; font-size:14px; color:var(--ink-2); margin:20px 0 0; }
.auth-alt a { color:var(--gold-2); font-weight:600; }
.area-piano { display:flex; flex-direction:column; gap:4px; padding:18px; background:var(--bone); border-radius:12px; margin:20px 0; }
.area-label { font-size:12px; color:var(--ink-3); text-transform:uppercase; letter-spacing:.04em; }
.area-piano b { font-family:var(--serif); font-size:1.3rem; color:var(--navy); }
.area-info { font-size:14px; color:var(--ink); line-height:1.6; margin-bottom:20px; }
.area-box .cta { margin-right:10px; margin-bottom:10px; }

/* Pagina prezzi/abbonati */
.prezzi-grid { display:grid; grid-template-columns:1fr 1fr; gap:16px; margin:8px 0; }
.prezzo-card { border:1px solid var(--line); border-radius:14px; padding:24px; display:flex; flex-direction:column; gap:10px; }
.prezzo-card.hl { border-color:var(--gold); background:var(--bone); }
.pz-nome { font-size:13px; font-weight:600; color:var(--ink-2); text-transform:uppercase; letter-spacing:.04em; }
.pz-prezzo { font-family:var(--serif); font-size:2rem; color:var(--navy); }
.pz-prezzo small { font-size:.85rem; color:var(--ink-3); font-family:var(--sans); }
.pz-desc { font-size:13px; color:var(--ink-2); flex:1; }
.prezzo-card .cta { width:100%; opacity:.5; cursor:not-allowed; }
@media (max-width:560px){ .prezzi-grid{grid-template-columns:1fr;} }

/* Upsell box pagina valuta */
.va-upsell { background:var(--navy); color:#fff; border-radius:14px; padding:22px; margin-bottom:20px; display:flex; flex-direction:column; gap:8px; }
.va-upsell.warn { background:#8a5a17; }
.va-upsell b { font-size:15px; }
.va-upsell span { font-size:13px; color:#d8dce8; line-height:1.5; }
.va-upsell.warn span { color:#f3e3cd; }
.va-upsell .cta { align-self:flex-start; margin-top:8px; }

/* Fix sovrapposizione mappa Leaflet sulla barra di navigazione.
   I pannelli/controlli Leaflet usano z-index 200-700 e coprirebbero la nav
   (z-index 100): li teniamo sotto la barra. */
.leaflet-pane,
.leaflet-top,
.leaflet-bottom { z-index: 50 !important; }
.leaflet-control { z-index: 51 !important; }
header.nav, .ws-nav { z-index: 1000; }

/* Box incolla-testo nella pagina valuta */
.va-paste { background:var(--bone); border:1px solid var(--line-2); border-radius:14px; padding:20px; margin-bottom:18px; }
.va-paste label { display:block; font-size:14px; font-weight:600; color:var(--ink); margin-bottom:4px; }
.va-paste-hint { font-size:12.5px; color:var(--ink-2); margin:0 0 10px; line-height:1.5; }
.va-paste textarea { width:100%; font-family:var(--sans); font-size:14px; padding:11px 13px; border:1px solid var(--line-2); border-radius:9px; box-sizing:border-box; resize:vertical; outline:none; }
.va-paste textarea:focus { border-color:var(--gold); }
.va-paste .cta { margin-top:12px; }
.va-paste-ok { display:block; margin-top:10px; font-size:13px; color:#1d6b3f; font-weight:600; }
.va-paste-ko { display:block; margin-top:10px; font-size:13px; color:#8a5a17; }

/* Marcatore mq stimati / non disponibili */
.mq-stima { color:var(--ink-3); font-style:italic; font-size:.9em; }

/* Etichette opzionali nel form valuta */
.va-form .opt { font-weight:400; color:var(--ink-3); font-size:11.5px; }
.va-metodo { display:inline-block; margin-left:6px; font-size:11px; padding:2px 8px; border-radius:6px; background:var(--bone-2); color:var(--ink-2); }
.va-metodo.esatta { background:#eaf5ee; color:#1d6b3f; }

/* ============================================================
   PASSATA MOBILE COMPLETA (iPhone e schermi stretti)
   Sistema overflow orizzontale, mappa, form, bottoni, testo.
   ============================================================ */

/* 1) niente scroll orizzontale: la causa n.1 di "pagina rotta" su iPhone */
html, body { overflow-x: hidden; max-width: 100%; }
*, *::before, *::after { box-sizing: border-box; }
img, svg, video, canvas, table { max-width: 100%; height: auto; }

@media (max-width: 600px) {
  /* tipografia piu' compatta ma leggibile */
  body { font-size: 15px; }
  h1 { font-size: 1.7rem !important; line-height: 1.2; }
  h2 { font-size: 1.35rem !important; }
  .hero h1, .va-hero h1 { font-size: 1.8rem !important; }

  /* padding laterale uniforme, niente elementi che sforano */
  .va-body, .va-hero, .auth-section, footer.site .inner,
  .map-page, section, .container { padding-left: 16px !important; padding-right: 16px !important; }

  /* griglie a colonna singola su mobile */
  .va-grid, .detail-grid, .ws-grid, .scenarios, .split,
  .mutuo-sub, .affitto-grid, .prezzi-grid, .va-affitto { grid-template-columns: 1fr !important; }

  /* bottoni e CTA: full width e area di tocco comoda (min 44px) */
  .cta, button.cta, .va-form button, .auth-box button {
    width: 100%; box-sizing: border-box; padding: 13px 18px; min-height: 44px;
    justify-content: center; text-align: center;
  }
  .cta-row { flex-direction: column; gap: 10px; }
  .cta-row .cta { width: 100%; }

  /* form: campi a piena larghezza, font >=16px per evitare lo zoom-in di iOS */
  input, select, textarea { font-size: 16px !important; width: 100%; box-sizing: border-box; }
  .form-row2 { grid-template-columns: 1fr !important; }

  /* mappa: altezza esplicita e impilata (Leaflet su iOS vuole un'altezza certa) */
  .map-page { display: block !important; height: auto !important; }
  #map { height: 60vh !important; width: 100% !important; }
  .map-sidebar { max-height: none !important; margin-bottom: 16px; }
  .mini-map, #mini-map { height: 240px !important; width: 100% !important; }

  /* elementi con min-width che causano sforamento: li rilasso */
  .hero-stat, .t-search, #cookie span { min-width: 0 !important; width: 100%; }
  .hero-stats { flex-direction: column; }

  /* tabelle/liste larghe scrollano dentro il loro box, non rompono la pagina */
  .ws-list, .table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }

  /* cookie banner non deve coprire mezzo schermo */
  #cookie { flex-direction: column; gap: 10px; font-size: 13px; }

  /* il menu mobile aperto non deve essere coperto dalla mappa (z-index) */
  header.nav nav.open { z-index: 1100; }
}

/* Badge utente loggato (iniziali nella barra) */
.user-badge { display: inline-flex; align-items: center; gap: 8px; text-decoration: none; }
.user-initials {
  display: inline-flex; align-items: center; justify-content: center;
  width: 34px; height: 34px; border-radius: 50%;
  background: var(--gold); color: var(--navy);
  font-weight: 700; font-size: 13px; letter-spacing: .02em; flex-shrink: 0;
}
.user-badge .user-name { color: #fff; font-weight: 600; font-size: 14px; }
.user-badge:hover .user-name { color: var(--gold-2); }
.nav-logout { color: rgba(255,255,255,.6) !important; font-size: 13px; }
.nav-logout:hover { color: #fff !important; }
@media (max-width: 720px) {
  .user-badge { padding: 10px 4px; }
}

/* ============================================================
   DASHBOARD AREA CLIENTE + PORTALE ANNUNCI
   ============================================================ */
.dash { max-width: 1000px; margin: 0 auto; padding: 48px 24px 64px; }
.dash-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; flex-wrap: wrap; margin-bottom: 28px; }
.dash-head h1 { font-family: var(--serif); color: var(--navy); font-size: 1.9rem; margin: 0; }
.dash-sub { color: var(--ink-2); margin: 4px 0 0; }
.dash-cards { display: grid; grid-template-columns: repeat(3,1fr); gap: 16px; margin-bottom: 24px; }
.dash-card { background: #fff; border: 1px solid var(--line); border-radius: 14px; padding: 20px; display: flex; flex-direction: column; gap: 4px; }
.dash-card .dash-label { font-size: 12px; color: var(--ink-3); text-transform: uppercase; letter-spacing: .04em; }
.dash-card b { font-family: var(--serif); font-size: 1.8rem; color: var(--navy); }
.dash-link { font-size: 13px; color: var(--gold-2); font-weight: 600; margin-top: 4px; }
.dash-mini { font-size: 12px; color: var(--ink-3); }
.dash-actions { display: flex; gap: 12px; margin-bottom: 36px; flex-wrap: wrap; }
.dash-section { margin-bottom: 36px; }
.dash-section-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 14px; }
.dash-section h2 { font-family: var(--serif); color: var(--navy); font-size: 1.3rem; margin: 0 0 14px; }
.dash-section-head h2 { margin: 0; }
.dash-download { font-size: 13px; font-weight: 600; color: var(--gold-2); text-decoration: none; padding: 6px 14px; border: 1px solid var(--line-2); border-radius: 8px; }
.dash-download:hover { background: var(--bone); }
.dash-table { width: 100%; border-collapse: collapse; font-size: 14px; background: #fff; border-radius: 12px; overflow: hidden; }
.dash-table th { text-align: left; padding: 12px 14px; background: var(--bone); color: var(--ink-2); font-size: 12px; text-transform: uppercase; letter-spacing: .03em; }
.dash-table td { padding: 12px 14px; border-top: 1px solid var(--bone-2); }
.dash-zona { color: var(--ink-3); font-size: .9em; }
.dash-empty { color: var(--ink-2); background: var(--bone); border-radius: 12px; padding: 24px; text-align: center; }
.dash-empty a { color: var(--gold-2); font-weight: 600; }
.dash-logout { text-align: center; margin-top: 32px; }
.dash-logout a { color: var(--ink-3); font-size: 14px; }
.occ-forte, .occ-buono { color: #1d6b3f; font-weight: 600; }
.occ-caro { color: #8a5a17; font-weight: 600; }
.badge-stato { font-size: 12px; padding: 3px 10px; border-radius: 20px; font-weight: 600; }
.stato-pubblicato { background: #eaf5ee; color: #1d6b3f; }
.stato-in_revisione { background: #fdf0e3; color: #8a5a17; }
.stato-venduto { background: var(--navy); color: #fff; }
.stato-rifiutato, .stato-ritirato { background: #fdecec; color: #a4302a; }
.link-btn { background: none; border: 0; color: var(--gold-2); font-weight: 600; cursor: pointer; font-size: 13px; padding: 0; font-family: var(--sans); }
.auth-ok { background: #eaf5ee; color: #1d6b3f; border-radius: 10px; padding: 12px 14px; font-size: 14px; margin-bottom: 18px; }

/* Griglia annunci marketplace */
.ann-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px,1fr)); gap: 18px; }
.ann-card { background: #fff; border: 1px solid var(--line); border-radius: 14px; padding: 22px; text-decoration: none; transition: all .15s; display: block; }
.ann-card:hover { box-shadow: var(--shadow-sm); transform: translateY(-2px); border-color: var(--gold); }
.ann-comune { font-size: 12px; color: var(--ink-3); text-transform: uppercase; letter-spacing: .04em; }
.ann-card h3 { font-family: var(--serif); color: var(--navy); margin: 8px 0; font-size: 1.15rem; }
.ann-meta { color: var(--ink-2); font-size: 14px; }
.ann-meta b { color: var(--navy); font-size: 1.1rem; }
.ann-price { font-family: var(--serif); font-size: 1.8rem; color: var(--navy); margin: 12px 0; }
.ann-price span { font-size: 1rem; color: var(--ink-3); }
@media (max-width: 700px) { .dash-cards { grid-template-columns: 1fr; } }

/* Input codice OTP */
.otp-input { font-size: 28px !important; letter-spacing: 12px; text-align: center; font-family: var(--serif); font-weight: 600; }
.auth-sub { color: var(--ink-2); font-size: 14px; margin-bottom: 20px; line-height: 1.6; }
.auth-error { background: #fdecec; color: #a4302a; border-radius: 10px; padding: 12px 14px; font-size: 14px; margin-bottom: 18px; }

/* Freccia "vai alla scheda" sui risultati ricerca (visibile su mobile) */
.li-go { display: none; }
@media (max-width: 900px) {
  .li-go { display: inline-block; float: right; color: var(--gold-2); font-size: 20px; font-weight: 700; line-height: 1; }
  .list-item { position: relative; }
}

/* Logout come form POST ma con aspetto da link */
.nav-logout-form { display: inline; margin: 0; padding: 0; }
button.nav-logout { background: none; border: 0; cursor: pointer; font-family: var(--sans); padding: 0; }
.dash-logout form { display: inline; }

/* v121 — badge perizia */
.detail-tag.abusi { color:#a15c00; }
.detail-tag.abusi .dot { background:#a15c00; }
.tag-fonte-pz { font-size:.62rem; font-weight:600; color:#1d3a57; background:#eef3f8; border-radius:5px; padding:0 5px; margin-left:4px; vertical-align:middle; }

/* v124 — walk-away price */
.wa-sub { font-size:.8rem; color:var(--ink-2,#51606f); margin:0 0 12px; }
.wa-chips { display:flex; gap:8px; margin-bottom:14px; flex-wrap:wrap; }
.wa-chip { font-size:.82rem; padding:6px 12px; border-radius:999px; border:1px solid var(--line,#e3e8ee); background:#fff; color:var(--ink-2,#51606f); cursor:pointer; user-select:none; }
.wa-chip.on { background:#12263a; color:#fff; border-color:#12263a; }
.wa-big { font-size:1.9rem; font-weight:700; color:#12263a; }
.wa-big small { font-size:.85rem; font-weight:500; color:var(--ink-2,#51606f); }
.wa-scala { position:relative; height:10px; background:linear-gradient(90deg,#e7f5ec,#fdf3e3); border-radius:6px; margin:18px 0 30px; }
.wa-tick { position:absolute; top:-6px; width:2px; height:22px; background:#51606f; }
.wa-tick label { position:absolute; top:24px; left:50%; transform:translateX(-50%); font-size:.68rem; color:#51606f; white-space:nowrap; }
.wa-tick.max { background:#c9a24b; width:3px; }
.wa-tick.max label { color:#c9a24b; font-weight:700; }
.wa-verdetto { border-radius:8px; padding:10px 12px; font-size:.86rem; }
.wa-verdetto.v-ok { background:#e7f5ec; color:#1e7d46; }
.wa-verdetto.v-stretto { background:#fdf3e3; color:#a15c00; }
.wa-verdetto.v-ko { background:#fdecea; color:#b3261e; }
.wa-disc { font-size:.72rem; color:#8593a2; margin:10px 0 0; }

/* v125 — paywall */
.paywall { border:1px solid var(--line,#e3e8ee); border-radius:14px; padding:28px 22px; margin-bottom:24px;
  background:linear-gradient(180deg,#fff, #f6f8fa); text-align:center; }
.paywall-lock { font-size:2rem; margin-bottom:8px; }
.paywall-testo strong { display:block; font-size:1.05rem; color:#12263a; margin-bottom:6px; }
.paywall-testo p { color:#51606f; font-size:.9rem; max-width:520px; margin:0 auto 16px; line-height:1.5; }
.paywall .btn-primary { display:inline-block; background:#12263a; color:#fff; padding:10px 20px;
  border-radius:8px; text-decoration:none; font-weight:600; }
.paywall .btn-ghost { display:inline-block; margin-left:10px; color:#12263a; padding:10px 16px;
  border:1px solid var(--line,#e3e8ee); border-radius:8px; text-decoration:none; }
.dossier-cta.locked { background:#8593a2; }

/* v125.1 — paywall sblocco */
.paywall-form { display:inline-block; }
.paywall .btn-primary { border:0; cursor:pointer; font-size:.95rem; }
.paywall-nota { font-size:.78rem; color:#8593a2; margin-top:10px !important; }

/* v126 — valuta arricchita */
.va-hero { background:#12263a; color:#fff; border-radius:14px; padding:20px 22px; margin-bottom:14px; }
.va-hero-dove { font-size:.8rem; opacity:.75; margin-bottom:6px; }
.va-hero-giudizio { font-size:1.25rem; font-weight:700; }
.va-hero-giudizio .pct { color:#7fd6a4; }
.va-hero-riga { display:flex; gap:22px; margin-top:14px; flex-wrap:wrap; }
.va-hero-riga div b { display:block; font-size:1.05rem; }
.va-hero-riga div span { font-size:.7rem; opacity:.75; }
.liv-badge { display:inline-block; font-size:.72rem; background:#fdf3e3; color:#a15c00; border-radius:6px; padding:2px 8px; margin-left:6px; }

/* --- Pagina agenzie (B2B) --- */
.section.alt { background: var(--bg-2, #f6f8fa); }
.section-lead { font-size: 1.1rem; color: var(--ink-2, #51606f); max-width: 680px; line-height: 1.7; margin: 12px 0 0; }
.section-note { font-size: .95rem; color: var(--ink-3, #8593a2); max-width: 720px; margin: 28px 0 0; font-style: italic; }
.hero-cta { display: flex; gap: 14px; flex-wrap: wrap; }
.grid-3 { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 22px; margin-top: 44px; }
.grid-2 { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 22px; margin-top: 36px; }
.card-feat { background: #fff; border: 1px solid var(--line, #e3e8ee); border-radius: 14px; padding: 24px; }
.section.alt .card-feat { background: #fff; }
.card-feat h3 { font-size: 1.05rem; color: var(--navy); margin-bottom: 10px; }
.card-feat p { font-size: .95rem; color: var(--ink-2, #51606f); line-height: 1.6; margin: 0; }
.card-feat.big { padding: 30px; }
.card-feat.big h3 { font-size: 1.2rem; }
.cta-band { background: var(--navy); padding: 72px 32px; text-align: center; }
.cta-band-inner { max-width: 680px; margin: 0 auto; }
.cta-band h2 { color: #fff; margin-bottom: 14px; }
.cta-band p { color: rgba(255,255,255,.8); font-size: 1.05rem; line-height: 1.6; margin: 0 0 28px; }

/* v129 — badge liquidità mercato */
.liq-badge { display: flex; gap: 12px; align-items: flex-start; margin-top: 16px;
  padding: 12px 14px; border-radius: 10px; border: 1px solid var(--line, #e3e8ee); background: #fff; }
.liq-badge .liq-ico { font-size: 1.3rem; line-height: 1; }
.liq-badge b { display: block; font-size: .95rem; color: var(--navy); margin-bottom: 3px; }
.liq-badge span { font-size: .82rem; color: var(--ink-2, #51606f); line-height: 1.4; }
.liq-badge.liq-alto { border-left: 3px solid #1e7d46; }
.liq-badge.liq-medio { border-left: 3px solid #a15c00; }
.liq-badge.liq-basso { border-left: 3px solid #b3261e; }

/* v130 — valutazione da visura */
.vis-upload { margin: 24px 0; }
.vis-drop { display: block; border: 2px dashed var(--line, #e3e8ee); border-radius: 14px;
  padding: 40px 24px; text-align: center; cursor: pointer; transition: border-color .2s; background: #fff; }
.vis-drop:hover { border-color: var(--navy); }
.vis-drop input[type=file] { display: none; }
.vis-drop-ico { display: block; font-size: 2.4rem; margin-bottom: 12px; }
.vis-drop-txt { display: block; font-weight: 600; color: var(--navy); margin-bottom: 6px; }
.vis-drop-sub { display: block; font-size: .82rem; color: var(--ink-3, #8593a2); }
.vis-upload .cta { margin-top: 18px; }
.vis-privacy { font-size: .82rem; color: var(--ink-3, #8593a2); line-height: 1.5;
  background: var(--bg-2, #f6f8fa); padding: 12px 14px; border-radius: 10px; }
.vis-msg { padding: 12px 16px; border-radius: 10px; margin: 16px 0; font-size: .95rem; }
.vis-ok { background: #e7f5ec; color: #1e7d46; }
.vis-warn { background: #fdf3e3; color: #a15c00; }
.vis-err { background: #fdecea; color: #b3261e; }
.vis-stop { background: #fdecea; color: #b3261e; }
.vis-stop b { display: block; margin-bottom: 4px; }
.vis-stop p { margin: 0; color: #7a1a15; }
.vis-dati { border: 1px solid var(--line, #e3e8ee); border-radius: 12px; overflow: hidden; margin: 16px 0; }
.vis-dati.muted { opacity: .7; }
.vis-row { display: flex; justify-content: space-between; padding: 11px 16px; border-bottom: 1px solid var(--line, #e3e8ee); font-size: .92rem; }
.vis-row:last-child { border-bottom: 0; }
.vis-row span { color: var(--ink-2, #51606f); }
.vis-row b { color: var(--navy); text-align: right; }
.vis-next { margin-top: 20px; }
.vis-next p { color: var(--ink-2, #51606f); font-size: .92rem; line-height: 1.6; margin-bottom: 14px; }

/* v131 — drop-zone visura: stato durante il drag */
.vis-drop.is-over { border-color: var(--navy); background: #eef3f8; }

/* v132 — valutazione diretta da visura */
.vis-valutazione { margin: 20px 0; padding: 20px; border: 1px solid var(--line,#e3e8ee); border-radius: 14px; background: #fff; }
.vis-valutazione h3 { font-size: 1rem; color: var(--navy); margin: 18px 0 10px; }
.vis-valutazione h3:first-child { margin-top: 0; }
.vis-valore-big { display: block; font-size: 1.9rem; font-weight: 700; color: var(--navy); }
.vis-valore-sub { display: block; font-size: .82rem; color: var(--ink-3,#8593a2); margin-top: 4px; }
.vis-nota-mq { font-size: .8rem; color: var(--ink-3,#8593a2); font-style: italic; margin: 8px 0 0; }
.vis-tag-esatte { font-size: .68rem; font-weight: 700; color: #1e7d46; background: #e7f5ec; padding: 2px 8px; border-radius: 10px; vertical-align: middle; }
.vis-conviene { margin: 18px 0; padding: 20px; border: 1px dashed var(--gold,#c9a24b); border-radius: 14px; background: #fdfaf3; }
.vis-conviene h3 { margin: 0 0 6px; color: var(--navy); font-size: 1.05rem; }
.vis-conviene p { margin: 0 0 14px; font-size: .9rem; color: var(--ink-2,#51606f); }

/* v133 — menu riorganizzato: CTA Valuta + gerarchia */
header.nav nav a.nav-cta-valuta {
  background: var(--gold); color: var(--navy); padding: 8px 18px;
  border-radius: 6px; font-weight: 600;
}
header.nav nav a.nav-cta-valuta:hover { background: #d4b06a; color: var(--navy); }
header.nav nav .nav-sep {
  width: 1px; height: 20px; background: rgba(255,255,255,.18); margin: 0 4px;
}
header.nav nav a.nav-minor { font-size: 13px; color: rgba(255,255,255,.6); }
header.nav nav a.nav-minor:hover { color: rgba(255,255,255,.9); }
/* richiamo al secondo ingresso nella pagina valuta */
.va-alt-ingresso { margin-top: 12px; font-size: .92rem; color: var(--ink-2,#51606f); }
.va-alt-ingresso a { color: var(--navy); font-weight: 600; text-decoration: underline; }
@media (max-width: 860px) {
  header.nav nav .nav-sep { display: none; }
  header.nav nav a.nav-minor { font-size: 15px; color: rgba(255,255,255,.78); }
}

/* v139 — badge affidabilità della stima (degradare con grazia) */
.vis-affid { margin: 14px 0; padding: 12px 14px; border-radius: 10px; border: 1px solid var(--line,#e3e8ee); }
.vis-affid .affid-head { display: flex; align-items: center; gap: 8px; font-size: .95rem; }
.vis-affid .affid-dot { width: 10px; height: 10px; border-radius: 50%; flex-shrink: 0; }
.affid-alta   { background: #eaf6ee; border-color: #bfe3cb; }
.affid-alta   .affid-dot { background: #1e7d46; }
.affid-media  { background: #fdf6e8; border-color: #ead9a8; }
.affid-media  .affid-dot { background: #c9a24b; }
.affid-bassa  { background: #fbeceb; border-color: #e8c4c0; }
.affid-bassa  .affid-dot { background: #a3372b; }
.affid-note { margin: 8px 0 6px; padding-left: 18px; font-size: .85rem; color: var(--ink-2,#51606f); }
.affid-note li { margin: 2px 0; }
.affid-consiglio { margin: 4px 0 0; font-size: .82rem; color: var(--ink-3,#6b5f50); font-style: italic; }

/* v141 — ROI dopo ristrutturazione nel widget interventi */
.reno-roi-post { margin-top: 14px; padding: 14px 16px; border-radius: 10px; background: var(--bone,#f6f3ec); border: 1px solid var(--line,#e3e8ee); }
.reno-roi-post .rrp-head { font-size: .85rem; color: var(--ink-2,#51606f); font-weight: 600; }
.reno-roi-post .rrp-val { font-size: 1.8rem; font-weight: 700; margin: 4px 0; }
.reno-roi-post .rrp-val.green { color: var(--green,#1e7d46); }
.reno-roi-post .rrp-val.amber { color: var(--amber,#c9821e); }
.reno-roi-post .rrp-val.gray { color: var(--ink-3,#8593a2); }
.reno-roi-post .rrp-sub { font-size: .8rem; color: var(--ink-3,#8593a2); }
.wa-scenario { font-size: .7rem; font-weight: 600; color: var(--ink-3,#8593a2); background: var(--bone,#f2ede3); padding: 3px 9px; border-radius: 10px; vertical-align: middle; font-family: var(--sans); letter-spacing: 0; }

/* v142 — quando la sintesi economica è da sola (tolta card gruppo costruzioni) */
.detail-grid-single { grid-template-columns: 1fr !important; }

/* v142 — placeholder del lato ristrutturato nel box due guadagni */
.dm-placeholder { display: flex; flex-direction: column; opacity: .8; }
