/* =========================================================
   APEIRON ECO - Design System
   Eco-premium · brand green + blue · navy darks · Poppins
   Single shared stylesheet for all pages.
   ========================================================= */

/* ---------- Caratteri: Poppins ospitato in locale ----------
   Niente richieste a fonts.googleapis.com / fonts.gstatic.com (IP del visitatore a
   Google). File TTF originali, licenza SIL OFL 1.1 nei metadati del font. Il browser
   scarica un file solo se in pagina c'e' testo con quel peso o stile. */
@font-face{font-family:'Poppins';font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/Poppins-Regular.ttf) format('truetype');}
@font-face{font-family:'Poppins';font-style:italic;font-weight:400;font-display:swap;src:url(../fonts/Poppins-Italic.ttf) format('truetype');}
@font-face{font-family:'Poppins';font-style:normal;font-weight:500;font-display:swap;src:url(../fonts/Poppins-Medium.ttf) format('truetype');}
@font-face{font-family:'Poppins';font-style:italic;font-weight:500;font-display:swap;src:url(../fonts/Poppins-MediumItalic.ttf) format('truetype');}
@font-face{font-family:'Poppins';font-style:normal;font-weight:600;font-display:swap;src:url(../fonts/Poppins-SemiBold.ttf) format('truetype');}
@font-face{font-family:'Poppins';font-style:normal;font-weight:700;font-display:swap;src:url(../fonts/Poppins-Bold.ttf) format('truetype');}
@font-face{font-family:'Poppins';font-style:normal;font-weight:800;font-display:swap;src:url(../fonts/Poppins-ExtraBold.ttf) format('truetype');}

/* ---------- Design Tokens ----------
   To rebrand: change the values below. The whole site follows.
   (Swap these for your official brand hex codes when ready.) */
:root{
  /* Brand */
  --ink:        #0e2440;   /* deep navy - primary dark (brand) */
  --ink-soft:   #143055;
  --brand:      #00733d;   /* primary green (brand) */
  --brand-dark: #014d2a;   /* darker green - hover/text */
  --brand-bright:#3cb54a;  /* bright leaf green - highlights */
  --accent:     #0073bc;   /* brand blue */
  --accent-soft:#29abe2;   /* light blue */

  /* Surfaces */
  --cream:      #f4f8f1;   /* page background */
  --surface:    #ffffff;
  --surface-2:  #eef5ee;
  --line:       rgba(8,32,25,.10);
  --line-strong:rgba(8,32,25,.16);

  /* Text */
  --text:       #0c2820;
  --muted:      #51645c;
  --on-dark:    #eaf4ec;
  --on-dark-mut:rgba(234,244,236,.72);

  /* Shape & motion */
  --r-sm: 12px;
  --r:    18px;
  --r-lg: 26px;
  --r-pill: 999px;
  --shadow-sm: 0 2px 10px rgba(8,32,25,.05);
  --shadow:    0 10px 34px rgba(8,32,25,.08);
  --shadow-lg: 0 28px 60px rgba(8,32,25,.16);
  --ease: cubic-bezier(.22,1,.36,1);
  --maxw: 1200px;

  --serif:'Poppins', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
  --sans:'Poppins', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;

  /* Fine film grain (monochrome fractal noise) - gives flat fills a paper/material feel */
  --grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.82' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

/* ---------- Reset ---------- */
*{margin:0;padding:0;box-sizing:border-box;}
/* L'attributo hidden vince sempre: qui sotto decine di componenti hanno un
   display: proprio (flex/grid), che senza questa riga batte [hidden] e li
   lascia a schermo (menu che non si chiudono, barre vuote). Come in app.css. */
[hidden]{display:none!important;}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;}
body{
  font-family:var(--sans);
  color:var(--text);
  background:var(--cream);
  line-height:1.6;
  overflow-x:clip;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  /* footer sempre attaccato in fondo: niente spazio bianco su pagine corte */
  display:flex;
  flex-direction:column;
  min-height:100vh;
  min-height:100dvh;
}
/* il contenuto principale cresce e spinge il footer in fondo */
body > main{flex:1 0 auto;display:flex;flex-direction:column;}
/* ...e l'ULTIMA sezione si estende fino al footer: su pagine corte lo sfondo della
   sezione riempie tutto lo spazio residuo, senza mai lasciare una banda di crema
   (il colore del body) tra la fine del contenuto e il footer. */
body > main > :last-child{flex:1 0 auto;}
img,svg{max-width:100%;display:block;}
a{text-decoration:none;color:inherit;}
button{font-family:inherit;cursor:pointer;}
ul{list-style:none;}
:focus-visible{outline:3px solid var(--brand-bright);outline-offset:3px;border-radius:4px;}

/* ---------- A11y utilities ---------- */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;}
.skip-link{position:fixed;top:-60px;left:16px;z-index:100;background:var(--ink);color:#fff;padding:12px 18px;border-radius:0 0 12px 12px;font-weight:600;transition:top .25s var(--ease);}
.skip-link:focus{top:0;}

/* ---------- Layout helpers ---------- */
.container{max-width:var(--maxw);margin:0 auto;padding:0 26px;}
.container--wide{max-width:none;padding:0 20px;}   /* dashboard: piena larghezza, sidebar fino al bordo schermo */
.section{padding:clamp(64px,9vw,120px) 0;position:relative;isolation:isolate;}
.section > .container{position:relative;z-index:1;}
.section--tight{padding:clamp(48px,6vw,80px) 0;}
.center{text-align:center;}
.mx-auto{margin-left:auto;margin-right:auto;}
.grid{display:grid;}
.flow > * + *{margin-top:1rem;}

/* ---------- Typography ---------- */
h1,h2,h3,h4{font-family:var(--serif);font-weight:600;line-height:1.1;letter-spacing:-.01em;color:var(--ink);}
.eyebrow{
  display:inline-flex;align-items:center;gap:8px;
  font-family:var(--sans);font-weight:600;letter-spacing:.14em;text-transform:uppercase;
  font-size:.74rem;color:var(--brand);
}
/* (trattino iniziale rimosso dalle eyebrow in tutto il sito) */
.eyebrow--center{justify-content:center;}
.eyebrow--ondark{color:var(--accent-soft);}
.eyebrow--badge{background:var(--brand);color:#fff;padding:8px 16px;border-radius:var(--r-pill);letter-spacing:.06em;}

.h-display{font-size:clamp(2.4rem,5.6vw,4.4rem);line-height:1.05;font-weight:700;letter-spacing:-.02em;}
.section-title{font-size:clamp(1.9rem,3.8vw,2.9rem);}
.lead{font-size:clamp(1.05rem,1.6vw,1.2rem);color:var(--muted);max-width:60ch;}
.muted{color:var(--muted);}
.serif-accent{font-style:italic;color:var(--brand);}
.measure{max-width:64ch;}

/* ---------- Buttons ---------- */
.btn{
  --bg:var(--brand);--fg:#fff;
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  padding:14px 26px;border-radius:var(--r-pill);border:1.5px solid transparent;
  font-weight:600;font-size:.97rem;background:var(--bg);color:var(--fg);
  transition:transform .3s var(--ease), box-shadow .3s var(--ease), background .25s ease, color .25s ease, border-color .25s ease;
  box-shadow:0 8px 22px rgba(0,115,61,.24);
  position:relative;overflow:hidden;
}
/* light shine sweep on hover (filled buttons only) */
.btn::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(110deg,transparent 35%,rgba(255,255,255,.28) 50%,transparent 65%);
  transform:translateX(-100%);transition:transform .7s var(--ease);}
.btn:hover::after{transform:translateX(100%);}
.btn--ghost::after,.btn--on-dark-ghost::after{display:none;}
/* icona in em, non px: si adatta da sola al testo del bottone che la contiene
   (i .btn vanno da ~13px a ~17px). 1.35em = freccia leggibile, prima 18px fissi
   erano ~1.1em e sparivano accanto al testo in grassetto. */
.btn svg{width:1.35em;height:1.35em;position:relative;flex:none;}
.btn:hover{transform:translateY(-3px);box-shadow:0 16px 34px rgba(0,115,61,.34);}
.btn:active{transform:translateY(-1px);}
/* Un tasto disattivato deve SEMBRARE disattivato: senza questa riga restava verde
   pieno (le regole c'erano solo dentro .client-row, .sim-nav, .fe-draft). */
.btn:disabled{opacity:.45;cursor:not-allowed;filter:grayscale(.4);box-shadow:none;transform:none;}
.btn:disabled:hover{transform:none;box-shadow:none;}
.btn--accent{--bg:var(--accent);--fg:#fff;box-shadow:0 8px 22px rgba(0,115,188,.3);}
.btn--accent:hover{box-shadow:0 16px 34px rgba(0,115,188,.44);}
.btn--ghost{--bg:transparent;--fg:var(--ink);border-color:var(--line-strong);box-shadow:none;}
.btn--ghost:hover{background:var(--surface);border-color:var(--brand);color:var(--brand-dark);box-shadow:var(--shadow-sm);}
.btn--on-dark-ghost{--bg:transparent;--fg:var(--on-dark);border-color:rgba(234,244,236,.34);box-shadow:none;}
.btn--on-dark-ghost:hover{background:rgba(234,244,236,.1);border-color:var(--accent-soft);}
.btn--block{width:100%;}
.btn--lg{padding:17px 34px;font-size:1.02rem;}

.link-arrow{display:inline-flex;align-items:center;gap:8px;font-weight:600;color:var(--brand-dark);transition:gap .25s var(--ease),color .25s ease;}
.link-arrow svg{width:18px;height:18px;transition:transform .25s var(--ease);}
.link-arrow:hover{color:var(--brand);gap:12px;}
.link-arrow:hover svg{transform:translateX(3px);}

/* ---------- Navbar ---------- */
.nav{
  position:fixed;top:0;left:0;right:0;z-index:60;
  transition:padding .35s var(--ease), background .35s ease, box-shadow .35s ease, border-color .35s ease;
  padding:18px 0;border-bottom:1px solid transparent;
}
.nav.scrolled{
  background:rgba(244,248,241,.97);
  box-shadow:0 6px 26px rgba(8,32,25,.07);padding:10px 0;border-color:var(--line);
}
.nav-inner{display:flex;align-items:center;justify-content:space-between;gap:18px;}
.brand{display:inline-flex;align-items:center;gap:11px;font-family:var(--serif);font-weight:700;font-size:1.28rem;color:var(--ink);letter-spacing:-.01em;}
.brand-mark{width:56px;height:auto;flex:0 0 auto;}
.nav .brand-mark{height:42px;width:auto;}
.nav .brand small{display:none;}
.nav .brand{font-size:1.3rem;}
.nav .brand span{white-space:nowrap;}
.nav-cta .btn{white-space:nowrap;}
.brand b{color:var(--brand);font-weight:700;}
.brand small{display:block;font-family:var(--sans);font-weight:600;font-size:.56rem;letter-spacing:.32em;text-transform:uppercase;color:var(--muted);margin-top:1px;}

.nav-menu{display:flex;align-items:center;gap:22px;}
.nav-link{position:relative;font-weight:500;font-size:.95rem;color:var(--ink);padding:6px 2px;transition:color .25s ease;white-space:nowrap;}
.nav-link::after{content:"";position:absolute;left:0;bottom:-2px;height:2px;width:0;background:var(--brand);transition:width .3s var(--ease);}
.nav-link:hover,.nav-link[aria-current="page"]{color:var(--brand-dark);}
.nav-link:hover::after,.nav-link[aria-current="page"]::after{width:100%;}

/* Dropdown */
.has-drop{position:relative;}
.drop-toggle{display:inline-flex;align-items:center;gap:5px;background:none;border:none;color:inherit;font-size:.95rem;font-weight:500;padding:6px 2px;}
.drop-toggle svg{width:15px;height:15px;transition:transform .3s var(--ease);}
.has-drop:hover .drop-toggle svg{transform:rotate(180deg);}
.drop{
  position:absolute;top:calc(100% + 6px);left:50%;transform:translateX(-50%) translateY(8px);
  width:300px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);
  box-shadow:var(--shadow-lg);padding:10px;opacity:0;visibility:hidden;transition:opacity .25s ease, transform .25s var(--ease);
}
.has-drop:hover .drop,.has-drop:focus-within .drop{opacity:1;visibility:visible;transform:translateX(-50%) translateY(0);}
/* Invisible hover bridge so the panel doesn't disappear when moving the mouse down into it (desktop only) */
@media (min-width:1101px){
  .drop::before{content:"";position:absolute;left:0;right:0;top:-16px;height:16px;}
  .nav-inner{justify-content:center;gap:40px;}
}
.drop a{display:flex;gap:12px;align-items:flex-start;padding:11px 12px;border-radius:12px;transition:background .2s ease;}
.drop a:hover{background:var(--surface-2);}
.drop .di{width:34px;height:34px;flex:0 0 auto;border-radius:9px;background:var(--surface-2);color:var(--brand);display:grid;place-items:center;}
.drop .di svg{width:18px;height:18px;}
.drop strong{display:block;font-size:.9rem;color:var(--ink);font-weight:600;}
.drop span{font-size:.78rem;color:var(--muted);line-height:1.4;}

.nav-cta{display:inline-flex;}
.hamburger{display:none;flex-direction:column;gap:5px;width:44px;height:44px;align-items:center;justify-content:center;background:none;border:none;}
.hamburger span{width:24px;height:2px;background:var(--ink);border-radius:2px;transition:.3s var(--ease);}
.hamburger.open span:nth-child(1){transform:translateY(7px) rotate(45deg);}
.hamburger.open span:nth-child(2){opacity:0;}
.hamburger.open span:nth-child(3){transform:translateY(-7px) rotate(-45deg);}

/* Nav legibility: light over the dark hero (top), dark once scrolled onto light bg */
.brand{color:#fff;}
.brand b{font-weight:700;background:linear-gradient(90deg,#3cb54a 0%,#1f9d86 50%,#29abe2 100%);
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent;}
.brand small{color:rgba(234,244,236,.62);}
.nav-link{color:var(--on-dark);}
.nav-link:hover,.nav-link[aria-current="page"]{color:#fff;}
.drop-toggle{color:var(--on-dark);}
.hamburger span{background:#fff;}
.hamburger.open span{background:var(--ink);}
.nav.scrolled .brand{color:var(--ink);}
.nav.scrolled .brand b{color:var(--brand);}
.nav.scrolled .brand small{color:var(--muted);}
.nav.scrolled .nav-link{color:var(--ink);}
.nav.scrolled .nav-link:hover,.nav.scrolled .nav-link[aria-current="page"]{color:var(--brand-dark);}
.nav.scrolled .drop-toggle{color:var(--ink);}
.nav.scrolled .hamburger span{background:var(--ink);}

/* Pagina locator: niente hero scuro e niente scroll → la barra resta bianca con testo scuro */
body.page-locator .nav{background:rgba(244,248,241,.97);
  box-shadow:0 6px 26px rgba(8,32,25,.07);border-color:var(--line);}
body.page-locator .nav .brand{color:var(--ink);}
body.page-locator .nav .brand small{color:var(--muted);}
body.page-locator .nav .nav-link,body.page-locator .nav .drop-toggle{color:var(--ink);}
body.page-locator .nav .nav-link:hover,body.page-locator .nav .nav-link[aria-current="page"]{color:var(--brand-dark);}
body.page-locator .nav .hamburger span{background:var(--ink);}

/* ---------- Hero ---------- */
.hero{position:relative;color:var(--on-dark);background:var(--ink);}
.hero-stage{position:relative;min-height:100vh;overflow:hidden;display:flex;align-items:center;
  background:radial-gradient(130% 120% at 88% -10%, #0e8a4f 0%, #0a4f7a 50%, var(--ink) 100%);}
.hero-media{position:absolute;inset:0;z-index:0;}
.hero-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.hero-media-overlay{position:absolute;inset:0;background:
  linear-gradient(90deg,rgba(8,22,38,.88) 0%,rgba(8,22,38,.62) 44%,rgba(8,22,38,.24) 100%),
  linear-gradient(0deg,rgba(8,22,38,.55),rgba(8,22,38,0) 42%);}
.aurora{position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none;}
.aurora span{position:absolute;border-radius:50%;filter:blur(90px);opacity:.55;animation:drift 20s ease-in-out infinite;}
.aurora .a1{width:560px;height:560px;background:var(--brand-bright);top:-180px;right:-120px;}
.aurora .a2{width:480px;height:480px;background:#0c8f8a;bottom:-200px;right:-120px;animation-delay:-7s;}
.aurora .a3{width:360px;height:360px;background:var(--accent);top:28%;left:8%;opacity:.22;animation-delay:-13s;}
@keyframes drift{0%,100%{transform:translate(0,0) scale(1);}50%{transform:translate(46px,-34px) scale(1.12);}}
.hero-inner{position:relative;z-index:2;width:100%;padding-top:96px;}
.hero-copy{max-width:760px;}
.hero h1{color:#fff;}
.hero h1 .hl{color:var(--brand-bright);position:relative;white-space:nowrap;}
.hero-title{font-weight:700;line-height:1.05;letter-spacing:-.01em;}
.hero-title .t1{display:block;font-size:clamp(1.7rem,3.4vw,2.6rem);}
.hero-title .t2{display:block;font-size:clamp(2.7rem,6.4vw,4.9rem);line-height:1;margin:.04em 0;}
.hero-title .t3{display:block;font-size:clamp(1.3rem,2.5vw,1.95rem);font-weight:600;}
.hero-sub{margin-top:22px;font-size:clamp(1.05rem,1.5vw,1.2rem);color:var(--on-dark-mut);max-width:54ch;}
.hero-cta{margin-top:34px;display:flex;flex-wrap:wrap;gap:14px;}
/* CTA hero: freccia (desktop, va ai contatti) / WhatsApp (mobile) */
.cta-wa{display:none;}
@media (max-width:768px){.cta-wa{display:inline-flex;}.cta-arrow{display:none;}}
.hero-badges{margin-top:30px;display:flex;flex-wrap:wrap;gap:10px 22px;}
.hero-badge{display:inline-flex;align-items:center;gap:9px;font-size:.86rem;color:var(--on-dark-mut);}
.hero-badge svg{width:18px;height:18px;color:var(--brand-bright);flex:0 0 auto;}

/* Hero visual card */
.hero-card{position:relative;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.14);
  border-radius:var(--r-lg);padding:26px;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);box-shadow:var(--shadow-lg);}
.hero-card h3{color:#fff;font-size:1.15rem;}
.hero-card .savings{font-family:var(--serif);font-size:3rem;color:var(--accent-soft);line-height:1;margin:6px 0 2px;}
.bar-row{display:flex;align-items:center;gap:12px;margin-top:16px;}
.bar-row .lbl{font-size:.8rem;color:var(--on-dark-mut);width:78px;flex:0 0 auto;}
.bar{flex:1;height:9px;border-radius:6px;background:rgba(255,255,255,.12);overflow:hidden;}
.bar i{display:block;height:100%;border-radius:6px;background:linear-gradient(90deg,var(--brand-bright),var(--accent-soft));width:0;transition:width 1.3s var(--ease);}
.hero-card .pill{position:absolute;top:-16px;right:18px;background:var(--accent);color:var(--ink);font-weight:700;font-size:.78rem;padding:8px 14px;border-radius:var(--r-pill);box-shadow:var(--shadow);}

/* ---------- Marquee / trust strip ---------- */
.trust{background:var(--ink);color:var(--on-dark-mut);padding:20px 0;}
.trust .container{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:18px 40px;}
.trust p{font-size:.82rem;letter-spacing:.05em;text-transform:uppercase;color:rgba(234,244,236,.5);font-weight:600;}
.trust ul{display:flex;flex-wrap:wrap;gap:14px 34px;align-items:center;}
.trust li{display:inline-flex;align-items:center;gap:9px;font-size:.92rem;font-weight:600;color:var(--on-dark);}
.trust li svg{width:18px;height:18px;color:var(--brand-bright);}

/* ---------- Section heading block ---------- */
.head{max-width:64ch;margin-inline:auto;text-align:center;}
.head--center{margin:0 auto;text-align:center;}
.head .section-title{margin-top:14px;}
.head .lead{margin-top:16px;}
.head .lead{margin-left:auto;margin-right:auto;}

/* ---------- Service cards ---------- */
.cards{display:grid;gap:24px;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));margin-top:54px;}
.card{
  position:relative;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);
  padding:32px 28px;box-shadow:var(--shadow-sm);overflow:hidden;
  transition:transform .4s var(--ease), box-shadow .4s var(--ease), border-color .4s ease;
}
.card::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;
  background:radial-gradient(120% 120% at 100% 0,rgba(31,181,116,.10),transparent 55%);opacity:0;transition:opacity .4s ease;}
.card:hover{transform:translateY(-8px);box-shadow:var(--shadow-lg);border-color:rgba(0,115,61,.28);}
.card:hover::after{opacity:1;}
/* hand-crafted light sweep across the card on hover */
.card::before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;border-radius:inherit;pointer-events:none;z-index:1;
  background:linear-gradient(108deg,transparent 32%,rgba(255,255,255,.42) 48%,transparent 62%);
  transform:translateX(-115%);opacity:0;transition:transform .85s var(--ease),opacity .85s ease;}
.card:hover::before{transform:translateX(115%);opacity:1;}
.card-ico{width:54px;height:54px;border-radius:15px;display:grid;place-items:center;margin-bottom:20px;
  background:linear-gradient(140deg,rgba(60,181,74,.18),rgba(0,115,188,.14));color:var(--brand-dark);
  transition:transform .4s var(--ease);}
.card:hover .card-ico{transform:scale(1.06);}
.card-ico svg{width:27px;height:27px;}
.card h3{font-size:1.28rem;margin-bottom:9px;}
.card p{color:var(--muted);font-size:.96rem;}
.card .link-arrow{margin-top:18px;}
.card-tag{position:absolute;top:20px;right:20px;font-size:.68rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  color:var(--brand-dark);background:var(--surface-2);padding:5px 10px;border-radius:var(--r-pill);}

/* ---------- Stats ---------- */
.stats{display:grid;gap:24px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));}
.stat{padding:6px 4px;}
.stat .num{font-family:var(--serif);font-size:clamp(2.4rem,5vw,3.4rem);line-height:1;color:var(--brand-dark);font-weight:700;}
.stat .num .suf{color:var(--accent);}
.stat .lbl{margin-top:10px;color:var(--muted);font-size:.95rem;}
.stats--ondark .stat .num{color:#fff;}
.stats--ondark .stat .num .suf{color:var(--accent-soft);}
.stats--ondark .stat .lbl{color:var(--on-dark-mut);}

/* ---------- Numbers slider (home) ---------- */
.numbers-slider{position:relative;margin-top:clamp(30px,4vw,48px);padding:0 clamp(0px,4vw,54px);}
.ns-viewport{overflow:hidden;}
.ns-track{display:flex;will-change:transform;transition:transform .55s var(--ease);}
.ns-slide{flex:0 0 100%;display:grid;grid-template-columns:1fr auto 1fr;grid-template-areas:"left center right";
  gap:clamp(14px,3vw,44px);align-items:center;}
.ns-data{display:grid;gap:clamp(16px,2.6vw,28px);}
.ns-left{grid-area:left;justify-items:end;text-align:right;}
.ns-right{grid-area:right;justify-items:start;text-align:left;}
.ns-stat .v{display:block;font-family:var(--serif);font-weight:700;font-size:clamp(1.45rem,2.8vw,2.3rem);line-height:1;color:#fff;}
.ns-stat .v .suf{color:var(--accent-soft);}
.ns-stat .l{display:block;margin-top:6px;font-size:.82rem;color:var(--on-dark-mut);max-width:20ch;}
.ns-center{grid-area:center;display:flex;flex-direction:column;align-items:center;text-align:center;}
.ns-badge{display:inline-block;background:#15a34a;color:#fff;font-weight:700;font-size:.78rem;
  padding:7px 16px;border-radius:var(--r-pill);box-shadow:0 6px 18px rgba(21,163,74,.4);margin-bottom:16px;white-space:nowrap;}
.ns-disc{position:relative;width:clamp(148px,19vw,206px);aspect-ratio:1;border-radius:50%;display:grid;place-items:center;overflow:hidden;
  background:radial-gradient(circle at 50% 38%,rgba(31,181,116,.3),rgba(255,255,255,.05));
  border:1px solid rgba(255,255,255,.16);box-shadow:inset 0 0 44px rgba(0,0,0,.2);}
.ns-disc svg{width:64%;height:64%;}
.ns-disc-photo{width:100%;height:100%;object-fit:cover;transition:transform .45s ease;display:block;}
.ns-disc:hover .ns-disc-photo{transform:scale(1.1);}
.ns-center h4{color:#fff;margin-top:16px;font-size:clamp(1.05rem,1.6vw,1.25rem);}
.ns-title-btn{display:inline-block;margin-top:16px;color:#fff;font-family:var(--sans);font-weight:700;font-size:clamp(1.05rem,1.6vw,1.25rem);
  text-decoration:none;border-bottom:2px solid rgba(255,255,255,.35);padding-bottom:2px;
  transition:color .2s ease,border-color .2s ease;}
.ns-title-btn:hover{color:var(--accent-soft);border-color:var(--accent-soft);}
.ns-arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:3;width:44px;height:44px;border-radius:50%;
  border:1px solid rgba(255,255,255,.24);background:rgba(255,255,255,.08);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
  color:#fff;display:grid;place-items:center;cursor:pointer;transition:background .25s ease,transform .2s var(--ease);}
.ns-arrow:hover{background:rgba(255,255,255,.2);}
.ns-arrow svg{width:22px;height:22px;}
.ns-prev{left:0;} .ns-next{right:0;}
.ns-dots{display:flex;justify-content:center;gap:9px;margin-top:26px;}
.ns-dot{width:9px;height:9px;border-radius:50%;border:none;background:rgba(255,255,255,.3);cursor:pointer;
  transition:background .25s ease,width .25s ease;padding:0;}
.ns-dot.on{background:var(--accent-soft);width:24px;border-radius:5px;}
@media (max-width:760px){
  .numbers-slider{padding:0;}
  .ns-slide{grid-template-columns:1fr 1fr;grid-template-areas:"center center" "left right";gap:22px 16px;}
  .ns-left{justify-items:start;text-align:left;}
  .ns-arrow{top:118px;width:38px;height:38px;}
  .ns-prev{left:0;} .ns-next{right:0;}
}

/* ---------- Process / timeline ---------- */
.steps{display:grid;gap:22px;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));margin-top:54px;}
.step{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:30px 26px;
  transition:transform .4s var(--ease),box-shadow .4s ease;}
.step:hover{transform:translateY(-6px);box-shadow:var(--shadow);}
.step .n{font-family:var(--serif);font-size:1rem;font-weight:700;width:42px;height:42px;border-radius:12px;display:grid;place-items:center;
  background:var(--ink);color:var(--accent-soft);margin-bottom:18px;}
.step h3{font-size:1.12rem;margin-bottom:8px;}
.step p{color:var(--muted);font-size:.93rem;}

/* ---------- Split feature ---------- */
.split{display:grid;grid-template-columns:1fr 1fr;gap:clamp(34px,5vw,72px);align-items:center;}
.split--rev .split-media{order:2;}
.feature-list{margin-top:26px;display:grid;gap:16px;}
.feature-list li{display:flex;gap:14px;align-items:flex-start;}
.feature-list .ck{width:28px;height:28px;flex:0 0 auto;border-radius:9px;background:rgba(31,181,116,.14);color:var(--brand-dark);display:grid;place-items:center;margin-top:2px;}
.feature-list .ck svg{width:16px;height:16px;}
.feature-list strong{display:block;color:var(--ink);font-size:1rem;}
.feature-list span{color:var(--muted);font-size:.93rem;}

/* Decorative media panel */
.media-panel{position:relative;border-radius:var(--r-lg);overflow:hidden;min-height:380px;
  background:radial-gradient(135% 120% at 18% 0,#0c8048,#0b4f7e 60%,var(--ink));box-shadow:var(--shadow-lg);color:var(--on-dark);
  display:flex;flex-direction:column;justify-content:flex-end;padding:30px;}
.media-panel .glow{position:absolute;width:320px;height:320px;border-radius:50%;filter:blur(80px);background:var(--brand-bright);opacity:.35;top:-80px;right:-60px;animation:drift 18s ease-in-out infinite;}
.media-panel .mp-content{position:relative;z-index:1;}
.media-panel h4{color:#fff;font-size:1.3rem;}
.media-panel p{color:var(--on-dark-mut);font-size:.95rem;margin-top:8px;}
.ring-stat{position:relative;z-index:1;display:inline-flex;align-items:center;gap:16px;margin-bottom:auto;
  background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.14);border-radius:var(--r);padding:16px 20px;backdrop-filter:blur(6px);}
.ring-stat .big{font-family:var(--serif);font-size:2.2rem;color:var(--accent-soft);line-height:1;}
.ring-stat small{font-size:.8rem;color:var(--on-dark-mut);}

/* ---------- Regions ---------- */
.regions{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;margin-top:46px;}
.regions span,.regions a{background:var(--surface);border:1px solid var(--line);color:var(--brand-dark);padding:10px 18px;border-radius:var(--r-pill);
  font-size:.9rem;font-weight:500;cursor:pointer;transition:transform .3s var(--ease),background .3s ease,color .3s ease,border-color .3s ease;}
.regions span:hover,.regions a:hover{background:var(--brand);color:#fff;border-color:var(--brand);transform:translateY(-3px);}

/* ---------- Audience tabs ---------- */
.aud{display:grid;gap:24px;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));margin-top:50px;}
.aud-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:30px;
  transition:transform .4s var(--ease),box-shadow .4s ease;}
.aud-card:hover{transform:translateY(-6px);box-shadow:var(--shadow);}
.aud-card .ico{width:50px;height:50px;border-radius:14px;background:var(--ink);color:var(--accent-soft);display:grid;place-items:center;margin-bottom:18px;}
.aud-card .ico svg{width:24px;height:24px;}
.aud-card h3{font-size:1.25rem;margin-bottom:10px;}
.aud-card p{color:var(--muted);font-size:.95rem;}
.aud-card ul{margin-top:16px;display:grid;gap:9px;}
.aud-card li{display:flex;gap:10px;font-size:.92rem;color:var(--text);}
.aud-card li svg{width:17px;height:17px;color:var(--brand);flex:0 0 auto;margin-top:3px;}

/* ---------- Testimonials ---------- */
.testi-grid{display:grid;gap:24px;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));margin-top:54px;}
.testi{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:32px 28px;box-shadow:var(--shadow-sm);
  transition:transform .4s var(--ease),box-shadow .4s ease;display:flex;flex-direction:column;}
.testi:hover{transform:translateY(-6px);box-shadow:var(--shadow);}
.stars{display:flex;gap:3px;color:var(--accent);margin-bottom:14px;}
.stars svg{width:18px;height:18px;}
.testi blockquote{font-size:1.02rem;color:var(--text);line-height:1.7;font-style:italic;}
.testi .who{display:flex;align-items:center;gap:13px;margin-top:22px;}
.testi .av{width:46px;height:46px;border-radius:50%;background:linear-gradient(140deg,var(--brand),var(--ink));color:#fff;
  display:grid;place-items:center;font-weight:700;font-family:var(--serif);font-size:1.05rem;}
.testi .who b{display:block;font-size:.95rem;color:var(--ink);}
.testi .who span{font-size:.83rem;color:var(--muted);}

/* ---------- FAQ ---------- */
.faq{max-width:820px;margin:48px auto 0;display:grid;gap:14px;}
.faq-item{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;transition:border-color .3s ease,box-shadow .3s ease;}
.faq-item.open{border-color:rgba(0,115,61,.35);box-shadow:var(--shadow-sm);}
.faq-q{width:100%;text-align:left;background:none;border:none;padding:22px 24px;display:flex;align-items:center;justify-content:space-between;gap:18px;
  font-family:var(--serif);font-size:1.08rem;font-weight:600;color:var(--ink);}
.faq-q .ico{width:30px;height:30px;flex:0 0 auto;border-radius:50%;background:var(--surface-2);color:var(--brand-dark);display:grid;place-items:center;transition:transform .35s var(--ease),background .3s ease,color .3s ease;}
.faq-q .ico svg{width:18px;height:18px;}
.faq-item.open .faq-q .ico{transform:rotate(45deg);background:var(--brand);color:#fff;}
.faq-a{max-height:0;overflow:hidden;transition:max-height .4s var(--ease);}
.faq-a-inner{padding:0 24px 22px;color:var(--muted);font-size:.97rem;line-height:1.7;}

/* ---------- CTA band ---------- */
.cta-band{position:relative;overflow:hidden;border-radius:var(--r-lg);padding:clamp(40px,6vw,72px);color:var(--on-dark);
  background:radial-gradient(130% 140% at 85% 0,#0c8048,#0b5288 55%,var(--ink));box-shadow:var(--shadow-lg);}
.cta-band .glow{position:absolute;width:420px;height:420px;border-radius:50%;filter:blur(100px);background:var(--brand-bright);opacity:.3;top:-160px;left:-60px;}
.cta-band .glow2{position:absolute;width:300px;height:300px;border-radius:50%;filter:blur(90px);background:var(--accent);opacity:.18;bottom:-140px;right:-40px;}
.cta-band-inner{position:relative;z-index:1;display:grid;grid-template-columns:1.3fr .7fr;gap:36px;align-items:center;}
.cta-band h2{color:#fff;font-size:clamp(1.8rem,3.4vw,2.6rem);}
.cta-band p{color:var(--on-dark-mut);margin-top:14px;max-width:50ch;}
.cta-band .actions{display:flex;flex-direction:column;gap:14px;}
.cta-band .reassure{font-size:.85rem;color:var(--on-dark-mut);display:inline-flex;align-items:center;gap:8px;}
.cta-band .reassure svg{width:16px;height:16px;color:var(--brand-bright);}

/* ---------- Page hero (interior) ---------- */
.phero{position:relative;overflow:hidden;color:var(--on-dark);padding:150px 0 clamp(56px,7vw,90px);
  background:radial-gradient(130% 130% at 80% -10%,#0a7d45,#0a4f7a 50%,var(--ink) 100%);}
.phero .container{position:relative;z-index:1;}
.crumbs{display:flex;gap:8px;align-items:center;font-size:.84rem;color:var(--on-dark-mut);margin-bottom:18px;}
.crumbs a:hover{color:#fff;}
.crumbs svg{width:14px;height:14px;opacity:.6;}
.phero h1{color:#fff;font-size:clamp(2.1rem,4.6vw,3.5rem);max-width:18ch;}
.phero .lead{color:var(--on-dark-mut);margin-top:18px;max-width:58ch;}
.phero-meta{margin-top:26px;display:flex;flex-wrap:wrap;gap:10px 22px;}
.phero-meta span{display:inline-flex;align-items:center;gap:9px;font-size:.9rem;color:var(--on-dark);}
.phero-meta svg{width:18px;height:18px;color:var(--brand-bright);}
.phero--services{padding:122px 0 66px;}
.services-jump{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px;}
.service-hero-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px;}
/* Compact page header (es. pagina Rivenditori) */
.phero--compact{padding:104px 0 30px;}
.phero--compact h1{font-size:clamp(1.4rem,2.4vw,2rem);max-width:none;}
.phero--compact .lead{margin-top:10px;font-size:1.02rem;}
.phero--compact .crumbs{margin-bottom:14px;}

/* ---------- Contact ---------- */
.contact-grid{display:grid;grid-template-columns:1fr 1.05fr;gap:clamp(34px,5vw,64px);align-items:stretch;}
.contact-info,#modulo{display:flex;flex-direction:column;}
.contact-info .contact-register{margin-top:auto;}
.contact-info [data-wa]{align-self:flex-start;max-width:100%;margin-bottom:30px;}
#modulo .form{flex:1;}
.contact-info .info-list{margin-top:28px;display:grid;gap:18px;}
.contact-info .info-list li{display:flex;gap:15px;align-items:flex-start;}
.contact-info .info-list .ico{width:46px;height:46px;flex:0 0 auto;border-radius:13px;background:var(--surface);border:1px solid var(--line);color:var(--brand-dark);display:grid;place-items:center;box-shadow:var(--shadow-sm);}
.contact-info .info-list .ico svg{width:21px;height:21px;}
.contact-info .info-list b{display:block;color:var(--ink);font-size:.97rem;}
.contact-info .info-list span,.contact-info .info-list a{color:var(--muted);font-size:.95rem;}
.contact-info .info-list a:hover{color:var(--brand-dark);}

.form{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:clamp(26px,3vw,38px);box-shadow:var(--shadow);}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:18px;}
.field{display:flex;flex-direction:column;gap:8px;margin-top:18px;}
.field:first-child{margin-top:0;}
.form-row .field{margin-top:0;}
.field label{font-size:.85rem;font-weight:600;color:var(--ink);}
.field .req{color:var(--brand);}
.field input,.field select,.field textarea{
  font-family:var(--sans);font-size:.97rem;padding:13px 15px;border-radius:var(--r-sm);
  border:1.5px solid var(--line-strong);background:var(--cream);color:var(--text);
  transition:border-color .25s ease,box-shadow .25s ease,background .25s ease;width:100%;
}
.field textarea{resize:vertical;min-height:120px;}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--brand);background:#fff;box-shadow:0 0 0 4px rgba(31,181,116,.16);}
.field.invalid input,.field.invalid select,.field.invalid textarea{border-color:#d4543b;box-shadow:0 0 0 4px rgba(212,84,59,.12);}
.field .err{font-size:.78rem;color:#c0432c;min-height:0;opacity:0;max-height:0;transition:opacity .2s ease;}
.field.invalid .err{opacity:1;max-height:30px;}
/* menu a tendina: freccia personalizzata staccata dal bordo (Marca, Modello, Cliente…) */
.field select,.val-cliente,.ris-iv select{
  -webkit-appearance:none;-moz-appearance:none;appearance:none;
  background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2351645c' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='m6 9 6 6 6-6'/></svg>");
  background-repeat:no-repeat;background-position:right 15px center;padding-right:44px;
}
/* frecce su/giù dell'importo: sempre visibili (lo step di 100 è impostato nell'HTML) */
#ctSpesa::-webkit-outer-spin-button,#ctSpesa::-webkit-inner-spin-button{opacity:1;height:26px;}
#ctSpesa{-moz-appearance:auto;}
.consent{display:flex;gap:11px;align-items:flex-start;margin-top:20px;font-size:.84rem;color:var(--muted);}
.consent input{width:18px;height:18px;flex:0 0 auto;margin-top:2px;accent-color:var(--brand);}
.consent a{color:var(--brand-dark);text-decoration:underline;}
.form-note{margin-top:14px;font-size:.9rem;min-height:1.3em;}
.form-note.ok{color:var(--brand-dark);}
.form-note.bad{color:#c0432c;}
.form-success{display:none;text-align:center;padding:18px 0;}
.form-success.show{display:block;animation:pop .5s var(--ease);}
.form-success .check{width:64px;height:64px;border-radius:50%;background:rgba(31,181,116,.14);color:var(--brand-dark);display:grid;place-items:center;margin:0 auto 16px;}
.form-success .check svg{width:32px;height:32px;}
@keyframes pop{0%{transform:scale(.9);opacity:0;}100%{transform:scale(1);opacity:1;}}

/* ---------- Footer ---------- */
.footer{background:var(--ink);color:var(--on-dark-mut);padding:72px 0 32px;margin-top:auto;}
.footer-top{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:38px;}
.footer .brand{color:#fff;}
.footer .brand b{color:var(--brand-bright);}
.footer .brand small{color:rgba(234,244,236,.5);}
.footer-about{margin-top:18px;font-size:.92rem;color:var(--on-dark-mut);max-width:34ch;line-height:1.7;}
.foot-social{display:flex;gap:12px;margin-top:20px;}
.foot-social a{width:40px;height:40px;border-radius:11px;border:1px solid rgba(234,244,236,.16);display:grid;place-items:center;color:var(--on-dark);transition:background .25s ease,border-color .25s ease,transform .25s var(--ease);}
.foot-social a:hover{background:var(--brand);border-color:var(--brand);transform:translateY(-3px);}
.foot-social svg{width:18px;height:18px;}
.footer h4{color:#fff;font-family:var(--sans);font-size:.82rem;letter-spacing:.12em;text-transform:uppercase;font-weight:700;margin-bottom:18px;}
.footer-col a{display:block;font-size:.93rem;padding:6px 0;color:var(--on-dark-mut);transition:color .2s ease,padding-left .2s ease;}
.footer-col a:hover{color:#fff;padding-left:4px;}
.footer-bottom{margin-top:48px;padding-top:24px;border-top:1px solid rgba(234,244,236,.12);
  display:flex;flex-wrap:wrap;gap:14px;justify-content:space-between;align-items:center;font-size:.84rem;}
.footer-bottom .legal{display:flex;gap:20px;flex-wrap:wrap;}
.footer-bottom a:hover{color:#fff;}

/* ---------- Reveal animations ---------- */
.reveal{opacity:0;transform:translateY(20px) scale(.99);filter:blur(6px);
  transition:opacity .65s var(--ease), transform .85s var(--ease), filter .65s var(--ease);
  will-change:opacity,transform,filter;}
.reveal.in{opacity:1;transform:none;filter:blur(0);}
.reveal.d1{transition-delay:.08s;}
.reveal.d2{transition-delay:.16s;}
.reveal.d3{transition-delay:.24s;}
.reveal.d4{transition-delay:.32s;}
.reveal.d5{transition-delay:.40s;}

/* ---------- Scroll progress bar ---------- */
.progress{position:fixed;top:0;left:0;height:3px;width:0;z-index:70;background:linear-gradient(90deg,var(--brand-bright),var(--accent));transition:width .1s linear;}

/* ---------- Back to top ---------- */
.totop{position:fixed;right:22px;bottom:22px;width:50px;height:50px;border-radius:50%;background:var(--ink);color:#fff;border:none;
  display:grid;place-items:center;box-shadow:var(--shadow-lg);opacity:0;visibility:hidden;transform:translateY(12px);
  transition:opacity .3s ease,transform .3s var(--ease),background .25s ease;z-index:55;}
.totop.show{opacity:1;visibility:visible;transform:translateY(0);}
.totop:hover{background:var(--brand);}
.totop svg{width:22px;height:22px;}

/* ---------- Decorative section backgrounds ---------- */
/* Crafted backgrounds: soft directional depth + fine grain, never busy */
.bg-soft{
  background:
    radial-gradient(125% 85% at 100% 0%, rgba(0,115,61,.055), transparent 58%),
    radial-gradient(95% 70% at 0% 100%, rgba(0,115,188,.05), transparent 55%),
    var(--surface-2);
}
.bg-white{
  background:
    radial-gradient(110% 75% at 0% 0%, rgba(0,115,188,.045), transparent 55%),
    radial-gradient(90% 60% at 100% 100%, rgba(60,181,74,.04), transparent 60%),
    var(--surface);
}
.section:not(.bg-soft):not(.bg-white){
  background:
    radial-gradient(120% 60% at 50% -8%, rgba(0,115,61,.05), transparent 60%),
    var(--cream);
}
/* crisp "lit-from-above" top edge + whisper of shade at the bottom = premium seam */
.bg-soft,.bg-white{box-shadow:inset 0 1px 0 rgba(255,255,255,.55), inset 0 -1px 0 rgba(8,32,25,.035);}
/* grain layer sits behind content (z-index lifted on .container) */
.bg-soft::before,.bg-white::before,.section:not(.bg-soft):not(.bg-white)::before{
  content:"";position:absolute;inset:0;z-index:0;pointer-events:none;
  background-image:var(--grain);background-size:200px 200px;opacity:.42;mix-blend-mode:soft-light;
}
.divider-leaf{display:flex;justify-content:center;margin-bottom:6px;color:var(--accent);}
.divider-leaf svg{width:30px;height:30px;}

/* ---------- Responsive ---------- */
@media (max-width:980px){
  .cta-band-inner{grid-template-columns:1fr;gap:26px;}
  .contact-grid{grid-template-columns:1fr;}
  .footer-top{grid-template-columns:1fr 1fr;gap:30px;}
}
@media (max-width:1100px){
  .nav-menu{position:fixed;inset:0 0 0 auto;width:min(86vw,360px);background:var(--surface);
    flex-direction:column;align-items:stretch;justify-content:flex-start;gap:4px;padding:96px 24px 30px;
    box-shadow:var(--shadow-lg);transform:translateX(100%);transition:transform .4s var(--ease);overflow-y:auto;z-index:58;}
  .nav-menu.open{transform:translateX(0);}
  .nav-menu .nav-link,.nav-menu .drop-toggle{color:var(--ink);}
  .nav-menu .nav-link:hover,.nav-menu .nav-link[aria-current="page"]{color:var(--brand-dark);}
  .nav-link{padding:14px 6px;border-bottom:1px solid var(--line);font-size:1rem;}
  .nav-link::after{display:none;}
  .has-drop{width:100%;}
  .drop-toggle{width:100%;justify-content:space-between;padding:14px 6px;border-bottom:1px solid var(--line);font-size:1rem;}
  .drop{position:static;width:100%;transform:none;opacity:1;visibility:visible;box-shadow:none;border:none;padding:6px 0 6px 6px;background:transparent;}
  .has-drop:hover .drop{transform:none;}
  .nav-cta{margin-top:18px;}
  .nav-cta .btn{width:100%;}
  .hamburger{display:flex;z-index:59;}
  .split{grid-template-columns:1fr;gap:34px;}
  .split--rev .split-media{order:0;}
  .nav-backdrop{position:fixed;inset:0;background:rgba(8,32,25,.45);backdrop-filter:blur(2px);opacity:0;visibility:hidden;transition:opacity .35s ease;z-index:57;}
  .nav-backdrop.show{opacity:1;visibility:visible;}
}
@media (max-width:560px){
  .form-row{grid-template-columns:1fr;}
  .footer-top{grid-template-columns:1fr;}
  .trust .container{justify-content:flex-start;}
  .btn{padding:13px 22px;}
}
@media (max-width:760px){
  .hero-stage{min-height:86vh;padding:120px 0 56px;}
  .hero-inner{padding-top:0;}
}

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion:reduce){
  *{animation-duration:.001ms !important;animation-iteration-count:1 !important;transition-duration:.001ms !important;scroll-behavior:auto !important;}
  .reveal{opacity:1;transform:none;filter:none;}
  .aurora span,.media-panel .glow{animation:none;}
  .hero-stage{min-height:86vh;padding:120px 0 56px;}
  .hero-inner{padding-top:0;}
}

/* =========================================================
   STORE LOCATOR (Rivenditori)
   ========================================================= */
.locator{display:grid;grid-template-columns:1fr;gap:clamp(20px,3vw,34px);align-items:start;}
.loc-map,.loc-list,.loc-detail{display:flex;flex-direction:column;min-width:0;}
.loc-title{margin-bottom:14px;}
.loc-title h1{font-size:clamp(1.5rem,2.4vw,2rem);margin-top:8px;line-height:1.16;max-width:none;}
.map-area{position:relative;}

/* Map */
.map-wrap{position:relative;width:100%;aspect-ratio:780/1007;background:linear-gradient(180deg,#eaf3ee,#e6f0f3);
  border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);overflow:hidden;}
#mapaWrap{position:absolute;inset:0;}
#mapaWrap svg{width:100%;height:100%;display:block;}
.region{fill:#e3ece6;stroke:rgba(14,36,64,.30);stroke-width:1.1;vector-effect:non-scaling-stroke;
  cursor:pointer;transition:fill .35s var(--ease);}
.region:hover{fill:#cbe5d6;}
.region.has-shops{fill:#a9dcc1;}
.region.has-shops:hover{fill:#7ccba1;}
.region.active{fill:#34b06a;stroke:var(--brand-dark);}
.map-loading{position:absolute;inset:0;display:grid;place-items:center;color:var(--muted);font-size:.9rem;}

/* Markers overlay - classic location pins (tip points to the exact spot) */
.markers{position:absolute;inset:0;pointer-events:none;z-index:2;}
.marker{position:absolute;transform:translate(-50%,-100%);pointer-events:auto;cursor:pointer;width:22px;height:30px;
  background:none;border:0;padding:0;-webkit-appearance:none;appearance:none;}
.marker .pin{width:22px;height:30px;display:block;transform-origin:50% 100%;transition:transform .2s var(--ease);
  filter:drop-shadow(0 3px 4px rgba(8,32,25,.35));}
.marker .pin path{stroke:#0e2440;stroke-width:1.4;}
.marker .pin circle{fill:#fff;}
.marker:hover .pin,.marker.active .pin{transform:scale(1.16) translateY(-2px);}
.marker .pin-pulse{position:absolute;left:50%;bottom:1px;width:12px;height:6px;border-radius:50%;
  transform:translate(-50%,50%);background:rgba(41,171,226,.55);z-index:-1;animation:pinpulse 2.3s ease-out infinite;}
@keyframes pinpulse{0%{transform:translate(-50%,50%) scale(.5);opacity:.7;}100%{transform:translate(-50%,50%) scale(2.7);opacity:0;}}
.marker.dim{opacity:.32;filter:grayscale(.55);}
.marker.dim .pin-pulse{display:none;}
.marker .tip{position:absolute;bottom:calc(100% - 4px);left:50%;transform:translateX(-50%) translateY(4px);
  background:var(--ink);color:#fff;font-size:.76rem;font-weight:600;white-space:nowrap;padding:5px 9px;border-radius:8px;
  opacity:0;visibility:hidden;transition:opacity .2s,transform .2s;pointer-events:none;z-index:5;}
.marker .tip::after{content:"";position:absolute;top:100%;left:50%;transform:translateX(-50%);border:5px solid transparent;border-top-color:var(--ink);}
.marker:hover .tip{opacity:1;visibility:visible;transform:translateX(-50%) translateY(0);}

/* Region count badges (vista nazionale) */
.region-badges{position:absolute;inset:0;pointer-events:none;z-index:2;}
.region-badge{position:absolute;transform:translate(-50%,-50%);pointer-events:auto;cursor:pointer;font-family:inherit;
  min-width:28px;height:28px;padding:0 8px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;
  background:#0073bc;color:#fff;font-weight:700;font-size:.9rem;line-height:1;border:2px solid #fff;
  box-shadow:0 3px 9px rgba(8,32,25,.4);transition:transform .2s var(--ease),background .2s ease;
  -webkit-appearance:none;appearance:none;}
.region-badge:hover{transform:translate(-50%,-50%) scale(1.14);background:#015a93;}

/* Map reset + legend */
.map-reset{position:absolute;top:12px;right:12px;z-index:3;display:inline-flex;align-items:center;gap:7px;
  background:rgba(255,255,255,.92);backdrop-filter:blur(6px);border:1px solid var(--line);border-radius:var(--r-pill);
  padding:8px 14px;font-size:.82rem;font-weight:600;color:var(--ink);box-shadow:var(--shadow-sm);
  opacity:0;visibility:hidden;transform:translateY(-6px);transition:.3s var(--ease);}
.map-reset.show{opacity:1;visibility:visible;transform:none;}
.map-reset:hover{color:var(--brand-dark);border-color:var(--brand);}
.map-reset svg{width:15px;height:15px;}
.map-legend{position:absolute;left:12px;bottom:12px;z-index:3;display:flex;flex-direction:column;gap:6px;
  background:rgba(255,255,255,.9);backdrop-filter:blur(6px);border:1px solid var(--line);border-radius:12px;padding:10px 12px;box-shadow:var(--shadow-sm);}
.map-legend span{display:inline-flex;align-items:center;gap:8px;font-size:.76rem;color:var(--muted);}
.map-legend .sw{width:14px;height:14px;border-radius:4px;flex:0 0 auto;}
.map-legend .sw.cov{background:#a9dcc1;}
.map-legend .sw.pin{border-radius:50%;background:var(--accent-soft);border:1.5px solid #0e2440;box-shadow:0 1px 2px rgba(8,32,25,.3);}

/* Filters panel */
.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);padding:clamp(20px,2.4vw,30px);}
.panel h2{font-size:1.3rem;}
.panel--narrow{max-width:620px;margin-inline:auto;}
.svc-toggles{display:flex;flex-wrap:wrap;gap:10px;margin-top:6px;}
.svc-toggle{display:inline-flex;align-items:center;padding:9px 14px;border-radius:var(--r-pill);
  border:1.5px solid var(--line-strong);background:var(--surface);font-weight:600;font-size:.86rem;color:var(--ink);
  cursor:pointer;transition:background .25s,color .25s,border-color .25s,transform .2s var(--ease);}
.svc-toggle:hover{transform:translateY(-2px);border-color:var(--brand);}
.svc-toggle.on{background:var(--brand);color:#fff;border-color:var(--brand);}
.filters-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:22px;padding-top:18px;border-top:1px solid var(--line);}
.results-count{font-size:.9rem;color:var(--muted);}
.results-count b{color:var(--ink);}
.btn-reset{background:none;border:none;color:var(--brand-dark);font-weight:600;font-size:.88rem;cursor:pointer;display:inline-flex;align-items:center;gap:6px;}
.btn-reset:hover{color:var(--brand);}
.btn-reset svg{width:15px;height:15px;}

/* Results list */
.results{margin-top:22px;display:grid;gap:14px;}
.shop-card{display:grid;grid-template-columns:auto 1fr auto;gap:14px;align-items:center;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:16px;
  cursor:pointer;transition:transform .3s var(--ease),box-shadow .3s ease,border-color .3s ease;}
.shop-card:hover{transform:translateY(-3px);box-shadow:var(--shadow);border-color:rgba(0,115,61,.3);}
.shop-card .sc-ico{width:44px;height:44px;border-radius:12px;flex:0 0 auto;display:grid;place-items:center;
  background:linear-gradient(140deg,rgba(60,181,74,.16),rgba(0,115,188,.14));color:var(--brand-dark);}
.shop-card .sc-ico svg{width:22px;height:22px;}
.shop-card h3{font-size:1.05rem;margin:0;}
.shop-card .where{font-size:.85rem;color:var(--muted);margin-top:2px;}
.shop-card .sc-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px;}
.shop-card .go{color:var(--muted);transition:color .25s,transform .25s var(--ease);
  display:flex;flex-direction:column;align-items:flex-end;justify-content:center;gap:3px;}
.shop-card:hover .go{color:var(--brand);transform:translateX(3px);}
.shop-card .go svg{width:20px;height:20px;}
.shop-card .dist{font-size:.72rem;font-weight:700;color:var(--brand-dark);white-space:nowrap;}
.chip{display:inline-flex;align-items:center;gap:6px;font-size:.74rem;font-weight:600;padding:4px 9px;border-radius:var(--r-pill);background:var(--surface-2);color:var(--brand-dark);}
.empty{text-align:center;padding:34px 20px;color:var(--muted);border:1px dashed var(--line-strong);border-radius:var(--r);}
.empty svg{width:40px;height:40px;color:var(--brand);opacity:.6;margin-bottom:10px;}
.empty b{color:var(--ink);display:block;margin-bottom:4px;}

/* Partner CTA sotto la mappa */
.partner-cta{position:relative;overflow:hidden;margin-top:20px;border-radius:var(--r-lg);padding:26px 28px;color:var(--on-dark);
  background:radial-gradient(120% 150% at 100% 0,#0c8048,#0b5288 55%,var(--ink));box-shadow:var(--shadow);}
.partner-cta .glow{position:absolute;width:240px;height:240px;border-radius:50%;filter:blur(70px);background:var(--brand-bright);opacity:.28;top:-110px;right:-50px;}
.partner-cta h3{position:relative;color:#fff;font-size:1.22rem;}
.partner-cta p{position:relative;color:var(--on-dark-mut);margin-top:8px;font-size:.93rem;max-width:48ch;}
.partner-cta .btn{position:relative;margin-top:18px;}

/* Detail drawer */
.sheet-backdrop{position:fixed;inset:0;background:rgba(8,32,25,.5);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);
  opacity:0;visibility:hidden;transition:opacity .3s ease;z-index:80;}
.sheet-backdrop.open{opacity:1;visibility:visible;}
.sheet{position:fixed;top:0;right:0;height:100%;width:min(460px,100%);background:var(--cream);box-shadow:var(--shadow-lg);
  transform:translateX(100%);transition:transform .42s var(--ease);z-index:81;overflow-y:auto;display:flex;flex-direction:column;}
.sheet.open{transform:none;}
.sheet-map{position:relative;height:230px;background:var(--surface-2);flex:0 0 auto;}
.sheet-map iframe{width:100%;height:100%;border:0;display:block;}
.sheet-close{position:absolute;top:14px;right:14px;z-index:2;width:40px;height:40px;border-radius:50%;border:none;
  background:rgba(255,255,255,.95);box-shadow:var(--shadow);display:grid;place-items:center;cursor:pointer;transition:background .2s;}
.sheet-close:hover{background:#fff;}
.sheet-close svg{width:20px;height:20px;color:var(--ink);}
.sheet-body{padding:24px 26px 30px;}
.sheet-body .eyebrow{margin-bottom:8px;}
.sheet-body h2{font-size:1.5rem;}
.sheet-body .rs{font-size:.84rem;color:var(--muted);margin-top:2px;}
.sheet-chips{display:flex;flex-wrap:wrap;gap:7px;margin:16px 0 20px;}
.sheet-info{display:grid;gap:2px;}
.sheet-info a,.sheet-info span{display:flex;gap:12px;align-items:flex-start;padding:11px 0;border-bottom:1px solid var(--line);font-size:.95rem;color:var(--text);}
.sheet-info a:hover{color:var(--brand-dark);}
.sheet-info .ic{width:20px;height:20px;flex:0 0 auto;color:var(--brand);margin-top:1px;}
.sheet-info .ic svg{width:20px;height:20px;}
.sheet-actions{display:flex;gap:12px;margin-top:22px;}
.sheet-actions .btn{flex:1;padding:13px 16px;font-size:.9rem;}
.sheet-note{font-size:.8rem;color:var(--muted);margin-top:14px;}

/* Detail column (desktop) - riusa gli stili .sheet-* del drawer */
.loc-detail{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);
  box-shadow:var(--shadow-sm);overflow:hidden;}
.loc-detail .sheet-map{border-radius:0;}
.loc-detail .sheet-body{padding:22px 24px 26px;}
.detail-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:30px 26px;height:100%;}
.detail-empty-ico{width:58px;height:58px;border-radius:16px;display:grid;place-items:center;margin:0 auto 14px;
  background:linear-gradient(140deg,rgba(60,181,74,.16),rgba(0,115,188,.14));color:var(--brand-dark);}
.detail-empty-ico svg{width:28px;height:28px;}
.detail-empty>b{font-size:1.08rem;color:var(--ink);}
.detail-empty>p{font-size:.9rem;margin-top:6px;max-width:34ch;}
/* foto profilo come banner in cima alla scheda */
.detail-photo{height:160px;background:var(--surface-2);flex:0 0 auto;}
.detail-photo img{width:100%;height:100%;object-fit:cover;}
/* foto profilo nello slot icona della card */
.shop-card .sc-ico.has-photo{padding:0;overflow:hidden;background:var(--surface-2);}
.shop-card .sc-ico.has-photo img{width:100%;height:100%;object-fit:cover;}
/* card selezionata */
.shop-card.sel{border-color:var(--brand);box-shadow:0 0 0 2px rgba(0,115,61,.18),var(--shadow-sm);}

/* ---- App-shell a 3 colonne (≥1100px: serve spazio reale per 3 colonne) ----
   La pagina riempie lo schermo: footer nascosto, solo la colonna lista scrolla.
   Il box mappa è bloccato sulle proporzioni dell'SVG (780/1007): niente
   letterbox → i segnaposto/badge restano allineati (fix del "5" sopra la regione).
   --map-h è limitata (max 660px) così la colonna mappa non sfora in larghezza
   su schermi molto alti; lista e dettaglio sono flessibili e non traboccano. */
@media (min-width:1100px){
  body.page-locator{overflow:hidden;
    --navH:74px;
    --col-gap:clamp(16px,1.8vw,28px);   /* stesso gap tra le colonne e sopra di esse */
    /* larghezza del blocco 3 colonne: sfrutta lo schermo (fin quasi al bordo),
       con un tetto per non stirare troppo su monitor enormi */
    --shell-w:min(1840px, 100vw - 52px);
    /* 3 colonne uguali: la mappa è larga quanto le altre 2. La mappa riempie la
       colonna in larghezza, o l'altezza disponibile se lo schermo è basso
       (contain), sempre a proporzioni 780/1007 → nessun letterbox. */
    --content-w:calc(var(--shell-w) - 52px);
    --col-w:calc((var(--content-w) - 2 * var(--col-gap)) / 3 - 4px);
    /* riservo spazio per titolo + invito partner sotto la mappa (colonna mappa
       stretta su schermi bassi = invito più alto → riserva prudente) */
    --map-max-h:calc(100dvh - var(--navH) - var(--col-gap) - 328px);
    --map-h:min(var(--map-max-h), calc(var(--col-w) * 1.291));         /* 1007/780 */
    --map-w:calc(var(--map-h) * .7746);   /* 780/1007 */
  }
  body.page-locator .footer{display:none;}
  /* spazio sopra le colonne = stesso gap che c'è tra le colonne */
  .loc-shell{padding:calc(var(--navH) + var(--col-gap)) 0 0;}
  .loc-shell>.container{max-width:var(--shell-w);}
  .locator{
    /* colonna mappa = larghezza esatta della mappa (nessun gap laterale); lista e
       dettaglio si dividono lo spazio restante (≥ mappa; uguali fra loro, e uguali
       anche alla mappa su schermi alti dove la mappa riempie la colonna) */
    grid-template-columns:var(--map-w) 1fr 1fr;
    gap:var(--col-gap);
    height:calc(100dvh - var(--navH) - var(--col-gap) - 14px);
    align-items:stretch;
  }
  .loc-map{min-height:0;}
  .loc-title{flex:0 0 auto;margin-bottom:10px;}
  .loc-title h1{font-size:1.5rem;line-height:1.2;}
  /* mappa in alto (sotto il titolo), larga quanto la colonna, proporzioni esatte */
  .map-area{flex:0 0 auto;width:100%;height:var(--map-h);display:flex;align-items:center;justify-content:center;}
  .map-area .map-wrap{width:var(--map-w);height:var(--map-h);aspect-ratio:auto;}
  /* invito partner sotto la mappa, sempre visibile */
  .loc-map .partner-cta{flex:0 0 auto;margin-top:16px;padding:16px 20px;}
  .loc-map .partner-cta h3{font-size:1.05rem;}
  .loc-map .partner-cta p{font-size:.85rem;margin-top:6px;line-height:1.45;}
  .loc-map .partner-cta .btn{margin-top:12px;}
  .loc-list{min-height:0;}
  /* pannello filtri compatto + regione/provincia affiancate → più spazio per la lista */
  .loc-list .panel{flex:0 0 auto;padding:16px 18px;}
  .loc-list .panel > .eyebrow{display:none;}                 /* "FILTRA LA RICERCA" decorativo */
  .loc-list .geo-btn{display:none;}                          /* GPS impreciso su desktop → solo mobile */
  .loc-list .panel h2{font-size:1rem;margin-top:0;margin-bottom:2px;}
  .loc-list .geo-btn{margin:8px 0 0;padding:8px 14px;}
  .loc-list .field{margin-top:8px;}
  .loc-list .field label{margin-bottom:3px;font-size:.82rem;}
  .loc-list .field-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;align-items:start;}
  .loc-list .field-row .field{margin-top:8px;}
  /* etichette su una riga → i due box restano sempre allineati */
  .loc-list .field-row label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .loc-list .svc-toggles{gap:6px;margin-top:3px;}
  .loc-list .svc-toggle{padding:6px 10px;font-size:.76rem;}
  .loc-list .filters-foot{margin-top:9px;padding-top:9px;}
  /* card compatte: 5 rivenditori senza scroll a tutto schermo */
  .loc-list .results{margin-top:8px;gap:6px;}
  .loc-list .shop-card{padding:6px 11px;gap:10px;}
  .loc-list .shop-card .sc-ico{width:36px;height:36px;border-radius:9px;}
  .loc-list .shop-card .sc-ico svg{width:18px;height:18px;}
  .loc-list .shop-card h3{font-size:.92rem;line-height:1.25;}
  .loc-list .shop-card .where{font-size:.76rem;margin-top:1px;}
  .loc-list .shop-card .sc-chips{margin-top:3px;gap:5px;}
  .loc-list .shop-card .chip{font-size:.63rem;padding:2px 6px;}
  .results-wrap{flex:1;min-height:0;overflow-y:auto;
    scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent;}
  .results-wrap::-webkit-scrollbar{width:4px;}
  .results-wrap::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:99px;}
  .results{margin-top:14px;}
  /* non si stira come le altre colonne: l'altezza è impostata da JS (rivenditori.js)
     pari a quella della colonna mappa (titolo + mappa + invito partner) */
  .loc-detail{align-self:start;min-height:0;overflow-y:auto;
    scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent;}
  .loc-detail::-webkit-scrollbar{width:4px;}
  .loc-detail::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:99px;}
}

/* Locator responsive - 2 livelli sotto le 3 colonne.
   Il dettaglio usa sempre il drawer laterale sotto i 1100px. */

/* Medio (800–1099px): 2 colonne = Mappa + Lista, niente colonna dettaglio */
@media (min-width:800px) and (max-width:1099px){
  .locator{
    grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);
    gap:clamp(18px,2.6vw,30px);
    align-items:start;
  }
  .loc-map{order:1;}
  .loc-list{order:2;}
  .loc-detail{display:none;}   /* → drawer */
}

/* Piccolo (<800px): 1 colonna = solo la lista (mappa e dettaglio nascosti) */
@media (max-width:799px){
  .locator{grid-template-columns:1fr;}
  .loc-list{order:1;}
  .loc-map{display:none;}       /* niente mappa: resta solo la colonna centrale */
  .loc-detail{display:none;}    /* → drawer */
}

/* Geolocation button in filter panel */
.geo-btn{
  display:flex;align-items:center;gap:9px;width:100%;
  padding:10px 16px;margin:14px 0 6px;
  border:1.5px dashed var(--brand);border-radius:var(--r-pill);
  background:rgba(0,115,61,.05);color:var(--brand-dark);
  font-family:inherit;font-weight:600;font-size:.9rem;
  cursor:pointer;transition:background .2s,border-color .2s,color .2s;
}
.geo-btn:hover{background:rgba(0,115,61,.12);border-style:solid;color:var(--brand);}
.geo-btn svg{width:16px;height:16px;flex-shrink:0;}
.geo-btn.loading{opacity:.55;pointer-events:none;}
.geo-btn.done{border-style:solid;background:rgba(0,115,61,.1);}

/* User location dot on the map */
.user-dot{
  position:absolute;pointer-events:none;
  transform:translate(-50%,-50%);z-index:6;
  width:22px;height:22px;display:none;
}
.user-dot-ring{
  position:absolute;inset:-5px;border-radius:50%;
  background:rgba(229,62,62,.48);
  animation:udPulse 2.4s ease-out infinite;
}
.user-dot-core{
  position:absolute;top:50%;left:50%;
  transform:translate(-50%,-50%);
  width:11px;height:11px;border-radius:50%;
  background:#e53e3e;border:2.5px solid #fff;
  box-shadow:0 1px 7px rgba(229,62,62,.7);
}
@keyframes udPulse{
  0%  {transform:scale(.5);opacity:.85;}
  65% {transform:scale(2.9);opacity:0;}
  100%{transform:scale(.5);opacity:0;}
}

/* =========================================================
   IMAGE SLOTS - branded placeholders that become real photos
   Drop a real <img> inside any .img-slot and it auto-covers
   the placeholder (via :has). No other markup changes needed.
   ========================================================= */
.img-slot{position:relative;overflow:hidden;border-radius:var(--r-lg);isolation:isolate;
  background:linear-gradient(135deg,#0c8048 0%,#0b5f8a 56%,var(--ink) 100%);
  display:grid;place-items:center;}
/* eco motif (sun glow + horizon) so empty slots have character */
.img-slot::before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;
  background:
    radial-gradient(circle at 76% 24%, rgba(255,210,74,.55) 0 5.5%, rgba(255,210,74,0) 6.2%),
    radial-gradient(120% 80% at 80% 18%, rgba(255,210,74,.12), transparent 42%),
    linear-gradient(0deg, rgba(8,32,25,.34), transparent 46%);}
/* fine grain over the slot (filmic even on real photos) */
.img-slot .ph-sheen{position:absolute;top:0;left:-45%;width:55%;height:100%;z-index:2;pointer-events:none;opacity:0;
  background:linear-gradient(105deg,transparent,rgba(255,255,255,.18),transparent);}
/* sheen plays ONCE on hover only - no idle animation, keeps the page light (avoids 13 infinite loops) */
.img-slot:hover .ph-sheen{opacity:1;animation:slotSheen 1s var(--ease);}
@keyframes slotSheen{from{transform:translateX(0);}to{transform:translateX(330%);}}
.img-slot .ph{position:relative;z-index:3;text-align:center;color:#fff;padding:16px;}
.img-slot .ph svg{width:30px;height:30px;opacity:.92;margin:0 auto 7px;display:block;}
.img-slot .ph b{display:block;font-size:.78rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;opacity:.96;}
.img-slot .ph span{display:block;font-size:.72rem;opacity:.72;margin-top:3px;}
/* aspect-ratio variants */
.img-slot--wide{aspect-ratio:16/10;}
.img-slot--card{aspect-ratio:16/9;border-radius:var(--r);}
.img-slot--portrait{aspect-ratio:4/5;}
.img-slot--square{aspect-ratio:1/1;}
/* the drop-in image */
.img-slot img{position:absolute;inset:0;z-index:4;width:100%;height:100%;object-fit:cover;
  transition:transform .6s var(--ease);}
/* once a real <img> exists, retire the placeholder layers */
.img-slot:has(img) .ph,
.img-slot:has(img) .ph-sheen{display:none;}
.img-slot:has(img)::before{opacity:0;}
.img-slot:hover img,
.card:hover .card-media img,
.work-item:hover img{transform:scale(1.06);}

/* ---- Service cards: photo header + icon badge ---- */
.card-media{margin:-32px -28px 20px;border-radius:0;}
.card-media.img-slot{border-radius:var(--r-lg) var(--r-lg) 0 0;}
.card-media .card-ico{position:absolute;left:16px;bottom:14px;z-index:5;margin:0;width:46px;height:46px;border-radius:13px;
  background:rgba(255,255,255,.94);box-shadow:var(--shadow);backdrop-filter:blur(4px);}
.card-media .card-ico svg{width:24px;height:24px;color:var(--brand-dark);}
.card:hover .card-media .card-ico{transform:none;}
.card .card-tag{z-index:6;}

/* ---- Method split: photo fills the panel, stat + caption float over ---- */
.media-panel .mp-image{position:absolute;inset:0;z-index:0;border-radius:inherit;}
.media-panel .ring-stat,.media-panel .mp-content{z-index:2;}
.media-panel .glow{z-index:1;}

/* ---- Work / Realizzazioni gallery ---- */
.work-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:20px;margin-top:54px;}
.work-item{position:relative;display:block;border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow-sm);
  transition:transform .45s var(--ease),box-shadow .45s ease;}
.work-item:hover{transform:translateY(-6px);box-shadow:var(--shadow-lg);}
.work-item .img-slot{border-radius:0;}
.work-tag{position:absolute;top:14px;left:14px;z-index:6;background:rgba(255,255,255,.92);color:var(--brand-dark);
  font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;padding:5px 11px;border-radius:var(--r-pill);
  box-shadow:var(--shadow-sm);}
.work-cap{position:absolute;left:0;right:0;bottom:0;z-index:6;padding:34px 18px 16px;color:#fff;
  background:linear-gradient(0deg,rgba(8,22,38,.86),rgba(8,22,38,.2) 62%,transparent);
  transform:translateY(10px);transition:transform .45s var(--ease);}
.work-item:hover .work-cap{transform:none;}
.work-cap b{display:block;font-size:1.02rem;}
.work-cap span{display:block;font-size:.82rem;opacity:.82;margin-top:2px;}

/* ---- Photo-ready testimonial avatars (initials stay as fallback) ---- */
.testi .av{overflow:hidden;}
.testi .av img{width:100%;height:100%;object-fit:cover;border-radius:50%;}

@media (max-width:560px){
  .card-media{margin:-32px -28px 18px;}
}
@media (prefers-reduced-motion: reduce){
  .img-slot .ph-sheen{animation:none;display:none;}
}

/* =========================================================
   CASE STUDY - before/after comparison + savings example
   ========================================================= */
.case-study{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(24px,3.6vw,48px);align-items:center;margin-top:50px;}

/* before/after image comparison slider (vanilla, JS-driven) */
.compare{position:relative;width:100%;aspect-ratio:4/3;border-radius:var(--r-lg);overflow:hidden;isolation:isolate;
  box-shadow:var(--shadow-lg);background:var(--ink);touch-action:pan-y;cursor:ew-resize;}
.compare img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;pointer-events:none;
  -webkit-user-select:none;user-select:none;-webkit-user-drag:none;}
.compare .cmp-before{clip-path:inset(0 50% 0 0);filter:grayscale(.92) brightness(.84) contrast(.97);}
.cmp-label{position:absolute;top:14px;z-index:4;font-size:.7rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  color:#fff;background:rgba(8,22,38,.55);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);
  padding:6px 12px;border-radius:var(--r-pill);pointer-events:none;}
.cmp-label--before{left:14px;}
.cmp-label--after{right:14px;background:var(--brand);}
.cmp-handle{position:absolute;top:0;bottom:0;left:50%;width:3px;transform:translateX(-50%);z-index:5;
  background:rgba(255,255,255,.92);box-shadow:0 0 0 1px rgba(8,22,38,.18);cursor:ew-resize;}
.cmp-grip{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:48px;height:48px;border-radius:50%;
  display:grid;place-items:center;background:rgba(255,255,255,.94);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);
  box-shadow:var(--shadow);color:var(--brand-dark);transition:transform .2s var(--ease);}
.cmp-grip svg{width:24px;height:24px;}
.compare:hover .cmp-grip{transform:translate(-50%,-50%) scale(1.07);}
.cmp-handle:focus-visible{outline:none;}
.cmp-handle:focus-visible .cmp-grip{outline:3px solid var(--brand-bright);outline-offset:3px;transform:translate(-50%,-50%) scale(1.07);}

/* savings breakdown card */
.savings-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);
  padding:clamp(24px,3vw,36px);}
.savings-card > .eyebrow{margin-bottom:6px;}
.savings-card h3{font-size:clamp(1.35rem,2.2vw,1.6rem);margin-bottom:6px;}
.savings-rows{margin-top:22px;display:grid;gap:0;}
.savings-rows li{display:flex;justify-content:space-between;align-items:baseline;gap:16px;padding:13px 0;
  border-bottom:1px solid var(--line);font-size:.98rem;}
.savings-rows li > span{color:var(--muted);}
.savings-rows li > b{font-weight:700;color:var(--ink);white-space:nowrap;}
.savings-rows li > b.pos{color:var(--brand);}
.savings-rows li.savings-net{border-bottom:none;border-top:2px solid var(--ink);margin-top:4px;padding-top:15px;}
.savings-rows li.savings-net > span{color:var(--ink);font-weight:600;}
.savings-rows li.savings-net > b{font-size:1.4rem;color:var(--brand-dark);}
.savings-bill{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:22px 0 6px;}
.savings-bill > div{background:linear-gradient(140deg,rgba(60,181,74,.13),rgba(0,115,188,.10));
  border:1px solid var(--line);border-radius:var(--r);padding:16px 18px;}
.savings-bill .big{display:block;font-size:clamp(1.4rem,2.4vw,1.75rem);font-weight:700;color:var(--brand-dark);line-height:1.1;}
.savings-bill small{display:block;margin-top:5px;font-size:.8rem;color:var(--muted);line-height:1.35;}
.savings-disc{font-size:.78rem;line-height:1.5;margin:16px 0 20px;}
.savings-card .btn{width:100%;}

@media (max-width:860px){
  .case-study{grid-template-columns:1fr;}
}

/* =========================================================
   SERVICE TWEAKS (cards clickable, panel hover, photo focus)
   ========================================================= */
/* Home service cards: the WHOLE card is clickable (image included), via the "Scopri di più" link */
.cards .card .link-arrow::after{content:"";position:absolute;inset:0;z-index:4;border-radius:inherit;}

/* media-panel photo keeps the zoom the whole time the mouse is over the panel
   (before, hovering the stat/text overlays reset the image to its initial scale) */
.media-panel:hover .mp-image img{transform:scale(1.06);}

/* Conto Termico photo: nudge focus down so the heat pump sits centred in wide crops */
img[src*="serv-conto-termico"]{object-position:center 60%;}

/* Readable glass "card" behind BOTH the stat and the copy - same box on every
   service panel, so the text stays legible over any photo (light OR dark).
   Standardised: replaces the old per-image light/dark special-casing. */
.media-panel .ring-stat,
.media-panel .mp-content{
  background:rgba(8,22,38,.52);
  border:1px solid rgba(255,255,255,.18);
  border-radius:var(--r);
  padding:15px 18px;
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
  box-shadow:0 12px 28px rgba(8,22,38,.3);
}
.media-panel .ring-stat .big{color:var(--accent-soft);}
.media-panel .ring-stat small{color:rgba(234,244,236,.86);}
.media-panel .mp-content h4{color:#fff;}
.media-panel .mp-content p{color:rgba(234,244,236,.86);}

/* =========================================================
   AREA AZIENDE - auth (login/registrazione) + dashboard
   ========================================================= */
.auth-wrap{max-width:560px;margin:0 auto;}
.auth-tabs{display:flex;gap:6px;background:var(--surface-2);padding:6px;border-radius:var(--r-pill);margin-bottom:10px;}
.auth-tab{flex:1;border:none;background:none;padding:11px 10px;border-radius:var(--r-pill);font-family:inherit;
  font-weight:600;font-size:.92rem;color:var(--muted);cursor:pointer;transition:background .2s,color .2s,box-shadow .2s;}
.auth-tab.on{background:var(--surface);color:var(--brand-dark);box-shadow:var(--shadow-sm);}
.auth-form{display:none;}
.auth-form.on{display:block;animation:authFade .4s var(--ease);}
@keyframes authFade{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:none;}}
.auth-foot{text-align:center;font-size:.82rem;margin-top:16px;}

.dash-grid{display:grid;grid-template-columns:320px 1fr;gap:26px;align-items:start;}
.dash-profile{position:sticky;top:96px;}
.profile-list{margin-top:16px;display:grid;gap:0;list-style:none;}
.profile-list li{display:flex;justify-content:space-between;gap:14px;padding:11px 0;border-bottom:1px solid var(--line);font-size:.92rem;}
.profile-list li:last-child{border-bottom:none;}
.profile-list li span{color:var(--muted);}
.profile-list li b{color:var(--ink);text-align:right;word-break:break-word;}

.clients-list{margin-top:18px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;align-items:start;}
.clients-list .clients-sent-head,.clients-list .clients-month,.clients-list .clients-empty,.clients-list .clients-none{grid-column:1 / -1;}
@media (max-width:920px){.clients-list{grid-template-columns:1fr;}}
.clients-empty{text-align:center;padding:30px 16px;color:var(--muted);border:1px dashed var(--line-strong);border-radius:var(--r);}
.client-row{display:flex;align-items:flex-start;gap:14px;justify-content:space-between;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px;transition:border-color .2s,box-shadow .2s;}
.client-row:hover{border-color:rgba(0,115,61,.28);box-shadow:var(--shadow-sm);}
.client-main{min-width:0;}
.client-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.client-top b{font-size:1.02rem;color:var(--ink);}
/* Valutazione appena assegnata a questo cliente: stesso pallino rosso della tab,
   si spegne aprendo la scheda. Pulsa per farsi trovare in un elenco lungo. */
.client-nuovo{width:10px;height:10px;border-radius:999px;background:#e5352b;flex:0 0 auto;
  box-shadow:0 0 0 3px rgba(229,53,43,.18);animation:clientNuovo 1.6s ease-in-out infinite;}
@keyframes clientNuovo{0%,100%{box-shadow:0 0 0 3px rgba(229,53,43,.18);}50%{box-shadow:0 0 0 6px rgba(229,53,43,.05);}}
@media (prefers-reduced-motion:reduce){.client-nuovo{animation:none;}}
.client-chip{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:3px 9px;border-radius:var(--r-pill);
  background:var(--surface-2);color:var(--brand-dark);}
.client-meta{margin-top:5px;font-size:.88rem;color:var(--muted);display:flex;flex-wrap:wrap;gap:8px;align-items:center;cursor:pointer;}
.client-meta a{color:var(--brand-dark);}
.client-meta .sep{opacity:.5;}
.client-note{margin-top:6px;font-size:.88rem;color:var(--text);}
.client-del{flex:0 0 auto;width:38px;height:38px;border-radius:10px;border:1px solid var(--line);background:var(--surface);
  display:grid;place-items:center;cursor:pointer;color:var(--muted);transition:.2s;}
.client-del:hover{color:#c0432c;border-color:rgba(192,67,44,.4);background:rgba(192,67,44,.06);}
.client-del svg{width:17px;height:17px;}

/* ---- Azioni cliente: Inserisci dati / Trasmetti pratica ---- */
.btn--sm{padding:8px 14px;font-size:.82rem;gap:7px;}
.btn--sm svg{width:15px;height:15px;}
.client-actions{flex:0 0 auto;display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end;}
.client-chip--ok{background:rgba(60,181,74,.16);color:var(--brand-dark);}
.client-row .btn[disabled],.data-modal-foot .btn[disabled]{opacity:.45;cursor:not-allowed;box-shadow:none;transform:none;filter:grayscale(.4);}

/* ---- Modale "Inserisci dati" ---- */
body.modal-open{overflow:hidden;}
#clienteModal .data-modal-panel{margin:auto;}
.cliente-hint{font-size:.82rem;color:var(--muted);margin:2px 0 12px;}
/* Nuovo cliente: una riga a due campi dopo un campo singolo aveva 0 di stacco */
#addClientForm .form-row:not(:first-child){margin-top:18px;}
.cl-aiut-lbl{display:flex;align-items:center;gap:6px;font-weight:600;font-size:.92rem;color:var(--ink,#16242d);}
#clAiutanti{display:flex;flex-direction:column;gap:12px;}
#clAiutanti:empty{display:none;}
.cl-aiut{border:1px solid #d7e4dc;border-radius:12px;padding:14px;background:#f8fbf9;}
.cl-aiut-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;font-size:.88rem;}
.cl-aiut-rel{max-width:240px;padding:7px 10px;font-size:.88rem;font-weight:600;border-radius:8px;}
.cl-aiut-sub{margin:0;font-size:.85rem;line-height:1.45;}
.cl-dich-nota{margin:6px 0 0 29px;font-size:.8rem;line-height:1.45;}
.cm-wa{display:inline-flex;align-items:center;gap:5px;font-size:.8rem;border:0;background:none;padding:0;font-family:inherit;color:var(--muted);}
.cm-wa svg{width:15px;height:15px;}
.cm-wa--ok{color:var(--brand-dark);}
.cm-wa--no{color:#b3261e;}
button.cm-wa{cursor:pointer;text-decoration:underline;color:var(--brand-dark);}
.cl-aiut-x{width:32px;height:32px;border:0;background:none;color:#6b7c74;cursor:pointer;border-radius:8px;display:flex;align-items:center;justify-content:center;}
.cl-aiut-x:hover{color:#b3261e;background:#fbeaea;}
.cl-aiut-x svg{width:18px;height:18px;}
.cl-aiut .form-row + .form-row{margin-top:12px;}
.cl-aiut-add{align-self:flex-start;display:inline-flex;align-items:center;gap:6px;}
.cl-aiut-add svg{width:16px;height:16px;}
@media (max-width:560px){.cl-aiut .form-row{grid-template-columns:1fr;}}
.cliente-match{font-size:.85rem;font-weight:600;color:var(--brand-dark);background:rgba(0,166,81,.1);border:1px solid rgba(0,166,81,.3);border-radius:8px;padding:8px 11px;margin:8px 0 0;line-height:1.4;}
.data-modal{position:fixed;inset:0;z-index:1000;display:flex;align-items:flex-start;justify-content:center;padding:5vh 16px;overflow-y:auto;}
.data-modal[hidden]{display:none;}
.data-modal-backdrop{position:fixed;inset:0;background:rgba(8,24,20,.55);backdrop-filter:blur(3px);}
.data-modal-panel{position:relative;z-index:1;width:100%;max-width:640px;background:var(--surface);border-radius:var(--r);
  box-shadow:0 30px 80px rgba(8,24,20,.35);padding:24px;animation:dmIn .3s var(--ease);}
@keyframes dmIn{from{opacity:0;transform:translateY(16px) scale(.98);}to{opacity:1;transform:none;}}
.data-modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:6px;}
.data-modal-head h3{font-size:1.3rem;}
.data-modal-x{flex:0 0 auto;width:38px;height:38px;border-radius:10px;border:1px solid var(--line);background:var(--surface);
  display:grid;place-items:center;cursor:pointer;color:var(--muted);transition:.2s;}
.data-modal-x:hover{color:var(--ink);border-color:var(--line-strong);background:var(--surface-2);}
.data-modal-x svg{width:18px;height:18px;}
.data-modal-body{display:grid;gap:10px;margin:14px 0;}
.doc-tile{display:flex;align-items:center;gap:12px;border:1px solid var(--line);border-radius:var(--r-sm);padding:11px 14px;background:var(--surface);}
.doc-tile.is-done{border-color:rgba(60,181,74,.4);background:rgba(60,181,74,.05);}
.doc-tile-ico{flex:0 0 auto;width:34px;height:34px;border-radius:9px;display:grid;place-items:center;background:var(--surface-2);color:var(--muted);}
.doc-tile.is-done .doc-tile-ico{background:var(--brand-bright);color:#fff;}
/* stato a colpo d'occhio: rosso = file mancante, verde = caricato (icone file / file-check) */
.doc-tile.is-empty .doc-tile-ico{background:#c0432c;color:#fff;}
.doc-tile-ico svg{width:18px;height:18px;}
.doc-tile-txt{min-width:0;flex:1;}
.doc-tile-label{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-weight:600;font-size:.92rem;color:var(--ink);}
.doc-tile-file{display:block;font-size:.8rem;color:var(--muted);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.doc-badge{font-size:.62rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:2px 7px;border-radius:var(--r-pill);}
.doc-badge--req{background:rgba(0,115,188,.12);color:var(--accent);}
.doc-badge--opt{background:var(--surface-2);color:var(--muted);}
/* obbligatorio, ma solo a lavori finiti: non deve leggersi come un blocco all'invio */
.doc-badge--fine{background:rgba(224,115,44,.14);color:#a8502c;}
.doc-tile-act{flex:0 0 auto;display:flex;align-items:center;gap:6px;}
.doc-act{font-family:inherit;font-size:.8rem;font-weight:600;cursor:pointer;border-radius:8px;padding:7px 12px;
  border:1px solid var(--line-strong);background:var(--surface);color:var(--brand-dark);text-decoration:none;transition:.2s;display:inline-block;}
.doc-act:hover{border-color:var(--brand);background:var(--surface-2);}
.doc-act--pick{background:var(--ink);color:#fff;border-color:var(--ink);}
/* Serramenti FVG: fatture dei lavori nel fascicolo documenti */
.fatt-blocco{grid-column:1/-1;margin-top:14px;padding:16px;border:1px solid var(--line);border-radius:12px;background:var(--surface);}
.fatt-schema{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end;}
.fatt-schema .field,.fatt-grid .field{margin-top:0;gap:4px;font-size:.78rem;}
.fatt-riga{border:1px solid var(--line);border-radius:10px;padding:12px;margin:10px 0;}
.fatt-riga-h{display:flex;align-items:center;gap:8px;margin-bottom:8px;}
.fatt-riga-h .doc-act--del{margin-left:auto;}
.fatt-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;}
.fatt-grid input,.fatt-grid select,.fatt-schema select{padding:7px 9px;font-size:.84rem;}
.fatt-file{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:8px;font-size:.8rem;}
.doc-act--pick:hover{background:var(--ink-soft);color:#fff;}
.doc-act--del{color:#c0432c;}
.doc-act--del:hover{border-color:rgba(192,67,44,.4);background:rgba(192,67,44,.06);}
/* AI "Carica tutto" + multi-foto + mancanti + shake */
.doc-allinone{display:flex;align-items:center;gap:14px;justify-content:space-between;flex-wrap:wrap;
  border:1px solid rgba(0,115,188,.3);background:rgba(0,115,188,.06);border-radius:var(--r-sm);padding:12px 14px;margin-bottom:6px;}
.doc-allinone-txt{display:flex;align-items:flex-start;gap:10px;min-width:0;flex:1;}
.doc-allinone-txt>div{display:flex;flex-direction:column;gap:2px;min-width:0;}
.doc-allinone-txt b{font-size:.95rem;color:var(--ink);}
.doc-allinone-txt span{font-size:.8rem;color:var(--muted);}
/* pastiglia tonda con l'icona file-ai in bianco, stesso blu del tasto "Seleziona file".
   Selettore con il padre: .doc-allinone-txt span (0,1,1) batterebbe .doc-ai-badge da solo
   e l'icona resterebbe grigia. */
.doc-allinone-txt .doc-ai-badge{flex:0 0 auto;width:30px;height:30px;border-radius:50%;
  display:grid;place-items:center;color:#fff;background:var(--accent);margin-top:2px;}
.doc-ai-badge svg{width:18px;height:18px;}
.doc-allinone-btn{flex:0 0 auto;background:var(--accent);color:#fff;border-color:var(--accent);}
.doc-allinone-btn:hover{filter:brightness(1.05);color:#fff;}
.doc-tile--foto{align-items:flex-start;}
.doc-foto-count{font-size:.72rem;font-weight:700;color:var(--brand-dark);background:rgba(60,181,74,.16);border-radius:var(--r-pill);padding:2px 8px;}
.doc-foto-list{display:flex;flex-direction:column;gap:4px;margin-top:6px;}
.doc-foto-item{display:flex;align-items:center;justify-content:space-between;gap:10px;}
.doc-foto-name{font-size:.82rem;color:var(--brand-dark);text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.doc-foto-name:hover{text-decoration:underline;}
.doc-tile.is-missing{border-color:#c0432c;box-shadow:0 0 0 3px rgba(192,67,44,.14);}
.doc-tile.is-missing .doc-tile-ico{background:rgba(192,67,44,.12);color:#c0432c;}
.shake{animation:shake .5s ease;}
@keyframes shake{0%,100%{transform:translateX(0);}15%{transform:translateX(-6px);}30%{transform:translateX(6px);}45%{transform:translateX(-4px);}60%{transform:translateX(4px);}75%{transform:translateX(-2px);}}
@media (prefers-reduced-motion:reduce){.shake{animation:none;}}
/* Scheda dati: colore per stato di compilazione */
.client-daticli--red,.client-daticli--yellow,.client-daticli--blue{background-image:none;}
.client-daticli--red{background:#c0432c;border-color:#c0432c;color:#fff;}
.client-daticli--red:hover{filter:brightness(1.06);color:#fff;}
.client-daticli--yellow{background:#f2b705;border-color:#f2b705;color:#3a2f00;}
.client-daticli--yellow:hover{filter:brightness(1.04);color:#3a2f00;}
.client-daticli--blue{background:#0073bc;border-color:#0073bc;color:#fff;}
.client-daticli--blue:hover{filter:brightness(1.08);color:#fff;}
.client-docs--red,.client-docs--yellow,.client-docs--blue{background-image:none;}
.client-docs--red{background:#c0432c;border-color:#c0432c;color:#fff;}
.client-docs--red:hover{filter:brightness(1.06);color:#fff;}
.client-docs--yellow{background:#f2b705;border-color:#f2b705;color:#3a2f00;}
.client-docs--yellow:hover{filter:brightness(1.04);color:#3a2f00;}
.client-docs--blue{background:#0073bc;border-color:#0073bc;color:#fff;}
.client-docs--blue:hover{filter:brightness(1.08);color:#fff;}
.clienti-head-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;}
/* card cliente: nota in basso a sinistra, cestino in basso a destra allineati */
.client-row{align-items:stretch;}
.client-main{display:flex;flex-direction:column;}
.client-actions{align-items:flex-end;}
.client-chip--impianto{background:rgba(14,36,64,.09);color:var(--ink);}
.client-subrow{margin-top:auto;padding-top:10px;}
/* Intestazione pannello clienti + pulsante info */
.clienti-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;}
.clienti-head[hidden]{display:none;}   /* display:flex vincerebbe su [hidden]: lo forzo nascosto (dettaglio incarico) */
.info-btn{flex:0 0 auto;width:36px;height:36px;border-radius:50%;border:1px solid var(--line-strong);background:var(--surface);
  color:var(--muted);display:grid;place-items:center;cursor:pointer;transition:.2s;}
.info-btn:hover{color:var(--accent);border-color:var(--accent);background:var(--surface-2);}
.info-btn svg{width:18px;height:18px;}
.info-body h4{font-size:.92rem;color:var(--ink);margin:14px 0 8px;}
.info-legend{list-style:none;padding:0;margin:0;display:grid;gap:8px;}
.info-legend li{display:flex;align-items:center;gap:10px;font-size:.9rem;color:var(--text);}
.legend-dot{width:16px;height:16px;border-radius:50%;flex:0 0 auto;}
.legend-dot--red{background:#c0432c;}
.legend-dot--yellow{background:#f2b705;}
.legend-dot--blue{background:#0073bc;}
.info-steps{margin:0;padding-left:20px;display:grid;gap:8px;font-size:.9rem;color:var(--text);}
.info-steps li{line-height:1.5;}
/* Select marca/modello nella scheda dati */
.dati-field select{font-family:inherit;font-size:.92rem;color:var(--ink);background:var(--surface);border:1.5px solid var(--line-strong);
  border-radius:8px;padding:9px 11px;width:100%;cursor:pointer;}
.dati-field select:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(0,166,81,.12);}
.dati-field select:disabled{background:var(--surface-2);color:var(--muted);cursor:not-allowed;}
.data-modal-foot{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:16px;}
.data-modal-foot-l{min-width:0;}
.data-modal-prog{font-size:.85rem;font-weight:700;color:var(--ink);}
.data-modal-foot .form-note{margin:3px 0 0;}

/* ---- Clienti: gruppi "Da trasmettere" / "Trasmessi" ---- */
.clients-group{margin-top:16px;}
.clients-group + .clients-group{margin-top:26px;}
.clients-group-h{display:flex;align-items:center;gap:10px;margin-bottom:12px;}
.clients-group-h>span:first-child{font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--brand-dark);}
.clients-group-h::after{content:"";flex:1;height:1px;background:var(--line);}
.clients-group-n{flex:0 0 auto;min-width:22px;height:22px;padding:0 7px;border-radius:var(--r-pill);background:var(--surface-2);
  color:var(--muted);font-size:.74rem;font-weight:700;display:grid;place-items:center;}
.clients-group .client-row + .client-row{margin-top:12px;}
.clients-none{padding:14px 16px;color:var(--muted);font-style:italic;border:1px dashed var(--line-strong);border-radius:var(--r-sm);}
.client-chip--data{background:rgba(0,115,188,.12);color:var(--accent);}

/* ---- Modello a interventi: riga cliente (colonna) + lista interventi ---- */
.client-row{flex-direction:column;align-items:stretch;}
.client-head{display:flex;align-items:flex-start;gap:14px;justify-content:space-between;}
.client-chip--n{background:rgba(0,115,188,.12);color:var(--accent);}
.client-daticli,.client-addint{white-space:nowrap;}
.client-interventi{margin-top:12px;display:flex;flex-direction:column;gap:8px;}

/* ---- Clienti inviati: sezione + righe compatte (accordion) ---- */
.clients-sent-head{display:flex;align-items:center;gap:10px;margin:26px 0 12px;}
.clients-sent-head>span:first-child{font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--brand-dark);}
.clients-sent-head::after{content:"";flex:1;height:1px;background:var(--line);}
.clients-month{font-size:.74rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:16px 0 8px 2px;}
#clientsList .clients-sent-head + .clients-month{margin-top:0;}
.clients-sent-head{margin-bottom:0;}
.clients-month{margin:4px 0 0 2px;}
.client-sent-bar{display:flex;align-items:center;gap:11px;min-width:0;cursor:pointer;}
.client-expand{flex:0 0 auto;width:30px;height:30px;border-radius:8px;border:1px solid var(--line);background:var(--surface);
  display:grid;place-items:center;cursor:pointer;color:var(--muted);transition:.2s;}
.client-expand:hover{color:var(--brand-dark);border-color:rgba(0,115,61,.3);}
.client-expand svg{width:16px;height:16px;transition:transform .2s;}
.client-row--sent:not(.is-collapsed) .client-expand svg{transform:rotate(90deg);}
.csum-name{flex:0 1 auto;font-size:.98rem;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.csum-serv{flex:1 1 auto;font-size:.82rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.client-row--sent.is-collapsed{padding:9px 12px;cursor:default;}
.client-row--sent.is-collapsed:hover{box-shadow:none;border-color:var(--line);}
.client-row--sent.is-collapsed>.client-head,
.client-row--sent.is-collapsed>.client-controls,
.client-row--sent.is-collapsed>.client-interventi{display:none;}
.client-row--sent:not(.is-collapsed)>.client-sent-bar{margin-bottom:12px;}

/* ---- Pannello contatti rapidi (copia telefono/email/comune) ---- */
.contact-copy{display:flex;flex-direction:column;gap:12px;}
.contact-item{position:relative;display:flex;flex-direction:column;gap:7px;padding:13px 64px 13px 14px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface-2);}
.contact-label{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);}
.contact-val{font-size:1rem;color:var(--ink);font-weight:600;word-break:break-word;}
.contact-copy-button{position:absolute;top:50%;right:13px;transform:translateY(-50%);width:38px;height:38px;display:grid;place-items:center;border:1px solid var(--line-strong);border-radius:11px;background:#fff;color:var(--brand-dark);cursor:pointer;transition:background .2s ease,border-color .2s ease;}
.contact-copy-button:hover,.contact-copy-button.is-copied{background:#e5f5e9;border-color:#a8d8b7;}
.contact-copy-button:focus-visible{outline:2px solid var(--brand);outline-offset:2px;}
.contact-copy-button svg{width:19px;height:19px;}
.contact-copy-note{position:absolute;right:0;bottom:calc(100% + 7px);padding:5px 9px;border-radius:8px;background:var(--brand-dark);color:#fff;font-size:.75rem;font-weight:700;white-space:nowrap;opacity:0;transform:translateY(4px);pointer-events:none;transition:opacity .2s ease,transform .2s ease;}
.contact-copy-button.is-copied .contact-copy-note{opacity:1;transform:translateY(0);}
.contact-btn{align-self:flex-start;margin-top:2px;}
.contact-btn.is-copied{background:rgba(60,181,74,.16);color:var(--brand-dark);border-color:rgba(60,181,74,.4);}

/* ---- Scheda tecnica pompa di calore (upload nel form intervento) ---- */
.dati-sec--scheda{border:1px dashed var(--line-strong);border-radius:var(--r-sm);padding:14px 16px;background:var(--surface-2);}
.st-hint{margin:2px 0 12px;font-size:.86rem;color:var(--muted);}
.st-upload{display:flex;gap:10px;flex-wrap:wrap;}
.st-file{display:flex;align-items:center;gap:9px;margin-top:11px;font-size:.9rem;}
.st-file svg{width:18px;height:18px;flex:0 0 auto;color:var(--brand-dark);}
.st-file a{display:inline-flex;align-items:center;gap:8px;color:var(--brand-dark);font-weight:600;text-decoration:none;}
.st-file a:hover{text-decoration:underline;}
.st-file--pending{color:var(--muted);font-style:italic;}
.st-remove{margin-left:4px;background:none;border:0;color:#c0432c;cursor:pointer;font:inherit;font-size:.84rem;text-decoration:underline;}

/* ---- Gate dati cliente: tasti intervento sbiaditi finché l'anagrafica è vuota ---- */
/* Anagrafica mancante: gli stessi tasti sono bloccati sia nella lista sia nella
   panoramica, quindi devono sembrare spenti in tutti e due i posti. */
.client-row--nodati .client-addint,
.client-row--nodati .int-dati,
.client-row--nodati .int-docs,
.client-row--nodati .int-send,
.ov-nodati #ovAddInt,
.ov-nodati .int-dati,
.ov-nodati .int-docs,
.ov-nodati .int-send{opacity:.45;cursor:help;filter:grayscale(.3);}

/* "Richiedi pratica" non ancora trasmettibile: sbiadito ma cliccabile (mostra il popover). */
.int-send--blocked,.btn--blocked{opacity:.5;filter:grayscale(.35);cursor:help;box-shadow:none;}
.int-send--blocked:hover,.btn--blocked:hover{filter:grayscale(.35);transform:none;box-shadow:none;}

/* ---- Campo con tasto info (es. PIN GSE) + sezione/istruzioni GSE ---- */
.dati-info-row{display:flex;align-items:center;gap:8px;}
.dati-info-row input{flex:1 1 auto;min-width:0;}
.dati-info-btn{flex:0 0 auto;width:34px;height:34px;border-radius:9px;border:1px solid var(--line);background:var(--surface);
  display:grid;place-items:center;cursor:pointer;color:var(--accent);transition:.2s;}
.dati-info-btn:hover{border-color:var(--accent);background:rgba(0,115,188,.08);}
.dati-info-btn svg{width:18px;height:18px;}
/* variante mini, per stare dentro un label (es. "Telefono aiutante" nel nuovo cliente) */
.dati-info-btn--sm{width:21px;height:21px;border-radius:50%;vertical-align:-5px;margin-left:4px;
  display:inline-flex;align-items:center;justify-content:center;padding:0;cursor:pointer;color:var(--muted);}
.dati-info-btn--sm svg{width:13px;height:13px;}
.dati-sec--gse{border:1px dashed var(--line-strong);border-radius:var(--r-sm);padding:14px 16px;background:var(--surface-2);}
.gse-note{margin:0 0 11px;font-size:.88rem;color:var(--muted);}
.gse-steps ol{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:9px;}
.gse-steps li{font-size:.92rem;color:var(--text);line-height:1.45;}
.gse-steps a{color:var(--brand-dark);font-weight:600;}
.gse-steps-foot{margin:16px 0 0;padding-top:13px;border-top:1px solid var(--line);font-size:.9rem;color:var(--muted);}

/* ---- Pratiche approvate: sezione comprimibile (come "Clienti inviati") ---- */
.prat-appr.is-collapsed > .prat-row{display:none;}
.prat-appr-bar{display:flex;align-items:center;gap:11px;cursor:pointer;padding:9px 12px;
  border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);}
.prat-appr-bar:hover{border-color:rgba(0,115,61,.28);}
.prat-appr-bar .prat-num{margin-left:auto;flex:0 0 auto;}
.prat-appr:not(.is-collapsed) > .prat-appr-bar{margin-bottom:10px;}
.prat-appr:not(.is-collapsed) .client-expand svg{transform:rotate(90deg);}
#pratList .prat-appr + .prat-appr{margin-top:8px;}
.prat-files a{display:inline-flex;align-items:center;gap:7px;color:var(--brand-dark);font-weight:600;text-decoration:none;}
.prat-files a:hover{text-decoration:underline;}
.prat-files a svg{width:16px;height:16px;}
.prat-file-missing{color:var(--muted);}

/* ---- Statistiche: KPI + barre ---- */
.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:18px;}
@media(max-width:640px){.stat-grid{grid-template-columns:1fr;}}
.stat-card{border:1px solid var(--line);border-radius:var(--r);background:var(--surface);padding:16px;}
.stat-card--wide{grid-column:1 / -1;}
.stat-card h4{margin:0 0 12px;font-size:.95rem;color:var(--ink);}
.stat-bars{display:flex;flex-direction:column;gap:10px;}
.stat-bar{display:grid;grid-template-columns:minmax(90px,30%) 1fr auto;align-items:center;gap:10px;}
.stat-bar-l{font-size:.84rem;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.stat-bar-track{height:9px;border-radius:6px;background:var(--surface-2);overflow:hidden;}
.stat-bar-fill{display:block;height:100%;border-radius:6px;background:linear-gradient(90deg,var(--brand-bright),var(--accent));min-width:2px;}
.stat-fill--inviata{background:#0073bc;}
.stat-fill--lavorazione{background:#f2b705;}
.stat-fill--approvata{background:#1e8a4f;}
.stat-bar-v{font-size:.86rem;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap;}
/* toolbar + filtro */
.stat-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:14px;}
.stat-toolbar-sp{flex:1 1 auto;}
.stat-period{display:inline-flex;align-items:center;gap:8px;font-size:.86rem;font-weight:600;color:var(--muted);}
.stat-period select{font:inherit;padding:8px 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--ink);}
.stat-filter{display:flex;align-items:center;gap:10px;margin-bottom:14px;padding:9px 14px;border-radius:10px;background:rgba(0,115,188,.1);color:var(--brand-dark);font-size:.9rem;}
.stat-clear{margin-left:auto;background:none;border:0;color:#c0432c;cursor:pointer;font:inherit;font-size:.84rem;font-weight:600;}
.stat-card-h{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:6px;}
.stat-card-h h4{margin:0;}
.stat-hint{font-size:.8rem;color:var(--muted);margin:0 0 10px;}
/* KPI in due famiglie: Attività (conteggi) / Denaro (€) */
/* Statistiche in stile dashboard (riusa le card dz-stat della Panoramica) */
.dz-sec{margin-bottom:16px;}
.dz-sec h5{margin:0 0 10px;font-size:.7rem;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);}
.dz-stats--3{grid-template-columns:repeat(3,minmax(0,1fr));}
.dz-stat-n--sm{font-size:1.5rem;}
.dz-delta{font-size:.68rem;font-weight:800;padding:3px 8px;border-radius:16px;white-space:nowrap;flex:0 0 auto;}
.dz-delta--up{color:#1e8a4f;background:rgba(30,138,79,.12);}
.dz-delta--down{color:#c0432c;background:rgba(192,67,44,.12);}
.dz-delta--flat{color:var(--muted);background:var(--surface-2);}
.dz-stat--dark .dz-delta--up{color:#d9ffe9;background:rgba(255,255,255,.16);}
.dz-stat--dark .dz-delta--down{color:#ffd9d2;background:rgba(255,255,255,.16);}
.dz-stat--dark .dz-delta--flat{color:rgba(255,255,255,.85);background:rgba(255,255,255,.16);}
@media(max-width:640px){.dz-stats--3{grid-template-columns:1fr;}}
/* barra impilata per stato (funnel) */
.stat-card--slim{padding:13px 16px 14px;}
.stk-bar{display:flex;height:30px;border-radius:9px;overflow:hidden;gap:2px;}
.stk-seg{border:0;cursor:pointer;font:inherit;font-size:.8rem;font-weight:800;color:#fff;min-width:24px;padding:0;transition:opacity .2s,filter .2s;}
.stk-seg:hover{filter:brightness(1.09);}
.stk-seg.is-dim{opacity:.3;}
.stk-seg.is-sel{box-shadow:inset 0 0 0 2px rgba(255,255,255,.85);}
.stk-legend{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px;}
.stk-leg{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line);background:var(--surface);border-radius:var(--r-pill);padding:5px 11px;cursor:pointer;font:inherit;font-size:.8rem;color:var(--ink);}
.stk-leg b{font-variant-numeric:tabular-nums;}
.stk-leg:hover{border-color:var(--line-strong);background:var(--surface-2);}
.stk-leg.is-sel{border-color:var(--accent);background:rgba(0,115,188,.08);}
.stk-dot{width:10px;height:10px;border-radius:3px;flex:0 0 auto;}
/* righe servizio: barra conteggio + spesa sulla stessa riga */
.srv-rows{display:flex;flex-direction:column;gap:5px;}
.srv-row{display:grid;grid-template-columns:minmax(90px,34%) 1fr auto;align-items:center;gap:10px;width:100%;border:1px solid transparent;background:none;border-radius:8px;padding:7px 8px;cursor:pointer;font:inherit;text-align:left;}
.srv-row:hover{background:var(--surface-2);}
.srv-row.is-sel{border-color:var(--line-strong);background:var(--surface-2);}
.srv-row.is-dim{opacity:.45;}
.srv-l{font-size:.84rem;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.srv-v{font-size:.8rem;color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums;}
.srv-v b{color:var(--ink);font-size:.88rem;}
/* linea */
/* drill-down elenco pratiche */
.stat-prat-list{display:flex;flex-direction:column;gap:7px;max-height:380px;overflow-y:auto;}
.stat-prat{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 13px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);cursor:pointer;font:inherit;text-align:left;}
.stat-prat:hover{border-color:rgba(0,115,61,.3);background:var(--surface-2);}
.stat-prat-cli b{color:var(--ink);}
.stat-detail{border-color:rgba(0,115,188,.4);}
.stat-flash{animation:statFlash 1.1s ease;}
@keyframes statFlash{0%{box-shadow:0 0 0 0 rgba(0,115,188,.35);}40%{box-shadow:0 0 0 5px rgba(0,115,188,.18);}100%{box-shadow:0 0 0 0 rgba(0,115,188,0);}}
@media print{@page{size:A4;margin:12mm}.nav,.dash-side,.stat-toolbar,.totop,.dash-hero{display:none!important;}.dash-layout{display:block;}.container--wide{padding:0;}}

/* ---- Calendario: due colonne, calendario fermo + lista date scrollabile ---- */
.cal-layout{display:grid;grid-template-columns:1fr 1fr;gap:18px;align-items:start;}
.cal-col-cal{position:sticky;top:90px;align-self:start;}
.cal-col-list{min-width:0;}
@media(max-width:900px){
  .cal-layout{grid-template-columns:1fr;}
  .cal-col-cal{position:static;}
}

/* ---- Ruoli: selettore profilo in registrazione + badge ruolo ---- */
.role-pick{display:flex;flex-direction:column;gap:8px;}
.role-opt{display:flex;align-items:flex-start;gap:11px;padding:12px 14px;border:1.5px solid var(--line);border-radius:12px;cursor:pointer;transition:border-color .15s,background .15s;}
.role-opt:hover{border-color:rgba(0,115,61,.35);background:var(--surface-2);}
.role-opt input{margin-top:3px;flex:0 0 auto;}
.role-opt:has(input:checked){border-color:var(--brand);background:rgba(60,181,74,.08);}
.role-opt b{display:block;font-size:.95rem;color:var(--ink);}
.role-opt small{display:block;font-size:.82rem;color:var(--muted);margin-top:2px;}
.ruolo-badge{display:inline-block;margin-left:12px;vertical-align:middle;font-size:.68rem;font-weight:700;text-transform:uppercase;
  letter-spacing:.05em;padding:4px 10px;border-radius:var(--r-pill);background:rgba(255,255,255,.22);color:#fff;}

/* ---- Incarichi APE ---- */
.inc-new{padding:16px;border:1px solid var(--line);border-radius:var(--r);background:var(--surface);margin-bottom:16px;}
.inc-new-row{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end;}
.inc-new-row label{display:flex;flex-direction:column;gap:4px;font-size:.78rem;font-weight:600;color:var(--muted);}
.inc-new-row select,.inc-new-row input{font:inherit;padding:8px 11px;border:1px solid var(--line);border-radius:9px;background:var(--surface);color:var(--ink);min-width:130px;}
.inc-new-row input[type=number]{min-width:100px;}
.inc-list{display:flex;flex-direction:column;gap:8px;}
.inc-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:11px 14px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);}
button.inc-row--sent{width:100%;font:inherit;cursor:pointer;text-align:left;}
button.inc-row--sent:hover{border-color:var(--brand);background:rgba(30,138,79,.04);}
.inc-row-main{min-width:0;display:flex;flex-direction:column;gap:2px;}
.inc-row-main b{color:var(--ink);font-size:.95rem;}
.inc-row-main .muted{font-size:.82rem;}
.inc-row-side{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.inc-tec{font-size:.84rem;color:var(--brand-dark);font-weight:600;}
.inc-comp{font-weight:700;font-variant-numeric:tabular-nums;color:var(--ink);}
.inc-stato{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em;padding:3px 9px;border-radius:var(--r-pill);white-space:nowrap;}
.inc-stato--aperto{background:rgba(122,92,192,.16);color:#5b3fa0;}
.inc-stato--assegnato{background:rgba(0,115,188,.14);color:var(--accent);}
.inc-stato--in_lavorazione{background:rgba(242,183,5,.2);color:#7a5b00;}
.inc-stato--in_verifica{background:rgba(0,115,188,.14);color:var(--accent);}
.inc-stato--consegnato{background:rgba(30,138,79,.16);color:var(--brand-dark);}
.inc-done{font-size:.84rem;font-weight:600;color:var(--brand-dark);}
.inc-ape-link{display:inline-flex;align-items:center;gap:6px;color:var(--brand-dark);font-weight:600;text-decoration:none;font-size:.85rem;}
.inc-ape-link:hover{text-decoration:underline;}
.inc-ape-link svg{width:15px;height:15px;}
.inc-compensi{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 20px;border-radius:var(--r);
  background:linear-gradient(135deg,#0e8a4f,#0a6f7a);color:#fff;margin-bottom:16px;}
.inc-comp-l{display:block;font-size:.85rem;font-weight:600;opacity:.92;}
.inc-comp-v{display:block;font-size:1.6rem;font-weight:800;}
.adm-stato{font:inherit;padding:7px 10px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink);}

/* ===== Ingegnere: workspace incarichi (Fase 4) ===== */
.inc-tipo{font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em;padding:3px 9px;border-radius:var(--r-pill);white-space:nowrap;}
.inc-tipo--post{background:rgba(0,115,188,.12);color:var(--accent);}
.inc-tipo--pre{background:rgba(122,92,192,.16);color:#5b3fa0;}
.inc-tipo--entrambi{background:rgba(30,138,79,.16);color:var(--brand-dark);}
.inc-tipo--pool{background:rgba(242,183,5,.22);color:#7a5b00;}
.inc-chips{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px;}
.inc-chip{font:inherit;font-size:.82rem;font-weight:600;padding:7px 14px;border:1px solid var(--line);border-radius:var(--r-pill);background:var(--surface);color:var(--muted);cursor:pointer;transition:.15s;}
.inc-chip:hover{border-color:var(--brand);color:var(--brand-dark);}
.inc-chip.on{background:var(--brand);border-color:var(--brand);color:#fff;}
.inc-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px;}
.inc-card{text-align:left;font:inherit;cursor:pointer;display:flex;flex-direction:column;gap:7px;padding:14px 16px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);transition:.16s;}
.inc-card:hover{border-color:var(--brand);box-shadow:0 10px 26px rgba(14,36,64,.1);transform:translateY(-2px);}
.inc-card-top{display:flex;align-items:center;justify-content:space-between;gap:8px;}
.inc-card-top b{color:var(--ink);font-size:.98rem;}
.inc-card-sub{font-size:.82rem;color:var(--muted);}
.inc-card-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:2px;}
.inc-meta-i{font-size:.74rem;color:var(--muted);background:var(--surface-2);padding:2px 8px;border-radius:var(--r-pill);}
.inc-back{display:inline-flex;align-items:center;gap:10px;font:inherit;font-size:.95rem;font-weight:700;color:var(--brand-dark);background:var(--surface);border:1.5px solid var(--line);border-radius:var(--r-pill);cursor:pointer;padding:10px 20px;margin-bottom:14px;box-shadow:var(--shadow-sm);}
.inc-back:hover{border-color:var(--brand);color:var(--brand);}
.inc-back span{font-size:1.5rem;font-weight:800;line-height:.9;}
.dt-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap;padding-bottom:14px;border-bottom:1px solid var(--line);}
.dt-name{font-size:1.3rem;color:var(--ink);margin:0 0 2px;}
.dt-head-side{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.dt-head-side .inc-tipo{margin-top:0;}  /* neutralizza il margin della .inc-tipo delle card incentivi */
.dt-comp{display:flex;flex-direction:column;align-items:center;gap:2px;padding:9px 18px;margin-left:4px;border:1.5px solid rgba(30,138,79,.35);background:rgba(30,138,79,.07);border-radius:var(--r-sm);}
.dt-comp span{font-size:.62rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);}
.dt-comp b{font-size:1.45rem;line-height:1;color:var(--brand-dark);font-variant-numeric:tabular-nums;}
.dt-pool{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:14px;padding:12px 16px;border-radius:var(--r-sm);background:rgba(242,183,5,.12);border:1px solid rgba(242,183,5,.4);font-size:.9rem;color:#7a5b00;}
.dt-pool--warn{background:rgba(200,60,40,.1);border-color:rgba(200,60,40,.4);color:#8a2a1a;}
.ct-prelim-warn{margin-top:14px;padding:12px 16px;border-radius:var(--r-sm);background:rgba(200,60,40,.08);border:1px solid rgba(200,60,40,.35);font-size:.88rem;color:#7a2f20;line-height:1.5;}
.ct-prelim-warn a{color:#0b6e3f;font-weight:600;}
.dt-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px;}
.dt-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px;align-items:stretch;margin-top:14px;}
.dt-col{display:flex;flex-direction:column;gap:14px;}
.dt-col .dt-sec:first-child{flex:1;}   /* ② si allunga → ③ si allinea al fondo di ① */
.dt-sec--full{grid-column:1 / -1;}
.dt-savebar{grid-column:1 / -1;}
@media (max-width:860px){.dt-grid{grid-template-columns:1fr;}}
.dt-sec{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm);padding:16px 18px;}
.dt-sec h4{font-size:.92rem;color:var(--ink);margin:0 0 10px;padding-bottom:7px;border-bottom:1px solid var(--line);}
.dt-row{display:grid;grid-template-columns:160px 1fr;gap:2px 16px;padding:7px 0;border-bottom:1px dotted var(--line);font-size:.9rem;}
.dt-row span{color:var(--muted);}.dt-row b{color:var(--ink);text-align:left;}
@media (max-width:560px){.dt-row{grid-template-columns:1fr;padding:8px 0;}}
.dt-docs{display:flex;gap:8px;flex-wrap:wrap;}
.dt-doc{display:inline-flex;align-items:center;gap:6px;font-size:.84rem;font-weight:600;color:var(--brand-dark);background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-sm);padding:7px 12px;text-decoration:none;}
/* "Scarica tutti" (ZIP): chip verde pieno, primo della fila */
.dt-doc--all{background:var(--brand);border-color:var(--brand);color:#fff;font-weight:700;}
.dt-doc--all:hover{background:var(--brand-dark);border-color:var(--brand-dark);color:#fff;}
.dt-doc--all svg{width:15px;height:15px;}
/* Documenti condivisi dalla piattaforma: chip grigio + icona download dentro */
.dt-doc--shared{background:#eef0ee;color:#4b5f56;}
.dt-doc--shared:hover{border-color:var(--brand);color:var(--brand-dark);}
.dt-doc-dl{display:inline-flex;margin-left:3px;color:var(--brand-dark);}
.dt-doc-dl svg{width:14px;height:14px;}
/* Documenti obbligatori mancanti: chip rosso, l'ingegnere deve reperirli */
.dt-manc-h{margin:12px 0 6px;font-size:.82rem;font-weight:700;color:#a93226;}
.dt-doc--missing{background:rgba(200,60,40,.08);border:1px solid rgba(200,60,40,.4);color:#a93226;}
/* Documenti dell'ingegnere: chip con la X di eliminazione DENTRO al riquadro */
.dt-doc--mine{padding-right:5px;}
.dt-doc--mine a{display:inline-flex;align-items:center;gap:6px;color:inherit;text-decoration:none;}
.dt-doc svg{width:15px;height:15px;flex:0 0 auto;}
.dt-doc:hover{border-color:var(--brand);}
.dt-doc--muted{color:var(--muted);cursor:default;}
.dt-doc svg{width:15px;height:15px;}
.dt-fotos{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px;}
.dt-foto{position:relative;display:block;width:72px;height:72px;border-radius:8px;overflow:hidden;border:1px solid var(--line);}
.dt-foto a{display:block;width:100%;height:100%;}
.dt-foto img{width:100%;height:100%;object-fit:cover;}
/* Assunzione di responsabilità sul materiale, sopra il tasto di invio.
   Deliberatamente non pre-spuntata: una spunta già messa non è una conferma. */
.inc-resp{display:flex;gap:10px;align-items:flex-start;margin:14px 0 12px;font-size:.85rem;
  line-height:1.55;color:var(--muted);cursor:pointer;}
.inc-resp input{margin-top:2px;flex:0 0 auto;width:17px;height:17px;accent-color:var(--brand);cursor:pointer;}
.inc-resp a{color:var(--brand-dark);}

/* ---- Pagine legali (privacy.html, termini.html): testo lungo da leggere, non da
   scorrere. Colonna stretta, interlinea ampia, gerarchia semplice. ---- */
.container--narrow{max-width:820px;}
.legale h1{font-size:clamp(1.6rem,3.4vw,2.2rem);margin:0 0 12px;}
.legale .lead{font-size:1rem;color:var(--muted);margin:0 0 32px;line-height:1.7;}
.legale h2{font-size:1.15rem;margin:34px 0 10px;padding-top:18px;border-top:1px solid var(--line);color:var(--ink);}
.legale h2:first-of-type{border-top:0;padding-top:0;}
.legale p{line-height:1.75;margin:0 0 14px;}
.legale .lista{margin:0 0 16px;padding-left:20px;}
.legale .lista li{line-height:1.7;margin-bottom:9px;}
.legale b{color:var(--ink);}
.tab-legale{width:100%;border-collapse:collapse;margin:0 0 18px;font-size:.92rem;}
.tab-legale th,.tab-legale td{text-align:left;vertical-align:top;padding:10px 12px;border-bottom:1px solid var(--line);line-height:1.6;}
.tab-legale th{background:var(--surface-2);font-weight:700;color:var(--ink);}
@media (max-width:560px){
  .tab-legale,.tab-legale tbody,.tab-legale tr,.tab-legale td{display:block;width:100%;}
  .tab-legale thead{display:none;}
  .tab-legale tr{border-bottom:1px solid var(--line);padding:8px 0;}
  .tab-legale td{border:0;padding:3px 0;}
  .tab-legale td:first-child{font-weight:600;color:var(--ink);}
}
/* Riquadro "bozza": va TOLTO dopo la revisione legale, insieme al meta noindex. */
.bozza-avviso{border:2px dashed #f2b705;background:rgba(242,183,5,.09);border-radius:var(--r);
  padding:14px 18px;margin:0 0 28px;font-size:.9rem;line-height:1.65;color:#5c4600;}
.bozza-avviso b{display:block;color:#7a5b00;margin-bottom:3px;}

/* ---- Pannello Censimenti (Infina Eco). Prefisso .inf-, appeso qui e non in un
   foglio nuovo: sono poche righe e vivono solo nella dashboard. La pagina di
   rilievo ha invece il suo foglio (assets/css/infina.css), perche' e' mobile-first
   e non deve trascinarsi dietro lo stile del sito. ---- */
/* Il pannello usa la struttura a colonne di Ristrutturazioni (prefisso .ris-): qui
   restano solo i pezzi suoi, cioe' il punteggio del rilievo e le sue azioni. */
.inf-punteggio{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
/* ---- Scheda del rilievo: sintesi grafica in alto, dettagli nei cassetti ---- */
/* Grafici e numeri sulla stessa fascia: impilati la scheda si apriva su mezzo schermo
   di intestazione prima ancora di dire qualcosa. */
.inf-sint{margin-bottom:16px;padding:16px clamp(18px,2vw,24px);}
.inf-pan{display:flex;align-items:stretch;gap:clamp(18px,3vw,44px);flex-wrap:wrap;}
/* I due grafici sono la parte che si guarda: prendono lo spazio che serve e crescono
   col monitor. La griglia dei numeri sta a destra e non si allunga oltre: tessere
   larghe mezzo schermo per scriverci "5 stanze" erano lunghezza sprecata. */
/* L'area dei grafici cresce insieme alla griglia dei numeri e si divide in due
   meta' uguali: il punteggio nella prima, il radar centrato nella seconda.
   Appaiati come prima (flex:0 0 auto) lasciavano vuota la meta' di destra. */
.inf-sint-top{flex:1 1 460px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
  gap:clamp(10px,1.4vw,24px);align-items:center;}
.inf-sint-c{display:flex;align-items:center;justify-content:center;min-width:0;}
@media (max-width:760px){.inf-sint-top{grid-template-columns:minmax(0,1fr);} }

/* Valutazione sospesa: bordo spesso TRATTEGGIATO e nessun riempimento, perche' qui
   la valutazione manca e il riquadro non deve sembrare un contenuto. Il motivo sta
   in un rettangolo pieno al centro, che e' l'unica cosa da leggere. */
.inf-pan-stop{flex:1 1 260px;display:flex;align-items:center;justify-content:center;
  padding:clamp(20px,3vw,34px);border-radius:var(--r-lg);background:none;
  border:3px dashed rgba(200,60,40,.45);}
.inf-pan-stop-in{max-width:56ch;text-align:center;padding:16px 22px;border-radius:var(--r-sm);
  background:#c0432c;box-shadow:0 6px 18px rgba(160,50,30,.28);}
.inf-pan-stop b{display:block;font-size:1.32rem;line-height:1.25;color:#fff;letter-spacing:-.01em;}
.inf-pan-stop span{display:block;margin-top:6px;font-size:.92rem;color:rgba(255,255,255,.92);line-height:1.5;}

/* Cosa conviene fare, dentro la panoramica: qui bastano categoria e titolo. Il testo
   per esteso sta nella vista dedicata, che si apre cliccando la proposta. */
.inf-prop{margin-top:10px;padding-top:10px;border-top:1px solid var(--line);}
.inf-prop-h{margin:0 0 8px;font-size:.78rem;font-weight:700;text-transform:uppercase;
  letter-spacing:.05em;color:var(--muted);text-align:center;}
.inf-prop-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,300px));
  justify-content:center;gap:8px;}
.inf-prop-b{display:flex;flex-direction:column;align-items:flex-start;gap:5px;text-align:left;
  padding:10px 12px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface-2);
  font:inherit;cursor:pointer;transition:border-color .2s ease,background .2s ease;}
.inf-prop-b:hover{border-color:var(--brand);background:rgba(0,115,61,.06);}
.inf-prop-b b{font-size:.84rem;font-weight:600;color:var(--ink);line-height:1.35;}
.inf-prop-t{font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:#a5341f;}

/* La proposta per esteso in un pannello volante sopra la scheda: la panoramica resta
   dietro, e le frecce in fondo - in fila col contatore, non sui fianchi - fanno
   scorrere le proposte senza uscire e rientrare. Altezza fissa e uguale per tutte,
   larga invece che alta: il problema e la soluzione stanno affiancati ai numeri che
   dicono se vale la pena, e i passi in fila sotto. */
.inf-modal{align-items:center;padding:16px;}
.inf-modal-panel{max-width:960px;height:min(604px,88vh);display:flex;flex-direction:column;
  padding:22px clamp(20px,2.4vw,30px) 14px;}
.inf-modal-tit{min-width:0;}
.inf-modal-tit h3{margin-top:3px;line-height:1.3;}
.inf-modal-tag{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:9px;}
.inf-modal-corpo{flex:1 1 auto;overflow-y:auto;margin-top:16px;display:flex;
  flex-direction:column;gap:16px;}
.inf-modal-due{display:grid;grid-template-columns:minmax(0,1fr) 250px;gap:clamp(18px,2.4vw,30px);
  align-items:start;}
.inf-modal-testi{display:flex;flex-direction:column;gap:14px;min-width:0;}
.inf-modal-testi h4{margin:0 0 4px;font-size:.7rem;font-weight:800;text-transform:uppercase;
  letter-spacing:.07em;color:var(--brand-dark);}
.inf-modal-testi p{margin:0;font-size:.94rem;line-height:1.62;color:var(--text);}
/* colonna dei numeri: su che punteggio incide, quanto ci vuole, chi lo fa */
.inf-modal-lato{display:flex;flex-direction:column;gap:10px;}
.inf-mis{display:flex;flex-direction:column;gap:3px;padding:11px 13px;border-radius:var(--r-sm);
  background:var(--surface-2);}
.inf-mis-l{font-size:.65rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;
  color:var(--muted);}
.inf-mis-c{font-size:.92rem;font-weight:700;color:var(--ink);}
.inf-mis-t{height:7px;border-radius:999px;background:var(--line);overflow:hidden;margin:4px 0 2px;}
.inf-mis-v{display:block;height:100%;border-radius:999px;background:var(--brand-bright);}
.inf-mis-n{font-size:.74rem;color:var(--muted);}
.inf-mis-n b{color:var(--ink);font-variant-numeric:tabular-nums;}
.inf-sch{display:flex;align-items:center;gap:10px;padding:10px 13px;border-radius:var(--r-sm);
  border:1px solid var(--line);}
.inf-sch-i{flex:0 0 auto;width:30px;height:30px;border-radius:9px;display:grid;place-items:center;
  background:var(--surface-2);color:var(--brand-dark);}
.inf-sch-i svg{width:17px;height:17px;}
.inf-sch-l{display:block;font-size:.65rem;font-weight:800;text-transform:uppercase;
  letter-spacing:.06em;color:var(--muted);}
.inf-sch b{font-size:.85rem;color:var(--ink);}
/* i passi in fila, uniti dalla linea: una lista puntata non fa vedere che e' una
   sequenza con un inizio e una fine */
.inf-passi{padding-top:14px;border-top:1px solid var(--line);}
.inf-passi-l{display:block;margin-bottom:10px;font-size:.7rem;font-weight:800;
  text-transform:uppercase;letter-spacing:.07em;color:var(--brand-dark);}
.inf-passi ol{list-style:none;margin:0;padding:0;display:grid;
  grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px 0;}
.inf-passi li{position:relative;display:flex;flex-direction:column;gap:7px;padding-right:14px;}
.inf-passi li::before{content:'';position:absolute;left:13px;right:0;top:12px;height:2px;
  background:var(--line);}
.inf-passi li:last-child::before{display:none;}
.inf-passo-n{position:relative;width:26px;height:26px;border-radius:50%;background:var(--brand);
  color:#fff;font-size:.76rem;font-weight:800;display:grid;place-items:center;}
.inf-passi li > span:last-child{font-size:.8rem;line-height:1.4;color:var(--text);}
/* frecce e contatore sulla stessa riga: la freccia sta accanto al "2 di 3" che
   cambia, non a mezzo pannello di distanza */
.inf-modal-piede{flex:0 0 auto;margin-top:12px;padding-top:12px;border-top:1px solid var(--line);
  display:flex;align-items:center;justify-content:center;gap:16px;font-size:.76rem;
  font-weight:700;letter-spacing:.04em;color:var(--muted);}
.inf-modal-frec{width:36px;height:36px;border-radius:50%;border:1px solid var(--line);
  background:var(--surface);color:var(--muted);display:grid;place-items:center;cursor:pointer;
  transition:.2s;}
.inf-modal-frec[hidden]{display:none;}
.inf-modal-frec:hover{color:var(--ink);border-color:var(--brand);background:var(--surface-2);}
.inf-modal-frec svg{width:19px;height:19px;}
@media (max-width:720px){.inf-modal-panel{height:min(620px,90vh);padding:18px 16px 12px;}
  .inf-modal-due{grid-template-columns:1fr;gap:16px;}}
.inf-racc-cf{font-size:.68rem;font-weight:600;color:var(--muted);text-transform:uppercase;
  letter-spacing:.03em;}
.inf-anello{display:flex;flex-direction:column;align-items:center;gap:5px;flex:0 0 auto;}
.inf-anello svg{width:clamp(104px,8.5vw,148px);height:auto;}
.inf-anello b{font-size:.78rem;font-weight:700;color:var(--ink);text-transform:capitalize;}
.inf-anello-n{font-size:2rem;font-weight:700;fill:var(--ink);font-family:var(--sans);}
.inf-anello-s{font-size:.6rem;font-weight:600;fill:var(--muted);letter-spacing:.08em;
  text-transform:uppercase;font-family:var(--sans);}
.inf-radar{flex:0 0 auto;}
.inf-radar svg{width:clamp(222px,19vw,330px);height:auto;}
.inf-radar-l{font-size:.62rem;font-weight:700;fill:var(--muted);text-transform:uppercase;
  letter-spacing:.03em;font-family:var(--sans);}
.inf-radar-v{font-size:.76rem;font-weight:700;fill:var(--ink);font-family:var(--sans);}
/* Otto numeri in fila su una riga sola erano otto colonne strette accanto ai grafici,
   con lo spazio verticale della fascia sprecato: due righe da quattro riempiono
   quell'altezza e lasciano al valore la taglia per essere letto da lontano. */
.inf-kpis{flex:1 1 420px;max-width:1040px;margin-left:auto;display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:minmax(62px,88px);
  align-content:center;gap:10px;}
.inf-kpi{display:flex;flex-direction:column;justify-content:center;gap:2px;padding:11px 13px;border-radius:var(--r-sm);
  background:var(--surface-2);}
.inf-kpi b{font-size:1.22rem;line-height:1.2;color:var(--ink);font-variant-numeric:tabular-nums;}
.inf-kpi span{font-size:.72rem;color:var(--muted);line-height:1.25;}
@media (max-width:760px){.inf-kpis{grid-template-columns:repeat(2,minmax(0,1fr));}
  .inf-kpi b{font-size:1.08rem;}}
.inf-sint--stop{border-color:rgba(200,60,40,.35);}

/* etichette della proposta: la categoria, il tecnico, l'attendibilita' */
.inf-racc-cat{font-size:.63rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em;
  padding:3px 8px;border-radius:var(--r-pill);background:var(--surface);color:var(--muted);
  border:1px solid var(--line);white-space:nowrap;}
.inf-racc-cat--sicurezza{background:rgba(200,60,40,.12);color:#a5341f;border-color:transparent;}
.inf-racc-cat--muffa{background:rgba(242,183,5,.2);color:#7a5b00;border-color:transparent;}
.inf-racc-cat--ventilazione{background:rgba(0,115,188,.12);color:#0b5f96;border-color:transparent;}
.inf-racc-cat--energia{background:rgba(0,115,61,.13);color:var(--brand-dark);border-color:transparent;}
.inf-racc-cat--comfort{background:rgba(0,115,61,.1);color:var(--brand-dark);border-color:transparent;}
.inf-racc-tec{font-size:.68rem;font-weight:700;color:#a5341f;text-transform:uppercase;
  letter-spacing:.03em;white-space:nowrap;}

/* Quattro pannelli, due per riga e alti uguale: la griglia si legge come una tabella
   invece che come quattro riquadri sfalsati. */
.inf-griglia{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;
  align-items:stretch;margin-bottom:16px;}
.inf-griglia > *{margin-bottom:0;height:100%;}
/* colonna di destra: due pannelli impilati che insieme fanno l'altezza di quello
   di sinistra, invece di tre colonne strette in fila */
.inf-col{display:flex;flex-direction:column;gap:16px;}
.inf-col > .panel{margin-bottom:0;}
.inf-col > .panel:last-child{flex:1 1 auto;}
@media (max-width:900px){.inf-griglia{grid-template-columns:1fr;}
  .inf-griglia > *{height:auto;}}


/* stanze: una riga per stanza, col pallino del rischio muffa */
.inf-st-lista{list-style:none;margin:0;padding:0;display:grid;
  grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:8px;align-items:start;}
.inf-st{display:flex;align-items:flex-start;gap:10px;padding:9px 11px;border-radius:var(--r-sm);
  background:var(--surface-2);}
.inf-st > div{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:1px;}
.inf-st b{font-size:.88rem;color:var(--ink);}
.inf-st-p{flex:0 0 auto;width:10px;height:10px;margin-top:5px;border-radius:50%;
  background:var(--line-strong);}
.inf-st--basso .inf-st-p{background:var(--brand-bright);}
.inf-st--medio .inf-st-p{background:#e0a800;}
.inf-st--alto .inf-st-p{background:#c0432c;}
.inf-st-m{font-size:.77rem;color:var(--text);}
.inf-st-s{font-size:.75rem;color:var(--muted);line-height:1.4;}
.inf-st-r{flex:0 0 auto;font-size:.65rem;font-weight:800;text-transform:uppercase;
  letter-spacing:.04em;color:var(--muted);padding-top:3px;}
.inf-st--basso .inf-st-r{color:var(--brand-dark);}
.inf-st--medio .inf-st-r{color:#7a5b00;}
.inf-st--alto .inf-st-r{color:#a5341f;}
/* La riga della stanza lampeggia quando la si sceglie dal disegno: senza, in una
   lista di quindici stanze non si capisce dove sia finito il clic. */
.inf-st.is-scelta{box-shadow:0 0 0 2px var(--brand-bright);}

/* Schema della casa vista dall'alto (assets/js/casa.js). Il rischio muffa e' un
   livello che si spegne, non il tema del disegno: sotto resta una pianta neutra,
   pronta a portare altri livelli (esposizione, temperatura). */
.cs-svg{display:block;width:100%;height:auto;max-height:min(62vh,470px);}
.cs-per{fill:none;stroke:var(--ink);stroke-width:2.4;}
.cs-r{fill:var(--surface);stroke:var(--ink);stroke-width:1.1;stroke-linejoin:round;
  transition:fill .18s ease;}
.cs-r--stimata,.cs-r--resto{fill:#f1f4f2;stroke-dasharray:5 3.5;}
.cs-n{font-size:12px;font-weight:700;fill:var(--ink);}
.cs-m{font-size:10.5px;fill:var(--muted);font-variant-numeric:tabular-nums;}
.cs-nord-b{fill:var(--surface);stroke:var(--line-strong);stroke-width:1.2;}
.cs-nord-a{fill:var(--ink);}
.cs-nord-t{font-size:9px;font-weight:800;fill:var(--muted);}
.cs-st{cursor:pointer;}
.cs-st--muto{cursor:default;}
.cs-st:hover .cs-r{fill:var(--cream);}
.cs-st:focus-visible{outline:none;}
.cs-st:focus-visible .cs-r{stroke-width:3;stroke:var(--brand-bright);}
.cs-muffa .cs-r--basso{fill:#e4f4e6;}
.cs-muffa .cs-r--medio{fill:#fbf0d0;}
.cs-muffa .cs-r--alto{fill:#f8e0da;}
.cs-legenda{display:flex;flex-wrap:wrap;gap:6px 16px;align-items:center;
  font-size:.75rem;color:var(--muted);margin-top:12px;}
.cs-legenda span{display:inline-flex;align-items:center;gap:6px;}
.cs-legenda i{display:inline-block;width:12px;height:12px;border-radius:3px;
  border:1px solid var(--ink);}
.cs-piani{display:flex;gap:6px;}
.cs-piani button[aria-pressed="true"]{background:var(--ink);color:#fff;border-color:var(--ink);}

/* Pannello senza dati: una casa d'esempio sfocata e sopra cosa manca. Il posto vuoto
   vale piu' del pannello che sparisce: sparendo non dice a nessuno che esiste. */
.cs-vuoto{position:relative;border-radius:var(--r-sm);overflow:hidden;
  background:var(--surface-2);min-height:210px;}
.cs-vuoto-bg{filter:grayscale(1) blur(3.5px);opacity:.72;pointer-events:none;}
.cs-vuoto-bg .cs-svg{height:clamp(210px,26vw,270px);max-height:none;}
.cs-vuoto-o{position:absolute;inset:0;width:100%;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:7px;text-align:center;padding:20px;
  border:0;background:none;font:inherit;color:inherit;cursor:pointer;}
.cs-vuoto-t{font-size:1.02rem;font-weight:700;color:var(--ink);max-width:34ch;line-height:1.35;}
.cs-vuoto-m{font-size:.82rem;color:var(--muted);max-width:44ch;}
.cs-vuoto-cta{display:inline-flex;align-items:center;gap:7px;margin-top:5px;padding:9px 17px;
  border-radius:999px;background:var(--brand);color:#fff;font-size:.85rem;font-weight:600;
  transition:transform .2s var(--ease),box-shadow .2s ease;}
.cs-vuoto-o:hover .cs-vuoto-cta{transform:translateY(-1px);box-shadow:var(--shadow-sm);}
.cs-vuoto:hover .cs-vuoto-bg{opacity:.55;}

/* Pannelli sempre aperti: i dati si guardano, non si vanno a cercare dietro un clic.
   Sotto il titolo la riga di sintesi, che dice subito di che immobile si parla. */
.inf-riq{padding:16px clamp(18px,2vw,24px);}
.inf-riq-h{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;
  flex-wrap:wrap;margin-bottom:12px;}
.inf-riq-h h3{margin:0;font-size:1.05rem;color:var(--ink);}
.inf-riq-h .muted{font-size:.8rem;color:var(--muted);}
.inf-riq-s{display:block;margin-top:2px;font-size:.79rem;color:var(--muted);}
.inf-riq-d{margin:0 0 12px;font-size:.78rem;color:var(--muted);line-height:1.45;}
.inf-riq .ris-lav-dati{border-top:0;padding:0;gap:12px 18px;}

.inf-foto-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px;}
.inf-foto{display:block;border-radius:var(--r-sm);overflow:hidden;border:1px solid var(--line);
  aspect-ratio:4/3;background:var(--surface-2);}
.inf-foto img{width:100%;height:100%;object-fit:cover;display:block;}
@media (max-width:640px){
  .inf-sint{gap:16px;}
  .inf-sint-top{gap:10px;flex-wrap:wrap;justify-content:center;width:100%;}
  .inf-anello svg{width:96px;}
  .inf-radar svg{width:204px;}
}

/* L'app di rilievo montata nel pannello: sta dentro la dashboard, con il suo CSS
   mobile-first isolato. Alta quanto lo schermo meno la barra, cosi' si compila senza
   due barre di scorrimento che si rincorrono. */
.inf-app{border:1px solid var(--line);border-radius:var(--r);overflow:hidden;
  background:var(--surface);box-shadow:var(--shadow-sm);}
.inf-app-frame{display:block;width:100%;height:min(78vh,900px);border:0;}
.inf-foto-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px;}
.inf-foto{display:block;border-radius:var(--r-sm);overflow:hidden;border:1px solid var(--line);
  aspect-ratio:4/3;background:var(--surface-2);}
.inf-foto img{width:100%;height:100%;object-fit:cover;display:block;}
.inf-banda{font-size:.8rem;color:var(--muted);}
.inf-orfano{font-size:.8rem;font-weight:600;color:#7a5b00;}
.inf-azioni{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.inf-score{display:inline-flex;align-items:baseline;gap:1px;background:var(--surface-2);
  border:1px solid var(--line);border-radius:var(--r-pill);padding:5px 12px;}
.inf-score b{font-size:1.05rem;color:var(--ink);font-variant-numeric:tabular-nums;}
.inf-score span{font-size:.72rem;color:var(--muted);}
.inf-badge{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em;
  background:rgba(242,183,5,.2);color:#7a5b00;border-radius:var(--r-pill);padding:4px 10px;}
.inf-del{background:none;border:0;color:#c0392b;padding:5px;border-radius:8px;cursor:pointer;line-height:0;}
.inf-del:hover{background:rgba(200,60,40,.12);}
.inf-nota{font-size:.8rem;color:var(--muted);margin:16px 0 0;line-height:1.55;}

/* ---- Pannello Ristrutturazioni. Prefisso .ris-, appeso qui accanto a .inf- per lo
   stesso motivo: poche righe che vivono solo nella dashboard.
   I campi della riga "lavoro" ricalcano .field (stesso padding, bordo e cream) invece
   di essere un secondo stile: sono nella stessa scheda dei campi normali, e due input
   diversi a due centimetri di distanza si vedono. ---- */
.ris-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;flex-wrap:wrap;margin:0 0 24px;}
.ris-head h3{margin:0 0 6px;font-size:1.15rem;color:var(--ink);}
.ris-head .muted{margin:0;font-size:.88rem;color:var(--muted);max-width:60ch;line-height:1.6;}
.ris-head--sm{margin-bottom:18px;}
.ris-head--scheda{justify-content:flex-start;align-items:center;gap:16px;}
/* freccia indietro: sta prima del titolo, dov'e' l'occhio quando si vuole uscire */
.ris-back{flex:0 0 auto;width:44px;height:44px;display:inline-flex;align-items:center;justify-content:center;
  border-radius:50%;border:1px solid var(--line-strong);background:var(--surface);color:var(--ink);
  cursor:pointer;transition:background .2s ease,border-color .2s ease;}
.ris-back:hover{background:var(--surface-2);border-color:var(--ink);}
.ris-nota-ok{font-size:.88rem;color:var(--brand-dark);font-weight:600;margin:0 0 20px;}

/* elenco a colonne: bozze | in corso | conclusi */
.ris-colonne{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px;align-items:start;}
.ris-col{min-width:0;}
/* L'intestazione della colonna E' l'indicatore di stato: sulle card il tag non c'e'
   piu', quindi qui deve essere un'etichetta vera, colorata e leggibile da lontano. */
.ris-col-h{display:inline-flex;align-items:center;gap:10px;margin:0 0 16px;padding:8px 16px;
  border-radius:var(--r-pill);font-size:.82rem;font-weight:700;text-transform:uppercase;
  letter-spacing:.06em;background:var(--surface-2);color:var(--muted);border:1px solid transparent;}
.ris-col-h span{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px;
  padding:0 7px;border-radius:var(--r-pill);background:rgba(255,255,255,.75);
  font-size:.8rem;letter-spacing:0;color:inherit;}
.ris-col-h--bozze{background:rgba(242,183,5,.22);color:#6b5000;}
.ris-col-h--corso{background:rgba(0,115,61,.15);color:var(--brand-dark);}
.ris-col-h--chiusi{background:var(--surface-2);color:var(--muted);border-color:var(--line);}
.ris-col-lista{display:flex;flex-direction:column;gap:16px;}
.ris-col-vuota{margin:0;padding:22px 16px;font-size:.84rem;color:var(--muted);text-align:center;
  border:1px dashed var(--line-strong);border-radius:var(--r);}
.ris-card{display:flex;flex-direction:column;gap:8px;background:var(--surface);
  border:1px solid var(--line);border-radius:var(--r);padding:18px;}
.ris-card-tit{font-size:1rem;color:var(--ink);line-height:1.4;}
.ris-dove{font-size:.86rem;color:var(--text);line-height:1.5;}
.ris-meta{font-size:.83rem;color:var(--muted);line-height:1.55;}
.ris-inc{font-size:.8rem;color:var(--brand-dark);font-weight:600;line-height:1.5;}
.ris-card-foot{display:flex;align-items:center;justify-content:space-between;gap:16px;
  margin-top:14px;padding-top:16px;border-top:1px solid var(--line);}
.ris-del{background:none;border:0;color:#c0392b;padding:7px;border-radius:10px;cursor:pointer;line-height:0;}
.ris-del:hover{background:rgba(200,60,40,.12);}
/* Censimenti ha due soli stati: due colonne, non tre con una sempre vuota. */
.ris-colonne--due{grid-template-columns:repeat(2,minmax(0,1fr));}
@media (max-width:1080px){.ris-colonne{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media (max-width:760px){.ris-colonne{grid-template-columns:1fr;gap:28px;}}

/* scheda */
.ris-form{margin-bottom:22px;}
.ris-form .form-row{margin-top:20px;}          /* .form-row non e' un .field: il margine se lo prende qui */
.ris-form .form-row:first-child{margin-top:0;}
/* Righe da tre campi: un campo largo mezzo schermo e' solo spazio buttato, e la riga
   alta (cliente, tasto, stato) resta a un terzo l'una invece di occupare tutto. */
.ris-riga3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;
  align-items:end;margin-top:20px;}
.ris-riga3:first-child{margin-top:0;}
.ris-riga3 .field{margin-top:0;}
.ris-field-btn{justify-content:flex-end;}
.ris-field-btn .btn{width:100%;max-width:230px;}
@media (max-width:980px){.ris-riga3{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media (max-width:620px){.ris-riga3{grid-template-columns:1fr;}}

/* Immobile registrato: il riquadro sostituisce i campi, che non servono piu' a nessuno
   una volta che la casa ha un codice. */
.ris-imm{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:16px 18px;
  border:1px solid var(--line);border-radius:var(--r);background:var(--surface-2);}
.ris-imm-cod{flex:0 0 auto;font-weight:700;font-size:.82rem;letter-spacing:.04em;
  color:var(--brand-dark);background:rgba(0,115,61,.13);border-radius:var(--r-pill);padding:7px 13px;}
.ris-imm-txt{flex:1 1 240px;min-width:0;display:flex;flex-direction:column;gap:3px;}
.ris-imm-txt b{font-size:.97rem;color:var(--ink);}
.ris-imm-txt span{font-size:.82rem;color:var(--muted);}
.ris-imm-btn{display:flex;gap:10px;flex-wrap:wrap;}
.ris-imm-nota{margin:16px 0 0;font-size:.83rem;color:var(--brand-dark);line-height:1.55;}
.ris-cliente-row{display:flex;gap:14px;align-items:center;flex-wrap:wrap;}
.ris-cliente-row select{flex:1 1 280px;}
.ris-cliente-row .btn{flex:0 0 auto;}
.ris-cliente-info{display:flex;flex-direction:column;gap:4px;margin:14px 0 0;font-size:.85rem;color:var(--text);}
.ris-cliente-info span{font-size:.78rem;color:var(--muted);}
.ris-nc{margin-top:22px;padding:20px;border:1px dashed var(--line-strong);
  border-radius:var(--r);background:var(--surface-2);}
.ris-nc>b{display:block;font-size:.9rem;color:var(--ink);margin-bottom:4px;}
.ris-nc .form-row{margin-top:16px;}
.ris-nc .field{margin-top:16px;}
.ris-nc-azioni{display:flex;justify-content:flex-end;gap:12px;margin-top:14px;}
/* ---- Lavori del progetto: ogni lavoro e' una card di riepilogo, e si compila da un
   questionario a cinque passi (stessa barra dei passi del wizard incentivi). ---- */
.ris-lavori{display:flex;flex-direction:column;gap:16px;}
.ris-lav{display:flex;flex-direction:column;gap:12px;padding:18px;background:var(--surface-2);
  border:1px solid var(--line);border-radius:var(--r);}
.ris-lav-top{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap;}
.ris-lav-tit{display:flex;flex-direction:column;gap:3px;min-width:0;}
.ris-lav-tit b{font-size:1.02rem;color:var(--ink);line-height:1.35;}
.ris-lav-tit span{font-size:.82rem;color:var(--muted);}
.ris-lav-btn{display:flex;align-items:center;gap:8px;flex:0 0 auto;}
.ris-lav-tags{display:flex;flex-wrap:wrap;gap:8px;cursor:pointer;}
.ris-lav-dati{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px 18px;
  padding:14px 0 2px;border-top:1px solid var(--line);}
.ris-lav-dato{display:flex;flex-direction:column;gap:2px;min-width:0;}
.ris-lav-dato span{font-size:.76rem;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;}
.ris-lav-dato b{font-size:.92rem;color:var(--ink);}
.ris-lav-desc{margin:0;font-size:.88rem;color:var(--text);line-height:1.6;}
.ris-lav-vuoto{margin:0;font-size:.82rem;color:var(--muted);font-style:italic;}
/* Incentivi dentro la card del lavoro: prima erano un pannello a parte che ripeteva
   il nome del lavoro per dire le stesse cose, e allungava la pagina. */
.ris-lav-serv{margin-top:4px;padding-top:14px;border-top:1px solid var(--line);}
.ris-lav-serv h5{margin:0 0 10px;font-size:.74rem;font-weight:700;text-transform:uppercase;
  letter-spacing:.05em;color:var(--muted);}
.ris-serv{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;
  padding:10px 14px;border-radius:var(--r-sm);background:rgba(0,115,61,.08);
  border:1px solid rgba(0,115,61,.2);margin-bottom:8px;}
.ris-serv--no{background:var(--surface);border-color:var(--line);}
.ris-serv-txt{display:flex;flex-direction:column;gap:2px;flex:1 1 240px;min-width:0;}
.ris-serv-txt b{font-size:.88rem;color:var(--ink);}
.ris-serv--no .ris-serv-txt b{color:var(--muted);text-decoration:line-through;}
.ris-serv-txt span{font-size:.8rem;color:var(--muted);line-height:1.45;}
.ris-serv-no{font-size:.76rem;font-weight:700;color:var(--muted);text-transform:uppercase;
  letter-spacing:.04em;white-space:nowrap;}
.ris-serv-fatta{display:inline-flex;align-items:center;gap:6px;font-size:.8rem;font-weight:700;
  color:var(--brand-dark);white-space:nowrap;}
.ris-serv-fatta svg{width:15px;height:15px;}

/* Conferma prima di creare la pratica: si apre sotto la riga del servizio */
.ris-conf{display:flex;flex-direction:column;gap:6px;margin:-2px 0 10px;padding:14px 16px;
  border-radius:var(--r-sm);background:var(--surface);border:1.5px solid var(--brand);}
.ris-conf > b{font-size:.92rem;color:var(--ink);}
.ris-conf > span{font-size:.83rem;color:var(--muted);line-height:1.55;}
.ris-conf .form-note{margin-top:2px;min-height:0;font-size:.82rem;color:#c0432c;}
.ris-conf-btn{display:flex;justify-content:flex-end;gap:10px;margin-top:6px;flex-wrap:wrap;}

/* Avviso dopo la creazione: dice dov'e' finita la pratica e ci porta */
.ris-fatta{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;
  margin-bottom:18px;padding:14px 16px;border-radius:var(--r-sm);
  background:rgba(0,115,61,.1);border:1px solid rgba(0,115,61,.28);}
.ris-fatta div{display:flex;flex-direction:column;gap:2px;}
.ris-fatta b{font-size:.92rem;color:var(--brand-dark);}
.ris-fatta span{font-size:.83rem;color:var(--muted);}

/* questionario */
.ris-wiz .wiz-stepper{margin-bottom:26px;}
.ris-wiz-corpo{margin-top:6px;}
.ris-wiz-corpo .wiz-q{margin:22px 0 0;}
.ris-wiz-corpo > :first-child{margin-top:0;}
.ris-wiz-hint{margin:6px 0 0;font-size:.85rem;color:var(--muted);line-height:1.55;max-width:70ch;}
.ris-wiz-corpo .field{margin-top:14px;max-width:520px;}
.ris-wiz-corpo .ris-stanze{margin-top:14px;}
.ris-wiz-in{font-family:var(--sans);font-size:.97rem;padding:13px 15px;border-radius:var(--r-sm);
  border:1.5px solid var(--line-strong);background-color:var(--cream);color:var(--text);width:100%;}
select.ris-wiz-in{padding-right:44px;background-position:right 15px center;}
.ris-wiz-in:focus{outline:none;border-color:var(--brand);background-color:#fff;
  box-shadow:0 0 0 4px rgba(31,181,116,.16);}
.ris-wiz .wiz-nav{border-top:1px solid var(--line);padding-top:20px;}

/* stanze a tag: il campo del questionario e i tag di sola lettura nel riepilogo */
.ris-stanze{position:relative;display:flex;flex-wrap:wrap;align-items:center;
  gap:8px;min-height:48px;padding:7px 10px;border:1.5px solid var(--line-strong);
  border-radius:var(--r-sm);background:#fff;}
.ris-tag{display:inline-flex;align-items:center;gap:6px;padding:6px 8px 6px 13px;
  border-radius:var(--r-pill);background:rgba(0,115,61,.12);color:var(--brand-dark);
  font-size:.86rem;font-weight:600;}
.ris-tag--ro{padding:6px 13px;}
.ris-tag-x{display:inline-flex;align-items:center;justify-content:center;background:none;border:0;
  color:inherit;cursor:pointer;padding:3px;border-radius:50%;opacity:.65;line-height:0;}
.ris-tag-x:hover{opacity:1;background:rgba(0,115,61,.2);}
.ris-tag-add{display:inline-flex;align-items:center;gap:7px;padding:7px 13px;font:inherit;
  font-size:.86rem;color:var(--muted);background:none;cursor:pointer;
  border:1px dashed var(--line-strong);border-radius:var(--r-pill);}
.ris-tag-add:hover{border-color:var(--brand);color:var(--brand-dark);}
.ris-iv-del{width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;
  background:none;border:0;color:var(--muted);border-radius:10px;cursor:pointer;}
.ris-iv-del:hover{color:#c0392b;background:rgba(200,60,40,.1);}
.ris-pop{position:absolute;top:calc(100% + 6px);left:0;z-index:30;width:320px;max-width:100%;
  background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--r);
  box-shadow:0 14px 34px rgba(8,32,25,.18);padding:10px;}
.ris-pop-cerca{width:100%;padding:10px 12px;font:inherit;font-size:.9rem;
  border:1.5px solid var(--line-strong);border-radius:10px;background:var(--cream);color:var(--text);}
.ris-pop-cerca:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 4px rgba(31,181,116,.16);}
.ris-pop-lista{display:flex;flex-direction:column;max-height:236px;overflow-y:auto;margin-top:8px;}
.ris-pop-voce{text-align:left;background:none;border:0;padding:9px 10px;border-radius:8px;
  font:inherit;font-size:.9rem;color:var(--text);cursor:pointer;}
.ris-pop-voce:hover{background:var(--surface-2);}
.ris-pop-voce[hidden]{display:none;}
.ris-pop-vuoto{margin:10px 6px 4px;font-size:.83rem;color:var(--muted);line-height:1.5;}
.ris-inc-box{display:flex;flex-direction:column;gap:8px;margin-top:24px;padding:16px 18px;
  border-radius:var(--r);background:rgba(0,115,61,.07);border:1px solid rgba(0,115,61,.2);}
.ris-inc-box b{font-size:.9rem;color:var(--ink);}
.ris-inc-box>span{font-size:.88rem;color:var(--text);line-height:1.5;}
.ris-inc-box .ris-inc-nota{font-size:.79rem;color:var(--muted);}
.ris-inc-box--off{background:var(--surface-2);border-color:var(--line);}
.ris-azioni{display:flex;justify-content:flex-end;gap:12px;flex-wrap:wrap;margin-bottom:8px;}

/* ---- Computo metrico. Il listino per intero in sei categorie a fisarmonica: una
   barra colorata col totale, dentro una card per lavorazione con quantita' e parziale.
   Il colore di categoria vive in --cg, cosi' barra, pallino del riepilogo e bordo
   della card lo prendono da un posto solo. ---- */
.ris-cm-wrap{display:grid;grid-template-columns:minmax(0,1fr) 296px;gap:24px;align-items:stretch;}
.ris-cm-col{min-width:0;display:flex;flex-direction:column;gap:12px;}
/* la colonna si stira per tutta l'altezza del computo: e' lo spazio dentro cui il
   riepilogo puo' scorrere restando appiccicato in alto. Senza, sticky non fa niente. */
.ris-cm-side{align-self:stretch;}
@media (max-width:1080px){.ris-cm-wrap{grid-template-columns:1fr;}}

.ris-cm-g{--cg:var(--brand-dark);min-width:0;}
.ris-cm-g--rosso{--cg:#bf3f2b;}
.ris-cm-g--verde{--cg:#00733d;}
.ris-cm-g--blu{--cg:#2b5f9e;}
.ris-cm-g--giallo{--cg:#9a7400;}
.ris-cm-g--viola{--cg:#6b46a8;}
.ris-cm-g--arancio{--cg:#b85c17;}
.ris-cm-g--grigio{--cg:#6b7671;}

.ris-cm-gh{display:flex;align-items:stretch;gap:8px;}
.ris-cm-gt{flex:1 1 auto;min-width:0;display:flex;align-items:center;gap:14px;
  padding:14px 18px;border:1px solid var(--cg);border-radius:var(--r);cursor:pointer;
  background:color-mix(in srgb,var(--cg) 9%,transparent);font:inherit;text-align:left;}
.ris-cm-gt:hover{background:color-mix(in srgb,var(--cg) 16%,transparent);}
.ris-cm-gh-t{flex:1 1 auto;min-width:0;font-size:1rem;font-weight:700;color:var(--cg);}
.ris-cm-gh-n{flex:0 0 auto;font-size:.82rem;color:var(--muted);white-space:nowrap;}
.ris-cm-gh-n b{margin-left:6px;font-size:1rem;color:var(--ink);}
.ris-cm-chev{flex:0 0 auto;display:inline-flex;color:var(--cg);transition:transform .18s;}
.ris-cm-chev.su{transform:rotate(180deg);}
.ris-cm-gz{flex:0 0 auto;padding:0 14px;font:inherit;font-size:.8rem;font-weight:600;
  color:var(--muted);background:none;border:1px solid var(--line-strong);
  border-radius:var(--r);cursor:pointer;}
.ris-cm-gz:hover{color:#bf3f2b;border-color:#bf3f2b;}
.ris-cm-gb{display:flex;flex-direction:column;gap:12px;margin:12px 0 20px;padding-left:14px;
  border-left:2px solid color-mix(in srgb,var(--cg) 35%,transparent);}
.ris-cm-sez{display:flex;align-items:center;gap:9px;margin:10px 0 -2px;font-size:.74rem;
  font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);}
.ris-cm-sez span{padding:2px 8px;border-radius:var(--r-pill);letter-spacing:.02em;
  background:color-mix(in srgb,var(--cg) 14%,transparent);color:var(--cg);}

/* una lavorazione */
.ris-cm-v{display:flex;flex-direction:column;gap:12px;padding:16px 18px;
  background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r);}
.ris-cm-v-top{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;}
.ris-cm-v-tit{display:flex;gap:10px;min-width:0;flex:1 1 auto;}
.ris-cm-v-tit>div{min-width:0;}
.ris-cm-v-tit b{display:block;font-size:.95rem;font-weight:600;color:var(--ink);line-height:1.4;}
.ris-cm-v-um{display:block;margin-top:3px;font-size:.76rem;color:var(--muted);}
.ris-cm-v-tit--in{display:block;}
.ris-cm-v-n{flex:0 0 auto;font-size:.82rem;font-weight:700;color:var(--muted);
  font-variant-numeric:tabular-nums;padding-top:1px;}
.ris-cm-v-pz{flex:0 0 auto;display:flex;flex-direction:column;align-items:flex-end;gap:3px;}
.ris-cm-v-pz>span{font-size:.72rem;color:var(--muted);text-transform:lowercase;
  display:flex;align-items:center;gap:2px;}
.ris-cm-v-campi{display:flex;align-items:flex-end;gap:16px;}
.ris-cm-v-campi .field{margin-top:0;flex:1 1 0;min-width:0;}
.ris-cm-v-campi label{display:flex;align-items:baseline;gap:6px;}
.ris-cm-v-campi label em{font-style:normal;font-size:.74rem;color:var(--muted);}
.ris-cm-in{font:inherit;font-size:.94rem;padding:10px 12px;border-radius:10px;width:100%;
  border:1.5px solid var(--line-strong);background:var(--cream);color:var(--text);}
.ris-cm-in:focus{outline:none;border-color:var(--brand);background:#fff;
  box-shadow:0 0 0 3px rgba(31,181,116,.16);}
.ris-cm-in:read-only{background:var(--surface);color:var(--muted);}
.ris-cm-v-pz .ris-cm-in{width:104px;text-align:right;font-weight:700;padding:8px 10px;}
.ris-cm-um-in{width:52px;padding:2px 6px;font-size:.72rem;text-align:center;border-radius:7px;}
.ris-cm-p{display:block;padding:10px 12px;border-radius:10px;font-size:1rem;font-weight:700;
  color:var(--ink);background:var(--surface);border:1.5px solid var(--line);text-align:right;}
.ris-cm-ex-x{flex:0 0 auto;margin-bottom:4px;}
/* nel fuori listino la descrizione e' un campo, quindi il numero va allineato
   al testo dentro l'input e non al bordo della card */
.ris-cm-v--extra .ris-cm-v-n{padding-top:11px;}
.ris-cm-ex-piu{align-self:flex-start;}

/* Tasto info e pannello: quello che sul preventivo non si legge - com'e' fatto il
   prezzo, come si misura, quali altre voci tira dentro e quali la tirano dentro. */
.ris-cm-i-b{display:inline-flex;align-items:center;justify-content:center;vertical-align:-3px;
  margin-left:7px;padding:2px;border:0;border-radius:50%;background:none;color:var(--muted);
  cursor:pointer;line-height:0;}
.ris-cm-i-b:hover,.ris-cm-i-b.on{color:var(--brand-dark);background:rgba(0,115,61,.12);}
.ris-cm-i{border:1px solid var(--line-strong);border-radius:var(--r-sm);background:var(--surface);
  padding:14px 16px;display:flex;flex-direction:column;gap:14px;}
.ris-cm-i-top{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;}
.ris-cm-i-top b{font-size:.88rem;color:var(--ink);line-height:1.4;}
.ris-cm-i-x{flex:0 0 auto;padding:4px;border:0;background:none;color:var(--muted);
  border-radius:8px;cursor:pointer;line-height:0;}
.ris-cm-i-x:hover{color:var(--ink);background:var(--surface-2);}
.ris-cm-i-s h6{margin:0 0 6px;font-size:.71rem;font-weight:700;text-transform:uppercase;
  letter-spacing:.06em;color:var(--brand-dark);}
.ris-cm-i-s p{margin:0 0 4px;font-size:.85rem;color:var(--text);line-height:1.6;}
.ris-cm-i-s p:last-child{margin-bottom:0;}
.ris-cm-i-s code{font-family:var(--mono,ui-monospace,monospace);font-size:.82rem;
  padding:1px 5px;border-radius:5px;background:var(--surface-2);color:var(--ink);}
.ris-cm-i-s ul{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:3px;}
.ris-cm-i-s li{font-size:.85rem;color:var(--text);line-height:1.5;}
.ris-cm-i-s>div{display:flex;justify-content:space-between;gap:16px;padding:6px 0;
  font-size:.85rem;color:var(--text);border-bottom:1px solid var(--line);}
.ris-cm-i-s>div b{color:var(--ink);white-space:nowrap;}
.ris-cm-i-tot{border-bottom:0!important;padding-top:8px!important;font-weight:600;}
.ris-cm-i-tot span{color:var(--ink);}
/* il risultato del conto scritto nel campo quantita' */
.ris-cm-eq{display:block;margin-top:5px;font-size:.78rem;color:var(--brand-dark);
  font-weight:600;}

/* il ponte logico, sulla voce che lo riceve */
.ris-cm-sug{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:9px 13px;
  border-radius:var(--r-sm);background:rgba(242,183,5,.14);border:1px solid rgba(242,183,5,.5);
  font-size:.85rem;color:var(--text);}
.ris-cm-sug>span{flex:1 1 200px;min-width:0;line-height:1.45;}
.ris-cm-sug svg{flex:0 0 auto;color:#9a7400;}
.ris-cm-sug-b{display:flex;gap:8px;flex-wrap:wrap;}
.ris-cm-sug-b button{font:inherit;font-size:.8rem;font-weight:600;padding:6px 12px;
  border-radius:var(--r-pill);cursor:pointer;background:#fff;color:#7a5c00;
  border:1px solid rgba(242,183,5,.7);white-space:nowrap;}
.ris-cm-sug-b button:hover{background:rgba(242,183,5,.3);}

/* pezzi a stepper: su queste voci la quantita' non si scrive, si conta */
.ris-cm-ut{border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);
  overflow:hidden;}
.ris-cm-ut>b{display:block;padding:9px 13px;font-size:.74rem;text-transform:uppercase;
  letter-spacing:.05em;color:var(--muted);border-bottom:1px solid var(--line);}
.ris-cm-ut-r{display:flex;align-items:center;gap:12px;padding:7px 13px;font-size:.88rem;
  border-bottom:1px solid var(--line);}
.ris-cm-ut-r:last-child{border-bottom:0;}
.ris-cm-ut-r>span:first-child{flex:1 1 auto;min-width:0;color:var(--text);}
.ris-cm-ut-p{flex:0 0 64px;text-align:right;font-size:.82rem;color:var(--muted);}
.ris-cm-ut-n{flex:0 0 auto;display:flex;align-items:center;gap:2px;}
.ris-cm-ut-n b{min-width:26px;text-align:center;font-size:.92rem;color:var(--muted);
  font-variant-numeric:tabular-nums;}
.ris-cm-ut-n b.on{color:var(--brand-dark);}
.ris-cm-ut-b{width:28px;height:28px;font:inherit;font-size:1.05rem;line-height:1;cursor:pointer;
  color:var(--muted);background:var(--surface-2);border:1px solid var(--line-strong);
  border-radius:8px;}
.ris-cm-ut-b:hover{color:var(--brand-dark);border-color:var(--brand);background:#fff;}

/* misurazioni */
.ris-cm-mis-apri{display:inline-flex;align-items:center;gap:7px;align-self:flex-start;
  padding:6px 12px;font:inherit;font-size:.83rem;font-weight:600;color:var(--brand-dark);
  background:none;border:1px dashed var(--line-strong);border-radius:var(--r-pill);cursor:pointer;}
.ris-cm-mis-apri:hover{border-color:var(--brand);background:rgba(0,115,61,.06);}
.ris-cm-mis{display:flex;flex-direction:column;gap:10px;padding:14px 16px;
  border:1px solid var(--line-strong);border-radius:var(--r-sm);background:var(--surface);}
.ris-cm-mis>b{font-size:.86rem;color:var(--ink);}
.ris-cm-mis-r{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;}
.ris-cm-mis-r .field{margin-top:0;flex:1 1 110px;min-width:0;}
.ris-cm-mis-r .field:first-child{flex:2 1 180px;}
.ris-cm-mis-r label{font-size:.76rem;}
.ris-cm-mis-ris{flex:0 0 auto;display:flex;flex-direction:column;gap:3px;
  padding-bottom:11px;min-width:96px;}
.ris-cm-mis-ris span{font-size:.72rem;color:var(--muted);text-transform:uppercase;
  letter-spacing:.04em;}
.ris-cm-mis-ris b{font-size:.95rem;color:var(--brand-dark);}
.ris-cm-mis-x{margin-bottom:6px;}
.ris-cm-mis-az{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:2px;}
.ris-cm-hint{margin:0;font-size:.79rem;color:var(--muted);line-height:1.5;}
.ris-cm-vuoto{margin:0;font-size:.83rem;color:var(--muted);font-style:italic;}

/* somma, imprevisti, totale */
.ris-cm-fine{margin-top:12px;padding:18px 20px;border-radius:var(--r);
  background:var(--surface-2);border:1px solid var(--line);}
.ris-cm-fine-r{display:flex;align-items:center;justify-content:space-between;gap:20px;
  padding:8px 0;font-size:.92rem;color:var(--text);}
.ris-cm-fine-r b{font-size:1.02rem;color:var(--ink);font-variant-numeric:tabular-nums;}
.ris-cm-fine-r label{display:flex;align-items:center;gap:8px;margin:0;font-size:.92rem;
  color:var(--text);font-weight:400;}
.ris-cm-fine-r input{width:74px;padding:7px 9px;font:inherit;font-size:.9rem;text-align:right;
  border:1.5px solid var(--line-strong);border-radius:9px;background:var(--cream);color:var(--text);}
.ris-cm-fine-r input:focus{outline:none;border-color:var(--brand);background:#fff;}
.ris-cm-fine-r--tot{margin-top:6px;padding-top:14px;border-top:1px solid var(--line-strong);}
.ris-cm-fine-r--tot span{font-weight:700;color:var(--ink);}
.ris-cm-fine-r--tot b{font-size:1.5rem;color:var(--brand-dark);}
.ris-cm-nota{margin:14px 0 0;font-size:.78rem;color:var(--muted);line-height:1.55;}

/* riepilogo di lato */
.ris-cm-side{min-width:0;}
.ris-cm-side-in{position:sticky;top:96px;padding:18px 20px;border-radius:var(--r);
  background:var(--surface-2);border:1px solid var(--line);}
.ris-cm-side h4{margin:0 0 14px;font-size:.98rem;color:var(--ink);}
.ris-cm-side{--c-rosso:#bf3f2b;--c-verde:#00733d;--c-blu:#2b5f9e;--c-giallo:#d9a400;
  --c-viola:#6b46a8;--c-arancio:#b85c17;--c-grigio:#8a938f;}
.ris-cm-graf{margin-bottom:16px;}
.ris-cm-graf.vuoto{display:none;}
/* La torta e' un conic-gradient, non un SVG: le fette sono una stringa di percentuali
   da riscrivere a ogni cifra battuta, e i colori restano quelli del CSS. */
.ris-cm-torta{width:158px;height:158px;margin:2px auto 4px;border-radius:50%;
  position:relative;background:var(--line);}
.ris-cm-torta::after{content:"";position:absolute;inset:27%;border-radius:50%;
  background:var(--surface-2);}
.ris-cm-bar{display:none;height:12px;border-radius:var(--r-pill);overflow:hidden;
  background:var(--line);}
.ris-cm-bar i{display:block;min-width:0;}
.ris-cm-bar--rosso{background:var(--c-rosso);}
.ris-cm-bar--verde{background:var(--c-verde);}
.ris-cm-bar--blu{background:var(--c-blu);}
.ris-cm-bar--giallo{background:var(--c-giallo);}
.ris-cm-bar--viola{background:var(--c-viola);}
.ris-cm-bar--arancio{background:var(--c-arancio);}
.ris-cm-bar--grigio{background:var(--c-grigio);}
/* Sotto i 1080 il riepilogo va a tutta larghezza sopra al computo: li' la torta
   sprecherebbe altezza e la barra dice la stessa cosa in dodici pixel. */
@media (max-width:1080px){
  .ris-cm-torta{display:none;}
  .ris-cm-bar{display:flex;}
  .ris-cm-side-in{position:static;}
}
.ris-cm-r{margin:0;display:flex;flex-direction:column;gap:2px;}
.ris-cm-r>div{display:flex;align-items:baseline;justify-content:space-between;gap:12px;
  padding:5px 0;}
.ris-cm-r dt{display:flex;align-items:baseline;gap:8px;min-width:0;font-size:.84rem;
  color:var(--text);}
.ris-cm-r dt em{font-style:normal;font-size:.76rem;color:var(--muted);
  font-variant-numeric:tabular-nums;}
.ris-cm-r .ris-cm-dot{align-self:center;}
.ris-cm-r dd{margin:0;font-size:.85rem;font-weight:600;color:var(--ink);white-space:nowrap;
  font-variant-numeric:tabular-nums;}
.ris-cm-dot{flex:0 0 auto;width:9px;height:9px;border-radius:50%;}

/* Pianta dell'immobile nel dettaglio incarico: schemi affiancati, uno per stanza.
   Serve al tecnico prima di uscire, quindi sta in ① insieme a indirizzo e catasto. */
.dt-pianta{display:flex;gap:14px;flex-wrap:wrap;margin-top:12px;}
.dt-pianta-i{margin:0;max-width:200px;flex:0 1 auto;}
.dt-pianta-i svg{display:block;width:100%;height:auto;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm);}
.dt-pianta-i figcaption{font-size:.8rem;color:var(--muted);margin-top:5px;text-align:center;}
.dt-pianta-i figcaption b{color:var(--ink);}
/* X per eliminare un file caricato per sbaglio */
.dt-x{background:none;border:0;color:#c0392b;font-size:1.05rem;font-weight:800;line-height:1;cursor:pointer;padding:2px 6px;border-radius:6px;}
.dt-x:hover{background:rgba(200,60,40,.12);}
.dt-foto .dt-x{position:absolute;top:2px;right:2px;background:rgba(255,255,255,.92);padding:1px 5px;}
.dt-doc-wrap{display:inline-flex;align-items:center;gap:2px;}
/* Asterisco con popover (anno approssimativo) */
.dt-star{background:none;border:0;color:var(--brand);font-weight:800;font-size:1.1rem;line-height:1;cursor:help;padding:0 3px;vertical-align:top;}
.dt-sopr{display:flex;gap:10px;flex-wrap:wrap;align-items:center;position:relative;}
/* ---- Picker sopralluogo (spk): calendario custom in stile sito ---- */
.spk-btn{display:inline-flex;align-items:center;gap:9px;font:inherit;font-size:.92rem;font-weight:600;color:var(--ink);background:var(--surface);border:2px solid var(--line-strong);border-radius:var(--r-sm);padding:10px 14px;cursor:pointer;}
.spk-btn:hover{border-color:var(--brand);}
.spk-btn svg{width:17px;height:17px;color:var(--brand-dark);flex:0 0 auto;}
.spk{position:absolute;top:calc(100% + 8px);left:0;z-index:90;width:min(330px,92vw);background:var(--surface);border:2px solid var(--line-strong);border-radius:var(--r-lg);box-shadow:0 14px 40px rgba(8,32,25,.2);padding:14px 15px;}
.spk-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;}
.spk-head b{font-size:.92rem;color:var(--ink);}
.spk-nav{font:inherit;color:var(--brand-dark);background:var(--surface-2);border:1px solid var(--line);border-radius:9px;width:32px;height:32px;cursor:pointer;display:grid;place-items:center;}
.spk-nav svg{width:18px;height:18px;}
.spk-nav:hover{border-color:var(--brand);}
.spk-gg{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;margin-bottom:2px;}
.spk-gg span{text-align:center;font-size:.66rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);}
.spk-days{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;}
.spk-d{font:inherit;font-size:.82rem;font-weight:600;color:var(--ink);background:none;border:1px solid transparent;border-radius:9px;padding:7px 0;cursor:pointer;}
.spk-d:hover{background:rgba(30,138,79,.10);}
.spk-d.today{border-color:var(--brand);color:var(--brand-dark);}
.spk-d.on{background:var(--brand);border-color:var(--brand);color:#fff;}
.spk-d:disabled{color:rgba(8,32,25,.22);cursor:default;}
.spk-d:disabled:hover{background:none;}
.spk-time{display:flex;gap:14px;margin:12px 0;padding-top:11px;border-top:1px solid var(--line);}
.spk-time label{display:flex;align-items:center;gap:7px;font-size:.82rem;font-weight:600;color:var(--muted);}
.spk-time select{font:inherit;padding:7px 10px;border:1.5px solid var(--line-strong);border-radius:9px;background:var(--surface);color:var(--ink);}
.spk-foot{display:flex;justify-content:flex-end;gap:8px;}
/* Selettore date unico del sito: stesso calendario, ma ancorato al campo invece che
   al contenitore (posizione calcolata in JS), cosi' un solo pannello serve tutti i campi. */
.spk--float{position:fixed;top:0;left:0;}
/* il calendario del browser non deve mai comparire: apriamo il nostro */
input[type=date]::-webkit-calendar-picker-indicator{display:none;-webkit-appearance:none;}
input[type=date]{cursor:pointer;}
/* 16 voci in colonne verticali: 1–8 a sinistra, 9–16 a destra */
.ck-list{display:grid;grid-template-columns:1fr 1fr;grid-auto-flow:column;grid-template-rows:repeat(8,auto);gap:0 32px;align-items:start;}
@media (max-width:860px){.ck-list{grid-template-columns:1fr;grid-auto-flow:row;grid-template-rows:none;}}
.ck-help{font-size:.85rem;color:var(--muted);margin:0 0 12px;line-height:1.55;}
.ck-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:8px 0;border-bottom:1px dotted var(--line);}
.ck-l{font-size:.86rem;color:var(--ink);display:flex;gap:8px;min-width:0;}
.ck-n{flex:0 0 auto;font-weight:700;color:var(--brand);font-variant-numeric:tabular-nums;}
.ck-req{display:inline-block;font-size:.66rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em;padding:1px 7px;border-radius:var(--r-pill);vertical-align:middle;}
.ck-req--obbligatorio{background:rgba(192,67,44,.14);color:#a8341d;}
.ck-req--opportuno{background:var(--surface-2);color:var(--muted);}
.ck-req--condizionale{background:rgba(242,183,5,.2);color:#7a5b00;}
.ck-note{display:block;font-size:.76rem;color:var(--muted);margin-top:2px;}
.ck-opts{display:flex;gap:4px;flex:0 0 auto;}
.ck-opt{font-size:.74rem;font-weight:700;color:var(--muted);border:1px solid var(--line);border-radius:7px;padding:4px 9px;cursor:pointer;user-select:none;}
.ck-opt input{position:absolute;opacity:0;width:0;height:0;}
.ck-opt.on{background:var(--brand);border-color:var(--brand);color:#fff;}
.ck-note-field{display:block;margin-top:12px;font-size:.84rem;color:var(--muted);}
.ck-note-field textarea{display:block;width:100%;margin-top:5px;font:inherit;padding:9px 11px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink);resize:vertical;}
.ck-save{display:block;width:100%;text-align:center;padding-top:15px;padding-bottom:15px;font-size:1rem;}
/* Sezione APE (il cuore del profilo ingegnere) + dropzone drag&drop */
.dt-sec--ape{border:2px solid rgba(30,138,79,.45);background:linear-gradient(180deg,rgba(30,138,79,.06),rgba(30,138,79,0) 65%),var(--surface);}
.ape-zone{display:grid;gap:12px;}
.ape-drop{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;min-height:150px;padding:24px 18px;border:2px dashed rgba(30,138,79,.55);border-radius:var(--r-sm);background:rgba(30,138,79,.05);cursor:pointer;text-align:center;transition:background .15s,border-color .15s,transform .1s;}
.ape-drop:hover,.ape-drop.over{background:rgba(30,138,79,.13);border-color:var(--brand);}
.ape-drop.over{transform:scale(1.01);}
.ape-drop svg{width:30px;height:30px;}
.ape-drop b{font-size:1.02rem;color:var(--brand-dark);}
.ape-drop span{font-size:.83rem;color:var(--muted);}
.ape-drop--sm{min-height:96px;padding:14px 16px;margin-top:12px;}
.ape-sub + .ape-sub{margin-top:16px;}
.ape-sub-h{margin:0 0 8px;font-size:.8rem;font-weight:800;color:var(--brand-dark);text-transform:uppercase;letter-spacing:.05em;
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
/* la consegna su cui l'ingegnere sta lavorando adesso: l'altra resta visibile ma spenta */
.ape-sub--ora{border-left:3px solid #7a5cc0;padding-left:10px;}
.ape-sub-st{font-size:.62rem;font-weight:700;letter-spacing:.04em;padding:2px 7px;border-radius:var(--r-pill);
  background:var(--surface-2);color:var(--muted);text-transform:none;}
.ape-sub-st--in_verifica{background:rgba(242,183,5,.18);color:#7a5c00;}
.ape-sub-st--consegnato{background:rgba(30,138,79,.14);color:#1e8a4f;}
.ape-sub-sc{font-size:.62rem;font-weight:600;color:var(--muted);text-transform:none;letter-spacing:0;}
/* ---- Bacheca ingegneri: card degli incarichi pubblicati (accetta / rifiuta) ---- */
.tab-dot.tab-dot--neutro{background:var(--ink);}
.bac-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:14px;align-items:stretch;}
.bac-card{position:relative;display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm);padding:16px 18px;box-shadow:var(--shadow-sm);}
/* Card cliccabile: tutta l'area apre il dettaglio (tranne Accetta/Rifiuta/localita).
   Hover = come passare sopra "Vedi dettagli": bordo verde + freccia sottolineata */
.bac-card--click{cursor:pointer;transition:border-color .15s var(--ease),box-shadow .15s var(--ease),transform .15s var(--ease);}
.bac-card--click:hover{border-color:var(--brand);box-shadow:0 8px 24px rgba(8,32,25,.12);}
.bac-card--click:hover .bac-open{text-decoration:underline;color:var(--brand-dark);}
.bac-card--click:focus-visible{outline:2px solid var(--brand);outline-offset:2px;}
/* "tempo fa": da quanto e' stato pubblicato, in alto a destra */
.bac-eta{position:absolute;top:12px;right:14px;font-size:.72rem;font-weight:600;color:var(--muted);background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-pill);padding:2px 9px;white-space:nowrap;}
/* Titolo = tipo APE (elemento più importante); sotto la tipologia intervento + indirizzo */
.bac-head{display:flex;flex-direction:column;gap:3px;}
.bac-ape{margin:0;padding-right:74px;font-size:1.18rem;font-weight:800;color:var(--brand-dark);letter-spacing:.01em;}   /* spazio per il badge "tempo fa" */
.bac-serv{font-size:.9rem;font-weight:600;color:var(--muted);}
.bac-addr{font-size:.84rem;color:var(--muted);margin-top:2px;}
/* Indirizzo cliccabile → menù Copia / Google Maps */
.bac-addr--btn{display:inline-flex;align-items:center;gap:6px;text-align:left;font:inherit;font-size:.84rem;color:var(--ink);background:var(--surface-2);border:1px solid var(--line);border-radius:8px;padding:7px 10px;cursor:pointer;width:100%;}
.bac-addr--btn:hover{border-color:var(--brand);color:var(--brand-dark);}
.bac-addr--btn svg{flex:0 0 auto;color:var(--brand-dark);}
.addr-menu{position:absolute;z-index:1200;display:flex;flex-direction:column;min-width:190px;background:var(--surface);border:1.5px solid var(--line-strong);border-radius:10px;box-shadow:0 12px 32px rgba(8,32,25,.2);overflow:hidden;}
.addr-menu button,.addr-menu a{font:inherit;font-size:.88rem;font-weight:600;text-align:left;color:var(--ink);background:none;border:0;border-bottom:1px solid var(--line);padding:11px 14px;cursor:pointer;text-decoration:none;}
.addr-menu a:last-child{border-bottom:0;}
.addr-menu button:hover,.addr-menu a:hover{background:rgba(30,138,79,.09);color:var(--brand-dark);}
/* Blocco inferiore ancorato in basso → compenso/azioni/dettagli allineati tra le card */
.bac-foot{margin-top:auto;display:flex;flex-direction:column;gap:8px;padding-top:14px;}
.bac-comp{display:flex;align-items:baseline;gap:8px;margin-top:2px;}
.bac-comp span{font-size:.64rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);}
.bac-comp b{font-size:1.3rem;color:var(--brand-dark);font-variant-numeric:tabular-nums;}
.bac-actions{display:flex;gap:8px;margin-top:6px;}
.bac-actions .btn{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:7px;}
.bac-skip{background:var(--surface);border:1.5px solid rgba(200,60,40,.5);color:#a93226;}
.bac-skip:hover{background:rgba(200,60,40,.08);border-color:#a93226;color:#8a2a1a;}
.bac-open{font:inherit;font-size:.84rem;font-weight:600;color:var(--brand-dark);background:none;border:0;cursor:pointer;padding:2px 0;align-self:flex-start;margin-top:2px;}
.bac-open:hover{text-decoration:underline;}
.bac-actions{flex-wrap:wrap;}
.bac-motivo{flex:1 1 100%;font:inherit;font-size:.88rem;padding:9px 11px;border:1.5px solid var(--line-strong);border-radius:9px;background:var(--surface);color:var(--ink);}
.bac-rif-row{padding:8px 13px;opacity:.85;}
.bac-rif-row .inc-row-main b{font-size:.88rem;}
.bac-rif-mot{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:#7a5b00;background:rgba(242,183,5,.18);padding:3px 9px;border-radius:var(--r-pill);white-space:nowrap;}
.bac-dist{color:var(--brand-dark);font-weight:600;}
.bac-perso-lbl{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:#8a2a1a;background:rgba(200,60,40,.12);padding:3px 9px;border-radius:var(--r-pill);white-space:nowrap;}
/* pannelli espandibili "Incarichi rifiutati/persi": stesso <details> del wizard,
   pallino col totale accanto al titolo (giallo = rifiutati, rosso = persi) */
.bac-panel{margin-top:16px;}
.bac-panel .inc-list{gap:8px;}
.bac-count{flex:0 0 auto;min-width:20px;height:20px;padding:0 6px;border-radius:99px;font-size:.74rem;font-weight:800;display:inline-grid;place-items:center;}
.bac-count--yellow{background:#f2b705;color:#4a3600;}
.bac-count--red{background:#c83c28;color:#fff;}
/* "Invia ad APEIRON" con ripensamento: 10s in rosso con barra chiara che scorre */
.inc-rows{display:flex;flex-direction:column;gap:10px;}
.inc-lrow{cursor:pointer;}
.inc-invia{position:relative;overflow:hidden;}
.inc-invia span{position:relative;z-index:1;}
.inc-invia.inviando{background:#c0392b;border-color:#c0392b;color:#fff;}
.inc-invia.inviando:hover{background:#c0392b;}
.inc-invia.inviando::before{content:"";position:absolute;top:0;left:0;bottom:0;width:0;
  background:rgba(255,140,125,.55);animation:inviaBar 10s linear forwards;}
@keyframes inviaBar{from{width:0;}to{width:100%;}}
.inc-invia--big{display:block;width:100%;margin-top:12px;text-align:center;padding-top:13px;padding-bottom:13px;font-size:.98rem;}
/* Invia non ancora possibile (APE mancanti): sbiadito ma cliccabile (mostra popover) */
.inc-invia--blocked{opacity:.5;filter:grayscale(.35);cursor:help;box-shadow:none;}
.inc-invia--blocked:hover{transform:none;filter:grayscale(.35);box-shadow:none;}
.inc-invia--blocked::after{display:none;}
/* Punteggio riservato ingegneri (console APEIRON) */
.adm-ape-motivo{font:inherit;font-size:.86rem;padding:8px 10px;border:1.5px solid var(--line-strong);border-radius:9px;background:var(--surface);color:var(--ink);}
.adm-score{font-weight:800;font-variant-numeric:tabular-nums;font-size:.9rem;color:var(--brand-dark);background:rgba(30,138,79,.12);padding:6px 13px;border-radius:var(--r-pill);white-space:nowrap;}
.adm-score--neg{color:#a93226;background:rgba(200,60,40,.12);}
/* Pannello "modifiche non salvate" (guardia checklist) */
.inc-guard-ov{position:fixed;inset:0;z-index:1000;background:rgba(10,25,18,.45);display:grid;place-items:center;padding:18px;}
.inc-guard-box{background:var(--surface);border-radius:var(--r-lg);padding:22px 24px;max-width:440px;width:100%;box-shadow:0 18px 50px rgba(0,0,0,.28);}
.inc-guard-box h4{margin:0 0 6px;font-size:1.05rem;color:var(--ink);}
.inc-guard-box p{margin:0 0 16px;font-size:.9rem;color:var(--muted);}
.inc-guard-btns{display:grid;gap:8px;}
.inc-guard-btns .btn{width:100%;text-align:center;}
/* Dialoghi del sito (confirm/prompt/alert personalizzati) */
.app-dlg-ov{z-index:1300;}
.app-dlg-input{width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--ink);font:inherit;font-size:.95rem;margin:0 0 14px;}
.app-dlg-input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(0,166,81,.15);}
.btn--danger{background:#c0392b;border-color:#c0392b;color:#fff;}
.btn--danger:hover{background:#a93226;border-color:#a93226;color:#fff;}
.ing-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px;}
.ing-kpi{display:flex;flex-direction:column;gap:2px;padding:14px 16px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface-2);}
.ing-kpi-v{font-size:1.5rem;font-weight:800;color:var(--brand-dark);font-variant-numeric:tabular-nums;}
.ing-kpi-l{font-size:.78rem;color:var(--muted);font-weight:600;}
.ing-next{display:flex;flex-direction:column;gap:1px;text-align:left;font:inherit;width:100%;cursor:pointer;padding:10px 14px;margin-bottom:8px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);}
.ing-next:hover{border-color:var(--brand);}
.ing-next b{color:var(--ink);font-size:.92rem;}
.ing-next span{color:var(--muted);font-size:.82rem;}

/* ---- I miei dati: due colonne (Team sx, profilo dx) + gestione team ---- */
.dati-layout{display:grid;grid-template-columns:440px 1fr;gap:18px;align-items:start;}
@media(max-width:1000px){.dati-layout{grid-template-columns:1fr;}.dati-col-team{position:static!important;}}
.dati-col-team{position:sticky;top:90px;}
.dati-col-profilo{min-width:0;}
.team-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:14px;}
.team-list{display:flex;flex-direction:column;gap:8px;}
.team-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);}
.team-row--inv{border-style:dashed;}
.team-row--me{background:rgba(60,181,74,.12);border-color:rgba(30,138,79,.55);cursor:pointer;}
.team-row--me:hover{background:rgba(60,181,74,.2);}
.team-row-main{min-width:0;display:flex;flex-direction:column;gap:1px;}
.team-row-main b{font-size:.92rem;color:var(--ink);white-space:nowrap;}
.team-row-main .muted{font-size:.8rem;word-break:break-all;}
.team-you{font-size:.62rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em;background:#1e8a4f;color:#fff;padding:1px 7px;border-radius:var(--r-pill);vertical-align:middle;}
.team-row-side{display:flex;align-items:center;gap:8px;flex:0 0 auto;}
.team-ruolo{font:inherit;font-size:.82rem;padding:5px 8px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink);}
.team-ruolo-badge{font-size:.72rem;font-weight:700;color:var(--brand-dark);background:var(--surface-2);padding:4px 9px;border-radius:var(--r-pill);white-space:nowrap;}
.team-rm{width:26px;height:26px;border-radius:7px;border:1px solid var(--line);background:var(--surface);color:var(--muted);cursor:pointer;font-size:.8rem;line-height:1;}
.team-rm:hover{color:#c0432c;border-color:rgba(192,67,44,.4);}
.team-link{margin-top:14px;}
.team-link label{display:block;font-size:.78rem;font-weight:600;color:var(--muted);margin-bottom:5px;}
.team-link-row{display:flex;gap:8px;}
.team-link-row input{flex:1 1 auto;min-width:0;font:inherit;font-size:.82rem;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--surface-2);color:var(--ink);}

/* ===== Profilo & Team: scheda compatta + mini-agenda ===== */
.prof-top{display:grid;grid-template-columns:1.4fr 1fr;gap:16px;margin-bottom:18px;}
@media(max-width:900px){.prof-top{grid-template-columns:1fr;}}
/* Layout tab Profilo: griglia a due colonne uguali, pannelli compatti */
.prof-layout{display:grid;grid-template-columns:1fr 1fr;gap:18px;align-items:start;}
.pl-col{display:flex;flex-direction:column;gap:18px;min-width:0;}
.pl-row{display:grid;grid-template-columns:1fr 1fr;gap:18px;align-items:start;}
.pl-stack{display:flex;flex-direction:column;gap:18px;min-width:0;}
@media(max-width:820px){.pl-row,.prof-layout{grid-template-columns:1fr;}}
.prof-card{padding:18px 20px;}
.prof-card--compact{padding:14px 18px;}
.prof-card--compact .prof-logo{width:44px;height:44px;border-radius:11px;}
.prof-card--compact .prof-card-h h3{font-size:1rem;}
.prof-card-btns{display:flex;gap:8px;flex:0 0 auto;}
.prof-card-head{display:flex;align-items:center;gap:14px;}
.prof-logo{width:52px;height:52px;border-radius:14px;flex:0 0 auto;overflow:hidden;display:grid;place-items:center;background:var(--surface-2);border:1px solid var(--line);}
.prof-logo img{width:100%;height:100%;object-fit:cover;}
.prof-logo span{font-weight:800;color:var(--brand-dark);font-size:1.1rem;}
.prof-logo--me{background:rgba(60,181,74,.12);}
.prof-card-h{min-width:0;flex:1;}
.prof-card-h h3{font-size:1.1rem;color:var(--ink);margin:2px 0;line-height:1.2;word-break:break-word;}
.prof-card-h .muted{font-size:.82rem;}
.prof-grid{display:grid;grid-template-columns:1fr 1fr;gap:4px 18px;margin-top:14px;}
@media(max-width:520px){.prof-grid{grid-template-columns:1fr;}}
.prof-kv{display:flex;flex-direction:column;gap:1px;padding:6px 0;border-top:1px dotted var(--line);min-width:0;}
.prof-kv span{font-size:.7rem;color:var(--muted);text-transform:uppercase;letter-spacing:.03em;}
.prof-kv b{color:var(--ink);font-size:.9rem;word-break:break-word;}
.prof-main{display:grid;grid-template-columns:1fr 360px;gap:18px;align-items:start;}
@media(max-width:1000px){.prof-main{grid-template-columns:1fr;}.prof-col-side{position:static!important;}}
.prof-col-side{position:sticky;top:90px;}
.ag-day{margin-bottom:14px;}
.ag-day:last-child{margin-bottom:0;}
.ag-date{font-size:.76rem;font-weight:700;color:var(--brand-dark);text-transform:uppercase;letter-spacing:.03em;margin-bottom:4px;}
.ag-ev{display:flex;align-items:center;gap:8px;padding:7px 0;border-top:1px solid var(--line);font-size:.88rem;}
.ag-ev b{color:var(--ink);}
.ag-ev .muted{margin-left:auto;text-align:right;font-size:.76rem;}

/* ===== Modale profilo/membro: largo, centrato, una schermata ===== */
#profiloModal, #membroModal{align-items:center; padding:3vh 16px;}
#profiloModal .data-modal-panel, #membroModal .data-modal-panel{max-height:94vh; overflow:auto;}
.data-modal-panel--profile{max-width:920px; padding:18px 24px;}
.profile-head--compact{display:flex; align-items:center; gap:12px; flex-wrap:wrap; padding:4px 0 2px;}
.profile-head--compact .profile-logo-img{width:46px; height:46px; flex:0 0 auto; border-radius:12px;}
.profile-head--compact .profile-logo-actions{display:flex; align-items:center; gap:8px;}
.pf-grid{display:grid; grid-template-columns:1fr 1fr; gap:0 28px; align-items:start;}
@media(max-width:760px){.pf-grid{grid-template-columns:1fr;}}
.pf-grid .field{margin-top:9px;}
.pf-grid .profile-sec{margin:12px 0 0;}
.pf-col > .profile-sec:first-child{margin-top:2px;}
.pf-grid textarea{min-height:58px;}
.av-emoji{font-size:1.5rem; line-height:1;
  text-shadow:1px 0 0 #fff,-1px 0 0 #fff,0 1px 0 #fff,0 -1px 0 #fff,1px 1px 0 #fff,-1px -1px 0 #fff,1px -1px 0 #fff,-1px 1px 0 #fff;}
.data-modal-head-actions{display:flex; align-items:center; gap:10px;}
.mm-avatar{display:flex; gap:16px; align-items:flex-start; padding:4px 0 16px; border-bottom:1px solid var(--line); margin-bottom:16px;}
.mm-preview{width:64px; height:64px; flex:0 0 auto; font-size:1.2rem;}
.mm-preview .av-emoji{font-size:2rem;}
.mm-avatar-ctrl{flex:1; min-width:0;}
.mm-lbl{display:block; font-size:.72rem; font-weight:700; color:var(--muted); text-transform:uppercase; letter-spacing:.03em; margin-bottom:6px;}
.emoji-pick{display:flex; flex-wrap:wrap; gap:6px;}
.emoji-opt{width:34px; height:34px; border:1px solid var(--line); border-radius:9px; background:var(--surface); cursor:pointer; font-size:1.15rem; line-height:1; display:grid; place-items:center; padding:0; color:var(--muted); font-weight:700;}
.emoji-opt:hover{border-color:var(--brand);}
.emoji-opt.on{border-color:var(--brand); box-shadow:0 0 0 2px rgba(0,115,61,.25); background:var(--surface-2);}
.swatches{display:flex; flex-wrap:wrap; gap:8px; align-items:center;}
.swatch{width:28px; height:28px; border-radius:50%; border:2px solid #fff; box-shadow:0 0 0 1px var(--line); cursor:pointer; padding:0;}
.swatch.on{box-shadow:0 0 0 2px var(--ink);}
.swatch--custom{display:grid; place-items:center; overflow:hidden; position:relative; background:conic-gradient(red,orange,yellow,green,cyan,blue,violet,red);}
.swatch--custom input[type=color]{position:absolute; inset:-4px; width:140%; height:140%; border:0; padding:0; cursor:pointer; opacity:0;}
.invite-box{padding:28px;}
.team-ruolo-desc{margin:8px 0 0;font-size:.84rem;color:var(--muted);line-height:1.45;background:var(--surface-2);border-left:3px solid var(--brand);border-radius:8px;padding:9px 12px;}

/* ---- Richieste azienda-cliente (diagnosi/APE) ---- */
.rich-form{display:flex;flex-direction:column;gap:12px;max-width:640px;}
.rich-tipo{display:flex;gap:10px;flex-wrap:wrap;}
.rich-opt{display:inline-flex;align-items:center;gap:8px;padding:9px 14px;border:1.5px solid var(--line);border-radius:10px;cursor:pointer;font-size:.9rem;font-weight:600;color:var(--ink);}
.rich-opt:has(input:checked){border-color:var(--brand);background:rgba(60,181,74,.08);}
.rich-fields{display:flex;gap:12px;flex-wrap:wrap;}
.rich-form label{display:flex;flex-direction:column;gap:4px;font-size:.78rem;font-weight:600;color:var(--muted);}
.rich-fields label{flex:1 1 200px;}
.rich-form input,.rich-form textarea{font:inherit;padding:9px 12px;border:1px solid var(--line);border-radius:9px;background:var(--surface);color:var(--ink);}
.rich-form textarea{resize:vertical;}
.rich-foot{display:flex;align-items:center;gap:12px;}
.rich-stato--inviata{background:rgba(0,115,188,.14);color:var(--accent);}
.rich-stato--in_lavorazione{background:rgba(242,183,5,.2);color:#7a5b00;}
.rich-stato--completata{background:rgba(30,138,79,.16);color:var(--brand-dark);}

/* ---- Pagamenti: credito, ricarica, listino, movimenti ---- */
.pag-top{display:grid;grid-template-columns:1fr 1.4fr;gap:16px;align-items:stretch;}
@media(max-width:600px){.pag-top{grid-template-columns:1fr;}}
.pag-saldo{display:flex;flex-direction:column;justify-content:center;gap:6px;padding:22px;border-radius:var(--r);
  background:linear-gradient(135deg,#0e8a4f,#0a6f7a);color:#fff;}
.pag-saldo--zero{background:linear-gradient(135deg,#8a3a2c,#a8432c);}
.pag-saldo-l{font-size:.76rem;font-weight:600;opacity:.92;text-transform:uppercase;letter-spacing:.05em;}
.pag-saldo-v{font-size:1.9rem;font-weight:800;line-height:1.1;}
.pag-ricarica{padding:16px;border:1px solid var(--line);border-radius:var(--r);background:var(--surface);}
.pag-ricarica h4,.pag-sec h4{margin:0 0 8px;font-size:.95rem;color:var(--ink);}
.pag-ric-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center;}
.pag-ric-row input[type=number]{flex:1 1 120px;min-width:0;padding:9px 12px;border:1px solid var(--line);border-radius:10px;font:inherit;}
.pag-ric-file{display:block;margin-top:8px;font-size:.82rem;}
.pag-sec{margin-top:22px;}
.pag-listino{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:8px;}
.pag-price{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 13px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface-2);font-size:.9rem;}
.pag-price b{color:var(--brand-dark);}
.pag-movs{display:flex;flex-direction:column;gap:8px;}
.pag-mov{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:11px 14px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);}
.pag-mov-main{min-width:0;}
.pag-mov-main b{display:block;font-size:.92rem;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.pag-mov-date{font-size:.78rem;color:var(--muted);}
.pag-mov-att{color:#a8432c;font-weight:700;}
.pag-mov-side{display:flex;align-items:center;gap:10px;flex:0 0 auto;}
.pag-mov-imp{font-weight:700;font-variant-numeric:tabular-nums;}
.pag-mov--in .pag-mov-imp{color:#1e8a4f;}
.pag-mov--out .pag-mov-imp{color:#a8432c;}
.pay-body p{margin:0 0 8px;}
.pay-calc{margin-top:12px;display:flex;flex-direction:column;gap:2px;}
.pay-calc>div{display:flex;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px solid var(--line);font-size:.92rem;}
.pay-calc-res{border-bottom:0;font-size:1.05rem;padding-top:11px;}
.pay-calc-res b{color:var(--brand-dark);}
.pay-missing{color:#a8432c;font-weight:600;}

/* ---- Cliente pronto da trasmettere: pulsa in verde ---- */
.client-row--pronto{border-color:rgba(60,181,74,.55);animation:prontoPulse 1.8s ease-in-out infinite;}
@keyframes prontoPulse{
  0%,100%{box-shadow:0 0 0 0 rgba(60,181,74,.0);border-color:rgba(60,181,74,.35);}
  50%{box-shadow:0 0 0 4px rgba(60,181,74,.18);border-color:rgba(60,181,74,.85);}
}
@media (prefers-reduced-motion:reduce){
  .client-row--pronto{animation:none;border-color:rgba(60,181,74,.7);box-shadow:0 0 0 3px rgba(60,181,74,.14);}
}

/* ---- Popover (hint-pop): bollicina con freccia ---- */
.hint-pop{position:absolute;z-index:1200;max-width:230px;background:var(--ink);color:#fff;
  font-size:.82rem;font-weight:600;line-height:1.35;padding:9px 12px;border-radius:10px;
  box-shadow:0 10px 28px rgba(0,0,0,.24);opacity:0;transform:translateY(4px);
  transition:opacity .14s,transform .14s;pointer-events:none;}
.hint-pop.on{opacity:1;transform:translateY(0);}
.hint-pop::after{content:"";position:absolute;top:100%;left:var(--arrow,50%);transform:translateX(-50%);
  border:6px solid transparent;border-top-color:var(--ink);}
.hint-pop--below::after{top:auto;bottom:100%;border-top-color:transparent;border-bottom-color:var(--ink);}
.int-empty{padding:11px 14px;color:var(--muted);font-style:italic;border:1px dashed var(--line-strong);border-radius:var(--r-sm);font-size:.9rem;}
.int-row{border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface-2);padding:11px 13px;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;}
.int-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0;}
.int-serv{font-weight:700;color:var(--ink);font-size:.92rem;}
.int-stato{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em;padding:3px 9px;border-radius:var(--r-pill);white-space:nowrap;}
.int-stato--bozza{background:var(--surface);color:var(--muted);border:1px solid var(--line-strong);}
.int-stato--inviata{background:rgba(0,115,188,.14);color:#0073bc;}
.int-stato--lavorazione{background:rgba(242,183,5,.18);color:#8a6d00;}
.int-stato--approvata{background:rgba(0,166,81,.16);color:var(--brand-dark);}
.int-stato--annulla{background:rgba(242,183,5,.2);color:#8a6d00;border:1px solid rgba(242,183,5,.5);}
.int-stato--annulla-no{background:rgba(192,67,44,.12);color:#c0432c;border:1px solid rgba(192,67,44,.35);}
/* Tasto "Annulla pratica" sostituito quando la richiesta è in attesa di APEIRON */
.int-ann-wait{display:inline-flex;align-items:center;gap:6px;background:var(--surface-2);color:#8a6d00;border:1px solid rgba(242,183,5,.5);cursor:default;background-image:none;}
.int-ann-wait svg{width:15px;height:15px;}
/* Console admin: motivo della richiesta di annullamento */
.adm-ann-motivo{font-size:.84rem;color:var(--text);margin-top:2px;}
.int-actions{display:flex;align-items:center;gap:7px;flex-wrap:wrap;justify-content:flex-end;}
.int-sent{display:inline-flex;align-items:center;gap:6px;font-size:.82rem;font-weight:600;color:var(--brand-dark);}
.int-sent svg{width:15px;height:15px;}
.int-info,.int-del{flex:0 0 auto;width:34px;height:34px;border-radius:9px;border:1px solid var(--line);background:var(--surface);display:grid;place-items:center;cursor:pointer;color:var(--muted);transition:.2s;}
.int-info:hover{color:var(--accent);border-color:var(--accent);}
.int-del:hover{color:#c0432c;border-color:rgba(192,67,44,.4);background:rgba(192,67,44,.06);}
.int-info svg,.int-del svg{width:16px;height:16px;}
.int-dati--red,.int-docs--red,.int-pianta--red{background:#c0432c;border-color:#c0432c;color:#fff;background-image:none;}
.int-dati--yellow,.int-docs--yellow,.int-pianta--yellow{background:#f2b705;border-color:#f2b705;color:#3a2f00;background-image:none;}
.int-dati--blue,.int-docs--blue,.int-pianta--blue{background:#0073bc;border-color:#0073bc;color:#fff;background-image:none;}
.int-dati--red:hover,.int-docs--red:hover,.int-pianta--red:hover,
.int-dati--blue:hover,.int-docs--blue:hover,.int-pianta--blue:hover{filter:brightness(1.07);color:#fff;}
.int-dati--yellow:hover,.int-docs--yellow:hover,.int-pianta--yellow:hover{filter:brightness(1.04);color:#3a2f00;}
.dati-serv-pick{display:flex;flex-direction:column;gap:6px;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-sm);padding:12px 14px;margin-bottom:10px;}
.dati-serv-pick label{font-size:.82rem;font-weight:600;color:var(--ink);}
.dati-serv-pick select{font-family:inherit;font-size:.95rem;color:var(--ink);background:var(--surface);border:1.5px solid var(--line-strong);border-radius:9px;padding:10px 12px;cursor:pointer;}
.dati-serv-pick select:focus{outline:none;border-color:var(--brand);}
.dati-dispositivi{display:flex;flex-direction:column;gap:8px;background:rgba(0,166,81,.06);border:1px solid rgba(0,166,81,.25);border-radius:var(--r-sm);padding:11px 13px;margin-bottom:10px;}
.disp-bar-label{font-size:.74rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--brand-dark);}
.disp-tabs{display:flex;gap:7px;flex-wrap:wrap;align-items:center;}
.disp-tab{font:inherit;font-size:.84rem;font-weight:600;padding:7px 13px;border-radius:var(--r-pill);border:1.5px solid var(--line-strong);background:var(--surface);color:var(--ink);cursor:pointer;transition:.15s;}
.disp-tab:hover{border-color:var(--brand);}
.disp-tab.on{background:var(--brand);border-color:var(--brand);color:#fff;}
.disp-add{font:inherit;font-size:.84rem;font-weight:600;padding:7px 12px;border-radius:var(--r-pill);border:1.5px dashed var(--brand);background:transparent;color:var(--brand-dark);cursor:pointer;display:inline-flex;align-items:center;gap:5px;}
.disp-add svg{width:14px;height:14px;}
.disp-add:hover{background:rgba(0,166,81,.1);}
.disp-remove{align-self:flex-start;font:inherit;font-size:.8rem;font-weight:600;padding:5px 11px;border-radius:var(--r-pill);border:1px solid rgba(192,67,44,.4);background:transparent;color:#c0432c;cursor:pointer;}
.disp-remove:hover{background:rgba(192,67,44,.08);}

/* ---- Modale "Modifica dati" (scheda raccolta dati) ---- */
.data-modal-panel--wide{max-width:780px;}
.dati-gen-pick{display:flex;flex-direction:column;gap:6px;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-sm);padding:12px 14px;}
.dati-gen-pick label{font-size:.82rem;font-weight:600;color:var(--ink);}
.dati-gen-pick select{font-family:inherit;font-size:.95rem;color:var(--ink);background:var(--surface);border:1.5px solid var(--line-strong);
  border-radius:9px;padding:10px 12px;cursor:pointer;}
.dati-gen-pick select:focus{outline:none;border-color:var(--brand);}
.dati-body{display:block;max-height:58vh;overflow-y:auto;margin:14px 0;padding-right:4px;}
.dati-sec{margin-bottom:18px;}
.dati-sec-h{display:flex;align-items:center;gap:9px;font-size:.92rem;color:var(--ink);margin:0 0 10px;padding-bottom:7px;border-bottom:1px solid var(--line);}
.dati-sec-n{flex:0 0 auto;width:22px;height:22px;border-radius:50%;background:var(--brand);color:#fff;font-size:.76rem;font-weight:700;display:grid;place-items:center;}
.dati-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 16px;}
/* justify-content:flex-end: la riga della griglia stira i campi alla stessa altezza,
   così gli input restano allineati anche se un'etichetta va a capo e l'altra no. */
.dati-field{display:flex;flex-direction:column;justify-content:flex-end;gap:5px;min-width:0;}
.dati-field--full{grid-column:1 / -1;}
.dati-grp-h{grid-column:1 / -1;margin:2px 0 -4px;font-size:.82rem;font-weight:700;color:var(--ink);}
.dati-field>label{font-size:.8rem;font-weight:600;color:var(--muted);}
.dati-field input{font-family:inherit;font-size:.92rem;color:var(--ink);background:var(--surface);border:1.5px solid var(--line-strong);border-radius:8px;padding:9px 11px;width:100%;}
.dati-field input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(0,166,81,.12);}
.dati-opts{display:flex;flex-wrap:wrap;gap:7px;}
.dati-opt{position:relative;display:inline-flex;align-items:center;gap:7px;font-size:.84rem;color:var(--ink);background:var(--surface);
  border:1.5px solid var(--line-strong);border-radius:var(--r-pill);padding:7px 13px;cursor:pointer;transition:.15s;user-select:none;}
.dati-opt input{position:absolute;opacity:0;width:0;height:0;}
/* Destinazione d'uso: quattro voci di lunghezza molto diversa, a flex libero cadevano
   su tre righe con l'ultima da sola. Due colonne = due righe sempre, a qualsiasi
   larghezza della colonna. */
[data-fk="im_destinazione"] .dati-opts{display:grid;grid-template-columns:1fr 1fr;}
[data-fk="im_destinazione"] .dati-opt{justify-content:center;text-align:center;padding-left:10px;padding-right:10px;}
.dati-opt:hover{border-color:var(--brand);}
.dati-opt.on{background:rgba(0,166,81,.1);border-color:var(--brand);color:var(--brand-dark);font-weight:600;}
.dati-hint{text-align:center;color:var(--muted);background:var(--surface-2);border:1px dashed var(--line-strong);border-radius:var(--r-sm);padding:16px;font-size:.9rem;}
/* nota "cosa succede dopo": e' un impegno che prendiamo, non un avvertimento */
.dati-hint--ok{color:var(--brand-dark);background:rgba(0,166,81,.07);border-style:solid;border-color:rgba(0,166,81,.35);}
.field-fb{display:block;margin-top:4px;font-size:.74rem;color:var(--muted);}
/* senza messaggio non deve occupare spazio: sballerebbe l'input rispetto al vicino */
.field-fb:empty{display:none;}
.field-fb.is-ok{color:var(--brand-dark);font-weight:600;}
.field-fb.is-bad{color:#c0432c;font-weight:600;}
.dati-field[hidden]{display:none;}
.dati-field.is-disabled{opacity:.5;}
.dati-field input:disabled{background:var(--surface-2);cursor:not-allowed;color:var(--muted);}
.dati-field input[readonly]{background:var(--surface-2);color:var(--muted);cursor:not-allowed;}
.dati-field .req{color:#c0432c;font-weight:700;}
.dati-field.is-invalid>label{color:#c0432c;}
.dati-field.is-invalid input{border-color:#c0432c;box-shadow:0 0 0 3px rgba(192,67,44,.14);}
.dati-field--opts.is-invalid .dati-opts{outline:1.5px solid #c0432c;outline-offset:4px;border-radius:10px;}
.dati-altro{margin-top:6px;}
.dati-gen-pick.gen-needed{border-color:#c0432c;}
.dati-gen-pick.gen-needed>label{color:#c0432c;}
.dati-gen-pick.gen-needed select{border-color:#c0432c;}
.dati-gen-pick.attention{border-color:#c0432c;animation:genPulse 1.4s ease-in-out infinite;}
.dati-gen-pick.attention label{color:#c0432c;}
.dati-gen-pick.attention select{border-color:#c0432c;}
@keyframes genPulse{0%,100%{box-shadow:0 0 0 0 rgba(192,67,44,.5);}50%{box-shadow:0 0 0 8px rgba(192,67,44,0);}}
.dati-foot-actions{display:flex;gap:10px;flex-wrap:wrap;}
@media (max-width:560px){
  .dati-grid{grid-template-columns:1fr;}
  .dati-foot-actions{width:100%;}
  .dati-foot-actions .btn{flex:1;justify-content:center;}
}

/* ---- Pratiche: elenco + stato a pallini ---- */
.prat-list{display:grid;gap:10px;}
.prat-row{display:flex;align-items:center;gap:14px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm);padding:13px 16px;}
.prat-dot{flex:0 0 auto;width:14px;height:14px;border-radius:50%;box-shadow:0 0 0 4px rgba(8,32,25,.05);}
.prat-dot--inviata{background:#f2b705;}
.prat-dot--lavorazione{background:#ef7d00;}
.prat-dot--approvata{background:var(--brand-bright);}
.prat-main{flex:1;min-width:0;}
.prat-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.prat-top b{font-size:1rem;color:var(--ink);font-variant-numeric:tabular-nums;}
.prat-sub{font-size:.86rem;color:var(--muted);margin-top:2px;}
.prat-date{font-size:.8rem;color:var(--muted);margin-top:3px;}
.list-search{width:100%;max-width:380px;margin:10px 0;padding:9px 12px;font:inherit;font-size:.9rem;border:1px solid var(--line-strong);border-radius:var(--r-sm);background:var(--surface);color:var(--ink);}
.list-search:focus,.list-filter:focus{outline:none;border-color:var(--brand);}
.list-tools{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin:12px 0 2px;}
.list-tools .list-search{margin:0;flex:1 1 240px;max-width:none;}
.list-filter{font:inherit;font-size:.9rem;padding:9px 12px;border:1px solid var(--line-strong);border-radius:var(--r-sm);background:var(--surface);color:var(--ink);cursor:pointer;}
.client-info{flex:0 0 auto;width:38px;height:38px;border-radius:10px;border:1px solid var(--line);background:var(--surface);display:grid;place-items:center;cursor:pointer;color:var(--muted);transition:.2s;}
.client-info:hover{color:var(--accent);border-color:var(--accent);background:var(--surface-2);}
.client-info svg{width:17px;height:17px;}
.client-icons-group{display:flex;flex-direction:column;align-items:center;gap:4px;}
.client-icons-row{display:flex;gap:8px;}
.client-date{font-size:.72rem;color:var(--muted);white-space:nowrap;}
.client-head-right{display:flex;align-items:center;gap:9px;flex:0 0 auto;}
#prereqModal .data-modal-panel{margin:auto;}
.prereq-line{display:flex;gap:10px;align-items:flex-start;padding:11px 0;border-top:1px solid var(--line);}
.prereq-line:first-of-type{border-top:none;}
.prereq-ic{flex:0 0 auto;width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-weight:800;font-size:.78rem;}
.prereq-line.is-ok .prereq-ic{background:rgba(60,181,74,.18);color:var(--brand-dark);}
.prereq-line.is-bad .prereq-ic{background:rgba(192,67,44,.14);color:#c0432c;}
.prereq-line>div>b{display:block;font-size:.95rem;color:var(--ink);}
.prereq-line.is-bad>div>b{color:#c0432c;}
.prereq-line>div>span{font-size:.85rem;color:var(--muted);}
/* ---- Pratiche: tabella (Excel-like) ---- */
.prat-table-wrap{overflow-x:auto;margin-top:6px;border:1px solid var(--line);border-radius:var(--r-sm);}
.prat-table{width:100%;border-collapse:collapse;font-size:.9rem;}
.prat-table th{text-align:left;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);
  padding:11px 14px;border-bottom:2px solid var(--line);background:var(--surface-2);white-space:nowrap;}
.prat-table td{padding:12px 14px;border-bottom:1px solid var(--line);color:var(--ink);vertical-align:middle;}
.prat-table tbody tr:last-child td{border-bottom:none;}
.prat-table tbody tr:hover{background:var(--surface-2);}
.prat-td-nome{font-weight:600;}
.prat-td-num{font-variant-numeric:tabular-nums;color:var(--brand-dark);font-weight:600;white-space:nowrap;}
.prat-badge{display:inline-flex;align-items:center;gap:7px;font-size:.8rem;font-weight:600;padding:4px 11px;border-radius:var(--r-pill);background:var(--surface-2);color:var(--ink);white-space:nowrap;}
.prat-badge .prat-dot{width:9px;height:9px;box-shadow:none;}
.prat-badge--inviata{background:rgba(242,183,5,.16);color:#8a6d00;}
.prat-badge--lavorazione{background:rgba(239,125,0,.16);color:#b85c00;}
.prat-badge--approvata{background:rgba(60,181,74,.18);color:var(--brand-dark);}

/* ---- Monitoraggio pratiche: KPI + righe-card + timeline ---- */
.prat-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:14px;}
.prat-kpi{display:flex;flex-direction:column;gap:2px;align-items:flex-start;padding:12px 14px;border:1.5px solid var(--line);border-radius:var(--r-sm);background:var(--surface);cursor:pointer;transition:.15s;text-align:left;}
.prat-kpi:hover{border-color:var(--brand);}
.prat-kpi.on{border-color:var(--brand);box-shadow:0 0 0 3px rgba(0,166,81,.12);}
.prat-kpi-n{font-size:1.5rem;font-weight:800;color:var(--ink);line-height:1;}
.prat-kpi-l{font-size:.76rem;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.03em;}
.prat-kpi--inviata .prat-kpi-n{color:#b8901a;}
.prat-kpi--lavorazione .prat-kpi-n{color:#cf6a00;}
.prat-kpi--approvata .prat-kpi-n{color:var(--brand-dark);}
.prat-list-wrap{display:flex;flex-direction:column;gap:10px;}
.prat-row{display:flex;align-items:center;justify-content:space-between;gap:16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px;cursor:pointer;transition:border-color .2s,box-shadow .2s;}
.prat-row:hover{border-color:rgba(0,115,61,.3);box-shadow:var(--shadow-sm);}
.prat-row:focus-visible{outline:2px solid var(--brand);outline-offset:2px;}
.prat-row-main{min-width:0;flex:1;}
.prat-row-top{display:flex;align-items:center;gap:9px;flex-wrap:wrap;}
.prat-row-top b{font-size:1.02rem;color:var(--ink);}
.prat-num{font-size:.78rem;font-weight:700;color:var(--accent);background:rgba(0,115,188,.1);padding:2px 8px;border-radius:var(--r-pill);}
.prat-row-sub{margin:6px 0 10px;font-size:.84rem;color:var(--muted);}
.prat-meta-imp{font-weight:700;color:var(--brand-dark);}
.prat-meta-sc{font-weight:600;color:#b85c00;}
.prat-row-side{flex:0 0 auto;display:flex;flex-direction:column;align-items:flex-end;gap:8px;}
.prat-open{font-size:.8rem;font-weight:600;color:var(--accent);}
/* stepper di avanzamento */
/* max-width piu' largo dei 420px di prima: i serramenti hanno sei passi, non tre */
.prat-stepper{display:flex;align-items:center;gap:6px;max-width:640px;flex-wrap:wrap;}
.prat-step{display:flex;align-items:center;gap:6px;}
.prat-step-dot{width:13px;height:13px;border-radius:50%;background:var(--line-strong);flex:0 0 auto;transition:.2s;}
.prat-step-l{font-size:.74rem;font-weight:600;color:var(--muted);white-space:nowrap;}
/* data del passaggio sotto l'etichetta: eseguito il ... / in programma il ... */
.prat-step-d{display:block;font-size:.66rem;font-weight:500;color:var(--muted);}
.prat-step--ape_pre.cur .prat-step-dot,.prat-step--ape_post.cur .prat-step-dot{background:#7a5cc0;box-shadow:0 0 0 4px rgba(122,92,192,.22);}
/* date dei passaggi nel dettaglio pratica */
.prat-tappe{display:grid;gap:8px;}
.prat-tappa{display:grid;grid-template-columns:1fr auto auto;gap:8px;align-items:center;}
.prat-tappa-l{font-size:.86rem;font-weight:600;color:var(--ink);}
.prat-tappa-t,.prat-tappa-d{font:inherit;font-size:.82rem;padding:6px 8px;border:1px solid var(--line-strong);border-radius:8px;background:var(--surface);color:var(--ink);}
@media(max-width:560px){.prat-tappa{grid-template-columns:1fr;}}
.prat-step-line{flex:1;height:2px;background:var(--line-strong);min-width:14px;}
.prat-step.done .prat-step-dot,.prat-step.cur .prat-step-dot{background:var(--brand);}
/* Step completati: spunta SVG dentro il pallino (vale ovunque si usa lo stepper) */
.prat-step.done .prat-step-dot{background:var(--brand) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='4.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6L9 17l-5-5'/%3E%3C/svg%3E") center/8px 8px no-repeat;}
.prat-step.done .prat-step-l,.prat-step.cur .prat-step-l{color:var(--ink);}
.prat-step.cur .prat-step-dot{box-shadow:0 0 0 4px rgba(0,166,81,.18);}
.prat-step--inviata.cur .prat-step-dot{background:#f2b705;box-shadow:0 0 0 4px rgba(242,183,5,.22);}
.prat-step--lavorazione.cur .prat-step-dot{background:#ef7d00;box-shadow:0 0 0 4px rgba(239,125,0,.22);}
/* dettaglio pratica */
.prat-dt-dates{font-size:.88rem;color:var(--text);margin:14px 0 4px;}
.prat-nota-apeiron{display:flex;gap:10px;align-items:flex-start;background:rgba(0,166,81,.07);border:1px solid rgba(0,166,81,.3);border-radius:var(--r-sm);padding:11px 13px;margin:10px 0;}
.prat-nota-apeiron svg{width:18px;height:18px;flex:0 0 auto;color:var(--brand);margin-top:2px;}
.prat-nota-apeiron b{display:block;font-size:.82rem;color:var(--brand-dark);}
.prat-nota-apeiron span{font-size:.92rem;color:var(--ink);}
.prat-dt-sec{margin-top:16px;padding-top:14px;border-top:1px solid var(--line);}
.prat-dt-sec h4{font-size:.82rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:0 0 9px;}
.prat-dt-list{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:5px;font-size:.92rem;color:var(--ink);}
.prat-dt-list a{color:var(--accent);}
.prat-contacts{display:flex;gap:8px;flex-wrap:wrap;}
.prat-contact{font:inherit;font-size:.86rem;font-weight:600;color:var(--brand-dark);background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-pill);padding:7px 14px;text-decoration:none;transition:.15s;cursor:pointer;display:inline-flex;align-items:center;gap:6px;}
.prat-contact svg{width:13px;height:13px;flex:0 0 auto;}
.prat-contact:hover{border-color:var(--brand);background:rgba(0,166,81,.08);}
.prat-contact.is-copied{background:rgba(60,181,74,.16);border-color:rgba(60,181,74,.4);}
.prat-meta-edit{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap;}
.prat-meta-edit label{display:flex;flex-direction:column;gap:5px;font-size:.82rem;font-weight:600;color:var(--ink);}
.prat-meta-edit input{font:inherit;font-size:.92rem;padding:9px 11px;border:1.5px solid var(--line-strong);border-radius:8px;background:var(--surface);color:var(--ink);}
.prat-meta-edit input:focus{outline:none;border-color:var(--brand);}
@media (max-width:560px){.prat-kpis{grid-template-columns:repeat(2,1fr);}.prat-row{flex-direction:column;align-items:stretch;}.prat-row-side{flex-direction:row;align-items:center;justify-content:space-between;}}

/* ---- Panoramica (home) ---- */
.home-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:16px;}
.home-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:20px;}
.home-kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:16px 18px;display:flex;flex-direction:column;gap:3px;}
.home-kpi-n{font-size:1.8rem;font-weight:800;line-height:1;color:var(--ink);}
.home-kpi-l{font-size:.78rem;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.03em;}
.home-kpi--warn{border-color:rgba(239,125,0,.35);}.home-kpi--warn .home-kpi-n{color:#cf6a00;}
.home-kpi--ok{border-color:rgba(0,166,81,.35);}.home-kpi--ok .home-kpi-n{color:var(--brand-dark);}
.home-kpi--info{border-color:rgba(0,115,188,.35);}.home-kpi--info .home-kpi-n{color:var(--accent);}
.home-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px;}
.home-sec{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:16px 18px;}
.home-sec-h{display:flex;align-items:center;gap:9px;font-weight:700;color:var(--ink);font-size:.98rem;margin-bottom:12px;}
.home-sec-n{min-width:22px;height:22px;padding:0 7px;border-radius:var(--r-pill);background:var(--surface-2);color:var(--muted);font-size:.74rem;font-weight:700;display:grid;place-items:center;}
.home-list{display:flex;flex-direction:column;gap:8px;}
.home-item{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;text-align:left;cursor:pointer;
  background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-sm);padding:10px 12px;font:inherit;transition:.15s;}
.home-item:hover{border-color:var(--brand);background:rgba(0,166,81,.06);}
.home-item--urgent{border-color:rgba(192,67,44,.4);background:rgba(192,67,44,.05);}
.home-item-main{display:flex;flex-direction:column;gap:2px;min-width:0;}
.home-item-main b{color:var(--ink);font-size:.92rem;}
.home-item-sub{font-size:.78rem;color:var(--muted);}
.home-item-tag{flex:0 0 auto;font-size:.76rem;font-weight:700;color:var(--brand-dark);white-space:nowrap;}
.home-item--urgent .home-item-tag{color:#c0432c;}
.home-empty{font-size:.9rem;color:var(--muted);font-style:italic;margin:0;}
@media (max-width:560px){.home-kpis{grid-template-columns:repeat(2,1fr);}.home-top{flex-direction:column;}}

/* Panoramica stile dashboard (dz-*): stat card, grafico attività, promemoria, liste, anello, saldo */
.dz-head-actions{display:flex;gap:10px;flex-wrap:wrap;}
.dz-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:16px;}
.dz-stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:16px 18px;display:flex;flex-direction:column;gap:7px;}
.dz-stat--dark{background:var(--brand-dark);border-color:var(--brand-dark);color:#fff;}
.dz-stat-top{display:flex;justify-content:space-between;align-items:center;gap:8px;}
.dz-stat-t{font-size:.84rem;font-weight:700;color:var(--ink);}
.dz-stat--dark .dz-stat-t{color:#fff;}
.dz-go{width:30px;height:30px;border-radius:50%;border:1px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer;display:flex;align-items:center;justify-content:center;flex:0 0 auto;}
.dz-go svg{width:14px;height:14px;}
.dz-go:hover{background:var(--brand-dark);border-color:var(--brand-dark);color:#fff;}
.dz-stat--dark .dz-go{background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.35);color:#fff;}
.dz-stat--dark .dz-go:hover{background:#fff;color:var(--brand-dark);}
.dz-stat-n{font-size:2.15rem;font-weight:800;line-height:1;}
.dz-stat-sub{font-size:.74rem;color:var(--muted);}
.dz-stat--dark .dz-stat-sub{color:rgba(255,255,255,.78);}
/* riquadro-tasto: tutta la card porta alla sua sezione (i tasti interni restano loro) */
[data-goto].dz-stat,[data-goto].dz-card{cursor:pointer;transition:border-color .15s,box-shadow .15s,transform .15s;}
[data-goto].dz-stat:hover,[data-goto].dz-card:hover{border-color:var(--brand);box-shadow:0 6px 18px rgba(14,36,64,.09);transform:translateY(-1px);}
[data-goto].dz-stat:focus-visible,[data-goto].dz-card:focus-visible{outline:2px solid var(--brand);outline-offset:2px;}
[data-goto].dz-stat:hover .dz-go{background:var(--brand-dark);border-color:var(--brand-dark);color:#fff;}
[data-goto].dz-stat--dark:hover .dz-go{background:#fff;color:var(--brand-dark);}
.dz-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr;gap:16px;align-items:stretch;}
.dz-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:18px;min-width:0;}
.dz-card-h{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px;}
.dz-card-h h3{font-size:1rem;margin:0;}
.dz-card-h .muted{font-size:.75rem;}
.dz-count{min-width:22px;height:22px;padding:0 7px;border-radius:20px;background:var(--surface-2);color:var(--muted);font-size:.74rem;font-weight:700;display:grid;place-items:center;}
.dz-bars{display:flex;align-items:flex-end;gap:12px;height:170px;padding-top:20px;}
.dz-bar{flex:1;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:8px;min-width:0;}
.dz-bar-fill{width:68%;max-width:46px;border-radius:40px;background:var(--brand);position:relative;}
.dz-bar-fill--hi{background:var(--brand-dark);}
.dz-bar-fill--empty{background:repeating-linear-gradient(45deg,#dfe9e3 0 4px,#f4f8f6 4px 8px);}
.dz-bar-tip{position:absolute;top:-28px;left:50%;transform:translateX(-50%);background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:2px 8px;font-size:.68rem;font-weight:800;color:var(--ink);box-shadow:0 2px 6px rgba(0,0,0,.1);}
.dz-bar-l{font-size:.72rem;font-weight:700;color:var(--muted);}
.dz-prom{display:flex;flex-direction:column;gap:8px;}
.dz-prom h3{font-size:1.22rem;margin:2px 0 0;}
.dz-prom .muted{font-size:.84rem;}
.dz-prom-tag{align-self:flex-start;background:rgba(0,166,81,.12);color:var(--brand-dark);font-size:.74rem;font-weight:700;padding:4px 10px;border-radius:20px;}
.dz-prom-tag--urg{background:rgba(220,53,69,.12);color:#b02a37;}
.dz-prom-btn{margin-top:auto;width:100%;justify-content:center;}
.dz-rows{display:flex;flex-direction:column;gap:8px;}
.dz-row{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:none;border:0;padding:6px;border-radius:10px;cursor:pointer;font-family:inherit;}
.dz-row:hover{background:rgba(0,166,81,.07);}
.dz-row--static{cursor:default;}
.dz-row--static:hover{background:none;}
.dz-ava{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;color:#fff;font-weight:800;font-size:.7rem;flex:0 0 auto;}
.dz-row-main{display:flex;flex-direction:column;min-width:0;flex:1;gap:1px;}
.dz-row-main b{font-size:.86rem;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.dz-row-main span{font-size:.72rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.dz-row-tag{font-size:.68rem;font-weight:700;color:#cf6a00;background:rgba(239,125,0,.1);padding:3px 8px;border-radius:16px;flex:0 0 auto;max-width:45%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.dz-row-tag--ok{color:var(--brand-dark);background:rgba(0,166,81,.12);}
.dz-more{border:0;background:none;color:var(--brand-dark);font-weight:700;font-size:.8rem;cursor:pointer;margin-top:10px;padding:0;font-family:inherit;}
.dz-donut{position:relative;width:150px;height:150px;border-radius:50%;margin:6px auto 14px;}
.dz-donut::before{content:"";position:absolute;inset:22px;background:var(--surface);border-radius:50%;}
.dz-donut-c{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;}
.dz-donut-c b{font-size:1.55rem;}
.dz-donut-c span{font-size:.66rem;color:var(--muted);}
.dz-legend{display:flex;flex-wrap:wrap;gap:6px 14px;justify-content:center;font-size:.73rem;color:var(--muted);}
.dz-legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px;}
.dz-saldo{background:var(--brand-dark);border-color:var(--brand-dark);color:#fff;display:flex;flex-direction:column;gap:10px;justify-content:center;align-items:flex-start;}
.dz-saldo .dz-stat-t{color:rgba(255,255,255,.85);}
.dz-saldo b{font-size:2rem;line-height:1.05;}
.dz-saldo .dz-saldo-btn{background:#fff;color:var(--brand-dark);border-color:#fff;}
.dz-saldo .dz-saldo-btn:hover{background:rgba(255,255,255,.85);}
@media (max-width:1100px){.dz-grid{grid-template-columns:1fr 1fr;}}
@media (max-width:700px){.dz-grid{grid-template-columns:1fr;}.dz-stats{grid-template-columns:repeat(2,1fr);}}
@media (max-width:440px){.dz-stats{grid-template-columns:1fr;}}

/* ---- Archivio documenti ---- */
.doc-type-badge{display:inline-block;font-size:.72rem;font-weight:700;padding:3px 9px;border-radius:var(--r-pill);background:var(--surface-2);color:var(--brand-dark);white-space:nowrap;}
.doc-type-badge--foto{background:rgba(0,115,188,.12);color:#0073bc;}
.doc-type-badge--fattura{background:rgba(0,166,81,.14);color:var(--brand-dark);}
.doc-type-badge--bonifico,.doc-type-badge--accredito{background:rgba(242,183,5,.18);color:#8a6d00;}
.doc-type-badge--documento{background:rgba(14,36,64,.1);color:var(--ink);}
.doc-type-badge--delega,.doc-type-badge--scheda{background:rgba(239,125,0,.14);color:#b85c00;}
.doc-file{color:var(--muted);font-size:.85rem;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.doc-view{font-weight:600;color:var(--accent);text-decoration:none;white-space:nowrap;}
.doc-view:hover{text-decoration:underline;}

/* ---- Calendario ---- */
.cal-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap;}
.cal-nav{display:flex;align-items:center;gap:10px;}
.cal-arrow{width:34px;height:34px;border-radius:9px;border:1px solid var(--line-strong);background:var(--surface);color:var(--ink);cursor:pointer;display:grid;place-items:center;}
.cal-arrow svg{width:19px;height:19px;}
.cal-arrow:hover{border-color:var(--brand);color:var(--brand-dark);}
.cal-month{font-weight:700;color:var(--ink);min-width:130px;text-align:center;}
.cal-legend{display:flex;gap:18px;margin:14px 0 10px;font-size:.85rem;color:var(--text);}
.cal-legend span{display:inline-flex;align-items:center;gap:7px;}
.cal-dot{width:12px;height:12px;border-radius:50%;flex:0 0 auto;}
.cal-dot--vendita{background:var(--accent);}
.cal-dot--installazione{background:var(--brand);}
.cal-dot--sopralluogo{background:#7a5cc0;}   /* stesso viola degli step APE nelle pratiche */
.cal-grid-head{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-bottom:6px;}
.cal-grid-head>div{text-align:center;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);}
/* Trascinando si selezionano i GIORNI: senza user-select:none il trascinamento
   evidenziava i numeri delle caselle, che non serve a nessuno. */
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;
  user-select:none;-webkit-user-select:none;}
.cal-cell[data-d]{cursor:pointer;transition:background .12s ease,border-color .12s ease;}
.cal-cell.is-sel{background:rgba(0,115,61,.10);border-color:rgba(0,115,61,.32);}
.cal-cell.is-sel .cal-day{color:var(--brand-dark);}
/* primo e ultimo giorno dell'intervallo: si vede dove comincia e dove finisce */
.cal-cell.is-sel-da,.cal-cell.is-sel-a{border-color:var(--brand);box-shadow:inset 0 0 0 1px var(--brand);}
.cal-selbar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:14px;padding:12px 16px;
  border-radius:var(--r-sm);background:rgba(0,115,61,.08);border:1px solid rgba(0,115,61,.22);}
.cal-selbar b{font-size:1rem;color:var(--brand-dark);}
.cal-selbar>span{font-size:.85rem;color:var(--text);}
.cal-selbar .btn{margin-left:auto;}
.cal-selbar--off{margin-top:14px;font-size:.83rem;color:var(--muted);line-height:1.5;}
.cal-cell{min-height:84px;border:1px solid var(--line);border-radius:10px;background:var(--surface);padding:6px;display:flex;flex-direction:column;gap:3px;}
.cal-cell--empty{border:none;background:transparent;}
.cal-cell--today{border-color:var(--brand);box-shadow:0 0 0 2px rgba(0,166,81,.14);}
.cal-day{font-size:.78rem;font-weight:700;color:var(--muted);}
.cal-cell--today .cal-day{color:var(--brand-dark);}
.cal-ev{display:block;font-size:.7rem;font-weight:600;padding:2px 6px;border-radius:5px;color:#fff;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.cal-ev--vendita{background:var(--accent);}
.cal-ev--installazione{background:var(--brand);}
.cal-ev--sopralluogo{background:#7a5cc0;}
.cal-more{font-size:.68rem;color:var(--muted);font-weight:600;}
.cal-rows{display:flex;flex-direction:column;gap:8px;margin-top:12px;}
/* griglia e non flex-wrap: col flex il pannello stretto mandava "Installazione" a capo
   da sola, sotto al nome, con "Vendita" in alto a destra. Qui il nome sta su tutta la
   riga e le due date restano affiancate sotto, nell'ordine reale: prima vendita, poi posa. */
.cal-row{display:grid;grid-template-columns:1fr 1fr;gap:10px 12px;align-items:end;
  border:1px solid var(--line);border-radius:var(--r-sm);padding:11px 13px;background:var(--surface-2);}
.cal-row-cli{display:flex;flex-direction:column;min-width:0;grid-column:1/-1;}
.cal-row-cli b{color:var(--ink);font-size:.95rem;}
.cal-row-cli span{font-size:.8rem;color:var(--muted);}
.cal-date{display:flex;flex-direction:column;gap:4px;font-size:.76rem;font-weight:600;color:var(--ink);}
.cal-date input{font:inherit;font-size:.9rem;padding:7px 9px;border:1.5px solid var(--line-strong);border-radius:8px;background:var(--surface);color:var(--ink);}
.cal-date input:focus{outline:none;border-color:var(--brand);}
.cal-date{min-width:0;}
.cal-date input{width:100%;box-sizing:border-box;}
/* etichetta con il pallino della legenda: si capisce a colpo d'occhio a quale
   evento del calendario corrisponde il campo (blu = vendita, verde = posa) */
.cal-date-lbl{display:inline-flex;align-items:center;gap:6px;}
.cal-date-lbl .cal-dot{width:9px;height:9px;}
/* la data di vendita arriva dalla fattura: mostrata ma non modificabile */
.cal-date input[data-auto]{background:var(--surface-2);color:var(--muted);cursor:default;border-style:dashed;}
.cal-date input[data-auto]:focus{border-color:var(--line-strong);}
.cal-row-add{display:flex;gap:10px;flex-wrap:wrap;grid-column:1/-1;}
.cal-gcal{font-size:.78rem;font-weight:600;color:var(--accent);text-decoration:none;}
.cal-gcal:hover{text-decoration:underline;}
.cal-conn h4{font-size:1rem;color:var(--ink);}
.cal-feed{display:flex;align-items:center;gap:9px;margin:8px 0;flex-wrap:wrap;}
.cal-feed b{min-width:96px;}
.cal-feed input{flex:1;min-width:200px;font:inherit;font-size:.82rem;padding:8px 10px;border:1px solid var(--line-strong);border-radius:8px;background:var(--surface-2);color:var(--muted);}
.cal-help{margin-top:14px;}
.cal-help summary{cursor:pointer;font-weight:600;color:var(--brand-dark);}
.cal-steps{margin-top:10px;font-size:.9rem;color:var(--text);}
.cal-steps b{display:block;margin:12px 0 4px;color:var(--ink);}
.cal-steps ol{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:4px;}
@media (max-width:560px){.cal-cell{min-height:62px;}.cal-ev{font-size:.62rem;padding:1px 4px;}.cal-row-cli{min-width:120px;}}

/* ---- Guida fattura → gestionale ---- */
.btn--icon{padding:8px;width:38px;justify-content:center;}
.btn--icon svg{margin:0;}
.fattura-guide p{font-size:.92rem;line-height:1.55;color:var(--text);margin:8px 0;}
.fattura-guide h4{margin-top:18px;}
.fattura-note{background:rgba(242,183,5,.12);border:1px solid rgba(242,183,5,.4);border-radius:var(--r-sm);padding:11px 13px;font-size:.9rem;}
.fattura-note--soft{background:var(--surface-2);border-color:var(--line);color:var(--muted);}
.fattura-guide .info-steps{margin:8px 0;}

/* ---- Nota cliente: due sezioni (privata / APEIRON), dentro la panoramica ---- */
.nota-sec{border:1px solid var(--line);border-radius:var(--r-sm);padding:13px 15px;margin-bottom:14px;}
.nota-sec--privata{background:var(--surface-2);}
.nota-sec--apeiron{background:rgba(0,166,81,.05);border-color:rgba(0,166,81,.3);}
.nota-sec-h{display:flex;align-items:center;gap:8px;font-size:.96rem;color:var(--ink);}
.nota-sec-h svg{width:18px;height:18px;flex:0 0 auto;}
.nota-sec--privata .nota-sec-h svg{color:var(--muted);}
.nota-sec--apeiron .nota-sec-h svg{color:var(--brand);}
.nota-tag{font-size:.66rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:2px 8px;border-radius:var(--r-pill);background:var(--surface);color:var(--muted);border:1px solid var(--line);}
.nota-tag--share{background:rgba(0,166,81,.16);color:var(--brand-dark);border-color:transparent;}
.nota-sec textarea{width:100%;font:inherit;font-size:.92rem;padding:10px 12px;border:1.5px solid var(--line-strong);border-radius:8px;background:var(--surface);color:var(--ink);resize:vertical;}
.nota-sec textarea:focus{outline:none;border-color:var(--brand);}

/* ---- Card cliccabile: controlli (Dati cliente · Intervento) ---- */
.client-row{cursor:pointer;}
.client-row:focus-visible{outline:2px solid var(--brand);outline-offset:2px;}
.client-open-hint{font-size:.74rem;font-weight:600;color:var(--accent);opacity:0;transition:.15s;margin-left:auto;white-space:nowrap;}
.client-row:hover .client-open-hint{opacity:1;}
.client-controls{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-top:9px;}
.search-hl{background:#ffe45c;color:inherit;border-radius:3px;padding:0 1px;font-weight:600;}
/* Bottone "Annulla pratica" (rosso) nella lista clienti + bottone pericolo nel pannello motivazione */
.int-annulla{background:#c0432c;border-color:#c0432c;color:#fff;background-image:none;}
.int-annulla:hover{filter:brightness(1.07);color:#fff;}
.btn--danger{background:#c0432c;border-color:#c0432c;color:#fff;background-image:none;}
.btn--danger:hover{filter:brightness(1.07);color:#fff;}
#reasonModal .data-modal-panel{margin:auto;}
/* Alternative all'eliminazione (elimina solo la pratica / archivia) */
.reason-alts{display:flex;align-items:center;gap:8px;flex-wrap:wrap;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-sm);padding:10px 12px;margin-bottom:14px;}
.reason-alts[hidden],#reasonPraticaField[hidden]{display:none;}   /* display:flex vincerebbe su [hidden] */
.reason-alts-lbl{font-size:.82rem;font-weight:600;color:var(--muted);flex:1 1 100%;}
/* Barra verde: un'alternativa è stata scelta (es. "elimini solo la pratica") */
.reason-alts--chosen{background:rgba(0,166,81,.1);border-color:rgba(0,166,81,.35);color:var(--brand-dark);font-weight:600;font-size:.9rem;}
.reason-alts--chosen svg{width:17px;height:17px;flex:0 0 auto;color:var(--brand);}
/* Fondo lista clienti: due colonne (Clienti inviati | Archivio) */
.clients-bottom{grid-column:1 / -1;display:grid;grid-template-columns:1fr 1fr;gap:18px;align-items:start;margin-top:26px;}
.clients-col{display:flex;flex-direction:column;gap:12px;min-width:0;}
@media (max-width:920px){.clients-bottom{grid-template-columns:1fr;}}
.client-restore{margin-left:auto;flex:0 0 auto;}
.client-row--arch>.client-sent-bar .csum-name{color:var(--muted);}
#reasonModal select,#reasonModal textarea{width:100%;font:inherit;font-size:.95rem;padding:9px 11px;border:1.5px solid var(--line-strong);border-radius:8px;background:var(--surface);color:var(--ink);}
#reasonModal select:focus,#reasonModal textarea:focus{outline:none;border-color:var(--brand);}

/* ---- Panoramica cliente (modale) ---- */
#clienteOverviewModal .data-modal-panel{margin:auto;}
.ov-sec{border-top:1px solid var(--line);padding:14px 0;}
.ov-sec:first-child{border-top:none;padding-top:4px;}
.ov-sec h4{font-size:.82rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:0 0 10px;}
.ov-sec-h{display:flex;align-items:center;justify-content:space-between;gap:10px;}
.ov-sec-h h4{margin-bottom:0;}
.ov-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px 18px;}
.ov-grid > div{display:flex;flex-direction:column;gap:2px;min-width:0;}
.ov-grid-full{grid-column:1 / -1;}
.ov-grid span{font-size:.74rem;color:var(--muted);text-transform:uppercase;letter-spacing:.03em;}
.ov-grid b{font-size:.95rem;color:var(--ink);overflow:hidden;text-overflow:ellipsis;}
.ov-dash{color:var(--muted);}
.ov-empty{font-size:.9rem;color:var(--muted);font-style:italic;margin:0;}
.ov-nota-foot{display:flex;align-items:center;gap:12px;margin-top:2px;}
.ov-nota-btns{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px;}
.ov-nota-btns:empty{display:none;}
.ov-sec-hint{font-size:.72rem;font-weight:600;color:var(--muted);text-transform:none;letter-spacing:0;margin-left:6px;}
.ov-dati-cta{width:100%;justify-content:center;}
.ov-dati-warn{background:#f2b705;border-color:#f2b705;color:#3a2f00;background-image:none;}
.ov-dati-warn:hover{filter:brightness(1.04);color:#3a2f00;}
/* Barra intervento in panoramica: righe etichettate (Compila / Genera PDF) + riga d'invio */
.int-actions--full{flex:1 1 100%;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:8px;}
.int-acts-row{display:flex;align-items:center;gap:7px;flex-wrap:wrap;}
.int-acts-lbl{flex:0 0 86px;font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);}
.int-acts-row--main{border-top:1px dashed var(--line-strong);padding-top:10px;margin-top:2px;}
.int-acts-row--main .int-info{margin-left:auto;}
@media (max-width:560px){.ov-grid{grid-template-columns:1fr;}}
.prat-stato{flex:0 0 auto;font-family:inherit;font-size:.84rem;color:var(--ink);background:var(--surface);
  border:1.5px solid var(--line-strong);border-radius:8px;padding:7px 10px;cursor:pointer;}
.prat-stato:focus{outline:none;border-color:var(--brand);}

@media (max-width:560px){
  .client-row{flex-direction:column;}
  .client-actions{width:100%;justify-content:flex-start;}
  .data-modal-foot{flex-direction:column;align-items:stretch;}
  .data-modal-foot .btn{width:100%;justify-content:center;}
}

@media (max-width:860px){
  .dash-grid{grid-template-columns:1fr;}
  .dash-profile{position:static;}
}

/* =========================================================
   PRATICHE - catalogo tipi di pratica (Conto Termico) con prezzo
   ========================================================= */
.pratiche-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:22px;margin-top:50px;}
.pratica-card{display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r-lg);box-shadow:var(--shadow-sm);padding:26px 24px;
  transition:transform .35s var(--ease),box-shadow .35s ease,border-color .3s ease;}
.pratica-card:hover{transform:translateY(-6px);box-shadow:var(--shadow);border-color:rgba(0,115,61,.28);}
.pratica-ico{width:50px;height:50px;border-radius:14px;display:grid;place-items:center;margin-bottom:16px;flex:0 0 auto;
  background:linear-gradient(140deg,rgba(60,181,74,.18),rgba(0,115,188,.14));color:var(--brand-dark);}
.pratica-ico svg{width:25px;height:25px;}
.pratica-card h3{font-size:1.1rem;line-height:1.25;}
.pratica-card .pr-desc{color:var(--muted);font-size:.92rem;margin-top:9px;flex:1;}
.pratica-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;
  margin-top:20px;padding-top:18px;border-top:1px solid var(--line);}
.pratica-price{display:flex;flex-direction:column;line-height:1.05;}
.pratica-price b{font-size:1.5rem;color:var(--ink);font-weight:700;}
.pratica-price small{font-size:.72rem;color:var(--muted);margin-top:3px;letter-spacing:.01em;}
.pratica-foot .btn{padding:11px 18px;font-size:.88rem;white-space:nowrap;}

/* =========================================================
   DASHBOARD AZIENDA - hero avatar, tab bar, pannelli, profilo
   ========================================================= */
.dash-hero{display:flex;align-items:center;gap:22px;}
.dash-hero-av{flex:0 0 auto;width:74px;height:74px;border-radius:50%;overflow:hidden;display:grid;place-items:center;
  background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.28);color:#fff;font-weight:700;font-size:1.5rem;}
.dash-hero-av img{width:100%;height:100%;object-fit:cover;}
@media (max-width:560px){.dash-hero{flex-direction:column;align-items:flex-start;gap:14px;}}

/* Tab bar (stile toolbar partner) */
.dash-tabs{display:flex;gap:3px;background:linear-gradient(90deg,#0e8a4f 0%,#0a6f7a 100%);
  border-radius:var(--r);padding:6px;margin-bottom:24px;box-shadow:var(--shadow);
  overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;
  position:sticky;top:72px;z-index:40;}   /* resta visibile scrollando (sotto la navbar fissa) */
.dash-tabs::-webkit-scrollbar{display:none;}
.dash-tab{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:8px;white-space:nowrap;flex:1 1 auto;
  padding:11px 16px;border:none;background:none;color:rgba(255,255,255,.86);
  font-family:inherit;font-weight:600;font-size:.9rem;border-radius:10px;cursor:pointer;transition:background .2s,color .2s;}
@media (max-width:760px){.dash-tab{flex:0 0 auto;}}

/* Pallino notifica "nuovo cliente" + animazione di richiamo */
.tab-dot{position:absolute;top:5px;right:7px;min-width:9px;height:9px;border-radius:999px;
  background:#e5352b;box-shadow:0 0 0 2px rgba(255,255,255,.9);}
.tab-dot--count{min-width:17px;height:17px;top:3px;right:2px;padding:0 4px;
  font-size:.66rem;font-weight:800;color:#fff;display:inline-flex;align-items:center;justify-content:center;line-height:1;}
.tab-dot[hidden]{display:none;}   /* l'inline-flex sopra vincerebbe sull'attributo hidden */
.dash-tab.on .tab-dot{box-shadow:0 0 0 2px #fff;}
.tab-buzz{animation:tabBuzz .5s ease;}
@keyframes tabBuzz{
  0%,100%{transform:translateX(0);}
  15%{transform:translateX(-3px);}  30%{transform:translateX(3px);}
  45%{transform:translateX(-2px);}  60%{transform:translateX(2px);}
  75%{transform:translateX(-1px);}
}
@media (prefers-reduced-motion:reduce){.tab-buzz{animation:none;}}
.dash-tab svg{width:18px;height:18px;flex:0 0 auto;}
.dash-tab .caret{width:13px;height:13px;opacity:.75;}
.dash-tab:hover{background:rgba(255,255,255,.13);color:#fff;}
.dash-tab.on{background:#fff;color:var(--brand-dark);box-shadow:var(--shadow-sm);}

/* ---- Dashboard: layout con barra laterale (tasti indipendenti, l'attivo è più grande) ---- */
.dash-layout{display:flex;align-items:flex-start;gap:22px;}
.dash-main{flex:1 1 auto;min-width:0;}
.dash-side{flex:0 0 224px;width:224px;flex-direction:column;gap:9px;align-items:stretch;
  background:none;box-shadow:none;border-radius:0;padding:0;margin-bottom:0;overflow:visible;
  position:sticky;top:90px;z-index:30;}
.dash-side .dash-tab{flex:0 0 auto;width:100%;justify-content:flex-start;white-space:nowrap;
  padding:13px 15px;border:1px solid var(--line);background:var(--surface);color:var(--ink);
  border-radius:13px;font-size:.93rem;box-shadow:none;
  transition:transform .18s var(--ease),background .2s,color .2s,box-shadow .2s,padding .18s,font-size .18s;}
.dash-side .dash-tab svg{width:19px;height:19px;}
.dash-side .dash-tab:hover{border-color:rgba(0,115,61,.32);background:var(--surface-2);}
.dash-side .dash-tab.on{background:linear-gradient(120deg,#0e8a4f,#0a6f7a);color:#fff;border-color:transparent;
  font-size:1.06rem;font-weight:700;padding:18px 17px;box-shadow:0 10px 24px rgba(14,138,79,.3);transform:scale(1.025);}
.dash-side .dash-tab.on svg{width:22px;height:22px;}
.dash-side .dash-tab .tab-dot{position:static;margin-left:auto;}
/* "?" della guida, dentro la tab attiva: non e' un tasto annidato ma uno span cliccabile */
/* Il "?" e' gia' un cerchio: niente disco dietro (erano due cerchi concentrici sfalsati).
   L'SVG riempie tutta la casella, quindi il cerchio disegnato E' il cerchio del tasto. */
.tab-help{margin-left:auto;flex:none;display:block;width:26px;height:26px;color:#fff;cursor:help;
  border-radius:50%;transition:transform .18s var(--ease),opacity .18s var(--ease);opacity:.9;}
.dash-side .dash-tab .tab-help svg{width:100%;height:100%;display:block;}   /* batte .dash-tab.on svg{22px} */
.tab-help:hover,.tab-help:focus-visible{opacity:1;transform:scale(1.1);outline:none;}
.dash-tab .tab-help + .tab-dot{margin-left:6px;}   /* pallino notifiche accanto, non sopra */
@media (max-width:820px){
  .dash-layout{flex-direction:column;}
  .dash-side,.dash-main{width:100%;max-width:100%;min-width:0;}
  .dash-side{flex:1 1 auto;width:100%;flex-direction:row;gap:7px;position:static;
    overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;padding-bottom:4px;}
  .dash-side .dash-tab{width:auto;}
  .dash-side .dash-tab.on{transform:none;padding:14px 16px;font-size:1rem;}
}

/* Filtro pratiche (CT / ENEA / Tutte) */
.prat-filter{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:18px;}
.prat-chip{font-family:inherit;font-weight:600;font-size:.86rem;cursor:pointer;
  padding:8px 16px;border-radius:var(--r-pill);border:1px solid var(--line);
  background:var(--surface-2);color:var(--muted);transition:background .2s,color .2s,border-color .2s;}
.prat-chip:hover{color:var(--brand-dark);border-color:var(--brand);}
.prat-chip.on{background:linear-gradient(120deg,var(--brand),var(--accent));color:#fff;border-color:transparent;}

/* Panels + transition */
.dash-panel{display:none;}
.dash-panel.on{display:block;animation:dashFade .35s var(--ease);}
@keyframes dashFade{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:none;}}

@media (max-width:900px){.dash-cols{grid-template-columns:1fr;}}

/* "In arrivo" placeholder */
.panel.soon{text-align:center;padding:clamp(40px,7vw,72px) 24px;}
.soon-ico{width:64px;height:64px;border-radius:18px;display:grid;place-items:center;margin:0 auto 18px;
  background:linear-gradient(140deg,rgba(60,181,74,.16),rgba(0,115,188,.14));color:var(--brand-dark);}
.soon-ico svg{width:30px;height:30px;}
.panel.soon h2{font-size:1.4rem;}
.panel.soon p{color:var(--muted);max-width:48ch;margin:10px auto 0;}
.soon-badge{display:inline-block;margin-top:18px;font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  padding:6px 14px;border-radius:var(--r-pill);background:var(--surface-2);color:var(--brand-dark);}

/* Profilo azienda */
.profile-head{display:flex;gap:24px;align-items:center;flex-wrap:wrap;padding-bottom:22px;border-bottom:1px solid var(--line);}
.profile-logo{display:flex;gap:16px;align-items:center;}
.profile-logo-img{width:92px;height:92px;border-radius:20px;overflow:hidden;flex:0 0 auto;display:grid;place-items:center;
  background:linear-gradient(140deg,rgba(60,181,74,.18),rgba(0,115,188,.14));color:var(--brand-dark);font-weight:700;font-size:1.8rem;
  border:1px solid var(--line);}
.profile-logo-img img{width:100%;height:100%;object-fit:cover;}
.profile-logo-actions .btn{padding:9px 16px;font-size:.86rem;}
.profile-head-text{flex:1;min-width:220px;}
.profile-sec{font-size:.78rem;text-transform:uppercase;letter-spacing:.08em;color:var(--brand);font-weight:700;
  margin:24px 0 2px;padding-top:18px;border-top:1px solid var(--line);}
.profile-sec:first-of-type{border-top:none;padding-top:14px;}
.field.profile-cap{display:grid;grid-template-columns:1fr 84px;gap:12px;align-items:end;}
.field input[readonly]{background:var(--surface-2);color:var(--muted);cursor:not-allowed;}
.field input:disabled{background:var(--surface-2);color:var(--muted);cursor:not-allowed;opacity:1;}
/* Autocomplete comune - menù a tendina custom (il datalist nativo non mostra opzioni async) */
.ac-wrap{position:relative;}
.ac-list{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:30;list-style:none;margin:0;padding:4px;
  background:var(--surface);border:1px solid var(--line-strong);border-radius:12px;box-shadow:var(--shadow);
  max-height:220px;overflow-y:auto;display:none;}
.ac-list.show{display:block;}
.ac-item{padding:8px 11px;border-radius:8px;cursor:pointer;font-size:.86rem;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.ac-item:hover,.ac-item.hl{background:var(--surface-2);}
.loc-list .ac-list{top:calc(100% + 6px);padding:0;max-height:320px;background:#fff;border:1px solid #e3e9e5;border-radius:14px;box-shadow:0 16px 40px rgba(14,36,64,.16);}
.loc-list .ac-item{display:flex;align-items:center;gap:9px;padding:11px 14px;border-radius:0;border-bottom:1px solid #f1f4f2;font-size:.9rem;}
.loc-list .ac-item:last-child{border-bottom:0;}
.loc-list .ac-item::before{content:"";width:14px;height:14px;flex:0 0 14px;background:center/contain no-repeat url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%2300733d' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 21s7-5.5 7-12a7 7 0 1 0-14 0c0 6.5 7 12 7 12z'/%3E%3Ccircle cx='12' cy='9' r='2.5'/%3E%3C/svg%3E");}
.loc-list .ac-item:hover,.loc-list .ac-item.hl{background:#f2faf5;}

/* =========================================================
   STRUMENTI AI - Wizard incentivi + Diagnosi energetica
   ========================================================= */
.tool-panel{padding:clamp(20px,3vw,30px);}
.tool-head{margin-bottom:22px;}
.tool-head h2{font-size:1.3rem;margin-top:10px;}
.tool-head p{max-width:62ch;margin-top:8px;}
.tool-badge{display:inline-flex;align-items:center;gap:8px;font-size:.72rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;
  padding:7px 14px;border-radius:var(--r-pill);background:linear-gradient(120deg,rgba(60,181,74,.16),rgba(0,115,188,.14));color:var(--brand-dark);}
.tool-badge svg{width:16px;height:16px;}
.tool-badge--ok{background:var(--brand);color:#fff;}
.tool-disclaimer{display:flex;gap:10px;align-items:flex-start;margin-top:20px;font-size:.82rem;color:var(--muted);
  background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-sm);padding:13px 16px;}
.tool-disclaimer svg{width:18px;height:18px;color:var(--brand-dark);flex:0 0 auto;margin-top:1px;}

/* ---- Wizard ---- */
/* Stepper: cerchi numerati 1-4 con connettori (Cliente · Immobile · Interventi · Costi) */
/* titolo del pannello e passi sulla stessa riga: prima i passi erano una fascia a sé */
.tool-head--wiz{margin-bottom:16px;}
.tool-head-row{display:flex;align-items:flex-start;gap:28px;flex-wrap:wrap;}
/* Il titolo si allinea alla RIGA dei passi, non al centro del blocco passi (che comprende
   anche le etichette sotto i pallini): 6px = 17px del centro pallino - 11px del centro
   del testo. Niente margine da occhiello: qui sopra il badge non c'e' piu'. */
.tool-head-row h2{flex:0 0 auto;margin-top:6px;}
/* niente media query: se titolo e passi non ci stanno, ci pensa flex-wrap - e guarda la
   larghezza del PANNELLO, non quella della finestra */
.wiz-stepper-host{flex:1 1 340px;min-width:0;position:relative;}
/* conferma del Ricomincia: si apre sotto l'ultimo pallino, allineata a destra */
.wiz-st-pop{position:absolute;top:calc(100% + 10px);right:0;z-index:70;width:min(310px,92vw);
  background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--r-sm);
  box-shadow:0 18px 40px rgba(8,32,25,.18);padding:14px 16px;text-align:left;}
/* la punta si allinea al centro del pallino: la posizione arriva dal JS (--arrow) */
.wiz-st-pop::before{content:"";position:absolute;bottom:100%;left:var(--arrow,calc(100% - 30px));
  transform:translateX(-50%);border:7px solid transparent;border-bottom-color:var(--surface);}
.wiz-st-pop p{margin:0 0 12px;font-size:.86rem;color:var(--ink);}
.wiz-st-pop-btn{display:flex;gap:8px;flex-wrap:nowrap;}
/* i due tasti si spartiscono la riga: niente vuoto a destra nel riquadro */
.wiz-st-pop-btn .btn{white-space:nowrap;flex:1 1 auto;justify-content:center;padding-left:12px;padding-right:12px;}
.wiz-stepper{display:flex;align-items:flex-start;margin:0;}
.wiz-st{flex:1 1 0;min-width:0;position:relative;display:flex;flex-direction:column;align-items:center;text-align:center;
  font:inherit;background:none;border:0;padding:0;}
/* passo già fatto = tasto per tornarci: il cerchio cresce appena e la spunta diventa freccia */
button.wiz-st{cursor:pointer;}
button.wiz-st:hover .wiz-st-dot,button.wiz-st:focus-visible .wiz-st-dot{transform:scale(1.14);box-shadow:0 0 0 4px rgba(60,181,74,.20);}
button.wiz-st:focus-visible{outline:none;}
button.wiz-st:hover .wiz-st-label,button.wiz-st:focus-visible .wiz-st-label{color:var(--brand-dark);text-decoration:underline;}
.wiz-st-ic,.wiz-st-back,.wiz-st-down{display:flex;align-items:center;justify-content:center;}
.wiz-st-back,.wiz-st-down{display:none;}
/* Passo gia' fatto sotto il mouse: la spunta diventa una freccia GIU' che punta alla sua
   etichetta ("vai qui"). Nello stesso istante il passo attuale mostra la freccia INDIETRO
   ("da qui torni indietro"): le due icone insieme raccontano il movimento. */
button.wiz-st:hover:not(.wiz-st--restart) .wiz-st-ic,
button.wiz-st:focus-visible:not(.wiz-st--restart) .wiz-st-ic{display:none;}
button.wiz-st:hover .wiz-st-down,button.wiz-st:focus-visible .wiz-st-down{display:flex;}
/* Tutti i passi DOPO quello toccato (compreso l'attuale) mostrano la freccia indietro:
   si vede la strada che si sta ripercorrendo. I passi futuri restano com'erano. */
button.wiz-st:hover ~ .wiz-st:not(.is-todo):not(.wiz-st--restart) .wiz-st-ic,
button.wiz-st:focus-visible ~ .wiz-st:not(.is-todo):not(.wiz-st--restart) .wiz-st-ic{display:none;}
button.wiz-st:hover ~ .wiz-st:not(.is-todo):not(.wiz-st--restart) .wiz-st-back,
button.wiz-st:focus-visible ~ .wiz-st:not(.is-todo):not(.wiz-st--restart) .wiz-st-back{display:flex;}
/* Sesto pallino: non e' un passo, e' Ricomincia. L'icona non sparisce mai (le regole
   sopra valgono per i passi veri) e col mouse fa un giro completo su se stessa.
   Selettori con .wiz-stepper davanti: se no vince la regola generica di .is-active. */
.wiz-stepper .wiz-st--restart .wiz-st-dot{border-style:dashed;}
/* keyframe e non transizione: rotate(-360deg) come stato finale coincide con lo stato
   iniziale, e il browser potrebbe non animare nulla. */
@keyframes wizRestartSpin{from{transform:rotate(0deg);}to{transform:rotate(-360deg);}}
.wiz-stepper .wiz-st--restart.is-active .wiz-st-dot{background:var(--brand-dark);border-style:solid;border-color:var(--brand-dark);color:#fff;box-shadow:0 0 0 4px rgba(60,181,74,.20);}
.wiz-stepper .wiz-st--restart.is-active .wiz-st-label{color:var(--brand-dark);}
.wiz-stepper .wiz-st--restart:hover .wiz-st-dot,
.wiz-stepper .wiz-st--restart:focus-visible .wiz-st-dot{background:var(--brand-dark);border-style:solid;border-color:var(--brand-dark);color:#fff;transform:scale(1.14);}
.wiz-stepper .wiz-st--restart:hover .wiz-st-ic,
.wiz-stepper .wiz-st--restart:focus-visible .wiz-st-ic{animation:wizRestartSpin .6s var(--ease);}
.wiz-st:not(:last-child)::after{content:"";position:absolute;top:17px;left:50%;width:100%;height:3px;
  background:var(--line-strong);border-radius:3px;transform:translateY(-50%);transition:background .45s var(--ease);}
.wiz-st.is-done::after{background:var(--brand-bright);}
.wiz-st-dot{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;
  width:34px;height:34px;border-radius:50%;font-size:.9rem;font-weight:700;font-variant-numeric:tabular-nums;
  background:var(--surface);border:2px solid var(--line-strong);color:var(--muted);
  transition:background .3s var(--ease),border-color .3s var(--ease),color .3s var(--ease),box-shadow .3s var(--ease),transform .22s var(--ease);}
.wiz-st-dot svg{width:16px;height:16px;}
.wiz-st.is-done .wiz-st-dot{background:var(--brand-bright);border-color:var(--brand-bright);color:#fff;}
.wiz-st.is-active .wiz-st-dot{background:var(--ink);border-color:var(--ink);color:#fff;box-shadow:0 0 0 4px rgba(60,181,74,.22);}
.wiz-st-label{margin-top:9px;font-size:.72rem;font-weight:600;letter-spacing:.01em;line-height:1.2;
  color:var(--muted);transition:color .3s var(--ease);}
.wiz-st.is-active .wiz-st-label{color:var(--ink);}
.wiz-st.is-done .wiz-st-label{color:var(--brand-dark);}
@media (max-width:480px){
  .wiz-st-dot{width:30px;height:30px;font-size:.82rem;}
  .wiz-st:not(:last-child)::after{top:15px;}
  .wiz-st-label{font-size:.64rem;}
}
/* domanda, spiegazione e primo gruppo: con la riga dei passi spostata in alto erano
   finiti uno addosso all'altro. */
.wiz-q{font-size:1.22rem;margin-top:0;}
.wiz-sub{margin-top:8px;font-size:.92rem;line-height:1.5;}
.wiz-sub + .wiz-group,.wiz-q + .wiz-group{margin-top:26px;}
/* gruppi corti su due colonne: affiancati riempiono il vuoto a destra invece di
   incolonnarsi tutti a sinistra. Margine solo sotto, se no la seconda colonna parte piu' bassa. */
/* regione e comune: affiancati, larghi uguali e solo quanto serve */
/* Passo Località, tre colonne: mappa | campi | scheda del comune.
   L'altezza la detta la mappa ed e' FISSA: prima la calcolava il JS sull'altezza della
   scheda del comune, che pero' esiste solo dopo aver scelto - finche' non sceglievi
   restava una mappa francobollo con mezzo pannello vuoto accanto. */
/* 300px e non 280: i due campi col loro testo sotto misurano 286, e con la mappa a 280
   l'ultima riga sbordava di 6px invece di chiudere allineata al fondo del riquadro. */
.wiz-loc-wrap{--wiz-loc-h:300px;--wiz-loc-w:300px;display:flex;gap:44px;align-items:flex-start;
  flex-wrap:wrap;justify-content:center;margin-top:22px;}
/* Riquadro della mappa a misura FISSA in larghezza e altezza: e' il disegno a
   rimpicciolirsi dentro (preserveAspectRatio di serie), non il riquadro a cambiare
   forma. Prima l'altezza era fissa e la larghezza la dettava il rapporto della regione:
   scrivendo il comune il pannello si allargava di colpo sotto gli occhi. */
.wiz-loc-map{flex:0 0 auto;width:var(--wiz-loc-w);height:var(--wiz-loc-h);}
.wiz-loc-map .sim-map{width:100%;height:100%;}
.wiz-loc-map .sim-map svg{width:100%;height:100%;max-width:none;max-height:none;}
/* i due campi occupano l'altezza della mappa: il secondo chiude in basso, allineato
   al bordo inferiore del riquadro invece di lasciare un gradino */
.wiz-loc-mid{flex:0 1 320px;min-width:260px;height:var(--wiz-loc-h);display:flex;flex-direction:column;
  justify-content:space-between;gap:14px;}
/* Larghezza a misura del contenuto, non "tutto lo spazio che avanza": la scheda del
   comune ha quattro numeri, stirarla su mezzo schermo la faceva sembrare vuota. */
.wiz-loc-right{flex:0 1 600px;min-width:0;}
.wiz-cc{margin:0;max-width:none;}   /* scheda dati del comune: la larghezza la da' la colonna */
.wiz-loc-right .ct-cc-tiles{grid-template-columns:repeat(auto-fit,minmax(112px,1fr));gap:10px;}
.wiz-loc-right .ct-cc-tile{padding:13px 10px;}
.wiz-loc-right .ct-cc-tile b{font-size:1.2rem;}
.wiz-loc-right .ct-cc-head{font-size:1.02rem;}
/* segnaposto finche' il comune non c'e': tiene la colonna e dice cosa arrivera' */
.wiz-loc-vuoto{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;
  min-height:var(--wiz-loc-h);padding:18px 22px;text-align:center;border:1.5px dashed var(--line);
  border-radius:var(--r-sm);background:var(--surface-2);}
.wiz-loc-vuoto svg{width:26px;height:26px;color:var(--muted);opacity:.7;}
.wiz-loc-vuoto p{margin:0;max-width:34ch;font-size:.84rem;color:var(--muted);line-height:1.5;}
.wiz-loc-vuoto b{color:var(--ink);}

/* flex-basis + max-width invece di una media query: si affiancano finche' il PANNELLO
   ha spazio, senza dipendere dalla larghezza della finestra. */
.wiz-loc-f{flex:0 0 auto;max-width:none;margin-top:0;}
/* stessa altezza esatta: input e select hanno line box diverse a parita' di padding */
.wiz-loc-f select,.wiz-loc-f input{width:100%;line-height:1.5;}
.wiz-loc-note{margin-top:6px;font-size:.8rem;color:var(--muted);min-height:2.4em;}
@media (max-width:520px){.wiz-loc-note{min-height:0;}}
/* Flex e non column-count: con le colonne CSS i gruppi si impilavano a due per volta
   e non c'era modo di metterne tre in fila. Cosi' ogni gruppo tiene la larghezza delle
   SUE card (flex:0 0 auto, niente shrink) e ne entrano in riga quanti ci stanno.
   max-width:100% e' la valvola: su pannello stretto il gruppo si restringe e sono le
   sue card ad andare a capo, invece di sfondare il riquadro. */
/* row-gap:0 + margine sui gruppi invece di gap verticale: l'elemento che forza l'a-capo
   e' alto zero ma occupa comunque una riga flex, quindi col row-gap si prendeva un gap
   PRIMA e uno DOPO e l'ultima riga finiva staccata il doppio dalle altre. */
.wiz-groups-flow{display:flex;flex-wrap:wrap;align-items:flex-start;column-gap:26px;row-gap:0;
  margin-top:26px;margin-bottom:-26px;}
/* La larghezza la danno le CARD (--n = quante, --cw = quanto larga l'una), non il titolo:
   lasciando decidere al contenuto, i titoli lunghi ("Il passaggio alla biomassa non è
   incentivabile...") gonfiavano il gruppo e in riga ce ne stavano due invece di tre.
   Ora il titolo va a capo dentro la larghezza delle sue card. */
/* flex-grow:1 -> lo spazio che avanza in fondo alla riga se lo dividono i gruppi di
   QUELLA riga (e dentro, le loro card): prima restava un buco a destra. La crescita e'
   limitata dal max-width delle card, se no l'ultima riga con pochi gruppi si ritrovava
   card larghe il doppio di quelle sopra. */
.wiz-groups-flow > .wiz-group{flex:1 1 auto;margin:0 0 26px;max-width:100%;
  width:calc(var(--n,1) * var(--cw,218px) + (var(--n,1) - 1) * 10px);}
.wiz-groups-flow > .wiz-group + .wiz-group{margin-top:0;}
/* interruzione di riga dentro un flex-wrap: elemento largo quanto la riga e alto zero,
   cosi' quello che viene dopo ricomincia da capo (i gruppi prima si prendono tutto) */
.wiz-flow-br{flex:0 0 100%;height:0;margin:0;}
.wiz-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;margin-top:18px;}
.wiz-opt{position:relative;text-align:left;border:1.5px solid var(--line-strong);background:var(--surface);border-radius:var(--r-sm);
  padding:16px 16px 15px;cursor:pointer;font-family:inherit;transition:border-color .2s,box-shadow .2s,transform .2s var(--ease);}
.wiz-opt:hover{border-color:var(--brand);transform:translateY(-2px);box-shadow:var(--shadow-sm);}
/* Un colore per gruppo, solo sul bordo delle card: si riconosce il gruppo a colpo
   d'occhio senza cinque rettangoli colorati nel pannello. La card scelta torna verde. */
.wiz-group[data-g="bio"]{--gcol:#a67242;}     /* legna e pellet */
.wiz-group[data-g="foss"]{--gcol:#5b7683;}    /* gasolio, olio, carbone */
.wiz-group[data-g="gas"]{--gcol:#0073bc;}     /* gas e GPL */
.wiz-group[data-g="elt"]{--gcol:#7c5cd1;}     /* elettrici e acqua calda */
/* senza --gcol il color-mix qui sotto e' invalido, la regola cade e il bordo tornava
   al grigio pieno di .wiz-opt: la card sembrava avere un bordo piu' spesso delle altre */
.wiz-group[data-g="inv"]{--gcol:#0e8a8f;}     /* finestre e infissi */
.wiz-group[data-g="nuovo"]{--gcol:#00a651;}   /* niente da sostituire */
.wiz-group[data-g] .wiz-opt:not(.on){border-color:color-mix(in srgb,var(--gcol) 45%,transparent);}
.wiz-group[data-g] .wiz-opt:not(.on):hover{border-color:var(--gcol);}
.wiz-group[data-g] .wiz-opt:not(.on) .wiz-check{border-color:color-mix(in srgb,var(--gcol) 45%,transparent);}
/* gruppi di scelte (es. l'esistente da sostituire, 15 voci): l'elenco unico era una parete.
   Il titolo sta attaccato alle SUE card (8px) e lontano dal gruppo precedente (30px):
   a distanze uguali sembrava appeso a mezz'aria tra i due gruppi. */
.wiz-group + .wiz-group{margin-top:30px;}
/* Titolo su una riga, descrizione su quella sotto (non piu' di fianco): si legge come
   un'intestazione invece che come una frase unica. min-height tiene tutte le
   intestazioni della stessa altezza, cosi' le card dei gruppi affiancati partono dalla
   stessa quota anche se una descrizione occupa una riga e un'altra due. */
.wiz-group-h{display:block;margin:0 0 6px;min-height:2.85em;
  font-size:.88rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--brand-dark);}
.wiz-group-h span{display:block;margin-top:2px;font-size:.82rem;font-weight:500;letter-spacing:0;
  text-transform:none;line-height:1.3;color:var(--muted);}
/* card larghe il necessario e tutte uguali: con le colonne 1fr un gruppo da tre voci
   le allargava a mezzo schermo e ogni gruppo aveva una misura diversa. */
.wiz-group .wiz-grid{display:flex;flex-wrap:wrap;gap:10px;margin-top:0;}
/* --cw: larghezza della card del gruppo. La usano sia la card sia il calcolo della
   larghezza del gruppo qui sopra, cosi' il numero sta scritto in un posto solo. */
.wiz-group{--cw:218px;}
.wiz-group .wiz-grid > .wiz-opt{flex:1 1 var(--cw);max-width:calc(var(--cw) + 46px);min-height:106px;}   /* uguale per tutte: 106 > della piu' alta per contenuto (103) */
/* unica eccezione: le due voci di questo gruppo hanno descrizioni lunghe e a 218px
   diventerebbero alte 124px, rompendo l'altezza uniforme delle altre card. */
.wiz-group[data-g="nuovo"]{--cw:330px;}
/* «Finestre / serramenti / infissi» a 218px andava su due righe: piu' larga, non piu' alta */
.wiz-group[data-g="inv"]{--cw:300px;}
@media (max-width:520px){.wiz-group .wiz-grid > .wiz-opt{flex:1 1 100%;}}
.wiz-opt b{display:block;color:var(--ink);font-size:1rem;margin-bottom:3px;}
.wiz-opt span{display:block;color:var(--muted);font-size:.84rem;line-height:1.4;}
.wiz-opt.on{border-color:var(--brand);background:linear-gradient(150deg,rgba(60,181,74,.10),rgba(0,115,188,.06));box-shadow:0 0 0 3px rgba(31,181,116,.14);}
/* scelta obbligata (es. i serramenti quando si sostituiscono le finestre): resta accesa
   e il cursore dice che non e' un tasto da premere */
.wiz-opt.is-fissa{cursor:default;}
.wiz-opt.is-fissa:hover{transform:none;box-shadow:0 0 0 3px rgba(31,181,116,.14);}
.wiz-fissa{position:absolute;left:16px;bottom:10px;font-size:.62rem;font-weight:800;letter-spacing:.05em;
  text-transform:uppercase;color:var(--brand-dark);background:rgba(60,181,74,.16);border-radius:var(--r-pill);padding:2px 8px;}
.wiz-opt.is-fissa{padding-bottom:34px;}
/* .wiz-opt .X per battere ".wiz-opt span{display:block}" (che annullava display:grid → spunta non centrata). */
.wiz-opt .wiz-check{position:absolute;top:12px;right:12px;width:22px;height:22px;border-radius:7px;border:1.5px solid var(--line-strong);
  display:flex;align-items:center;justify-content:center;background:var(--surface);transition:background .2s,border-color .2s;}
.wiz-check svg{width:13px;height:13px;color:#fff;opacity:0;transition:opacity .2s;}
.wiz-opt.on .wiz-check{background:var(--brand);border-color:var(--brand);}
.wiz-opt.on .wiz-check svg{opacity:1;}
.wiz-opt:not(.wiz-sog){padding-right:42px;}  /* spazio per la spunta in alto a destra */
.wiz-nav{display:flex;gap:12px;justify-content:space-between;margin-top:22px;flex-wrap:wrap;}
.wiz-nav .btn{flex:0 0 auto;}
.wiz-nav .wiz-back{margin-right:auto;}
.wiz-nav--end{justify-content:flex-end;}
.wiz-cost{display:flex;align-items:center;gap:10px;margin-top:18px;border:1.5px solid var(--line-strong);border-radius:var(--r-sm);
  padding:6px 16px;max-width:280px;transition:border-color .2s,box-shadow .2s;}
.wiz-cost:focus-within{border-color:var(--brand);box-shadow:0 0 0 4px rgba(31,181,116,.16);}
.wiz-cost span{font-weight:700;color:var(--muted);font-size:1.1rem;}
.wiz-cost input{border:none;outline:none;font-family:inherit;font-size:1.2rem;font-weight:600;color:var(--ink);width:100%;padding:8px 0;background:none;}

.wiz-result-head{margin-bottom:18px;}
.wiz-result-head p{margin-top:10px;}

.inc-list{display:grid;gap:14px;}
/* Risultati del wizard: le agevolazioni una accanto all'altra, non incolonnate.
   auto-fit richiude le colonne vuote, quindi scegliendo una via quella che resta
   si prende tutta la riga da sola. */
.inc-griglia{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:14px;}
/* Dentro la card lo spazio lo danno i margini delle singole voci: il gap del flex
   si sommava a quelli e ogni riga finiva distante il doppio dal resto. */
.inc-griglia .inc-card{gap:0;padding:16px 18px;}
.inc-griglia .inc-tipo{align-self:flex-start;}   /* pillola larga quanto il testo, non quanto la card */
.inc-griglia .inc-aliq{margin-top:12px;}
.inc-griglia .inc-reqs{margin-top:5px;}
.inc-griglia .inc-note{margin-top:5px;}
.inc-griglia .inc-chips{margin-top:10px;}
.inc-griglia .inc-res{margin-top:12px;}
.inc-griglia .inc-go{margin-top:auto;padding-top:14px;}   /* il richiamo resta in fondo, allineato fra le card */
.inc-card{border:1px solid var(--line);border-radius:var(--r);padding:18px 20px;background:var(--surface);box-shadow:var(--shadow-sm);}
/* La card del Conto Termico porta al suo calcolatore: si vede che e' cliccabile */
.inc-card--go{cursor:pointer;transition:border-color .18s var(--ease),box-shadow .18s var(--ease),transform .18s var(--ease);}
.inc-card--go:hover,.inc-card--go:focus-visible{border-color:var(--brand);box-shadow:0 10px 26px rgba(0,115,61,.14);transform:translateY(-2px);outline:none;}
.inc-go{display:inline-flex;align-items:center;gap:7px;margin-top:14px;font-size:.85rem;font-weight:700;color:var(--brand-dark);}
.inc-card--go:hover .inc-go{text-decoration:underline;}
.inc-go svg{transition:transform .18s var(--ease);}
.inc-card--go:hover .inc-go svg{transform:translateY(3px);}
.inc-card-top{display:flex;align-items:center;justify-content:space-between;gap:12px;}
.inc-card-top h4{font-size:1.08rem;color:var(--ink);}
.inc-ente{font-size:.7rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--accent);
  background:rgba(0,115,188,.10);padding:4px 10px;border-radius:var(--r-pill);white-space:nowrap;}
.inc-tipo{display:inline-block;margin-top:8px;font-size:.74rem;font-weight:700;color:var(--brand-dark);
  background:var(--surface-2);padding:3px 10px;border-radius:var(--r-pill);}
.inc-aliq{margin-top:10px;font-weight:600;color:var(--ink);}
.inc-reqs{margin-top:6px;font-size:.88rem;color:var(--muted);}
.inc-stima{display:flex;align-items:baseline;gap:10px;margin-top:14px;padding-top:13px;border-top:1px dashed var(--line-strong);flex-wrap:wrap;}
.inc-stima span{font-size:.78rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:700;}
.inc-stima b{font-size:1.3rem;color:var(--brand-dark);}
.inc-stima small{color:var(--muted);font-size:.84rem;}

/* ---- Diagnosi ---- */
.diag-thumbs{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px;}
.diag-thumb{position:relative;width:58px;height:58px;border-radius:10px;overflow:hidden;border:1px solid var(--line);}
.diag-thumb img{width:100%;height:100%;object-fit:cover;}
.diag-thumb-del{position:absolute;top:2px;right:2px;width:18px;height:18px;border-radius:50%;border:none;cursor:pointer;
  background:rgba(8,22,38,.7);color:#fff;font-size:14px;line-height:1;display:grid;place-items:center;padding:0;}
.diag-thumb-del:hover{background:#c0432c;}

/* Pulsante "Compila da bolletta con AI" */
.ai-bolletta{margin-top:10px;}
.btn--ai{--bg:transparent;border-color:rgba(60,181,74,.45);color:var(--brand-dark);box-shadow:none;
  background:linear-gradient(120deg,rgba(60,181,74,.10),rgba(0,115,188,.07));font-size:.86rem;padding:9px 16px;}
.btn--ai svg{color:var(--brand);}
.btn--ai:hover{border-color:var(--brand);color:var(--brand-dark);box-shadow:var(--shadow-sm);}
.btn--ai:disabled{opacity:.6;cursor:progress;}
.ai-bolletta-status{margin-top:8px;}

/* Miniature foto nell'archivio valutazioni */
.saved-thumbs{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px;}
.saved-thumbs img{width:44px;height:44px;border-radius:8px;object-fit:cover;border:1px solid var(--line);background:var(--surface-2);}
/* il referto occupa tutta l'altezza della colonna, vuoto o pieno che sia */
.diag-report{flex:1;min-height:100%;}
.diag-report.diag-empty{text-align:center;padding:clamp(36px,6vw,64px) 20px;display:flex;flex-direction:column;align-items:center;justify-content:center;}
.diag-report.diag-empty .soon-ico{margin-bottom:16px;}
.diag-report.diag-empty p{color:var(--muted);max-width:34ch;margin-top:8px;}
.diag-top{display:flex;gap:16px;flex-wrap:wrap;align-items:stretch;}
.diag-class{flex:0 0 auto;min-width:104px;border-radius:var(--r);padding:16px 20px;display:flex;flex-direction:column;justify-content:center;
  color:#fff;background:var(--muted);box-shadow:var(--shadow-sm);}
.diag-class span{font-size:.7rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;opacity:.92;}
.diag-class b{font-size:2.6rem;line-height:1;font-weight:800;margin-top:4px;}
.diag-class--A{background:#1a9850;}.diag-class--B{background:#52b04e;}.diag-class--C{background:#a6d96a;color:var(--ink);}
.diag-class--D{background:#fee08b;color:var(--ink);}.diag-class--E{background:#fdae61;color:var(--ink);}
.diag-class--F{background:#f46d43;}.diag-class--G{background:#d73027;}
.diag-kpis{flex:1;min-width:200px;display:grid;grid-template-columns:repeat(3,1fr);gap:10px;}
.diag-kpi{background:var(--surface-2);border-radius:var(--r-sm);padding:12px 14px;display:flex;flex-direction:column;justify-content:center;}
.diag-kpi span{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);}
.diag-kpi b{font-size:1.18rem;color:var(--ink);margin-top:4px;line-height:1.1;}
.diag-kpi small{display:block;font-size:.7rem;font-weight:500;color:var(--muted);margin-top:2px;}
.diag-h{font-size:.82rem;text-transform:uppercase;letter-spacing:.06em;color:var(--brand);font-weight:700;margin:24px 0 12px;}
.diag-recs{display:grid;gap:9px;}
.diag-rec{display:flex;align-items:center;justify-content:space-between;gap:14px;border:1px solid var(--line);
  border-radius:var(--r-sm);padding:13px 16px;background:var(--surface);}
.diag-rec-main b{display:block;color:var(--ink);font-size:.98rem;}
.diag-rec-meta{font-size:.8rem;color:var(--muted);}
.diag-rec-save{text-align:right;flex:0 0 auto;}
.diag-rec-save b{color:var(--brand-dark);font-size:1.05rem;}
.diag-rec-save small{font-size:.7rem;font-weight:500;color:var(--muted);}
.diag-rec-pct{display:block;font-size:.74rem;font-weight:700;color:var(--brand);}
.diag-tot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:16px;padding:15px 18px;border-radius:var(--r-sm);
  background:linear-gradient(120deg,rgba(60,181,74,.12),rgba(0,115,188,.08));border:1px solid rgba(60,181,74,.22);}
.diag-tot span{font-weight:700;color:var(--ink);}
.diag-tot b{font-size:1.18rem;color:var(--brand-dark);}
.diag-foto-n{margin-top:12px;font-size:.82rem;}

/* ---- Costi per intervento (wizard) ---- */
.wiz-costs{display:grid;gap:10px;margin-top:18px;}
.wiz-cost-row{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;}
.wiz-cost-row label{font-weight:600;color:var(--ink);font-size:.95rem;}
.wiz-cost-row .wiz-cost{margin-top:0;max-width:200px;flex:0 0 auto;padding:4px 14px;}
.wiz-cost-row .wiz-cost input{font-size:1.05rem;padding:6px 0;}

/* ---- Chip interventi coperti + note incentivo ---- */
.inc-note{margin-top:8px;font-size:.82rem;color:var(--muted);font-style:italic;}
.inc-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px;}
.inc-chip{font-size:.72rem;font-weight:600;color:var(--brand-dark);background:var(--surface-2);
  padding:4px 10px;border-radius:var(--r-pill);}

/* ---- Beneficio stimato per agevolazione ---- */
.inc-res{margin-top:14px;border:1px solid var(--line);border-radius:var(--r-sm);padding:14px 16px;
  background:linear-gradient(135deg,rgba(60,181,74,.10),rgba(0,115,188,.08));}
.inc-res-label{font-size:.74rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--brand-dark);}
.inc-res>b{display:block;font-size:1.5rem;line-height:1.1;color:var(--ink);margin:2px 0 4px;}
.inc-res-sub{font-size:.84rem;color:var(--muted);}

.tool-disclaimer--warn{background:rgba(253,174,97,.14);border-color:rgba(253,174,97,.4);color:var(--ink);}
.tool-disclaimer--warn svg{color:#c77700;}

/* ---- Salvataggio valutazione ---- */
.val-save{margin-top:18px;padding-top:16px;border-top:1px solid var(--line);}
.val-save-row{display:flex;gap:10px;flex-wrap:wrap;align-items:center;}
.val-save-row[hidden],.wiz-nav .btn[hidden]{display:none;}
.val-cliente{flex:1;min-width:180px;font-family:inherit;font-size:.92rem;color:var(--ink);background-color:var(--surface);
  border:1.5px solid var(--line-strong);border-radius:var(--r-sm);padding:11px 44px 11px 14px;cursor:pointer;
  -webkit-appearance:none;-moz-appearance:none;appearance:none;
  background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2351645c' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='m6 9 6 6 6-6'/></svg>");
  background-repeat:no-repeat;background-position:right 15px center;}
.val-cliente:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 4px rgba(31,181,116,.16);}
.val-save-row .btn{flex:0 0 auto;}

/* ---- Archivio valutazioni salvate ---- */
.saved-list{display:grid;gap:10px;}
.saved-item{display:flex;align-items:center;gap:12px;justify-content:space-between;
  border:1px solid var(--line);border-radius:var(--r-sm);padding:12px 14px;background:var(--surface);}
.saved-main{min-width:0;}
.saved-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.saved-top b{color:var(--ink);font-size:.98rem;}
.saved-date{font-size:.74rem;color:var(--muted);font-weight:600;}
.saved-sum{font-size:.86rem;color:var(--muted);margin-top:3px;}
.saved-actions{flex:0 0 auto;display:flex;align-items:center;gap:8px;}
/* Quadrato fisso da 38px con place-items:center: il testo del bottone c'era anche
   prima, ma la misura lo tagliava fuori e restava solo l'icona.
   Stesso padding di «Confronta» qui accanto, se no i due bottoni della stessa riga
   avevano quattro pixel di altezza di differenza. */
.saved-assoc{display:inline-flex;align-items:center;gap:7px;padding:6px 12px;white-space:nowrap;color:var(--brand-dark);}
.saved-assoc svg{width:18px;height:18px;flex:0 0 auto;}
/* contatore + avviso limite valutazioni */
.saved-counter{font-size:.82rem;font-weight:600;color:var(--muted);margin-bottom:12px;}
.saved-counter.is-full{color:#c0432c;}
.saved-limit{display:flex;align-items:center;justify-content:center;gap:9px;text-align:center;
  color:#c0432c;font-weight:800;font-size:1.18rem;line-height:1.25;background:rgba(192,67,44,.08);
  border:1px solid rgba(192,67,44,.32);border-radius:var(--r-sm);padding:14px 16px;margin-bottom:14px;}
.saved-limit svg{width:24px;height:24px;flex:0 0 auto;}

/* ===== NEWS PAGE ===== */
.news-filters{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-top:8px;}
.news-chip{border:1.5px solid var(--line-strong);background:var(--surface);color:var(--ink);font-weight:600;font-size:.9rem;padding:9px 18px;border-radius:var(--r-pill);cursor:pointer;transition:background .25s var(--ease),color .25s ease,border-color .25s ease,transform .25s var(--ease);}
.news-chip:hover{border-color:var(--brand);color:var(--brand-dark);transform:translateY(-2px);}
.news-chip.on{background:var(--brand);border-color:var(--brand);color:#fff;}
.news-card{display:flex;flex-direction:column;}
.news-top{display:flex;align-items:center;gap:10px;margin-bottom:16px;}
.news-src{font-size:.66rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:#fff;background:var(--brand);padding:5px 10px;border-radius:8px;}
.news-src.is-mase{background:#0073bc;}
.news-src.is-mimit{background:#1b8f86;}
.news-src.is-enea{background:var(--brand-dark);}
.news-src.is-ade{background:var(--ink);}
.news-date{font-size:.78rem;color:var(--muted);font-weight:600;margin-left:auto;}
.news-card h3{font-size:1.16rem;margin-bottom:10px;line-height:1.28;}
.news-card p{color:var(--muted);font-size:.95rem;flex:1;}
.news-foot{margin-top:18px;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;}
.news-cat{font-size:.68rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--brand-dark);background:var(--surface-2);padding:5px 11px;border-radius:var(--r-pill);}
.ext-link{display:inline-flex;align-items:center;gap:7px;font-weight:600;color:var(--brand-dark);font-size:.9rem;transition:gap .25s var(--ease),color .25s ease;}
.ext-link svg{width:16px;height:16px;transition:transform .25s var(--ease);}
.ext-link:hover{color:var(--brand);gap:10px;}
.ext-link:hover svg{transform:translate(2px,-2px);}
.news-hide{display:none !important;}
.res-list{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));margin-top:48px;}
.res-link{display:flex;align-items:center;gap:14px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:18px 20px;transition:transform .3s var(--ease),box-shadow .3s ease,border-color .3s ease;}
.res-link:hover{transform:translateY(-4px);box-shadow:var(--shadow);border-color:rgba(0,115,61,.28);}
.res-link .ri{width:46px;height:46px;flex:0 0 auto;border-radius:12px;background:linear-gradient(140deg,rgba(60,181,74,.18),rgba(0,115,188,.14));color:var(--brand-dark);display:grid;place-items:center;}
.res-link .ri svg{width:22px;height:22px;}
.res-link b{display:block;font-size:.98rem;color:var(--ink);}
.res-link span{font-size:.8rem;color:var(--muted);}
.news-note{margin-top:34px;font-size:.85rem;color:var(--muted);background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r);padding:16px 20px;display:flex;gap:12px;align-items:flex-start;}
.news-note svg{width:20px;height:20px;color:var(--brand-dark);flex:0 0 auto;margin-top:1px;}

/* ===== CONTO TERMICO 3.0 - calcolo esatto (tab Incentivi) ===== */
.ct-exact .ct-form{margin-top:6px;}
.ct-form .form-row + .form-row{margin-top:18px;}
.ct-comune-field,.wiz-ac-wrap{position:relative;}   /* ancora della tendina comune */
.ct-ac{position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:30;background:var(--surface);
  border:1px solid var(--line-strong);border-radius:var(--r-sm);box-shadow:var(--shadow);max-height:280px;overflow-y:auto;}
/* titolo della tendina quando propone i comuni gia' usati (non e' un risultato) */
.ct-ac-tit{display:block;padding:8px 14px 6px;font-size:.72rem;font-weight:700;
  text-transform:uppercase;letter-spacing:.04em;color:var(--muted);background:var(--surface-2);}
.ct-ac-item{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;text-align:left;
  border:none;background:none;font-family:inherit;font-size:.92rem;color:var(--ink);padding:10px 14px;cursor:pointer;border-bottom:1px solid var(--line);}
.ct-ac-item:last-child{border-bottom:none;}
.ct-ac-item:hover{background:var(--surface-2);}
.ct-ac-prov{color:var(--muted);font-weight:600;}
.ct-ac-zona{flex:0 0 auto;font-size:.72rem;font-weight:700;color:var(--brand-dark);background:var(--surface-2);padding:3px 9px;border-radius:var(--r-pill);}

/* ---- Vie percorribili: le agevolazioni sono per lo piu' alternative, si sceglie ---- */
/* ---- Pianta dell'immobile: quiz a passi a sinistra, schema dall'alto a destra.
   Il modale e' largo apposta: una domanda per volta piu' la pianta sempre a vista
   entrano in orizzontale, cosi' non si scrolla mai. ---- */
.data-modal-panel--pianta{max-width:1080px;}
.pm-steps{display:flex;gap:6px;margin-bottom:14px;flex-wrap:wrap;}
.pm-st{display:inline-flex;align-items:center;gap:7px;font:inherit;font-size:.78rem;font-weight:700;
  color:var(--muted);background:none;border:0;padding:6px 4px;cursor:pointer;}
.pm-st span{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-size:.72rem;
  background:var(--surface-2);color:var(--muted);border:1.5px solid var(--line);}
.pm-st.done{color:var(--brand-dark);}
.pm-st.done span{background:var(--brand);border-color:var(--brand);color:#fff;}
.pm-st.on{color:var(--ink);}
.pm-st.on span{background:var(--brand-dark);border-color:var(--brand-dark);color:#fff;}
.pm-st:disabled{cursor:default;opacity:.55;}
.pm-tabs{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:14px;}
.pm-tab{font:inherit;font-size:.82rem;font-weight:700;color:var(--ink);background:var(--surface-2);
  border:1.5px solid var(--line);border-radius:var(--r-pill);padding:7px 14px;cursor:pointer;}
.pm-tab:hover{border-color:var(--brand);}
.pm-tab.on{background:var(--brand-dark);border-color:var(--brand-dark);color:#fff;}
.pm-tab--add{display:inline-flex;align-items:center;gap:6px;color:var(--brand-dark);background:none;border-style:dashed;}
.pm-tab--add svg{width:15px;height:15px;}
/* la pianta resta a vista mentre si risponde: e' il senso di tutto il pannello */
.pm-cols{display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,380px);gap:26px;align-items:start;}
@media (max-width:900px){.pm-cols{grid-template-columns:1fr;}}
.pm-form{display:grid;gap:16px;min-width:0;align-content:start;}
.pm-q>b{display:block;font-size:.9rem;color:var(--ink);margin-bottom:2px;}
.pm-hint{display:block;font-size:.78rem;color:var(--muted);margin-bottom:8px;}
.pm-opts{display:flex;flex-wrap:wrap;gap:8px;margin-top:7px;}
.pm-opt{font:inherit;font-size:.85rem;font-weight:600;color:var(--ink);background:var(--surface);
  border:1.5px solid var(--line-strong);border-radius:var(--r-sm);padding:10px 14px;cursor:pointer;text-align:left;}
.pm-opt span{display:block;font-size:.75rem;font-weight:500;color:var(--muted);margin-top:2px;}
.pm-opt:hover{border-color:var(--brand);}
.pm-opt.on{border-color:var(--brand);background:rgba(0,115,61,.07);color:var(--brand-dark);}
.pm-opt.on span{color:var(--brand-dark);}
.pm-opts--lati .pm-opt{flex:1 1 0;min-width:92px;text-align:center;}
/* lato gia' occupato dall'entrata: la finestra non ci puo' stare */
.pm-opt.ko{opacity:.45;cursor:not-allowed;border-style:dashed;}
.pm-opt.ko:hover{border-color:var(--line-strong);}
.pm-tab-nota{align-self:center;font-size:.78rem;color:var(--muted);}
.pm-opts--tipo{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));}
/* scelta della forma: si vede il disegno, non solo il nome */
.pm-forme{display:grid;grid-template-columns:repeat(auto-fit,minmax(126px,1fr));gap:9px;margin-top:7px;}
.pm-forma{display:grid;justify-items:center;gap:3px;font:inherit;color:var(--ink);background:var(--surface);
  border:1.5px solid var(--line-strong);border-radius:var(--r-sm);padding:11px 8px;cursor:pointer;text-align:center;}
.pm-forma svg{width:38px;height:38px;color:var(--brand-dark);}
.pm-forma b{font-size:.82rem;}
.pm-forma span{font-size:.72rem;color:var(--muted);line-height:1.25;}
.pm-forma:hover{border-color:var(--brand);}
.pm-forma.on{border-color:var(--brand);background:rgba(0,115,61,.07);}
.pm-ruota{justify-self:start;margin-top:10px;}
/* posizione e soffio affiancati: due griglie 3x3 identiche, senza sprecare la riga */
.pm-due{display:grid;grid-template-columns:1fr 1fr;gap:18px;align-items:start;}
@media (max-width:620px){.pm-due{grid-template-columns:1fr;}}
.pm-due .pm-q{min-width:0;}
/* griglia 3x3: si tocca dove sta il generatore */
.pm-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;margin-top:9px;width:100%;max-width:230px;
  aspect-ratio:1;border:2px solid var(--line-strong);border-radius:var(--r-sm);padding:5px;background:rgba(0,115,61,.04);}
.pm-cell{border:1.5px dashed var(--line-strong);border-radius:7px;background:var(--surface);cursor:pointer;padding:0;}
.pm-cell:hover{border-color:var(--brand);}
.pm-cell.on{background:var(--brand);border-style:solid;border-color:var(--brand);}
/* casella sul lato dell'entrata: li' il generatore coprirebbe la porta */
.pm-cell.ko{background:rgba(192,67,44,.14);border-color:rgba(192,67,44,.5);border-style:solid;cursor:not-allowed;}
.pm-cell.ko:hover{border-color:rgba(192,67,44,.5);}
/* rosa degli otto versi del soffio: stesso riquadro e stessa misura della griglia
   posizione, cosi' le due domande si leggono come una coppia */
.pm-soffi{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;margin-top:9px;width:100%;max-width:230px;
  aspect-ratio:1;border:2px solid var(--line-strong);border-radius:var(--r-sm);padding:5px;background:rgba(0,115,61,.04);}
.pm-soffio{display:grid;place-items:center;border:1.5px solid var(--line-strong);
  border-radius:7px;background:var(--surface);color:var(--brand-dark);cursor:pointer;padding:0;min-width:0;}
.pm-soffio svg{width:60%;height:60%;}
.pm-soffio:hover{border-color:var(--brand);}
.pm-soffio.on{background:var(--brand);border-color:var(--brand);color:#fff;}
/* direzione che soffierebbe contro il muro: si vede che c'e', ma non si sceglie */
.pm-soffio.ko{border-color:rgba(192,67,44,.4);background:rgba(192,67,44,.07);color:#c0432c;
  opacity:.65;cursor:not-allowed;}
.pm-soffio.ko:hover{border-color:rgba(192,67,44,.4);}
/* la casella centrale e' "auto", cosi' le otto frecce restano ai loro posti */
.pm-soffio--auto{font-size:.66rem;font-weight:800;text-transform:uppercase;color:var(--muted);
  border-style:dashed;}
.pm-soffio--auto.on{background:var(--brand-dark);border-color:var(--brand-dark);border-style:solid;color:#fff;}
/* sticky e' gia' un posizionamento: fa da ancora al popover .pm-fg, che cosi'
   copre la sola colonna anteprima invece di aprirsi sopra tutto il modale.
   (Aggiungere position:relative qui lo sovrascriverebbe e romperebbe lo sticky.) */
.pm-preview{position:sticky;top:8px;display:grid;gap:12px;min-width:0;}
/* scelta pianta / 3D sopra l'anteprima */
.pm-vista{display:inline-flex;gap:0;border:1.5px solid var(--line-strong);border-radius:var(--r-pill);
  padding:3px;background:var(--surface-2);justify-self:start;}
.pm-vista-b{display:inline-flex;align-items:center;gap:6px;font:inherit;font-size:.8rem;font-weight:700;
  color:var(--muted);background:none;border:0;border-radius:var(--r-pill);padding:6px 14px;cursor:pointer;}
.pm-vista-b:hover{color:var(--ink);}
.pm-vista-b.on{background:var(--brand-dark);color:#fff;}
.pm-vista-b svg{width:1.05em;height:1.05em;}
.pm-svg{border:1px solid var(--line);border-radius:var(--r-sm);padding:10px;background:var(--surface);}
.pm-punti{font-size:.82rem;}
.pm-punti>b{display:block;margin-bottom:7px;color:var(--ink);}
/* ---- Scheda "come deve venire la foto" -------------------------------------
   Il contenuto lo produce Planimetria.schedaFoto() come stringa HTML: le classi
   .fg-* sono le stesse in app.css, perche' dashboard e app installatori mostrano
   la stessa scheda dentro gusci diversi (qui popover, li' foglio dal basso). ---- */
.pm-fg{position:absolute;inset:0;z-index:6;display:flex;align-items:flex-start;justify-content:center;
  padding:10px;background:rgba(14,36,64,.28);border-radius:var(--r);overflow:auto;}
.pm-fg[hidden]{display:none;}   /* display:flex vincerebbe sull'attributo hidden: il velo restava sopra la pianta */
.fg{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);
  box-shadow:var(--shadow);padding:16px 18px;max-width:440px;width:100%;}
.fg-x{position:absolute;top:8px;right:8px;background:none;border:0;color:var(--muted);cursor:pointer;
  padding:6px;border-radius:8px;line-height:0;}
.fg-x:hover{background:var(--surface-2);color:var(--ink);}
.fg-x svg{width:18px;height:18px;display:block;}
.fg-h{display:flex;align-items:center;gap:9px;margin:0 26px 12px 0;}
.fg-h b{font-size:1.02rem;color:var(--ink);}
.fg-n{flex:0 0 auto;width:24px;height:24px;border-radius:50%;display:grid;place-items:center;
  background:var(--brand);color:#fff;font-size:.8rem;font-weight:700;}
.fg-schemi{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:0 0 14px;}
.fg-sch{margin:0;min-width:0;}
.fg-sch figcaption{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em;
  color:var(--muted);margin-bottom:5px;}
.fg-sch svg{display:block;width:100%;height:auto;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r-sm);}
.fg-da{font-size:.87rem;line-height:1.6;color:var(--muted);margin:0 0 7px;}
.fg-da b{color:var(--ink);}
.fg-l{list-style:none;margin:12px 0 0;padding:0;}
.fg-l li{position:relative;padding-left:22px;font-size:.86rem;line-height:1.55;margin-bottom:6px;color:var(--muted);}
.fg-l li::before{position:absolute;left:0;top:0;font-weight:700;}
.fg-ok::before{content:"✓";color:var(--brand);}
.fg-no::before{content:"✕";color:#c0392b;}
.fg-avviso{margin:12px 0 0;padding:9px 12px;border-radius:var(--r-sm);background:rgba(242,183,5,.16);
  color:#7a5b00;font-size:.83rem;line-height:1.5;}
.fg-perche{margin:12px 0 0;padding-top:11px;border-top:1px solid var(--line);font-size:.82rem;
  line-height:1.6;color:var(--muted);font-style:italic;}
@media (max-width:520px){.fg-schemi{grid-template-columns:1fr;}}

.pm-punti-h{display:block;font-size:.76rem;color:var(--muted);margin:-3px 0 8px;}
/* la riga ora e' un bottone: apre la scheda dello scatto, come il numero sulla pianta */
.pm-punto{display:flex;align-items:flex-start;gap:9px;padding:5px 6px;color:var(--muted);width:100%;
  text-align:left;background:none;border:0;border-radius:var(--r-sm);cursor:pointer;font:inherit;font-size:.82rem;}
.pm-punto:hover{background:var(--surface-2);}
.pm-punto:focus-visible{outline:2px solid var(--brand);outline-offset:1px;}
.pm-punto-go{margin-left:auto;flex:0 0 auto;color:var(--muted);opacity:.55;}
.pm-punto-go svg{width:15px;height:15px;display:block;}
.pm-punto:hover .pm-punto-go{opacity:1;color:var(--brand);}
/* marker cliccabili dentro l'SVG */
.pf-punto:hover circle:nth-of-type(2),.pf-punto:hover ellipse:nth-of-type(2){stroke-width:3;}
.pf-punto:focus{outline:none;}
.pf-punto:focus-visible circle:nth-of-type(2),.pf-punto:focus-visible ellipse:nth-of-type(2){stroke-width:3.4;}
.pm-punto-n{flex:0 0 auto;width:20px;height:20px;border-radius:50%;display:grid;place-items:center;
  font-size:.72rem;font-weight:800;color:var(--brand-dark);background:rgba(0,115,61,.12);}
.pm-punto em{display:block;font-style:normal;font-size:.76rem;color:#9a6700;}
.pm-punto i{display:block;font-style:normal;font-size:.75rem;color:var(--muted);opacity:.85;}
.pm-punto--vicino .pm-punto-n{background:var(--surface-2);color:var(--muted);}
.pm-avviso{display:flex;align-items:flex-start;gap:8px;margin:0;font-size:.8rem;color:#7a5200;
  background:rgba(245,158,11,.12);border-radius:var(--r-sm);padding:9px 11px;}
/* ---- Editor stanza: pannello in primo piano, non a tutto schermo.
   z-index sopra .data-modal (1000): si apre DA quel modale e deve stargli davanti. ---- */
.ed-modal{position:fixed;inset:0;z-index:1200;display:grid;place-items:center;padding:3vh 16px;}
.ed-modal[hidden]{display:none;}
.ed-modal::before{content:"";position:absolute;inset:0;background:rgba(8,32,25,.55);backdrop-filter:blur(2px);}
.ed-panel{position:relative;display:flex;flex-direction:column;width:100%;max-width:900px;
  max-height:94vh;background:var(--cream);border-radius:var(--r);overflow:hidden;
  box-shadow:0 30px 70px rgba(8,32,25,.4);}
.ed-head{display:flex;align-items:center;gap:16px;padding:13px 20px;background:var(--surface);
  border-bottom:1px solid var(--line);flex-wrap:wrap;}
.ed-head h3{margin:4px 0 0;font-size:1.1rem;color:var(--ink);}
.ed-hint{flex:1;min-width:180px;margin:0;font-size:.8rem;color:var(--muted);}
.ed-canvas{flex:1;display:grid;place-items:center;padding:16px;overflow:auto;min-height:0;}
.ed-canvas svg{max-height:100%;width:auto;touch-action:none;}   /* il dito trascina, non scrolla */
.ed-canvas svg [data-mob],.ed-canvas svg [data-ap]{cursor:grab;}
.ed-palette{border-top:1px solid var(--line);background:var(--surface);padding:10px 20px calc(12px + env(safe-area-inset-bottom,0px));}
.ed-palette-t{display:block;font-size:.78rem;color:var(--muted);margin-bottom:7px;}
.ed-palette-row{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px;}
.ed-pal{flex:0 0 auto;display:grid;justify-items:center;gap:2px;width:84px;font:inherit;font-size:.68rem;
  color:var(--muted);background:var(--surface);border:1.5px solid var(--line-strong);border-radius:var(--r-sm);
  padding:8px 4px;cursor:grab;}
.ed-pal svg{width:32px;height:32px;color:var(--brand-dark);}
.ed-pal:hover{border-color:var(--brand);color:var(--ink);}
.ed-pal--ap svg{color:var(--accent);}
.pm-vista-riga{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.pm-pers{display:inline-flex;align-items:center;gap:7px;font:inherit;font-size:.8rem;font-weight:700;
  color:var(--brand-dark);background:var(--surface);border:1.5px solid var(--line-strong);
  border-radius:var(--r-pill);padding:7px 15px;cursor:pointer;margin-left:auto;}
.pm-pers:hover{border-color:var(--brand);}
.pm-pers svg{width:1.05em;height:1.05em;}

/* editor: tavolozza mobili + pannello dell'elemento selezionato */
.pm-mobili{display:grid;grid-template-columns:repeat(auto-fill,minmax(78px,1fr));gap:7px;margin-top:8px;
  max-height:210px;overflow:auto;padding-right:2px;}
.pm-mob{display:grid;justify-items:center;gap:2px;font:inherit;font-size:.68rem;color:var(--muted);
  background:var(--surface);border:1.5px solid var(--line-strong);border-radius:var(--r-sm);
  padding:7px 4px;cursor:pointer;}
.pm-mob svg{width:34px;height:34px;color:var(--brand-dark);}
.pm-mob:hover{border-color:var(--brand);color:var(--ink);}
.pm-sel{display:grid;gap:9px;padding:13px;border:1.5px solid var(--brand);border-radius:var(--r-sm);
  background:rgba(0,115,61,.05);}
.pm-sel>b{font-size:.9rem;color:var(--brand-dark);}
.pm-sel label{display:grid;gap:5px;font-size:.8rem;font-weight:600;color:var(--muted);}
.pm-sel label span{color:var(--ink);}
.pm-sel input[type=range]{width:100%;accent-color:var(--brand);}
.pm-sel-lati{display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:.8rem;color:var(--muted);}
.pm-mini{font:inherit;font-size:.76rem;font-weight:600;color:var(--ink);background:var(--surface);
  border:1.5px solid var(--line-strong);border-radius:var(--r-pill);padding:5px 11px;cursor:pointer;}
.pm-mini:hover{border-color:var(--brand);}
.pm-mini.on{background:var(--brand);border-color:var(--brand);color:#fff;}
.pm-sel-del{display:inline-flex;align-items:center;gap:6px;justify-self:start;font:inherit;font-size:.8rem;
  font-weight:600;color:#c0432c;background:none;border:0;padding:0;cursor:pointer;}
.pm-sel-del svg{width:1.05em;height:1.05em;}
/* nell'editor si trascina: il puntatore deve dirlo, e il dito non deve scrollare */
.pm-svg svg [data-ap],.pm-svg svg [data-mob]{cursor:grab;}
.pm-svg svg:has([data-ap]){touch-action:none;}
.pm-del{justify-self:start;}
.pm-nota{margin:0;font-size:.78rem;color:var(--muted);}
.pm-q--sep{border-top:1px solid var(--line);padding-top:15px;}
/* riepilogo: tutte le risposte insieme, modificabili senza rifare i passi */
.pm-riep{display:grid;gap:18px;}
.pm-riep section{display:grid;gap:14px;padding-bottom:16px;border-bottom:1px solid var(--line);}
.pm-riep section:last-child{border-bottom:0;padding-bottom:0;}
.pm-riep h5{margin:0;font-size:.74rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--brand-dark);}
.pm-riep .pm-q--sep{border-top:0;padding-top:0;}
/* piede: stessa dimensione di testo su tutti i tasti, Avanti/Salva a destra.
   [hidden] va forzato: .btn e' display:inline-flex e vincerebbe (come .clienti-head) */
.pm-foot{justify-content:flex-start;gap:12px;}
.pm-foot .form-note{margin:0 auto;text-align:center;}
.pm-foot .btn{font-size:.9rem;}
.pm-foot .btn[hidden]{display:none;}
.pm-foot .btn svg{width:1.15em;height:1.15em;}
/* La pianta segnala il proprio stato come Scheda e Documenti (vedi .int-dati--*):
   fondo pieno, non un filo di bordo. Prima era l'unico tasto della riga "Compila"
   che, da vuoto, non si distingueva da uno già fatto. */

/* La via consigliata non e' piu' un tasto sopra le card che nasconde le altre: le card
   restano tutte e quella consigliata e' gia' scelta in partenza, marcata qui. */
.inc-card--top{border-color:var(--brand);box-shadow:0 0 0 1.5px var(--brand),0 10px 26px rgba(0,115,61,.12);}
.inc-top-tag{font-size:.63rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;
  color:#fff;background:var(--brand);border-radius:var(--r-pill);padding:3px 9px;white-space:nowrap;}
/* l'altra meta' della via consigliata: stessa famiglia, tono piu' basso - e' un
   comprimario, non una seconda raccomandazione */
.inc-top-tag--combo{color:var(--brand-dark);background:rgba(60,181,74,.16);}
.inc-griglia .inc-card-top{justify-content:flex-start;}
.inc-griglia .inc-ente{margin-left:auto;}
.inc-card[hidden]{display:none;}

/* ---- Calcolatore CT: un pannello per dispositivo (come il simulatore pubblico) ---- */
.cd-p{border:1.5px solid var(--line);border-radius:var(--r-sm);padding:14px 16px;margin-top:14px;background:var(--surface);}
.cd-p-head{display:flex;align-items:center;gap:9px;margin-bottom:12px;padding-bottom:10px;border-bottom:1px solid var(--line);}
.cd-p-head b{font-size:.98rem;color:var(--ink);}
.cd-p-tit{font-size:.68rem;font-weight:800;letter-spacing:.04em;color:var(--brand-dark);
  background:rgba(30,138,79,.12);border-radius:var(--r-pill);padding:3px 8px;}
.cd-p-del{margin-left:auto;display:grid;place-items:center;width:30px;height:30px;flex:none;
  background:none;border:1px solid var(--line);border-radius:9px;color:var(--muted);cursor:pointer;}
.cd-p-del:hover{border-color:#c0432c;color:#c0432c;}
.cd-p-del svg{width:16px;height:16px;}
.cd-add-row{position:relative;margin-top:14px;}
.cd-add-menu{position:absolute;top:calc(100% + 6px);left:0;z-index:40;min-width:min(340px,92vw);
  background:var(--surface);border:1.5px solid var(--line-strong);border-radius:var(--r-sm);
  box-shadow:0 18px 40px rgba(8,32,25,.16);padding:6px;display:grid;gap:2px;}
.cd-add-menu button{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;
  font:inherit;font-size:.86rem;font-weight:600;color:var(--ink);text-align:left;
  background:none;border:0;border-radius:9px;padding:9px 10px;cursor:pointer;}
.cd-add-menu button:hover{background:var(--surface-2);}
.cd-add-menu button span{font-size:.68rem;font-weight:800;color:var(--brand-dark);flex:none;}
.cd-total{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-top:16px;padding:14px 16px;
  border-radius:var(--r-sm);background:var(--brand-dark);color:#fff;}
.cd-total-lbl{font-size:.76rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;opacity:.85;}
.cd-total b{font-size:1.5rem;}
.cd-total-sub{font-size:.78rem;opacity:.8;margin-left:auto;}
.ct-result{margin-top:18px;border:1px solid var(--line);border-radius:var(--r);overflow:hidden;background:var(--surface);animation:dashFade .3s var(--ease);}
/* Il gradiente sta sulla fascia, non piu' sul solo blocco dell'importo: dentro ci
   vanno anche la tabella delle zone e la riga dell'erogazione, che prima stavano
   sotto e occupavano una fascia bianca alta il doppio per tre righe di testo. */
.ct-res-top{display:flex;align-items:stretch;flex-wrap:wrap;
  background:linear-gradient(135deg,rgba(60,181,74,.10),rgba(0,115,188,.08));}
.ct-res-amount{flex:1 1 360px;min-width:0;padding:14px 22px;display:flex;flex-direction:column;justify-content:center;}
/* Il conto in chiaro: lordo − tassa GSE = incassato. L'ultimo e' il piu' grande e in
   un riquadro, perche' e' il numero su cui il cliente decide; gli altri due spiegano
   solo da dove viene. */
/* align-items:center + text-align:center: i due numeri piccoli stanno in mezzo alla
   loro etichetta e alla stessa altezza del numero grande, invece che appesi in basso
   e allineati a sinistra. */
.ct-res-calc{display:flex;align-items:center;flex-wrap:wrap;gap:10px 18px;margin:2px 0 8px;}
.ct-rc{display:flex;flex-direction:column;align-items:center;text-align:center;gap:1px;min-width:0;}
.ct-rc>b{font-size:1.75rem;line-height:1.05;color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap;}
.ct-rc-k{font-size:.68rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);}
/* stessa struttura delle celle, quindi il segno sta sulla riga dei numeri; solo piu'
   piccolo e grigio, perche' e' un operatore e non un importo */
.ct-rc-op>b{font-weight:700;color:var(--muted);}
/* il risultato: riquadro bianco su bordo verde e cifra piu' grande di tutto il resto */
.ct-rc--net{background:var(--surface);border:2px solid var(--brand);border-radius:13px;
  padding:8px 18px 10px;box-shadow:0 4px 16px rgba(0,115,61,.16);}
.ct-rc--net .ct-rc-k{color:var(--brand-dark);}
.ct-rc--net>b{font-size:2.5rem;color:var(--brand-dark);}
.ct-res-info{margin:0;font-size:.82rem;line-height:1.45;color:var(--muted);}
.ct-res-info b{color:var(--ink);font-weight:700;}
/* Quadrati staccati, uno per zona climatica, con lordo e netto. Quello della zona
   dell'immobile e' piu' grande: e' l'unico che conta davvero, gli altri sono contesto. */
/* flex-wrap: su pannello stretto i sei quadrati vanno a capo dentro la fascia invece
   di sfondarla (min-width + nowrap non li lasciava rimpicciolire) */
/* colonna: il titoletto sopra, la fila dei quadrati sotto. justify-content:center la
   tiene in mezzo alla fascia: senza, la colonna si incollava in alto e sotto restava
   il vuoto (il riquadro della zona, che prima riempiva, non c'e' piu'). */
.ct-res-zone{flex:0 1 auto;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:12px 22px;}
.ct-res-zone-k{font-size:.68rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);}
.ct-zboxes{display:flex;align-items:center;flex-wrap:wrap;justify-content:center;gap:7px;}
.ct-zbox{display:flex;flex-direction:column;align-items:center;gap:1px;padding:8px 12px;
  border:1px solid var(--line);border-radius:11px;background:color-mix(in srgb,var(--surface) 82%,transparent);
  min-width:78px;line-height:1.2;}
.ct-zb-z{font-size:.72rem;font-weight:800;letter-spacing:.04em;color:var(--muted);}
.ct-zb-l{font-size:.92rem;color:var(--ink);white-space:nowrap;font-variant-numeric:tabular-nums;}
.ct-zb-n{font-size:.7rem;color:var(--muted);white-space:nowrap;display:flex;align-items:baseline;gap:4px;}
.ct-zb-n i{font-style:normal;font-size:.6rem;text-transform:uppercase;letter-spacing:.04em;opacity:.75;}
/* La zona dell'immobile: quadrato blu, lettera grande in bianco, «ZONA» sopra e gli
   importi sotto. Prima era un quadrato verde piu' grande PIU' un pannello blu «ZONA E»
   a destra della fascia: la stessa informazione scritta due volte. */
.ct-zbox.is-on{border:none;background:var(--accent);color:#fff;
  padding:12px 20px 14px;min-width:132px;box-shadow:0 6px 20px rgba(0,115,188,.32);}
.ct-zb-k{font-size:.66rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;opacity:.85;}
.ct-zb-big{font-size:2.5rem;line-height:1;font-weight:800;margin:-2px 0 3px;}
.ct-zbox.is-on .ct-zb-l{font-size:1.15rem;color:#fff;}
.ct-zbox.is-on .ct-zb-n{font-size:.8rem;color:rgba(255,255,255,.92);font-weight:700;}
.ct-zbox.is-on .ct-zb-n i{font-weight:600;opacity:.8;}
.ct-res-sub{font-size:.86rem;color:var(--muted);}

.ct-detail{padding:12px 22px 14px;}
.ct-detail>p{font-size:.9rem;color:var(--ink);}
/* (la vecchia tabella .ct-zones e' stata sostituita dai quadrati .ct-zbox qui sopra) */
.ct-disc{font-size:.78rem;color:var(--muted);margin-top:6px;}
.ct-disc--warn{color:#9a6700;background:rgba(245,158,11,.12);border:1px solid rgba(245,158,11,.3);border-radius:8px;padding:8px 10px;margin-top:8px;font-size:.8rem;}
.cd-need-comune{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.cd-need-comune > span{flex:1 1 220px;}
.cd-need-comune svg{width:18px;height:18px;flex:none;}
/* Hint operativi sotto l'etichetta del documento (causale bonifico, targhe, ecc.) */
.doc-tile-hint{display:block;font-size:.72rem;color:var(--muted);margin:2px 0 3px;line-height:1.45;}
/* Countdown 90 giorni GSE sulla riga intervento */
.int-gse{background:rgba(60,181,74,.14);color:var(--brand-dark);}
.int-gse--warn{background:rgba(245,158,11,.16);color:#9a6700;}
.int-gse--late{background:rgba(220,53,69,.14);color:#b02a37;}
@media (max-width:520px){.ct-zbox{min-width:66px;padding:6px 8px;}.ct-zbox.is-on{min-width:88px;padding:8px 11px;}.ct-rc>b{font-size:1.4rem;}.ct-rc--net>b{font-size:2rem;}}

/* "I migliori del catalogo": filtri + card-copertina (foto + testo sopra) + tabella confronto (dashboard incentivi) */
/* Catalogo dei generatori: serve solo finche' il prodotto non e' scelto. Quando
   l'incentivo esce si richiude in dissolvenza e la barra delle azioni sale al suo posto.
   Griglia 1fr<->0fr e non max-height: l'altezza aperta e' quella VERA del contenuto,
   niente tetto da indovinare, e se le transizioni non girano il pannello si apre
   comunque tutto invece di restare schiacciato a zero. */
#ctTop{margin-top:18px;display:grid;grid-template-rows:1fr;opacity:1;
  transition:grid-template-rows .4s var(--ease),opacity .26s ease,margin-top .4s var(--ease),padding-top .4s var(--ease),padding-bottom .4s var(--ease);}
#ctTop>.ct-top-in{min-height:0;overflow:hidden;padding:0 10px;margin:0 -10px;}   /* il padding lascia respirare le frecce a -8px */
#ctTop.ct-top--via{grid-template-rows:0fr;opacity:0;margin-top:0;padding-top:0;padding-bottom:0;}
.ct-top-filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px;}
.ct-top-fbtn{font-family:inherit;font-size:.78rem;font-weight:700;color:var(--muted);cursor:pointer;
  border:1px solid var(--line);background:#fff;border-radius:20px;padding:7px 14px;}
.ct-top-fbtn:hover{border-color:var(--brand-dark);color:var(--brand-dark);}
.ct-top-fbtn.on{background:var(--brand-dark);border-color:var(--brand-dark);color:#fff;}
/* Striscia unica scorrevole con frecce; card compatte (~metà dell'altezza precedente). */
.ct-top-wrap{position:relative;}
.ct-top-grid{display:flex;gap:10px;overflow-x:auto;scroll-snap-type:x proximity;padding-bottom:6px;
  scrollbar-width:thin;scrollbar-color:var(--line) transparent;}
.ct-top-card{position:relative;flex:0 0 208px;aspect-ratio:4/5;scroll-snap-align:start;border-radius:12px;overflow:hidden;
  background-size:cover;background-position:center;display:flex;flex-direction:column;justify-content:flex-end;}
.ct-top-arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:3;width:30px;height:30px;border-radius:50%;
  border:1px solid var(--line);background:#fff;color:var(--brand-dark);cursor:pointer;
  display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px rgba(0,0,0,.14);}
.ct-top-arrow[hidden]{display:none;}
.ct-top-arrow svg{width:15px;height:15px;}
.ct-top-arrow:hover{background:var(--brand-dark);color:#fff;border-color:var(--brand-dark);}
.ct-top-arrow--l{left:-8px;}
.ct-top-arrow--r{right:-8px;}
.ct-top-cat{position:absolute;top:8px;left:8px;z-index:2;background:rgba(8,24,20,.6);color:#fff;
  padding:4px 9px;border-radius:20px;font-size:.6rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;}
.ct-top-body{position:relative;z-index:1;padding:30px 11px 11px;color:#fff;display:flex;flex-direction:column;gap:2px;
  background:linear-gradient(180deg,rgba(8,20,16,0),rgba(8,20,16,.62) 30%,rgba(8,20,16,.9));}
.ct-top-body h3{font-size:.88rem;line-height:1.2;margin:0;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.ct-top-body h3 span{display:block;font-size:.7rem;font-weight:600;color:rgba(255,255,255,.75);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.ct-top-eur{font-size:1.3rem;line-height:1.1;margin-top:2px;}
.ct-top-body small{font-size:.68rem;color:rgba(255,255,255,.75);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.ct-top-actions{display:flex;gap:7px;align-items:center;margin-top:9px;}
.ct-top-vs{flex:0 0 auto;width:33px;height:33px;border-radius:50%;border:1px solid rgba(255,255,255,.55);
  background:rgba(8,24,20,.25);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;}
.ct-top-vs svg{width:16px;height:16px;}
.ct-top-vs:hover{background:rgba(255,255,255,.18);}
.ct-top-vs.on{background:var(--brand-dark);border-color:var(--brand-dark);}
/* Popover info sulla card (copre la card, clic per chiudere) */
.ct-top-pop{position:absolute;inset:0;z-index:4;background:rgba(8,20,16,.94);color:#fff;padding:14px 12px;
  display:flex;flex-direction:column;gap:5px;overflow:auto;cursor:pointer;font-size:.7rem;}
.ct-top-pop[hidden]{display:none;}
.ct-pop-t{font-size:.78rem;line-height:1.25;margin-bottom:2px;}
.ct-pop-r{display:flex;justify-content:space-between;gap:8px;border-bottom:1px solid rgba(255,255,255,.12);padding-bottom:4px;}
.ct-pop-r i{font-style:normal;color:rgba(255,255,255,.7);}
.ct-pop-r b{text-align:right;}
.ct-pop-zones{margin-top:auto;padding-top:5px;font-size:.6rem;color:rgba(255,255,255,.65);line-height:1.5;}
/* Campo comune mancante evidenziato quando si preme "Seleziona" senza comune */
.field--err input{border-color:#dc3545 !important;box-shadow:0 0 0 3px rgba(220,53,69,.18);}
.field--err label{color:#b02a37;}

/* Pannello compleanno (team) */
.bday-overlay{position:fixed;inset:0;z-index:1100;display:flex;align-items:center;justify-content:center;padding:24px;background:rgba(8,24,20,.55);backdrop-filter:blur(3px);animation:bdayFade .25s ease;}
.bday-card{background:var(--surface);border-radius:var(--r);box-shadow:var(--shadow-lg);max-width:380px;width:100%;padding:32px 28px;text-align:center;animation:bdayPop .3s var(--ease);}
.bday-card h3{font-size:1.4rem;margin:8px 0 6px;}
.bday-card p{color:var(--muted);margin-bottom:22px;}
.bday-card .btn{margin-top:4px;}
.bday-emoji{font-size:3rem;line-height:1;animation:bdayBounce 1s ease infinite;}
@keyframes bdayFade{from{opacity:0;}to{opacity:1;}}
@keyframes bdayPop{from{opacity:0;transform:translateY(12px) scale(.96);}to{opacity:1;transform:none;}}
@keyframes bdayBounce{0%,100%{transform:translateY(0);}50%{transform:translateY(-8px);}}

/* ===== Fatturazione elettronica ===== */
.fe-flash{padding:10px 14px;border-radius:10px;font-size:.88rem;font-weight:600;margin-bottom:14px;}
.fe-flash--ok{background:rgba(60,181,74,.14);color:var(--brand-dark);}
.fe-flash--bad{background:rgba(192,67,44,.12);color:#c0432c;}
.fe-conn{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;
  border:1px solid var(--line);border-radius:var(--r);padding:14px 16px;background:var(--surface);}
.fe-conn--on{border-color:rgba(60,181,74,.4);background:rgba(60,181,74,.05);}
.fe-conn-main{display:flex;align-items:center;gap:12px;}
.fe-conn-dot{flex:0 0 auto;width:10px;height:10px;border-radius:50%;background:#c0432c;box-shadow:0 0 0 4px rgba(192,67,44,.12);}
.fe-conn--on .fe-conn-dot{background:var(--brand-bright);box-shadow:0 0 0 4px rgba(60,181,74,.18);}
.fe-sec{margin-top:22px;}
.fe-sec h4{font-size:1rem;margin:0 0 4px;}
.fe-select{width:100%;max-width:520px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;
  background:var(--surface);color:var(--ink);font-size:.92rem;}
.fe-draft{border:1px solid var(--line);border-radius:var(--r);padding:18px;background:var(--surface);max-width:640px;}
.fe-draft-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;
  border-bottom:1px solid var(--line);padding-bottom:10px;margin-bottom:12px;}
.fe-draft-head b{font-size:1.05rem;}
.fe-dest{font-size:.92rem;margin-bottom:12px;line-height:1.5;}
.fe-riga{font-size:.9rem;background:var(--surface-2);border-radius:8px;padding:10px 12px;margin-bottom:14px;line-height:1.45;}
.fe-tot{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;
  border-top:1px solid var(--line);padding-top:12px;}
.fe-iva{font-size:.82rem;color:var(--muted);font-weight:600;display:flex;align-items:center;gap:8px;}
.fe-iva select{padding:6px 8px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink);font-weight:700;}
.fe-tot-vals{display:flex;gap:18px;flex-wrap:wrap;font-size:.84rem;color:var(--muted);}
.fe-tot-vals b{display:block;color:var(--ink);font-size:.98rem;}
.fe-tot-tot b{color:var(--brand-dark);font-size:1.15rem;}
.fe-miss{color:#c0432c;font-weight:600;}
.fe-errs{list-style:none;margin:14px 0 0;padding:12px 14px;background:rgba(192,67,44,.08);border-radius:10px;}
.fe-errs li{font-size:.84rem;color:#c0432c;font-weight:500;padding-left:18px;position:relative;}
/* icona Tabler come content: nel CSS non ci puo stare un <svg>, serve il data URI */
.fe-errs li::before{content:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='16'%20height='16'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%239a6700'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpath%20d='M12%209v4'/%3E%3Cpath%20d='M10.363%203.591l-8.106%2013.534a1.914%201.914%200%200%200%201.636%202.871h16.214a1.914%201.914%200%200%200%201.636%20-2.87l-8.106%20-13.536a1.914%201.914%200%200%200%20-3.274%200'/%3E%3Cpath%20d='M12%2016h.01'/%3E%3C/svg%3E");position:absolute;left:0;line-height:1;}
.fe-errs li+li{margin-top:4px;}
.fe-ok{font-size:.86rem;color:var(--brand-dark);font-weight:600;margin:14px 0 0;}
.fe-draft .btn{margin-top:16px;}

/* ===== Impostazioni (I miei dati) ===== */
.btn--xs{padding:5px 10px;font-size:.76rem;gap:5px;border-radius:8px;}
.imp-panel .team-head{margin-bottom:4px;}
.imp-sec{padding:14px 0;border-top:1px solid var(--line);}
.imp-sec:first-of-type{border-top:none;}
.imp-sec h4{font-size:.96rem;margin:0 0 4px;}
.imp-hint{font-size:.8rem;margin:0 0 10px;}
.imp-prov{display:flex;align-items:center;gap:10px;padding:9px 12px;border:1px solid var(--line);border-radius:10px;margin-bottom:8px;}
.imp-prov--on{border-color:rgba(60,181,74,.4);background:rgba(60,181,74,.05);}
.imp-prov--wip{opacity:.62;}
.imp-prov-dot{flex:0 0 auto;width:8px;height:8px;border-radius:50%;background:var(--line-strong);}
.imp-prov--on .imp-prov-dot{background:var(--brand-bright);}
.imp-prov-name{font-weight:600;font-size:.9rem;}
.imp-prov-badge{margin-left:auto;font-size:.72rem;font-weight:700;color:var(--muted);background:var(--surface-2);padding:3px 8px;border-radius:20px;text-transform:uppercase;letter-spacing:.03em;}
.imp-prov-badge--on{color:var(--brand-dark);background:rgba(60,181,74,.14);}
.imp-prov--on .imp-prov-name{margin-right:0;}
.imp-prov .btn{margin-left:8px;}
.imp-req{margin-top:4px;}
.imp-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:6px 0;font-size:.88rem;}
.imp-row>span{color:var(--ink);}
.imp-row select,.imp-row input{padding:7px 10px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink);min-width:120px;}
.imp-chk{display:flex;align-items:center;gap:9px;font-size:.88rem;padding:5px 0;cursor:pointer;}
.imp-chk input{width:16px;height:16px;accent-color:var(--brand-bright);}

/* ===== Modale fattura (da scheda intervento) ===== */
.fe-modal-ov{align-items:flex-start;padding:5vh 16px;overflow-y:auto;}
.fe-modal{position:relative;background:var(--surface);border-radius:var(--r);box-shadow:var(--shadow-lg);max-width:560px;width:100%;padding:26px;margin:auto;}
.fe-modal-x{position:absolute;top:14px;right:14px;width:34px;height:34px;border-radius:9px;border:1px solid var(--line);background:var(--surface);color:var(--muted);cursor:pointer;font-size:1rem;}
.fe-modal-x:hover{color:var(--ink);border-color:var(--line-strong);}
.fe-draft--modal{border:none;padding:0;max-width:none;}
.fe-fields{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:12px;}
.fe-fld{flex:1;min-width:140px;display:flex;flex-direction:column;gap:5px;font-size:.8rem;color:var(--muted);font-weight:600;}
.fe-fld input,.fe-fld select{padding:9px 11px;border:1px solid var(--line);border-radius:9px;background:var(--surface);color:var(--ink);font-size:.95rem;font-weight:700;}
/* Crea preventivo dal dispositivo (calcolatore CT): tasto nel risultato + modale */
.ct-prev-btn{margin-top:14px;width:100%;justify-content:center;}
.dp-form .fe-fld textarea{padding:9px 11px;border:1px solid var(--line);border-radius:9px;background:var(--surface);color:var(--ink);font:inherit;font-size:.92rem;resize:vertical;}
/* suggerimenti sul nome del cliente nel preventivo: al massimo tre */
.dp-ac-wrap{position:relative;display:block;}
/* preventivo: nome+cognome affiancati, blocco nuovo cliente, cursore di riparto */
.dp-due{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:10px;}
.dp-nuovo{margin-top:10px;padding:12px 14px;border:1px dashed var(--line-strong);border-radius:var(--r-sm);background:var(--surface-2);}
.dp-nuovo p{margin:0;font-size:.82rem;color:var(--muted);}
.dp-nuovo .dp-due{margin-top:6px;}
.dp-nuovo-n{margin:8px 0 0!important;font-size:.8rem;color:#8a4b1e;}
.dp-omo-b{background:none;border:0;font:inherit;font-weight:700;color:var(--brand-dark);text-decoration:underline;cursor:pointer;padding:0 2px;}
/* Passo 1: cliente esistente o nuovo, poi rapido o completo. Due gruppi di scelta,
   stesso aspetto, cosi' si legge come una cosa sola. */
.dp-chi{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px;}
.dp-chi-i{position:relative;display:inline-flex;align-items:center;font-size:.86rem;color:var(--ink);
  background:var(--surface);border:1.5px solid var(--line-strong);border-radius:var(--r-pill);
  padding:8px 15px;cursor:pointer;transition:.15s;user-select:none;}
.dp-chi-i input{position:absolute;opacity:0;width:0;height:0;}
.dp-chi-i:hover{border-color:var(--brand);}
.dp-chi-i.on{background:rgba(0,166,81,.1);border-color:var(--brand);color:var(--brand-dark);font-weight:700;}
.dp-cli-ok{display:flex;align-items:center;gap:8px;margin:10px 0 0;padding:9px 12px;font-size:.83rem;
  color:var(--brand-dark);background:rgba(0,166,81,.07);border:1px solid rgba(0,166,81,.3);border-radius:var(--r-sm);}
.dp-cli-dot{flex:none;width:9px;height:9px;border-radius:50%;background:var(--muted);}
.dp-cli-dot--red{background:#c0432c;} .dp-cli-dot--yellow{background:#d98a1f;} .dp-cli-dot--blue{background:var(--brand);}
.dp-modo{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:16px;}
.dp-modo-i{position:relative;display:block;padding:13px 15px;border:1.5px solid var(--line-strong);
  border-radius:var(--r-sm);background:var(--surface);cursor:pointer;transition:.15s;
  -webkit-user-select:none;user-select:none;}
.dp-modo-i input{position:absolute;opacity:0;width:0;height:0;}
.dp-modo-i:hover{border-color:var(--brand);}
.dp-modo-i.on{border-color:var(--brand);background:rgba(0,166,81,.07);}
.dp-modo-i b{display:block;font-size:.92rem;color:var(--ink);}
.dp-modo-i small{display:block;margin-top:4px;font-size:.78rem;line-height:1.45;color:var(--muted);}
/* Regola applicata al posto di un campo: si dichiara, se no sembra un errore. */
.dp-deriva{margin:8px 0 0;font-size:.82rem;line-height:1.5;color:var(--muted);}
.dp-deriva:empty{display:none;}
/* Le domande della scheda dentro un pannello del preventivo: una colonna sola,
   il modale e' gia' diviso in due e la griglia a due colonne andrebbe in overflow. */
.dp-dati:empty{display:none;}
.dp-dati{margin-top:14px;}
.dp-dati .dati-grid{grid-template-columns:1fr;}
.dp-dati .dati-sec{margin-bottom:14px;}
/* Dentro il preventivo la scheda e' spezzata a pezzi: il numero della sezione
   direbbe "1" su ogni pannello, quindi non conta niente. Via. */
.dp-dati .dati-sec-n{display:none;}
.dp-dati .dati-sec-h{gap:0;}
@media (min-width:900px){ .dp-pane>.dp-dati .dati-grid{grid-template-columns:1fr 1fr;} }
.dp-split{margin-top:12px;}
.dp-split-top{display:flex;justify-content:space-between;font-size:.8rem;color:var(--muted);margin-bottom:6px;}
.dp-split-g b{color:var(--brand-dark);} .dp-split-l b{color:var(--accent);}
.dp-split input[type=range]{width:100%;height:10px;border-radius:999px;appearance:none;outline:none;cursor:ew-resize;}
.dp-split input[type=range]::-webkit-slider-thumb{appearance:none;width:22px;height:22px;border-radius:50%;background:#fff;border:3px solid var(--ink);box-shadow:0 2px 8px rgba(8,32,25,.3);cursor:grab;}
.dp-split input[type=range]::-moz-range-thumb{width:22px;height:22px;border-radius:50%;background:#fff;border:3px solid var(--ink);box-shadow:0 2px 8px rgba(8,32,25,.3);cursor:grab;}
.dp-split-val{display:flex;justify-content:space-between;font-size:.84rem;font-weight:700;color:var(--ink);margin-top:6px;}
/* La spunta e' flex per allineare quadratino e testo: il testo deve stare in UN solo
   figlio, se no ogni parola diventa una colonna e su misure strette si spezza. */
/* Prezzo e fatture in un passo solo: servono due cose a colpo d'occhio, dove finisce
   una sezione e quali importi sono lordi. */
.dp-sez{margin:20px 0 8px;padding-top:14px;border-top:1px solid var(--line);font-size:.8rem;
  font-weight:700;color:var(--ink);text-transform:uppercase;letter-spacing:.04em;}
/* Il badge segue l'etichetta; andando a capo deve partire a filo del campo, quindi
   niente margine a sinistra: lo spazio quando sta in riga lo da' gia' il testo. */
.dp-lordo{display:inline-block;font-weight:600;font-size:.7rem;color:var(--brand-dark);
  background:rgba(0,166,81,.12);border-radius:var(--r-pill);padding:2px 8px;margin-left:0;
  text-transform:none;letter-spacing:0;}
.dp-kv--tot{border-top:1px solid var(--line);margin-top:4px;padding-top:6px;font-weight:700;}
.dp-kv--tot b{color:var(--ink);}
.dp-fatt-sep{margin-top:12px;padding-top:10px;border-top:1.5px dashed var(--line-strong);}
.dp-fatt-nota{margin:10px 0 0;font-size:.78rem;color:var(--muted);line-height:1.45;}
/* opere accessorie: bottoni a pillola, stessa lingua delle opzioni della scheda */
.dp-opere-l{margin:14px 0 6px;font-size:.8rem;font-weight:600;color:var(--muted);}
.dp-opere{display:flex;flex-wrap:wrap;gap:7px;}
.dp-opera{font:inherit;font-size:.82rem;color:var(--ink);background:var(--surface);border:1.5px solid var(--line-strong);
  border-radius:var(--r-pill);padding:6px 12px;cursor:pointer;transition:.15s;user-select:none;}
.dp-opera:hover{border-color:var(--brand);}
.dp-opera[aria-pressed="true"]{background:rgba(0,166,81,.1);border-color:var(--brand);color:var(--brand-dark);font-weight:600;}
.dp-check{display:flex;align-items:center;gap:8px;margin-top:12px;font-size:.84rem;color:var(--ink);cursor:pointer;}
.dp-check input{width:17px;height:17px;accent-color:var(--brand);flex:none;}
.dp-check>span{flex:1;line-height:1.4;}
.dp-iva-nota{display:block;margin-top:8px;font-size:.74rem;font-style:normal;color:rgba(255,255,255,.82);line-height:1.45;}
.dp-ac{position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:40;background:var(--surface);
  border:1px solid var(--line-strong);border-radius:var(--r-sm);box-shadow:var(--shadow);overflow:hidden;}
.dp-ac-i{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;text-align:left;
  font:inherit;font-size:.9rem;color:var(--ink);background:none;border:0;border-bottom:1px solid var(--line);
  padding:9px 12px;cursor:pointer;}
.dp-ac-i:last-child{border-bottom:0;}
.dp-ac-i:hover{background:var(--surface-2);}
.dp-ac-i small{color:var(--muted);font-size:.76rem;}
.fe-fld input[readonly]{background:var(--surface-2);color:var(--muted);cursor:not-allowed;}
.dp-net{margin-top:14px;background:var(--brand-dark);color:#fff;border-radius:12px;padding:12px 16px;display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px;}
.dp-net span{font-size:.82rem;font-weight:600;flex:1;min-width:150px;}
.dp-net b{font-size:1.5rem;line-height:1;}
.dp-net small{width:100%;font-size:.72rem;color:rgba(255,255,255,.75);}
/* preventivo a step: il modale sfrutta la larghezza invece di allungarsi in verticale */
.fe-modal--wide{max-width:880px;}
/* i passi usano lo stepper del wizard incentivo (.wiz-stepper): qui solo il distacco */
.dp-steps{margin:0 0 18px;}
.dp-cols{display:grid;grid-template-columns:1fr 1fr;gap:22px;align-items:start;}
.dp-card{background:var(--surface-2);border:1px solid var(--line);border-radius:12px;padding:14px 16px;}
.dp-card h4{margin:0 0 8px;font-size:.74rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;}
.dp-kv{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:6px 0;
  font-size:.84rem;border-bottom:1px solid var(--line);}
.dp-kv:last-child{border-bottom:0;}
.dp-kv b{font-size:1rem;white-space:nowrap;}
.dp-note{display:block;margin:-3px 0 5px;font-size:.73rem;color:var(--muted);line-height:1.4;}
.dp-scarto{margin-top:10px;font-size:.82rem;line-height:1.5;color:var(--ink);}
.dp-nav{display:flex;gap:10px;margin-top:16px;}
.dp-nav .btn{flex:1;justify-content:center;}
.dp-nav .btn--ghost{flex:0 0 auto;}
.dp-nav .dp-gen-big{padding:17px 26px;font-size:1.05rem;font-weight:700;}
/* riepilogo finale: le scelte dei passi precedenti, in chiaro e modificabili */
.dp-riep{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.dp-riep-b{background:var(--surface-2);border:1px solid var(--line);border-radius:12px;padding:12px 14px;}
.dp-riep-b:last-child:nth-child(odd){grid-column:1/-1;}
.dp-riep-h{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:4px;}
.dp-riep-h h4{margin:0;font-size:.74rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;}
.dp-riep-mod{border:0;background:none;padding:0;font:inherit;font-size:.76rem;font-weight:600;
  color:var(--brand-dark);cursor:pointer;text-decoration:underline;}
.dp-riep-mod:hover{color:var(--accent);}
.dp-riep .dp-kv{align-items:flex-start;}
.dp-riep .dp-kv span{display:block;}
.dp-riep .dp-kv b{font-size:.95rem;}
/* scelte a radio dentro il preventivo (tipo di APE, aliquota della detrazione) */
.dp-radio{display:flex;flex-direction:column;gap:6px;margin-top:6px;}
.dp-radio-i{display:flex;align-items:flex-start;gap:9px;padding:9px 12px;border:1px solid var(--line);
  border-radius:10px;background:var(--surface);cursor:pointer;font-weight:400;}
.dp-radio-i:hover{border-color:var(--line-strong);}
.dp-radio-i input{margin-top:2px;width:17px;height:17px;accent-color:var(--brand);flex:none;}
.dp-radio-i input:checked~span b{color:var(--brand-dark);}
.dp-radio-i:has(input:checked){border-color:var(--brand);background:var(--surface-2);}
.dp-radio-i span{display:block;font-size:.88rem;color:var(--ink);}
.dp-radio-i small{display:block;font-size:.75rem;font-weight:400;color:var(--muted);margin-top:1px;}
@media(max-width:720px){
  .dp-cols,.dp-riep{grid-template-columns:1fr;gap:14px;}
  .dp-steps .wiz-st-label{display:none;}
}
.fe-univ{margin-top:14px;padding:14px;background:var(--surface-2);border-radius:10px;}
.fe-univ-btns{display:flex;gap:10px;flex-wrap:wrap;}

.fe-block{font-size:.85rem;font-weight:600;color:#c0432c;margin:14px 0 8px;}

.fe-draft .btn[disabled]{opacity:.45;cursor:not-allowed;box-shadow:none;filter:grayscale(.4);}

/* ===== Modale Dati/Scheda intervento: a tutto schermo, due colonne, senza scroll esterno ===== */
#datiModal{align-items:center;padding:3vh 2vw;overflow:hidden;}
.data-modal-panel--dati{max-width:min(1300px,96vw);width:96vw;height:auto;max-height:94vh;display:flex;flex-direction:column;}
.data-modal-panel--dati .data-modal-head{margin-bottom:8px;}
.dati-split{display:flex;gap:24px;flex:1;min-height:0;}
.dati-main{flex:1 1 auto;min-width:0;overflow-y:auto;padding-right:8px;}
.dati-main #datiModalBody{display:block;max-height:none;overflow:visible;margin:0;padding:0;column-gap:28px;}
@media (min-width:1000px){.dati-main #datiModalBody{column-count:2;}}
.dati-main .dati-sec{break-inside:avoid;-webkit-column-break-inside:avoid;page-break-inside:avoid;margin:0 0 16px;}
.dati-side{flex:0 0 280px;display:flex;flex-direction:column;gap:12px;overflow-y:auto;border-left:1px solid var(--line);padding-left:22px;}

/* ---- Compilazione guidata: una domanda alla volta -------------------------
   Stesso form della scheda intera: qui si nasconde tutto tranne il campo con
   .is-cur, quindi non esiste un secondo form da tenere allineato. ---- */
/* la domanda sta al centro del pannello, non incollata all'intestazione */
.is-guida .dati-main{display:flex;flex-direction:column;}
/* l'id in `.dati-main #datiModalBody` batte la sola classe: qui serve la stessa forza */
.dati-main #datiModalBody.dati-body--guida{column-count:1;flex:1 1 auto;display:flex;flex-direction:column;justify-content:center;min-height:320px;}
.dati-body--guida > *{display:none;}
.dati-body--guida > .dati-sec:has(.dati-field.is-cur){display:block;width:100%;max-width:600px;margin:0 auto;padding:20px 0;}
.dati-body--guida .dati-grid{display:block;}
.dati-body--guida .dati-field{display:none;}
.dati-body--guida .dati-field.is-cur{display:flex;flex-direction:column;align-items:center;gap:22px;}
.dati-body--guida .dati-sec-h{justify-content:center;font-size:.74rem;font-weight:800;letter-spacing:.08em;
  text-transform:uppercase;color:var(--brand-dark);border:0;padding:0;margin-bottom:22px;}
.dati-body--guida .dati-sec-n{display:none;}
.dati-body--guida .dati-field.is-cur > label{font-size:1.4rem;font-weight:700;line-height:1.3;text-align:center;}
.dati-body--guida .dati-field.is-cur input,.dati-body--guida .dati-field.is-cur select,
.dati-body--guida .dati-field.is-cur textarea{font-size:1.05rem;padding:15px 18px;width:100%;max-width:440px;}
.dati-body--guida .field-fb{text-align:center;}
/* gruppo di campi = una domanda sola: titolo grande, i campi affiancati sotto */
.dati-body--guida .dati-grp-h{display:none;}
.dati-body--guida .dati-grp-h.is-cur{display:block;grid-column:1 / -1;margin:0 0 4px;
  font-size:1.4rem;font-weight:700;line-height:1.3;text-align:center;color:var(--ink);}
.dati-body--guida .dati-grid:has(.dati-field--grp.is-cur){display:grid;grid-template-columns:1fr 1fr;
  gap:14px 16px;max-width:460px;margin:0 auto;}
.dati-body--guida .dati-field--grp.is-cur{align-items:stretch;gap:6px;}
.dati-body--guida .dati-field--grp.is-cur > label{font-size:.82rem;font-weight:600;color:var(--muted);text-align:left;}
.dati-body--guida .dati-field--grp.is-cur input{font-size:1rem;padding:11px 13px;}
/* pillole di scelta: in guidata sono LA risposta, non un dettaglio del modulo */
.dati-body--guida .dati-opts{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;}
.dati-body--guida .dati-opt{font-size:1rem;padding:13px 24px;}
.dati-body--guida + .guida-bar{margin-top:26px;}
/* in guidata la colonna laterale resta solo con le scelte che cambiano i campi */
.is-guida .dati-side-intro,.is-guida .dati-side-tip,.is-guida .dati-pdf-btn{display:none;}
.guida-bar{position:sticky;bottom:0;margin-top:18px;padding:14px 0 4px;background:var(--surface);
  border-top:1px solid var(--line);display:grid;gap:10px;}
.guida-prog{display:flex;align-items:center;gap:12px;flex-wrap:wrap;font-size:.8rem;color:var(--muted);}
.guida-prog-t b{color:var(--ink);}
.guida-prog-bar{flex:1 1 120px;height:6px;border-radius:999px;background:var(--surface-2);overflow:hidden;min-width:80px;}
.guida-prog-bar i{display:block;height:100%;border-radius:999px;background:var(--brand);transition:width .25s ease;}
.guida-time{font-weight:700;color:var(--brand-dark);}
/* tasti agli angoli opposti, il link "compila tutto" al centro: prev e next non si toccano */
.guida-btns{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;}
.guida-off{background:none;border:0;font:inherit;font-size:.8rem;font-weight:600;
  color:var(--muted);text-decoration:underline;cursor:pointer;padding:6px;}
.guida-off:hover{color:var(--brand-dark);}
.dati-stima{font-size:.8rem;font-weight:700;color:var(--brand-dark);}
.dati-side-intro{font-size:.8rem;margin:0;}
.dati-side .dati-serv-pick,.dati-side .dati-gen-pick{margin:0;}
/* l'attributo hidden deve davvero nascondere (display:flex lo sovrascriveva) */
.dati-serv-pick[hidden],.dati-gen-pick[hidden]{display:none;}
.dati-side .data-modal-prog{margin-top:auto;padding-top:6px;}
.dati-side .dati-foot-actions{flex-direction:column;align-items:stretch;gap:8px;}
.dati-side .dati-foot-actions .btn{width:100%;justify-content:flex-start;}
.dati-side .dati-foot-actions .btn--icon{height:auto;}
.dati-side .form-note{margin:2px 0 0;}
@media (max-width:999px){
  #datiModal{padding:0;align-items:stretch;overflow-y:auto;}
  .data-modal-panel--dati{width:100vw;height:auto;min-height:100vh;max-width:none;border-radius:0;}
  .dati-split{flex-direction:column;}
  .dati-main{overflow:visible;}
  .dati-side{flex-basis:auto;border-left:none;border-top:1px solid var(--line);padding-left:0;padding-top:14px;}
  .dati-side .data-modal-prog{margin-top:0;}
  .dati-side .dati-foot-actions{flex-direction:row;flex-wrap:wrap;}
  .dati-side .dati-foot-actions .btn{width:auto;flex:1;justify-content:center;}
}

/* selettore Imponibile/Totale nel modale fattura */
.fe-fields .fe-fld select{font-weight:700;}

/* hidden deve nascondere anche i .btn (display:inline-flex lo sovrascriveva) */
.dati-foot-actions .btn[hidden]{display:none;}
/* Salva dati: grande, verde, in fondo alla sidebar */
.dati-side .dati-save-main{width:100%;justify-content:center;padding:14px 18px;font-size:1.02rem;font-weight:700;margin-top:4px;}
/* blocchi GSE condizionali (Sì / No / Non lo so) */
.gse-block{margin-top:12px;}
.gse-block-h{font-size:.9rem;margin:0 0 8px;}
.gse-steps-ol{margin:0 0 10px;padding-left:18px;font-size:.84rem;line-height:1.5;color:var(--ink);}
.gse-steps-ol li{margin-bottom:3px;}
.gse-block--ok{border-color:rgba(60,181,74,.4);background:rgba(60,181,74,.06);}
.gse-pin-later{width:100%;justify-content:flex-start;text-align:left;}
.gse-pin-later.is-on{border-color:var(--brand);color:var(--brand-dark);background:rgba(60,181,74,.08);}

/* Azioni "documento" nella barra intervento (Scheda dati / Delega / Fattura) spente finché
   mancano i prerequisiti: sbiadite ma cliccabili (mostrano il popover "compila prima…"). */
.int-act--dim{opacity:.5;filter:grayscale(.4);cursor:help;}
.int-act--dim:hover{filter:grayscale(.4);}
.dati-side-tip{font-size:.78rem;margin:6px 0 0;}

/* "Scarica scheda dati (PDF)" nel modale (a tutta larghezza, nascondibile via hidden) */
.dati-side .dati-pdf-btn{width:100%;justify-content:flex-start;}
.dati-side > .btn[hidden]{display:none;}

/* ===== Pagamenti: gettoni (token) acquisto credito ===== */
.pag-saldo{margin-bottom:4px;}
.pag-tokens{display:flex;flex-wrap:wrap;gap:10px;}
.pag-token{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:3px;
  border:1.5px solid var(--tk);border-radius:12px;padding:11px 15px;min-width:140px;text-align:left;
  background:color-mix(in srgb, var(--tk) 7%, var(--surface));cursor:pointer;
  transition:transform .08s ease, box-shadow .15s ease, background .15s ease;}
.pag-token:hover{transform:translateY(-2px);box-shadow:0 6px 16px rgba(8,24,20,.12);}
.pag-token:active{transform:translateY(0);}
.pag-token--on{background:color-mix(in srgb, var(--tk) 16%, var(--surface));}
.pag-token-name{font-weight:700;font-size:.84rem;color:var(--ink);}
.pag-token-price{font-size:1.55rem;font-weight:800;line-height:1.05;color:var(--tk);}
.pag-token-price small{font-size:.72rem;font-weight:700;margin-left:4px;}
/* pallino rosso: il conteggio del selezionato deve saltare all'occhio, non mimetizzarsi
   nel colore del servizio */
.pag-token-badge{position:absolute;top:-10px;right:-10px;min-width:27px;height:27px;border-radius:50%;
  background:#d92d20;color:#fff;font-size:.85rem;font-weight:800;display:flex;align-items:center;justify-content:center;
  padding:0 6px;border:2px solid var(--surface);box-shadow:0 2px 8px rgba(217,45,32,.45);}
.pag-token-badge[hidden]{display:none;}
.pag-cart-line{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--line);font-size:.9rem;}
.pag-cart-dot{width:11px;height:11px;border-radius:50%;flex:0 0 auto;}
.pag-cart-name{flex:1;min-width:0;font-weight:600;color:var(--ink);}
.pag-cart-qty{display:flex;align-items:center;gap:9px;}
.pag-cart-qty b{min-width:18px;text-align:center;}
.pag-qty{width:25px;height:25px;border-radius:7px;border:1px solid var(--line-strong);background:var(--surface);
  color:var(--ink);cursor:pointer;font-weight:800;line-height:1;font-size:1rem;}
.pag-qty:hover{background:var(--surface-2);}
.pag-cart-sub{font-weight:700;min-width:74px;text-align:right;color:var(--ink);}
.pag-cart-empty{font-size:.88rem;margin:4px 0;}
.pag-total-row{display:flex;align-items:center;justify-content:flex-end;gap:14px;margin:14px 0 4px;font-size:1rem;}
.pag-total-l{color:var(--muted);font-weight:600;}
.pag-total-row b{font-size:1.5rem;color:var(--brand-dark);min-width:96px;text-align:right;}
.pag-reset{margin-right:auto;border:none;background:none;color:var(--muted);cursor:pointer;font-size:.84rem;text-decoration:underline;padding:0;}
.pag-reset:hover{color:var(--ink);}

/* ===== Pagamenti: crediti (1 credito = 10 euro) ===== */
/* Catalogo a sinistra + riepilogo in colonna a destra: le righe di gettoni sono larghe
   e lasciavano mezza pagina vuota. Sotto i 1000px si torna in verticale. */
.pag-acq{display:grid;grid-template-columns:minmax(0,1fr) minmax(380px,.5fr);gap:22px;align-items:start;margin-top:22px;}
.pag-acq-side{border:1px solid var(--line);border-radius:var(--r);background:var(--surface-2);padding:16px 18px;position:sticky;top:16px;}
.pag-acq-side h4,.pag-acq-main h4{margin:0 0 6px;font-size:.95rem;color:var(--ink);}
.pag-group{margin-bottom:20px;}
.pag-group:last-child{margin-bottom:0;}
.pag-group h5{margin:0 0 9px;font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);}
.pag-bottom{display:grid;grid-template-columns:1fr 1fr;gap:22px;align-items:start;margin-top:26px;}
.pag-bottom .pag-sec:first-child{margin-top:0;}
@media(max-width:1000px){.pag-acq,.pag-bottom{grid-template-columns:1fr;}.pag-acq-side{position:static;}}
.pag-saldo-sub{font-size:.82rem;opacity:.9;}
.pag-token-eur{font-size:.76rem;color:var(--muted);}
.pag-packs{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:14px;}
.pag-pack{display:flex;flex-direction:column;align-items:center;gap:1px;min-width:96px;padding:10px 14px;
  border:1.5px solid var(--line-strong);border-radius:12px;background:var(--surface);cursor:pointer;
  transition:transform .08s ease, box-shadow .15s ease, border-color .15s ease;}
.pag-pack:hover{transform:translateY(-2px);box-shadow:0 6px 16px rgba(8,24,20,.12);border-color:var(--brand-dark);}
.pag-pack b{font-size:1.3rem;line-height:1.1;color:var(--brand-dark);}
.pag-pack span{font-size:.78rem;color:var(--muted);}
.pag-pack-eur{font-weight:600;}
.pag-total-eur{color:var(--muted);font-size:.9rem;min-width:88px;text-align:right;}
/* Nella colonna del riepilogo il nome del servizio va a capo per conto suo: in riga
   con ± e subtotale finiva incolonnato una parola per riga. */
.pag-acq-side .pag-cart-line{flex-wrap:wrap;row-gap:7px;}
.pag-acq-side .pag-cart-name{flex:1 1 calc(100% - 21px);}
.pag-acq-side .pag-cart-qty{margin-left:21px;}
.pag-acq-side .pag-cart-sub{margin-left:auto;}
.pag-acq-side .pag-total-row{gap:10px;}
.pag-acq-side .pag-total-row b{min-width:0;font-size:1.35rem;}
.pag-acq-side .pag-total-eur{min-width:0;}
.pag-bonifico{display:grid;gap:6px;padding:12px 14px;border:1px dashed var(--line-strong);border-radius:var(--r-sm);background:var(--surface-2);}
.pag-bonifico div{display:flex;justify-content:space-between;gap:12px;font-size:.86rem;}
.pag-bonifico span{color:var(--muted);}
.pag-bonifico b{text-align:right;word-break:break-all;}
.pag-mov-eur{display:block;font-size:.76rem;color:var(--muted);text-align:right;}
.pag-mov-bonus{color:#1e8a4f;font-weight:700;}
.pag-primo{font-size:.85rem;margin:0 0 12px;padding:10px 13px;border:1px solid #9fd4b6;background:#f2faf5;border-radius:var(--r-sm);color:var(--ink);}
/* area da attivare: è la prima cosa che vede chi entra col conto bloccato */
.pag-blocco{border:1.5px solid #e0a94a;background:#fdf6e7;border-radius:var(--r);padding:16px 18px;margin-bottom:14px;}
.pag-blocco h3{margin:0 0 6px;font-size:1.05rem;color:#7a4e0c;}
.pag-blocco p{margin:0;font-size:.9rem;line-height:1.55;color:var(--ink);}
.pag-blocco--wait{border-color:#9fd4b6;background:#f2faf5;}
.pag-blocco--wait h3{color:#1d6b41;}
.pag-mov-side{flex-direction:column;align-items:flex-end;gap:2px;}
.pag-mov-side .inc-stato,.pag-mov-side .inc-ape-link{margin-top:4px;}
.pag-nota ul{margin:0;padding-left:18px;display:grid;gap:6px;font-size:.88rem;color:var(--muted);}
.pag-nota li b{color:var(--ink);}
.dz-saldo-eur{font-size:.82rem;opacity:.75;}

/* ===== Pannello "Assegna a un cliente" (archivio valutazioni) ===== */
.assegna-modal{max-width:520px;}
.assegna-h{font-size:1.2rem;margin:0 0 14px;}
.assegna-new{margin-bottom:12px;}
.assegna-search{width:100%;padding:9px 12px;border:1px solid var(--line);border-radius:10px;font:inherit;margin-bottom:8px;}
.assegna-group{margin-top:14px;}
.assegna-group h4{font-size:.86rem;margin:0 0 8px;color:var(--ink);}
.assegna-group h4 .muted{font-weight:400;font-size:.8rem;}
.assegna-empty{font-size:.85rem;margin:2px 0;}
.assegna-row{display:flex;flex-direction:column;gap:5px;width:100%;text-align:left;
  border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin-bottom:7px;background:var(--surface);cursor:pointer;
  transition:border-color .12s, background .12s;}
.assegna-row:hover{border-color:var(--brand);background:var(--surface-2);}
.assegna-row--warn{border-color:rgba(192,67,44,.4);}
.assegna-row-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.assegna-row-name{font-weight:700;font-size:.92rem;color:var(--ink);}
.assegna-tag{font-size:.72rem;font-weight:700;padding:2px 8px;border-radius:20px;background:var(--surface-2);color:var(--muted);
  text-transform:uppercase;letter-spacing:.02em;}
.assegna-tag--none{background:rgba(100,116,139,.14);color:#64748b;}
.assegna-tag--bozza{background:rgba(245,158,11,.16);color:#9a6700;}
.assegna-tag--inviata{background:rgba(47,111,237,.14);color:#2f6fed;}
.assegna-tag--lavorazione{background:rgba(139,92,246,.16);color:#7c3aed;}
.assegna-tag--approvata{background:rgba(60,181,74,.16);color:var(--brand-dark);}
.assegna-warn{font-size:.78rem;color:#c0432c;font-weight:600;}

/* ===== Archivio valutazioni + pannello Confronto (a fianco) ===== */
.archivio-split{display:grid;grid-template-columns:1fr 1fr;gap:18px;align-items:start;}
@media (max-width:900px){.archivio-split{grid-template-columns:1fr;}}
.archivio-col .saved-list{max-height:62vh;overflow-y:auto;padding-right:4px;}
.saved-item[draggable=true]{cursor:grab;}
.saved-item[draggable=true]:active{cursor:grabbing;}
.saved-confronta{padding:6px 9px;}
.saved-confronta.is-added{opacity:.62;filter:grayscale(.35);box-shadow:none;}
.saved-confronta.is-added:hover{opacity:.95;filter:none;}
.confronto-host{min-height:160px;max-height:62vh;overflow-y:auto;border:2px dashed var(--line);border-radius:var(--r-sm);padding:12px;transition:border-color .15s, background .15s;}
.confronto-host--over{border-color:var(--brand);background:color-mix(in srgb, var(--brand-bright) 8%, var(--surface));}
.confronto-hint{margin-bottom:0;}
/* griglia che si adatta: quante valutazioni vuoi, vanno a capo da sole */
.confronto-grid{display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(185px,1fr));}
.confronto-empty{display:flex;align-items:center;justify-content:center;text-align:center;color:var(--muted);
  font-size:.83rem;min-height:130px;padding:14px;}
.confronto-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:10px;}
.confronto-foot .muted{font-size:.82rem;}
.confronto-card{position:relative;border:1px solid var(--line);border-radius:10px;padding:12px 12px 10px;background:var(--surface);min-height:120px;}
.confronto-card-h{display:flex;flex-direction:column;gap:2px;margin-bottom:6px;padding-right:20px;}
.confronto-card-h b{font-size:.92rem;color:var(--ink);}
.confronto-card-sum{font-size:.82rem;color:var(--muted);line-height:1.4;}
.confronto-x{position:absolute;top:6px;right:6px;width:22px;height:22px;border:none;background:none;color:var(--muted);
  cursor:pointer;font-size:.85rem;border-radius:6px;line-height:1;}
.confronto-x:hover{background:var(--surface-2);color:#c0432c;}
.confronto-card .saved-thumbs{margin-top:8px;}

/* ===== Tabella di confronto valutazioni ===== */
.confronto-tablewrap{overflow-x:auto;}
.confronto-table{width:100%;border-collapse:collapse;font-size:.84rem;}
.confronto-table th,.confronto-table td{border:1px solid var(--line);padding:7px 9px;text-align:left;vertical-align:top;}
.confronto-table thead th{background:var(--surface-2);}
.confronto-table tbody th{background:var(--surface-2);font-weight:600;color:var(--muted);white-space:nowrap;width:1%;}
.cfr-col-h{display:flex;align-items:flex-start;justify-content:space-between;gap:6px;}
.cfr-col-h b{font-size:.9rem;color:var(--ink);}
.cfr-col-mod{display:block;font-size:.78rem;color:var(--muted);margin-top:2px;}
.cfr-eco td,.cfr-eco>th{font-weight:700;}
.cfr-best{background:rgba(60,181,74,.16);color:var(--brand-dark);font-weight:800;}
.cfr-sub{display:block;font-size:.72rem;color:var(--muted);font-weight:400;margin-top:2px;}
.cfr-spesa,.cfr-stock{width:100%;min-width:88px;padding:5px 7px;border:1px solid var(--line);border-radius:7px;font:inherit;font-size:.82rem;background:var(--surface);color:var(--ink);}
.cfr-x{display:inline-grid;place-items:center;width:24px;height:24px;border:none;background:#fff;color:#e11d2a;cursor:pointer;font-size:1.05rem;font-weight:800;line-height:1;border-radius:50%;flex:0 0 auto;box-shadow:0 1px 4px rgba(0,0,0,.2);transition:transform .12s ease,background .15s ease,color .15s ease;}
.cfr-x:hover{background:#e11d2a;color:#fff;transform:scale(1.08);}

/* ===== Barra "salva / crea" del wizard: separatore evidente fra wizard e archivio/confronto ===== */
/* Azzurro e blu, non verde come tutto il resto: e' la riga da cui partono le azioni
   vere (assegna, crea, preventivo) e deve staccarsi dai pannelli sopra, non fondersi. */
.wiz-savebar{background:linear-gradient(180deg,#e6f2fc,#f5fbff);
  border:2px solid var(--accent);box-shadow:0 10px 30px rgba(0,115,188,.18);padding:20px 22px;}
.wiz-savebar-in{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:14px 40px;}
/* La riga di stato sotto i tasti e' quasi sempre vuota, ma teneva 19px + 14 di margine:
   i tasti restavano incollati in alto con 55px di vuoto sotto invece di stare in mezzo. */
.wiz-savebar .form-note{text-align:center;}
.wiz-savebar .form-note b{font-weight:800;}
.wiz-savebar .form-note:empty{margin:0;min-height:0;}
.wiz-savebar .btn--sm{font-size:1.02rem;font-weight:700;padding:14px 26px;}
.wiz-savebar .btn--sm svg{width:19px;height:19px;}
.wiz-cliente-group{display:inline-flex;align-items:center;gap:12px;}
.wiz-cliente-group[hidden]{display:none;}
.wiz-cta{box-shadow:0 5px 16px rgba(60,181,74,.38);}
/* i secondari col bordo blu: si leggono come un gruppo unico dentro la barra */
.wiz-savebar .btn--ghost{background:#fff;border-color:color-mix(in srgb, var(--accent) 38%, var(--line));color:#12303f;}
.wiz-savebar .btn--ghost:hover{border-color:var(--accent);color:var(--accent);background:#fff;}


/* ===== Tutorial in-UI (demo - vedi tutorial.js e TUTORIAL-AZIENDE.md) ===== */
.tut-catch{position:fixed;inset:0;z-index:1200;}
.tut-hole{position:fixed;z-index:1201;border-radius:12px;box-shadow:0 0 0 9999px rgba(14,36,64,.58);pointer-events:none;}
.tut-hole.tut-anim{transition:left .25s ease,top .25s ease,width .25s ease,height .25s ease;}
.tut-tip{position:fixed;z-index:1202;width:min(330px,calc(100vw - 24px));background:#fff;border-radius:14px;padding:14px 16px 16px;box-shadow:0 18px 48px rgba(14,36,64,.4);font-family:Poppins,system-ui,sans-serif;}
.tut-tip.tut-anim{transition:left .25s ease,top .25s ease;}
.tut-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;}
.tut-count{font-size:.72rem;font-weight:700;color:var(--brand,#3cb54a);letter-spacing:.04em;}
.tut-x{border:none;background:none;cursor:pointer;font-size:.9rem;color:#64748b;padding:2px 4px;line-height:1;border-radius:7px;transition:color .25s,background .25s;}
.tut-x:hover{color:var(--brand-dark,#0e2440);}
/* Click fuori dal box → shake + ✕ in rosso: «per chiudere usa la ✕» */
.tut-tip.tut-shake{animation:tutShake .45s ease;}
.tut-tip.tut-shake .tut-x{color:#fff !important;background:#e53935 !important;box-shadow:0 0 0 4px rgba(229,57,53,.25) !important;}
@keyframes tutShake{0%,100%{transform:translateX(0);}20%{transform:translateX(-9px);}40%{transform:translateX(8px);}60%{transform:translateX(-6px);}80%{transform:translateX(5px);}}
.tut-tip h4{margin:0 0 6px;font-size:1rem;color:var(--brand-dark,#0e2440);}
.tut-tip p{margin:0;font-size:.85rem;line-height:1.5;color:#3f4c5e;}
.tut-nav{display:flex;justify-content:space-between;align-items:center;margin-top:14px;gap:10px;}
.tut-nav button{border:none;border-radius:10px;padding:9px 16px;font:600 .84rem Poppins,system-ui,sans-serif;cursor:pointer;}
.tut-prev{background:#eef2f6;color:var(--brand-dark,#0e2440);}
.tut-next{background:var(--brand,#3cb54a);color:#fff;box-shadow:0 5px 14px rgba(60,181,74,.35);}
/* Tasto verde «demo» nell'hero (temporaneo - vedi tutorial.js) */

/* ============ Wizard incentivi: categorie di beneficiario (Conto Termico 3.0) ============ */
.wiz-info{margin-top:18px;padding:14px 16px;border:1.5px solid rgba(0,115,188,.30);background:rgba(0,115,188,.06);border-radius:var(--r-sm);font-size:.88rem;color:var(--ink);}
/* icona e titolo sulla stessa riga: le svg del sito sono display:block (reset), da sole
   andrebbero a capo. Icona info del set Tabler, come il resto delle icone. */
.wiz-info-h{display:flex;align-items:center;gap:8px;}
.wiz-info-h svg{color:var(--accent);}   /* misura e display arrivano dallo stile inline di icInline() */
.wiz-info ul{margin:8px 0 0 18px;padding:0;display:grid;gap:4px;}
.wiz-grid--sog{grid-template-columns:repeat(4,1fr);gap:12px;}
/* «Avanti» occupa la cella libera dell'ultima riga: niente riga vuota sotto le card */
.wiz-grid > .wiz-nav{margin-top:0;align-self:end;align-items:flex-end;}
@media (max-width:1040px){.wiz-grid--sog{grid-template-columns:repeat(3,1fr);}}
@media (max-width:720px){.wiz-grid--sog{grid-template-columns:repeat(2,1fr);}}
@media (max-width:440px){.wiz-grid--sog{grid-template-columns:1fr;}}
.wiz-sog{position:relative;display:flex;flex-direction:column;align-items:stretch;text-align:left;padding:16px 16px 15px;}
/* Solo l'icona, senza riquadro; ferma (niente zoom/rotazione all'hover).
   stroke esplicito perché ".wiz-opt span" (specificità più alta) sovrascriverebbe color. */
.wiz-sog-ico{margin-bottom:11px;line-height:0;}
.wiz-sog-ico svg{width:34px;height:34px;display:block;stroke:var(--brand);}
.wiz-sog b{font-size:1rem;line-height:1.25;margin-bottom:4px;}
.wiz-sog-d{color:var(--muted);font-size:.82rem;line-height:1.4;flex:1;}
.wiz-sog-badges{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:12px;}
.wiz-badge{font-size:.74rem;font-weight:800;padding:4px 11px;border-radius:var(--r-pill);background:rgba(60,181,74,.15);color:var(--brand-dark);white-space:nowrap;}
.wiz-badge--hi{background:rgba(0,115,188,.12);color:#01466f;}
.wiz-preval-tag{font-size:.68rem;font-weight:700;color:#9a6700;background:rgba(245,158,11,.14);padding:3px 9px;border-radius:var(--r-pill);white-space:nowrap;}
/* tag rosso sulle card immobile di lusso (A/8, A/9): Conto Termico escluso */
.wiz-ko-tag{font-size:.68rem;font-weight:700;color:#b3121f;background:rgba(225,29,42,.12);padding:3px 9px;border-radius:var(--r-pill);white-space:nowrap;}
/* indicatore di selezione: usa .wiz-check (quadrato arrotondato) come lo step Interventi */
.wiz-note{margin-top:14px;padding:13px 16px;border:1.5px solid rgba(0,115,188,.30);background:rgba(0,115,188,.05);border-radius:var(--r-sm);font-size:.86rem;color:var(--ink);line-height:1.5;}
.wiz-warnbox{margin-top:14px;padding:13px 16px;border:1.5px solid rgba(245,158,11,.45);background:rgba(245,158,11,.10);border-radius:var(--r-sm);font-size:.86rem;color:#7a5200;line-height:1.5;}
/* solo il <b> titolo va a blocco: i grassetti dentro il <p> restano in linea,
   altrimenti spezzano la frase a meta' (es. "prima dell'avvio dei lavori") */
.wiz-warnbox>b{display:block;margin-bottom:4px;color:#9a6700;}
.wiz-warnbox p{margin:0;}
/* Blocco blu: non un problema, un'informazione - qualcosa che il wizard ha completato
   da solo (es. le finestre esistenti aggiunte scegliendo i serramenti). */
.wiz-infobox{margin-top:14px;padding:13px 16px;border:1.5px solid rgba(0,115,188,.4);background:rgba(0,115,188,.07);border-radius:var(--r-sm);font-size:.86rem;color:#12435f;line-height:1.5;}
.wiz-infobox>b{display:block;margin-bottom:4px;color:var(--accent);}
.wiz-infobox p{margin:0;}
/* Blocco rosso: immobile/condizione NON ammessa (es. villa A/8 esclusa dal CT 3.0) */
.wiz-errbox{margin-top:14px;padding:13px 16px;border:1.5px solid rgba(225,29,42,.5);background:rgba(225,29,42,.08);border-radius:var(--r-sm);font-size:.86rem;color:#8f1622;line-height:1.5;}
.wiz-errbox b{display:block;margin-bottom:4px;color:#b3121f;}
.wiz-errbox p{margin:6px 0 0;}
.wiz-preval{margin-top:10px;padding:13px 16px;border:1.5px dashed rgba(245,158,11,.45);background:rgba(245,158,11,.05);border-radius:var(--r-sm);font-size:.85rem;color:var(--ink);line-height:1.5;}
.wiz-preval ol{margin:8px 0 0 18px;padding:0;display:grid;gap:4px;}
.wiz-preval p{margin:6px 0 0;}
.wiz-preval-tip{padding:8px 10px;background:rgba(245,158,11,.12);border-radius:8px;font-size:.8rem;}
.wiz-dim{margin-top:14px;padding:14px 16px;border:1.5px solid var(--line-strong);background:var(--surface);border-radius:var(--r-sm);}
.wiz-dim label{display:block;font-size:.85rem;margin-bottom:8px;color:var(--ink);}
.wiz-dim select{width:100%;max-width:520px;}
.wiz-dim-table{width:100%;border-collapse:collapse;margin-top:10px;font-size:.84rem;}
.wiz-dim-table th,.wiz-dim-table td{padding:8px 10px;text-align:left;border-bottom:1px solid var(--line);}
.wiz-dim-table th{font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);}
.wiz-dim-table tr.on td{background:rgba(60,181,74,.10);font-weight:700;color:var(--brand-dark);}
.wiz-pct{margin-top:14px;border:1.5px solid var(--line-strong);border-radius:var(--r-sm);background:var(--surface);}
.wiz-pct summary{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:12px 16px;cursor:pointer;font-size:.86rem;font-weight:700;color:var(--ink);list-style:none;}
.wiz-pct summary::-webkit-details-marker{display:none;}
.wiz-pct-lbl{display:flex;align-items:center;gap:9px;}
/* chevron: punta a destra chiuso, ruota a giù aperto (stesso pattern di .drop-toggle svg / .client-expand svg) */
.wiz-pct-chev{width:16px;height:16px;flex:0 0 auto;color:var(--brand-dark);transition:transform .25s var(--ease);}
.wiz-pct[open] .wiz-pct-chev{transform:rotate(90deg);}
.wiz-pct-mine{font-size:.74rem;font-weight:800;padding:4px 11px;border-radius:var(--r-pill);background:rgba(60,181,74,.15);color:var(--brand-dark);}
.wiz-pct[open] summary{border-bottom:1px solid var(--line);}
.wiz-pct .wiz-dim-table{margin:0;}
.wiz-pct>p{padding:0 16px 12px;}
.wiz-pct .wiz-dim-table th,.wiz-pct .wiz-dim-table td{padding-left:16px;padding-right:16px;}

/* ============ Popover info (icona azzurro chiaro accanto al titolo) ============ */
.info-pop{position:relative;display:inline-flex;vertical-align:middle;margin-left:7px;}
.info-pop-btn{display:grid;place-items:center;width:22px;height:22px;padding:0;border:none;cursor:help;border-radius:50%;background:rgba(0,115,188,.12);color:var(--accent);transition:background .15s;}
.info-pop-btn svg{width:14px;height:14px;}
.info-pop-btn:hover,.info-pop-btn:focus-visible{background:rgba(0,115,188,.22);outline:none;}
.info-pop-body{position:absolute;top:calc(100% + 9px);left:50%;transform:translateX(-50%) translateY(-4px);z-index:60;
  width:max-content;max-width:290px;background:var(--surface);color:var(--muted);font-family:var(--sans);font-size:.82rem;font-weight:400;line-height:1.5;text-align:left;
  border:1px solid rgba(0,115,188,.3);border-radius:12px;padding:11px 13px;box-shadow:var(--shadow);
  opacity:0;visibility:hidden;transition:opacity .18s var(--ease),transform .18s var(--ease);}
.info-pop-body::before{content:"";position:absolute;bottom:100%;left:50%;transform:translateX(-50%);border:6px solid transparent;border-bottom-color:var(--surface);}
/* :focus-visible e NON :focus-within - il focus del mouse non conta, altrimenti dopo
   un click il riquadro resta aperto finche' non si clicca altrove. Da tastiera si vede. */
.info-pop:hover .info-pop-body,.info-pop-btn:focus-visible + .info-pop-body{opacity:1;visibility:visible;transform:translateX(-50%) translateY(0);}

/* ============ Autocomplete comune dettagliato + scheda comune (Conto Termico) ============ */
.ct-ac-head{padding:8px 14px;font-size:.74rem;color:var(--muted);border-bottom:1px solid var(--line);background:var(--surface-2);}
.ct-ac-name{display:flex;align-items:center;gap:8px;min-width:0;}
.ct-ac-name svg{width:14px;height:14px;color:var(--brand);flex:0 0 auto;}
.ct-ac-meta{display:flex;align-items:center;gap:8px;flex:0 0 auto;}
.ct-ac-ab{font-size:.74rem;font-weight:700;color:var(--muted);white-space:nowrap;}
.ct-ac-ab--na{color:#9a6700;}
.ct-ac-gg{font-size:.72rem;font-weight:700;color:#9a6700;background:rgba(245,158,11,.12);padding:3px 8px;border-radius:var(--r-pill);white-space:nowrap;}
.ct-cc{margin-top:4px;margin-bottom:14px;padding:14px 16px;border:1.5px solid var(--brand);border-radius:var(--r-sm);background:linear-gradient(150deg,rgba(60,181,74,.06),rgba(0,115,188,.03));}
.ct-cc-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:.95rem;color:var(--ink);}
.ct-cc-pin{display:grid;place-items:center;}
.ct-cc-pin svg{width:17px;height:17px;color:var(--brand);}
.ct-cc-prov{color:var(--muted);font-weight:600;font-size:.85rem;}
.ct-cc-istat{font-size:.7rem;font-weight:700;letter-spacing:.04em;color:var(--muted);background:var(--surface-2);border:1px solid var(--line);padding:3px 8px;border-radius:var(--r-pill);}
.ct-cc-x{margin-left:auto;border:none;background:none;cursor:pointer;color:var(--muted);font-size:.95rem;padding:4px 8px;border-radius:8px;}
.ct-cc-x:hover{background:var(--surface-2);color:var(--ink);}
.ct-cc-tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:12px;}
@media (max-width:560px){.ct-cc-tiles{grid-template-columns:repeat(2,1fr);}}
.ct-cc-tile{padding:10px 8px;text-align:center;background:var(--surface);border:1px solid var(--line);border-radius:10px;}
.ct-cc-tile small{display:block;font-size:.64rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);}
.ct-cc-tile b{display:block;margin-top:3px;font-size:1.05rem;color:var(--ink);}
.ct-cc-tile--on{border-color:var(--brand);background:rgba(60,181,74,.08);}
.ct-cc-tile--on b{color:var(--brand-dark);}
.ct-cc-ok{display:flex;align-items:center;gap:8px;margin:10px 0 0;padding:9px 12px;font-size:.8rem;font-weight:600;color:var(--brand-dark);background:rgba(60,181,74,.10);border:1px solid rgba(60,181,74,.35);border-radius:10px;}
.ct-cc-ok svg{width:16px;height:16px;flex:0 0 auto;}
.ct-cc-zdesc{margin:10px 0 0;font-size:.8rem;color:var(--muted);}
.ct-cc .ct-disc--warn{margin-top:10px;}

/* ============================================================================
   SIMULATORE PUBBLICO CONTO TERMICO 3.0 (simulatore-conto-termico.html)
   ============================================================================ */
.phero--sim{padding:104px 0 34px;}
.phero--sim .crumbs{margin-bottom:4px;}
.phero--sim h1{font-size:clamp(1.6rem,3.4vw,2.7rem);}
@media (min-width:900px){.phero--sim h1{white-space:nowrap;}}
.phero--sim .phero-meta{margin-top:16px;}

/* icone SVG inline del simulatore (niente emoji: stile coerente col sito) */
.si{width:1em;height:1em;display:inline-block;vertical-align:-0.12em;flex:0 0 auto;}
.sim-card-ic{display:inline-flex;}
.sim-card-ic .si{width:26px;height:26px;color:var(--brand);}
.sim-tech-ic{display:inline-flex;}
.sim-tech-ic .si{width:22px;height:22px;color:var(--brand);}
.sim-iv-ic{display:inline-flex;}
.sim-iv-ic .si{width:22px;height:22px;color:var(--brand);}
.sim-res-ic{display:inline-flex;}
.sim-res-ic .si{width:22px;height:22px;color:var(--brand-dark);}
.sim-cc-head .si{width:18px;height:18px;color:var(--brand);}
.sim-ac-i .si{width:14px;height:14px;color:var(--brand);vertical-align:-0.15em;}
.sim-cc-ok .si{width:13px;height:13px;vertical-align:-0.12em;}
.sim-ero-ic .si{width:16px;height:16px;color:var(--brand-dark);vertical-align:-0.22em;}
.sim-res-warns summary .si{width:15px;height:15px;vertical-align:-0.18em;}
.sim-saved .si{width:11px;height:11px;}
.sim-resume .si{width:14px;height:14px;vertical-align:-0.15em;color:var(--brand-dark);}
.sim-cta .btn .si{width:1.35em;height:1.35em;}   /* in em come .btn svg, o l'icona non seguirebbe il bottone */
.sim-check .si{width:12px;height:12px;}
.sim-step-n .si{width:12px;height:12px;}
.sim-modal .btn .si{width:1.3em;height:1.3em;}

/* stima live nell'header del pannello (al posto della barra sticky) */
.sim-live{margin-left:auto;display:flex;align-items:baseline;gap:8px;font-size:.8rem;font-weight:600;color:var(--ink);background:#eafaf1;border:1px solid #b8e6cc;border-radius:999px;padding:6px 14px;white-space:nowrap;}
.sim-live b{color:var(--brand-dark);font-size:.98rem;}
.sim-live small{color:var(--muted);font-weight:500;}
.sim-live[hidden]{display:none;}
.sim{background:#fff;border:1px solid var(--line,#e3e9e5);border-radius:22px;box-shadow:0 10px 40px rgba(14,36,64,.08);padding:26px;position:relative;}
.sim-head{display:flex;align-items:center;gap:14px;justify-content:space-between;flex-wrap:wrap;border-bottom:1px solid #eef2ef;padding-bottom:16px;}
.sim-steps{display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
.sim-step{display:flex;align-items:center;gap:8px;background:none;border:0;cursor:pointer;font:inherit;padding:6px 10px;border-radius:999px;color:var(--muted);}
.sim-step[disabled]{cursor:default;opacity:.55;}
.sim-step-n{width:26px;height:26px;border-radius:50%;background:#eef2ef;color:var(--ink);display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:.8rem;flex:0 0 26px;}
.sim-step.on .sim-step-n{background:var(--brand);color:#fff;}
.sim-step.done .sim-step-n{background:#d9f2e3;color:var(--brand-dark);}
.sim-step.on{color:var(--ink);font-weight:600;}
.sim-step-t{font-size:.86rem;}
.sim-step-sep{width:18px;height:2px;background:#e3e9e5;border-radius:2px;}
.sim-saved{font-size:.76rem;font-weight:700;color:var(--brand-dark);background:#d9f2e3;border-radius:999px;padding:5px 12px;opacity:0;transition:opacity .3s;}
.sim-saved.on{opacity:1;}
.sim-resume{margin:14px 0 0;font-size:.85rem;color:var(--muted);background:#f4f8f5;border-radius:12px;padding:10px 14px;}
.sim-link{background:none;border:0;padding:0;color:var(--accent);font:inherit;font-size:inherit;text-decoration:underline;cursor:pointer;}
.sim-body{padding-top:22px;}
.sim-h{font-size:clamp(1.3rem,2.4vw,1.7rem);margin:0;}
.sim-sub{color:var(--muted);margin:8px 0 20px;max-width:70ch;}
.sim-note{margin-top:16px;font-size:.88rem;color:var(--muted);background:#eef6ff;border:1px solid #d7e8fa;border-radius:12px;padding:12px 16px;}
.sim-note a{color:var(--accent);font-weight:600;}

/* step 1: card beneficiario */
.sim-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px;}
.sim-card{display:flex;align-items:center;gap:12px;text-align:left;background:#fff;border:1.5px solid #e3e9e5;border-radius:16px;padding:14px 16px;cursor:pointer;font:inherit;transition:border-color .15s,box-shadow .15s,transform .15s;}
.sim-card:hover{border-color:var(--brand);transform:translateY(-1px);box-shadow:0 6px 18px rgba(14,36,64,.08);}
.sim-card.on{border-color:var(--brand);background:#f2faf5;box-shadow:0 6px 18px rgba(0,115,61,.12);}
.sim-card-ic{font-size:1.5rem;flex:0 0 auto;}
.sim-card-tx{flex:1;min-width:0;}
.sim-card-tx b{display:block;color:var(--ink);font-size:.95rem;}
.sim-card-tx small{display:block;color:var(--muted);font-size:.76rem;line-height:1.35;margin-top:2px;}
.sim-card-tx .sim-preval{color:#b26a00;font-weight:600;}
.sim-badge{flex:0 0 auto;background:#d9f2e3;color:var(--brand-dark);font-weight:700;font-size:.72rem;border-radius:999px;padding:4px 10px;white-space:nowrap;}
.sim-check{flex:0 0 22px;width:22px;height:22px;border-radius:50%;border:1.5px solid #d5ddd8;color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:.72rem;font-weight:800;}
.sim-card.on .sim-check{background:var(--brand);border-color:var(--brand);}
.sim-callout{margin-top:18px;background:#f4f8f5;border-radius:14px;padding:14px 16px;font-size:.9rem;color:var(--ink);}
.sim-seg{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap;}
.sim-seg button{font:inherit;font-size:.84rem;font-weight:600;border:1.5px solid #d5ddd8;background:#fff;border-radius:999px;padding:8px 16px;cursor:pointer;color:var(--muted);}
.sim-seg button.on{border-color:var(--brand);background:var(--brand);color:#fff;}
.sim-chk{display:flex;gap:10px;align-items:flex-start;margin-top:16px;font-size:.88rem;color:var(--ink);cursor:pointer;}
.sim-chk input{margin-top:3px;width:18px;height:18px;accent-color:var(--brand);flex:0 0 auto;}

/* step 2: localita */
.sim-loc{display:grid;grid-template-columns:1.1fr .9fr;gap:26px;align-items:start;}
.sim-fld{display:block;margin-top:14px;position:relative;}
.sim-fld label,.sim-fld>span{display:block;font-size:.82rem;font-weight:600;color:var(--ink);margin-bottom:6px;}
/* nelle card intervento: label a altezza fissa (2 righe) così TUTTI i campi della riga
   restano allineati, e il suggerimento sta SOTTO il campo, mai nella label */
.sim-iv-flds .sim-fld label,.sim-manual .sim-fld label{min-height:2.3em;display:flex;align-items:flex-end;line-height:1.15;}
.sim-hint-b{display:block;font-size:.73rem;color:var(--muted);margin-top:5px;line-height:1.35;}
.sim-fld input,.sim-fld select{width:100%;font:inherit;font-size:.95rem;padding:11px 14px;border:1.5px solid #d5ddd8;border-radius:12px;background:#fff;color:var(--ink);}
.sim-fld input:focus,.sim-fld select:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(0,115,61,.12);}
.sim-ac{position:absolute;z-index:30;left:0;right:0;top:100%;margin-top:6px;background:#fff;border:1px solid #e3e9e5;border-radius:14px;box-shadow:0 16px 40px rgba(14,36,64,.16);overflow:hidden;max-height:320px;overflow-y:auto;}
.sim-ac-i{display:flex;justify-content:space-between;align-items:center;gap:10px;width:100%;text-align:left;background:none;border:0;border-bottom:1px solid #f1f4f2;padding:11px 14px;font:inherit;font-size:.9rem;cursor:pointer;color:var(--ink);}
.sim-ac-i:hover{background:#f2faf5;}
.sim-ac-i small{color:var(--muted);}
.sim-ac-m{font-size:.76rem;color:var(--muted);white-space:nowrap;}
.sim-ac-empty{padding:12px 14px;font-size:.86rem;color:var(--muted);}
/* Stesso pannello ricercabile del comune CT per gli altri menu pubblici. */
.ae-select,.ae-autocomplete{position:relative;width:100%;min-width:0;}
.ae-select-native{position:absolute!important;width:1px!important;height:1px!important;opacity:0!important;pointer-events:none!important;}
.ae-select-input{width:100%;cursor:text;}
.field .ae-select-input,.field .ae-autocomplete input{background:#fff;border:1.5px solid #d5ddd8;border-radius:12px;}
.field .ae-select-input:focus,.field .ae-autocomplete input:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(0,115,61,.12);}
.ae-select-list,.ae-autocomplete-list{position:absolute;z-index:80;top:100%;left:0;right:0;margin-top:6px;max-height:320px;overflow-y:auto;background:#fff;border:1px solid #e3e9e5;border-radius:14px;box-shadow:0 16px 40px rgba(14,36,64,.16);}
.ae-select-list[hidden],.ae-autocomplete-list[hidden]{display:none;}
.ae-select-option,.ae-autocomplete-option{display:flex;align-items:center;gap:9px;width:100%;padding:11px 14px;border:0;border-bottom:1px solid #f1f4f2;background:#fff;color:var(--ink);font:inherit;font-size:.9rem;text-align:left;cursor:pointer;}
.ae-select-option:last-child,.ae-autocomplete-option:last-child{border-bottom:0;}
.ae-select-option:hover,.ae-select-option.is-active,.ae-autocomplete-option:hover,.ae-autocomplete-option.is-active{background:#f2faf5;}
.ae-select-option svg,.ae-autocomplete-option svg{width:14px;height:14px;flex:0 0 auto;color:var(--brand);}
.ae-select-empty,.ae-autocomplete-empty{padding:12px 14px;color:var(--muted);font-size:.86rem;}
.field.invalid .ae-select-input{border-color:#d4543b;box-shadow:0 0 0 4px rgba(212,84,59,.12);}
.tj-in .ae-select{width:auto;min-width:90px;flex:0 0 auto;}
.tj-in .ae-select-input{width:100%;height:100%;padding:0 28px 0 10px;font-size:.85rem;font-weight:600;background:#eef6f1;}
.tj-in .ae-select-list{min-width:210px;left:auto;right:0;}
.sim-fld .ae-select-input{padding-right:14px;background-image:none;}
.sim-cc{margin-top:16px;background:#f4f8f5;border-radius:16px;padding:14px 16px;}
.sim-cc-head{display:flex;align-items:center;gap:8px;font-size:.95rem;color:var(--ink);}
.sim-cc-x{margin-left:auto;background:none;border:0;cursor:pointer;color:var(--muted);font-size:.9rem;padding:4px;}
.sim-cc-tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:12px;}
.sim-cc-tiles span{background:#fff;border-radius:12px;padding:8px 10px;text-align:center;}
.sim-cc-tiles small{display:block;font-size:.68rem;color:var(--muted);}
.sim-cc-tiles b{font-size:1rem;color:var(--ink);}
.sim-cc-ok{margin:12px 0 0;font-size:.82rem;color:var(--brand-dark);font-weight:500;}
.sim-zona{display:inline-block;min-width:28px;border-radius:8px;color:#fff;}
.sim-zona--A{background:#e2574c;}.sim-zona--B{background:#e98a3c;}.sim-zona--C{background:#d9b13b;}
.sim-zona--D{background:#79b356;}.sim-zona--E{background:#3f8fd2;}.sim-zona--F{background:#7168c9;}
.sim-map-wrap{position:sticky;top:100px;}
/* Il riquadro si adatta al disegno (altezza fissa, larghezza dal rapporto della regione)
   e non ha padding: la regione arriva fino al bordo arrotondato, che la ritaglia. */
.sim-map{background:#f4f8f5;border-radius:18px;padding:0;overflow:hidden;width:fit-content;max-width:100%;margin:0 auto;}
.sim-map svg{height:340px;width:auto;max-width:100%;display:block;}
/* mappa NON interattiva: si muove da sola quando scegli il comune */
.sim-map .region{fill:#dbe7de;stroke:#fff;stroke-width:1.4;pointer-events:none;transition:fill .4s;}
.sim-map .region.active{fill:#b7dcc5;}
.sim-map-load{font-size:.85rem;color:var(--muted);text-align:center;}
.sim-map-hint{font-size:.8rem;color:var(--muted);text-align:center;margin:10px 0 0;}

/* step 3: interventi */
.sim-addwrap{margin-top:20px;}
.sim-add-t{font-size:.86rem;font-weight:700;color:var(--ink);margin:0 0 10px;}
.sim-add{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;}
.sim-tech{display:flex;flex-direction:column;align-items:flex-start;gap:2px;text-align:left;background:#fff;border:1.5px dashed #cfd9d2;border-radius:14px;padding:12px 14px;cursor:pointer;font:inherit;transition:border-color .15s,background .15s;}
.sim-tech:hover{border-color:var(--brand);background:#f2faf5;}
.sim-tech span{font-size:1.3rem;}
.sim-tech b{font-size:.88rem;color:var(--ink);}
.sim-tech small{font-size:.72rem;color:var(--muted);line-height:1.3;}
.sim-tech.t2off{opacity:.72;}
.sim-tech.t2off small{color:#b26a00;}
.sim-iv{background:#fff;border:1.5px solid #e3e9e5;border-radius:18px;padding:16px 18px;margin-top:14px;box-shadow:0 4px 14px rgba(14,36,64,.05);}
.sim-iv-head{display:flex;align-items:center;gap:10px;font-size:1rem;color:var(--ink);}
.sim-iv-head span{font-size:1.3rem;}
.sim-iv-x{margin-left:auto;background:none;border:0;cursor:pointer;color:var(--muted);padding:4px 8px;font-size:.95rem;border-radius:8px;}
.sim-iv-x:hover{background:#fbeaea;color:#c0392b;}
.sim-iv-flds{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:0 18px;}
.sim-manual{grid-column:1/-1;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:0 18px;background:#f8faf8;border-radius:12px;padding:0 14px 12px;margin-top:12px;}
.sim-iv-out{margin-top:14px;border-top:1px dashed #e3e9e5;padding-top:12px;}
.sim-iv-need{margin:0;font-size:.84rem;color:#8a6d1f;background:#fdf6e3;border-radius:10px;padding:9px 12px;}
.sim-iv-val{margin:0;font-size:.95rem;color:var(--ink);}
.sim-iv-val b{color:var(--brand-dark);font-size:1.1rem;}
.sim-iv-val small{color:var(--muted);}
.sim-iv-w{margin:8px 0 0;font-size:.8rem;color:#9a5b12;background:#fdf3e7;border-radius:10px;padding:8px 12px;}

/* step 4: risultato */
.sim-res-top{display:flex;align-items:stretch;gap:16px;background:linear-gradient(120deg,#0e3a2a,#00733d);border-radius:20px;color:#fff;padding:22px 26px;margin-bottom:18px;flex-wrap:wrap;}
.sim-res-amt{flex:1;min-width:220px;}
.sim-res-amt small{display:block;font-size:.78rem;letter-spacing:.06em;text-transform:uppercase;opacity:.85;font-weight:700;}
.sim-res-amt b{display:block;font-size:clamp(2rem,5vw,2.9rem);line-height:1.1;margin-top:4px;}
.sim-res-amt span{display:block;font-size:.85rem;opacity:.9;margin-top:6px;}
.sim-zona-big{align-self:center;text-align:center;border-radius:16px;padding:12px 18px;background:rgba(255,255,255,.14);}
.sim-zona-big small{display:block;font-size:.7rem;opacity:.85;}
.sim-zona-big b{font-size:1.6rem;}
.sim-res-rows{border:1px solid #e3e9e5;border-radius:16px;overflow:hidden;}
.sim-res-row{display:flex;align-items:center;gap:14px;padding:14px 18px;border-bottom:1px solid #eef2ef;background:#fff;}
.sim-res-row>span{font-size:1.4rem;}
.sim-res-row>div{flex:1;min-width:0;}
.sim-res-row b{display:block;color:var(--ink);font-size:.95rem;}
.sim-res-row small{display:block;color:var(--muted);font-size:.78rem;}
.sim-res-min{color:var(--brand-dark) !important;}
.sim-res-val{font-size:1.1rem;color:var(--brand-dark);white-space:nowrap;}
.sim-res-w{margin:0;padding:8px 18px;background:#fdf6e3;font-size:.8rem;color:#8a6d1f;border-bottom:1px solid #eef2ef;}
.sim-res-ero{margin-top:16px;background:#f4f8f5;border-radius:14px;padding:14px 18px;}
.sim-res-ero p{margin:6px 0;font-size:.88rem;color:var(--ink);}
.sim-res-warns{margin-top:14px;background:#fdf3e7;border-radius:14px;padding:12px 16px;}
.sim-res-warns summary{cursor:pointer;font-size:.86rem;font-weight:700;color:#9a5b12;}
.sim-res-warns p{font-size:.82rem;color:#8a5a14;margin:8px 0 0;}
.sim-cta{display:flex;gap:12px;margin-top:22px;flex-wrap:wrap;}
.sim-cta .btn{flex:1 1 auto;justify-content:center;}
/* WhatsApp: azzurro chiaro, testo e icona bianchi, STATICO (niente elevazione all'hover) */
/* WhatsApp: verde WhatsApp, testo e icona bianchi, STATICO (niente elevazione all'hover) */
.sim-cta-wa{background:#25d366 !important;color:#fff !important;box-shadow:0 6px 18px rgba(37,211,102,.32) !important;}
.sim-cta-wa .si{color:#fff;}
.sim-cta-wa:hover{transform:none !important;box-shadow:0 6px 18px rgba(37,211,102,.32) !important;filter:brightness(1.05);}
.sim-cta-wa:disabled{opacity:.5;cursor:not-allowed;filter:none;}
.sim-wa-note{margin:12px 0 0;font-size:.76rem;color:var(--muted);text-align:center;}
.sim-chk--req a{color:var(--accent);text-decoration:underline;}
/* CTA "Richiedi consulenza": pulsa per attirare l'occhio (rispetta prefers-reduced-motion) */
.sim-nav-cta{margin-left:auto;}
.sim-pulse{animation:simPulse 1.9s ease-in-out infinite;}
@keyframes simPulse{
  0%,100%{box-shadow:0 8px 22px rgba(0,115,188,.30),0 0 0 0 rgba(0,115,188,.45);}
  50%{box-shadow:0 10px 26px rgba(0,115,188,.40),0 0 0 10px rgba(0,115,188,0);}
}
.sim-pulse:hover{animation-play-state:paused;}
@media (prefers-reduced-motion:reduce){.sim-pulse{animation:none;}}
.sim-disc{margin-top:18px;font-size:.78rem;color:var(--muted);}
.sim-disc .sim-link{font-weight:600;color:var(--brand-dark);white-space:nowrap;}
.sim-disc .sim-link .si{width:12px;height:12px;vertical-align:-0.1em;}
.sim-foot-disc{margin-top:18px;font-size:.8rem;color:var(--muted);text-align:center;}

/* anteprima live + nav */
.sim-nav{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:22px;border-top:1px solid #eef2ef;padding-top:18px;flex-wrap:wrap;}
.sim-nav-r{display:flex;align-items:center;gap:14px;margin-left:auto;flex-wrap:wrap;}
.sim-nav-hint{font-size:.82rem;color:#b26a00;font-weight:600;}
.sim-nav .btn[disabled]{opacity:.5;cursor:not-allowed;box-shadow:none;}

/* modale lead */
.sim-modal-ov{position:fixed;inset:0;z-index:1000;background:rgba(10,20,32,.55);display:flex;align-items:center;justify-content:center;padding:18px;backdrop-filter:blur(3px);}
.sim-modal{position:relative;background:#fff;border-radius:20px;max-width:440px;width:100%;padding:26px;box-shadow:0 30px 80px rgba(0,0,0,.35);max-height:92vh;overflow-y:auto;}
.sim-modal h3{margin:0;font-size:1.25rem;}
.sim-modal-x{position:absolute;top:14px;right:14px;background:none;border:0;font-size:1rem;cursor:pointer;color:var(--muted);padding:6px;}
.sim-modal .btn{margin-top:16px;width:100%;justify-content:center;}

@media (max-width:860px){
  .sim{padding:18px 14px;}
  .sim-loc{grid-template-columns:1fr;}
  .sim-map-wrap{position:static;order:-1;}
  .sim-map svg{max-height:300px;}
  .sim-step-t{display:none;}
  .sim-step.on .sim-step-t{display:inline;}
  .sim-cc-tiles{grid-template-columns:repeat(2,1fr);}
  .sim-res-top{padding:18px;}
  .sim-live small{display:none;}
}

/* ===== Certificazioni (Profilo) + foto profilo membro (2026-07-14) ===== */
.prof-logo img,.dz-ava img{width:100%;height:100%;object-fit:cover;border-radius:inherit;display:block;}
.team-ava{width:34px;height:34px;border-radius:50%;flex:none;display:flex;align-items:center;justify-content:center;background:#eef4f1;color:#0e2440;font-weight:700;font-size:.78rem;overflow:hidden;}
.team-ava img{width:100%;height:100%;object-fit:cover;}
.team-row-left{display:flex;align-items:center;gap:10px;min-width:0;}
.mm-foto-row{display:flex;align-items:center;gap:10px;}
.cert-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 12px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);margin-bottom:8px;flex-wrap:wrap;}
.cert-row-main{min-width:0;display:flex;flex-direction:column;gap:2px;flex:1;}
.cert-row-main b{font-size:.9rem;color:var(--ink);}
.cert-row-side{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.cert-badge{display:inline-flex;align-items:center;gap:4px;border-radius:99px;padding:3px 10px;font-size:.72rem;font-weight:600;}
.cert-badge--ok{background:#e3f4e9;color:#156a3d;}
.cert-badge--wait{background:#fdf3e2;color:#a06b12;}
.cert-badge--no{background:#fde8e4;color:#b23a24;}
.cert-badge--exp{background:#fdf3e2;color:#a06b12;}
.cert-scad{font-size:.74rem;color:var(--muted);}
.cert-scad input{border:1.5px solid var(--line);border-radius:8px;padding:4px 6px;font:500 .74rem Poppins,sans-serif;color:var(--ink);}

/* ===== Fix registrazione Area Aziende (2026-07-14) =====
   radio/checkbox non sono campi di testo: la regola .field input (width:100% + padding)
   li gonfiava a card giganti col testo fuori dal riquadro. */
.field input[type=radio],.field input[type=checkbox]{width:18px;height:18px;padding:0;flex:0 0 auto;accent-color:var(--brand);box-shadow:none;}
.role-opt span{min-width:0;}
/* pannello adattato alla pagina + card ruolo affiancate su desktop */
.auth-wrap{max-width:860px;}
.role-pick{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;}
.role-opt{flex-direction:column;align-items:flex-start;gap:8px;padding:14px;}
.role-opt input{margin-top:0;}
@media(max-width:720px){.role-pick{grid-template-columns:1fr;}.role-opt{flex-direction:row;align-items:flex-start;gap:11px;}.role-opt input{margin-top:3px;}}
/* spaziatura: la form-row non è un .field, quindi non ereditava il margin-top → troppo
   compatta sotto il campo precedente. La allineo al ritmo delle altre righe. */
.auth-form .form-row{margin-top:18px;}
/* scelta Azienda / Privato in testa alla registrazione */
.role-pick--2{grid-template-columns:1fr 1fr;}
/* opzione "in lavorazione" (privato): visibile ma smorzata */
.role-opt--wip{opacity:.72;}
.role-wip{display:inline-block;margin-left:6px;font-style:normal;font-size:.66rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:#a06b12;background:#fdf3e2;border-radius:99px;padding:1px 7px;vertical-align:middle;}
/* nota "richiesta in revisione" sotto il form */
.auth-review{display:flex;gap:10px;align-items:flex-start;background:rgba(60,181,74,.09);border:1px solid rgba(30,138,79,.35);border-radius:12px;padding:12px 14px;margin-top:18px;font-size:.86rem;color:var(--ink);line-height:1.5;}
.auth-review svg{width:20px;height:20px;flex:none;color:var(--brand);margin-top:1px;}

/* ===== Tab Consigli: card con numero + titolo + testo ===== */
.consigli-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:14px;}
.consiglio{position:relative;border:1px solid var(--line, #e5e9e4);border-radius:14px;padding:16px 16px 14px;background:#fff;display:flex;flex-direction:column;gap:8px;}
.consiglio-n{width:26px;height:26px;border-radius:99px;background:rgba(60,181,74,.12);color:var(--brand,#1e8a4f);font-weight:800;font-size:.82rem;display:flex;align-items:center;justify-content:center;flex:none;}
.consiglio h3{font-size:.98rem;margin:0;line-height:1.35;}
.consiglio p{font-size:.86rem;line-height:1.55;margin:0;color:var(--muted,#5b6660);flex:1;}
.consiglio .btn{align-self:flex-start;margin-top:4px;}

/* ---------- Raggio di lavoro ingegnere (profilo + bacheca) ---------- */
.pf-range{width:100%;margin:10px 0 2px;accent-color:var(--brand);height:6px;cursor:pointer;}
.rag-map{background:#f4f8f5;border-radius:14px;padding:10px;margin-top:12px;min-height:120px;
  display:flex;align-items:center;justify-content:center;overflow:hidden;}
.rag-map svg{width:100%;height:auto;max-height:280px;display:block;}
.rag-dot{display:inline-block;width:9px;height:9px;border-radius:50%;vertical-align:middle;margin-right:2px;}
/* cambio tab fluido: al click le sezioni pesanti escono da layout+paint (content-visibility),
   il riquadro tiene la sua altezza (contain-intrinsic-size, "auto" ricorda quella vera)
   e rientrano scaglionate nei frame successivi. Browser vecchi: proprieta' ignorata, resta il fade. */
.map-defer{content-visibility:hidden;contain-intrinsic-size:auto 320px;opacity:0;}
#teamMapCard,#collHost,#impostazioniHost{transition:opacity .18s ease;}
/* riepilogo certificazioni nella card Azienda (aziendali + personali dei membri) */
/* Certificazioni personali nel modale "I miei dati": nome+badge su una riga,
   azioni ordinate sotto (scadenza a sx, tasti a dx), niente colonne sfasate */
.miacert-row{border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);padding:12px 14px;margin-bottom:10px;}
.miacert-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px;}
.miacert-head b{font-size:.92rem;color:var(--ink);}
.miacert-act{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.miacert-act .cert-scad{display:inline-flex;align-items:center;gap:6px;margin-right:auto;}
.miacert-add{margin-top:16px;padding-top:14px;border-top:1px dashed var(--line);}
.miacert-add .mm-lbl{display:block;margin-bottom:8px;}
.az-certs{margin-top:14px;padding-top:12px;border-top:1px solid rgba(0,0,0,.08);}
.az-certs .eyebrow{display:block;margin-bottom:4px;}
.azc-row{display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:.85rem;padding:5px 0;flex-wrap:wrap;}
.azc-row b{font-weight:600;}
.azc-badges{display:flex;gap:6px;flex-wrap:wrap;align-items:center;}
/* Tab Novità: elenco normative/aggiornamenti per ruolo */
.nov-item{padding:16px 0;border-top:1px solid var(--line);}
.nov-item:first-of-type{border-top:0;padding-top:6px;}
.nov-meta{display:flex;gap:10px;align-items:center;margin-bottom:6px;}
.nov-tag{font-size:.7rem;font-weight:700;padding:2px 9px;border-radius:20px;background:var(--surface-2);color:var(--brand);border:1px solid var(--line);}
.nov-date{font-size:.78rem;color:var(--muted);}
.nov-item h3{font-size:1.02rem;color:var(--ink);margin:0 0 5px;}
.nov-item p{font-size:.9rem;color:var(--muted);margin:0;line-height:1.5;}
.nov-link{display:inline-block;margin-top:7px;font-size:.85rem;font-weight:600;color:var(--brand);}
/* nel modale Impostazioni: rettangolo largo e basso, da bordo a bordo del pannello.
   L'SVG riempie il riquadro (preserveAspectRatio meet): il cerchio resta contenuto
   e centrato, con aria ai lati - niente mappa a tutta altezza. */
#impostazioniModal .rag-map{margin:14px -24px 0;border-radius:0;padding:0;height:210px;overflow:hidden;display:flex;}
#impostazioniModal .rag-map svg{width:100%;height:100%;max-height:none;}
.rag-map .region{fill:#dbe7de;stroke:#fff;stroke-width:1;vector-effect:non-scaling-stroke;pointer-events:none;}
.rag-map-hint{font-size:.8rem;color:var(--muted);margin:8px 0 0;}
.rag-val-eur{font-weight:600;color:var(--brand-dark);}
/* tasto icona (rotella impostazioni) + filtri della mappa team */
.icon-btn{flex:none;width:38px;height:38px;display:inline-flex;align-items:center;justify-content:center;
  border:1px solid var(--line);background:var(--surface);color:var(--brand-dark);border-radius:10px;cursor:pointer;
  transition:background .15s,color .15s,border-color .15s;}
.icon-btn:hover{background:var(--brand);color:#fff;border-color:var(--brand);}
.icon-btn svg{width:19px;height:19px;}
/* localita raggiunte da un membro: pop-in al passaggio del mouse */
.rag-pop{transform-box:fill-box;transform-origin:left center;animation:ragPop .26s cubic-bezier(.2,1.35,.4,1) both;}
@keyframes ragPop{from{opacity:0;transform:scale(.4);}to{opacity:1;transform:scale(1);}}
/* mappa team a tutta larghezza: niente cornice, arriva ai bordi del pannello */
.rag-mapwrap{position:relative;overflow:hidden;
  margin:14px calc(-1 * clamp(20px,2.4vw,30px)) calc(-1 * clamp(20px,2.4vw,30px));
  border-radius:0 0 var(--r-lg) var(--r-lg);}
.rag-map--team{padding:0;background:none;margin:0;border-radius:0;}
.rag-map--team svg{max-height:440px;width:100%;}
/* controlli sovrapposti alla mappa, in basso a destra */
.rag-overlay{position:absolute;right:12px;bottom:12px;z-index:2;display:flex;flex-direction:column;align-items:flex-end;gap:8px;}
.rag-ctrls{background:rgba(255,255,255,.92);border:1px solid var(--line);border-radius:12px;padding:8px 11px;
  display:flex;flex-direction:column;gap:6px;box-shadow:var(--shadow-sm);backdrop-filter:blur(3px);}
.rag-ctrls label{display:flex;align-items:center;gap:7px;font-size:.78rem;color:var(--brand-dark);cursor:pointer;white-space:nowrap;}
.rag-ctrls input{accent-color:var(--brand);width:14px;height:14px;cursor:pointer;}
.rag-gear{width:34px;height:34px;background:rgba(255,255,255,.92);box-shadow:var(--shadow-sm);backdrop-filter:blur(3px);}
.rag-gear svg{width:17px;height:17px;}
.bac-card.bac-far{display:none;}
.bac-show-far .bac-card.bac-far{display:flex;opacity:.72;}

/* ---------- Multi-profilo: card "I miei profili" ---------- */
.prf-list{display:flex;flex-direction:column;gap:10px;}
.prf-row{display:flex;align-items:center;gap:12px;border:1px solid var(--line);border-radius:var(--r-sm);padding:10px 14px;}
.prf-row--on{border-color:var(--brand);background:#f2f9f4;}
.prf-logo{width:44px;height:44px;flex:none;}
.prf-info{min-width:0;display:flex;flex-direction:column;}
.prf-info b{font-size:.95rem;}
.prf-info .muted{font-size:.8rem;}
.prf-state{margin-left:auto;font-size:.78rem;font-weight:700;color:var(--brand-dark);background:#e7f3ea;border-radius:var(--r-pill);padding:.3em .8em;white-space:nowrap;}
.prf-row .btn{margin-left:auto;flex:none;}
.prf-add{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px;}

/* ---------- Prezzi posa: righe del listino (dentro il modale) ---------- */
.mdo-sec{padding:16px 0;border-top:1px solid var(--line);}
.mdo-sec:first-of-type{border-top:none;padding-top:6px;}
.mdo-sec h4{font-size:.98rem;margin:0 0 4px;}
.mdo-sec>.muted{font-size:.8rem;margin:0 0 10px;}
.mdo-row{display:flex;align-items:center;gap:12px;padding:7px 0;border-top:1px dotted var(--line);flex-wrap:wrap;}
.mdo-row:first-of-type{border-top:none;}
.mdo-l{flex:1 1 220px;min-width:0;font-size:.88rem;color:var(--ink);display:flex;flex-direction:column;}
.mdo-l small{color:var(--muted);font-size:.76rem;line-height:1.35;}
.mdo-in{display:flex;align-items:center;gap:6px;flex:0 0 auto;}
.mdo-in span{font-size:.78rem;color:var(--muted);}
.mdo-in input[type=number],.mdo-in input[type=text],.mdo-in select{padding:6px 8px;border:1px solid var(--line);
  border-radius:8px;background:var(--surface);color:var(--ink);font:inherit;font-size:.86rem;}
.mdo-in input[type=number]{width:76px;text-align:right;}
.mdo-in input[type=text]{width:190px;}
.mdo-in select{min-width:150px;}
.mdo-u{min-width:34px;}
.mdo-row--ko .mdo-in input[type=number]{border-color:#c0392b;}
.mdo-beta{font-size:.8rem;line-height:1.5;margin:10px 0 0;padding:9px 12px;border-radius:8px;
  background:var(--surface-2);color:var(--muted);}
.mdo-beta b{color:var(--ink);}

/* ---------- Prezzi posa: la home del listino (card, non un modulo lungo) ----------
   Griglia a due colonne su desktop, una su mobile: le categorie si guardano, non si
   scorrono. Le card secondarie (costi interni, regole avanzate) e quelle non
   applicabili restano fuori finche' non si chiede "Configurazione completa". */
.lis-sub{font-size:.84rem;margin:0;}
.lis-acts{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:10px;margin:14px 0 4px;}
.lis-act{display:flex;flex-direction:column;gap:3px;text-align:left;cursor:pointer;
  padding:12px 14px;border:1px solid var(--line);border-radius:var(--r-sm);
  background:var(--surface);color:var(--ink);font:inherit;transition:border-color .18s var(--ease),box-shadow .18s var(--ease);}
.lis-act:hover{border-color:var(--brand);box-shadow:var(--shadow-sm);}
.lis-act b{font-size:.9rem;}
.lis-act small{font-size:.76rem;color:var(--muted);line-height:1.4;}
.lis-act--go{background:var(--surface-2);border-color:var(--brand);}
.lis-appbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:14px 0 4px;
  padding:9px 12px;border-radius:var(--r-sm);background:var(--surface-2);}
.lis-appbar-l{font-size:.78rem;font-weight:700;color:var(--ink);text-transform:uppercase;letter-spacing:.04em;}
.lis-chip{font-size:.78rem;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r-pill);padding:.22em .7em;color:var(--ink);}
.lis-appbar .lis-link{margin-left:auto;}
.lis-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:14px;}
/* minmax(0,...) e non 1fr: con 1fr la colonna non scende sotto il min-content della
   card piu' larga e su telefono la griglia esce dallo schermo di qualche pixel */
@media (max-width:720px){.lis-grid{grid-template-columns:minmax(0,1fr);}}
.lis-card{display:flex;flex-direction:column;gap:8px;padding:14px 16px;
  border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);}
.lis-card--ok{border-color:rgba(0,115,61,.28);}
.lis-card--sec,.lis-card--na{display:none;}   /* solo in "Configurazione completa" */
.lis-card--sec.lis-card--ha,.lis-card--na.lis-card--ha,
.lis-panel--tutto .lis-card--sec,.lis-panel--tutto .lis-card--na{display:flex;}
.lis-card-h{display:flex;align-items:flex-start;gap:8px;}
.lis-card-h h4{font-size:.95rem;margin:0;flex:1;color:var(--ink);}
.lis-state{font-size:.72rem;font-weight:700;border-radius:var(--r-pill);padding:.24em .7em;
  white-space:nowrap;background:var(--surface-2);color:var(--muted);}
.lis-state--ok{background:#e7f3ea;color:var(--brand-dark);}
.lis-state--mid{background:#fff4e0;color:#8a5a12;}
.lis-state--plat{background:#e8f1f8;color:#0b5a8c;}
.lis-card-d{font-size:.8rem;color:var(--muted);line-height:1.45;margin:0;flex:1;}
.lis-card-more{font-size:.76rem;color:var(--muted);margin:0;}
.lis-vals{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px;flex:1;}
.lis-vals li{display:flex;gap:10px;align-items:baseline;font-size:.82rem;}
.lis-vals li span{color:var(--muted);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.lis-vals li b{color:var(--ink);white-space:nowrap;}
.lis-card .btn{align-self:flex-start;}
.lis-plat{margin-top:14px;padding:14px 16px;border-radius:var(--r-sm);
  border:1px dashed var(--line-strong);background:var(--surface-2);}
.lis-plat-h{display:flex;align-items:center;gap:8px;}
.lis-plat-h h4{font-size:.95rem;margin:0;flex:1;color:var(--ink);}
.lis-plat .muted{font-size:.8rem;line-height:1.45;margin:6px 0 10px;}

/* ---------- Prezzi posa: dentro il modale ---------- */
.lis-link{background:none;border:0;padding:0;font:inherit;font-size:.78rem;cursor:pointer;
  color:var(--brand-dark);text-decoration:underline;text-underline-offset:2px;}
.lis-link--del{color:#c0392b;}
.lis-rowacts{display:flex;gap:12px;flex:0 0 auto;}
.lis-row .mdo-in{margin-left:auto;}
.lis-appgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px;}
.lis-appbox{display:flex;align-items:center;gap:8px;padding:10px 12px;cursor:pointer;
  border:1px solid var(--line);border-radius:var(--r-sm);font-size:.86rem;}
.lis-appbox:has(input:checked){border-color:var(--brand);background:var(--surface-2);}
.lis-caso{display:flex;flex-direction:column;gap:4px;margin:12px 0 0;}
.lis-caso label{font-size:.82rem;font-weight:600;color:var(--ink);}
.lis-caso textarea,.lis-ai-txt{width:100%;padding:9px 11px;border:1px solid var(--line);
  border-radius:8px;background:var(--surface);color:var(--ink);font:inherit;font-size:.85rem;line-height:1.5;resize:vertical;}
.lis-caso small{font-size:.76rem;}
.lis-nota{font-size:.82rem;line-height:1.5;margin:0 0 10px;padding:9px 12px;border-radius:8px;
  background:var(--surface-2);color:var(--muted);}
.lis-add{margin-top:12px;}
.lis-add-form{display:flex;gap:8px;flex-wrap:wrap;align-items:center;}
.lis-add-form input,.lis-add-form select{padding:6px 8px;border:1px solid var(--line);
  border-radius:8px;background:var(--surface);color:var(--ink);font:inherit;font-size:.86rem;}
.lis-add-nome{flex:1 1 180px;}
.lis-add-val{width:90px;text-align:right;}
.lis-ai-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:10px;}
.lis-ai-bar .muted{font-size:.76rem;}
.lis-ai-ok{font-size:.86rem;margin:14px 0 8px;}
.lis-ai-row{display:flex;align-items:center;gap:10px;padding:7px 0;font-size:.85rem;
  border-top:1px dotted var(--line);cursor:pointer;}
.lis-ai-row span{flex:1;}
.lis-ai-row em{font-size:.74rem;color:var(--muted);font-style:normal;}
.lis-ai-row+.btn{margin-top:12px;}
.lis-jit-save{display:flex;align-items:center;gap:8px;font-size:.82rem;margin:12px 0 0;cursor:pointer;}
.lis-jit-acts{display:flex;gap:8px;justify-content:flex-end;margin-top:14px;}

/* ---------- Fee trattenute da APEIRON (pannello riservato in Profilo) ---------- */
/* Vista in sola lettura: la percentuale e' il dato, quindi sta grande a destra e la
   riga non contiene nessun campo su cui si possa scrivere per sbaglio. */
.fee-list{display:flex;flex-direction:column;}
.fee-row{display:flex;align-items:baseline;justify-content:space-between;gap:14px;
  padding:10px 0;border-top:1px dotted var(--line);}
.fee-row:first-child{border-top:none;}
.fee-row-l{display:flex;flex-direction:column;gap:2px;min-width:0;}
.fee-row-l b{color:var(--ink);font-size:.92rem;}
.fee-row-l span{font-size:.78rem;color:var(--muted);}
.fee-nota{font-style:italic;}
.fee-perc{flex:0 0 auto;font-size:1.15rem;font-weight:800;color:var(--brand-dark);font-variant-numeric:tabular-nums;}
/* Pannello di modifica: una riga per voce, la % stretta accanto al nome. */
.fee-edit{display:grid;grid-template-columns:1fr 110px 24px;gap:10px 12px;align-items:end;
  padding:14px 0;border-top:1px dotted var(--line);}
.fee-edit:first-child{border-top:none;}
.fee-edit-base,.fee-edit-nota{grid-column:1 / 3;}
.fee-inp{position:relative;display:block;}
.fee-inp input{width:100%;padding-right:26px;}
.fee-inp i{position:absolute;right:10px;top:50%;transform:translateY(-50%);font-style:normal;
  font-size:.85rem;font-weight:700;color:var(--muted);pointer-events:none;}
.fee-rm{grid-row:1 / 2;grid-column:3;align-self:center;background:none;border:none;cursor:pointer;
  color:var(--muted);padding:4px;line-height:0;border-radius:6px;}
.fee-rm:hover{color:#a8432c;background:var(--surface-2);}
.fee-rm svg{width:18px;height:18px;}
@media (max-width:520px){
  .fee-edit{grid-template-columns:1fr 90px 24px;}
}

/* ---------- Calcolatore CT: intestazione e campi su una riga ---------- */
/* Il pannello e' largo quanto la dashboard: la misura di 62ch lasciava mezzo schermo
   vuoto e spezzava la descrizione su tre righe. Qui la riga puo' essere piu' lunga. */
.ct-exact .tool-head{margin-bottom:8px;}
.ct-exact .tool-head p{max-width:130ch;}
/* La riga di stato sotto l'intestazione e' quasi sempre vuota e teneva 19px di vuoto
   fra il testo e il primo dispositivo. Resta nel DOM (e' un aria-live) ma senza altezza. */
.ct-exact>.form-note:empty{margin:0;min-height:0;}
/* Spesa, marca e modello sulla stessa riga finche' c'e' spazio: i contenitori
   intermedi diventano trasparenti (display:contents) e i campi vanno a capo da soli.
   Cosi' vale per ogni tecnologia, senza rifare il markup uno per uno. */
.cd-p-grid{display:flex;flex-wrap:wrap;gap:12px 18px;margin-top:12px;}
.cd-p-grid .form-row,.cd-p-grid .cd-p-fields,.cd-p-grid [data-f="cdManual"]{display:contents;}
.cd-p-grid .field{flex:1 1 260px;min-width:0;margin:0;}
.cd-p-grid .field:empty{display:none;}
/* La riga di stato del pannello e' quasi sempre vuota ma teneva ~19px + margine fra i
   campi e il riquadro dell'incentivo: quel vuoto era la meta' della distanza. */
.cd-p>.form-note:empty{margin:0;min-height:0;}
.cd-p>.ct-result{margin-top:10px;}
.cd-p-edit{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:var(--r-pill);
  border:1px solid var(--line);background:var(--surface);color:var(--muted);font:inherit;font-size:.76rem;
  font-weight:700;cursor:pointer;transition:.2s;}
.cd-p-edit:hover{border-color:var(--brand);color:var(--brand-dark);background:var(--surface-2);}
.cd-p-edit svg{width:14px;height:14px;}

/* Avviso in cima al preventivo: giallo per i consigli, ROSSO quando si stanno perdendo
   soldi (fattura sotto la spesa minima). Sta prima dei passi, col tasto per rimediare. */
.dp-avviso{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:0 0 14px;padding:11px 14px;
  border-radius:12px;font-size:.84rem;line-height:1.45;
  color:#9a6700;background:rgba(245,158,11,.12);border:1px solid rgba(245,158,11,.35);}
.dp-avviso[hidden]{display:none;}
.dp-avviso svg{width:20px;height:20px;flex:0 0 auto;}
.dp-avviso span{flex:1;min-width:200px;}
.dp-avviso .btn{flex:0 0 auto;}
.dp-avviso--bad{color:#b42318;background:rgba(217,45,32,.09);border-color:rgba(217,45,32,.45);}
.dp-avviso--bad b{color:#912018;}

/* Le tue segnalazioni (pannello in Profilo & Team) */
.segn-mie{list-style:none;margin:0;padding:0;display:grid;gap:10px;}
.segn-mia{border:1px solid var(--line);border-left:3px solid var(--line-strong);border-radius:10px;padding:10px 12px;background:var(--surface);}
.segn-mia--risolta{border-left-color:var(--brand);}
.segn-mia--in_corso{border-left-color:#f2b705;}
.segn-mia--scartata{border-left-color:var(--muted);opacity:.75;}
.segn-mia-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:.8rem;}
.segn-tag{background:var(--surface-2);border-radius:999px;padding:2px 9px;color:var(--muted);font-size:.72rem;}
.segn-stato{margin-left:auto;font-weight:700;font-size:.74rem;color:var(--ink);}
.segn-mia--risolta .segn-stato{color:var(--brand-dark);}
.segn-mia-t{margin:6px 0 4px;font-size:.86rem;line-height:1.45;color:var(--ink);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.segn-mia-m{font-size:.72rem;color:var(--muted);word-break:break-all;}

/* ============================================================================
   Soglia 10 TJ - strumento interno (tab Diagnosi, assets/js/tj-pro.js).
   Griglia vettori x anni, un blocco per sito. La tabella scorre in orizzontale
   da sola: con 5 siti e 3 anni non ci sta, e non deve trascinare la pagina.
   ============================================================================ */
.tjp .tool-head{margin-bottom:14px;}
.tjp-siti{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;margin-bottom:14px;}
.tjp-lab{font-size:.78rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);}
.tjp-sito{display:inline-flex;align-items:center;gap:4px;background:#f4f8f5;border:1px solid var(--line);
  border-radius:10px;padding:3px 4px 3px 10px;}
.tjp-sito input{border:0;background:none;font:inherit;font-size:.85rem;font-weight:600;color:var(--ink);
  width:15ch;padding:3px 0;}
.tjp-sito input:focus{outline:none;box-shadow:none;border-bottom:1.5px solid var(--brand);}
.tjp-x{border:0;background:none;padding:2px;line-height:0;color:var(--muted);cursor:pointer;border-radius:6px;}
.tjp-x:hover{color:#b23a24;background:#fbeae6;}
.tjp-x svg{width:14px;height:14px;}

.tjp-tab-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:14px;}
.tjp-tab{border-collapse:collapse;width:100%;min-width:640px;font-size:.85rem;}
.tjp-tab th,.tjp-tab td{padding:7px 10px;text-align:left;border-bottom:1px solid #eef2ef;}
.tjp-tab thead th{background:#f4f8f5;font-size:.72rem;letter-spacing:.05em;text-transform:uppercase;
  color:var(--muted);position:sticky;top:0;z-index:1;}
.tjp-tab thead th:not(.tjp-th-v):not(.tjp-th-u){text-align:right;}
.tjp-th-v{min-width:190px;}
.tjp-th-u{width:96px;}
.tjp-th-tj{width:88px;}
.tjp-sito-r th{background:#eef6f1;color:var(--brand-dark);font-size:.8rem;font-weight:700;}
.tjp-tab tbody th{font-weight:600;color:var(--ink);font-size:.83rem;}
.tjp-tab tbody th em{display:block;font-style:normal;font-size:.68rem;font-weight:500;color:var(--muted);}
.tjp-r-pro th{color:var(--brand-dark);}
.tjp-tab td input{width:100%;min-width:88px;font:inherit;font-size:.85rem;text-align:right;padding:6px 8px;
  border:1px solid #dde5e0;border-radius:8px;background:#fff;color:var(--ink);font-variant-numeric:tabular-nums;}
.tjp-tab td input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 2px rgba(0,115,61,.12);}
.tjp-tab td input.is-err{border-color:#d2603c;background:#fdf3f0;}
.tjp-u select{font:inherit;font-size:.78rem;padding:4px 6px;border:1px solid #dde5e0;border-radius:8px;background:#fff;}
.tjp-uf{font-size:.78rem;color:var(--muted);}
.tjp-tj{text-align:right;font-variant-numeric:tabular-nums;color:var(--muted);font-size:.8rem;}
.tjp-tab tfoot th,.tjp-tab tfoot td{background:#f4f8f5;font-weight:700;color:var(--ink);border-bottom:0;}
.tjp-tab tfoot td{text-align:right;font-variant-numeric:tabular-nums;}
.tjp-tab tfoot #tjpMedia{color:var(--brand-dark);}

.tjp-azioni{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px;}
.tjp-vuoto{margin-top:16px;font-size:.86rem;}

/* esito tecnico: numeri, non messaggio commerciale */
.tjp-esito{margin-top:16px;border:1.5px solid #cfe0d5;border-radius:16px;padding:16px 18px;background:#f7fbf9;}
.tjp-esito.is-sopra{border-color:#f2c9a6;background:#fff8f1;}
.tjp-e-top{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;}
.tjp-e-top span{display:block;font-size:.72rem;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);font-weight:700;}
.tjp-e-top b{display:block;font-size:1.7rem;line-height:1.15;margin-top:3px;color:var(--ink);font-variant-numeric:tabular-nums;}
.tjp-e-top b i{font-style:normal;font-size:.5em;font-weight:600;opacity:.7;}
.tjp-e-top b.neg{color:#b2582a;}
.tjp-e-top b.pos{color:var(--brand-dark);}
.tjp-e-top b.tjp-f{font-size:1.05rem;line-height:1.3;}
.tjp-e-top small{display:block;font-size:.76rem;color:var(--muted);margin-top:4px;}
.tjp-avviso{margin-top:12px;font-size:.83rem;color:#8a5a14;background:#fff7ec;border:1px solid #f2d3a6;
  border-radius:10px;padding:9px 12px;}
.tjp-quote{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:18px;margin-top:16px;}
.tjp-quote h4{font-size:.78rem;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);margin-bottom:8px;}
.tjp-barra{display:grid;grid-template-columns:1fr 92px 46px;align-items:center;gap:8px;margin-bottom:5px;font-size:.8rem;}
.tjp-barra span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink);}
.tjp-barra i{height:7px;border-radius:99px;background:var(--brand);display:block;}
.tjp-barra b{text-align:right;font-variant-numeric:tabular-nums;color:var(--muted);font-weight:600;}
.tjp-e-azioni{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px;}

/* ============================================================================
   Diagnosi rapida dell'immobile - un pannello solo, form e referto affiancati.
   Prima erano due pannelli in colonna: il referto vuoto lasciava mezzo schermo
   bianco. I campi vanno su griglia a piu' colonne per tenere bassa l'altezza.
   ============================================================================ */
.diag2-cols{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:22px;align-items:start;}
@media (max-width:1100px){.diag2-cols{grid-template-columns:minmax(0,1fr);} }
.diag2-sez{display:flex;align-items:baseline;gap:8px;margin:18px 0 9px;font-size:.76rem;font-weight:800;
  letter-spacing:.07em;text-transform:uppercase;color:var(--brand-dark);}
.diag2-sez:first-child{margin-top:4px;}
.diag2-sez::after{content:"";flex:1;height:1px;background:var(--line);}
.diag2-sez span{order:1;font-weight:600;letter-spacing:0;text-transform:none;color:var(--muted);font-size:.76rem;}
.diag2-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px 14px;}
.diag2-grid--fitta{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));}
.diag2-grid .field{margin:0;}
.diag2-grid .field > label{font-size:.79rem;margin-bottom:4px;display:block;}
.diag2-grid input,.diag2-grid select{padding:9px 11px;font-size:.9rem;}
.diag2-hint{font-size:.72rem;color:var(--muted);margin-top:4px;line-height:1.35;}
/* consumi: quantita' e unita' sulla stessa riga, come nel calcolatore TJ */
.diag2-v{display:flex;gap:6px;align-items:stretch;}
.diag2-v input{flex:1 1 auto;min-width:0;text-align:right;font-variant-numeric:tabular-nums;}
.diag2-v .diag2-u{flex:0 0 auto;display:flex;align-items:center;font-size:.76rem;font-weight:600;
  color:var(--muted);background:#f4f8f5;border:1px solid #dde5e0;border-radius:8px;padding:0 8px;}
.diag2-v select.diag2-u{cursor:pointer;color:var(--ink);background:#eef6f1;padding-right:4px;}

/* il referto resta agganciato mentre si compila il form, che e' piu' lungo */
.diag2-out{position:sticky;top:16px;}
.diag2-out .diag-report{background:#f7fbf9;border:1px solid var(--line);border-radius:14px;padding:18px;}
.diag2-out .diag-report.diag-empty{min-height:340px;}
.diag2-kpi{display:grid;grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:10px;margin-top:14px;}
.diag2-kpi > div{background:#fff;border:1px solid var(--line);border-radius:10px;padding:9px 11px;}
.diag2-kpi span{display:block;font-size:.68rem;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);font-weight:700;}
.diag2-kpi b{display:block;font-size:1.12rem;margin-top:2px;color:var(--ink);font-variant-numeric:tabular-nums;}
.diag2-kpi b small{font-size:.6em;font-weight:600;color:var(--muted);margin-left:3px;}
.diag2-mix{margin-top:12px;font-size:.76rem;color:var(--muted);line-height:1.5;}

/* dati immobile e diagnosi per sito, dentro lo strumento unico */
.tjp-sito-r th{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.tjp-meta-t{border:0;background:none;padding:0;font:inherit;font-size:.74rem;font-weight:600;
  color:var(--brand-dark);text-decoration:underline;cursor:pointer;}
.tjp-sito-r th em{font-style:normal;font-size:.74rem;font-weight:600;color:var(--muted);margin-left:auto;}
.tjp-meta-r td{background:#fbfdfc;padding:12px 10px;}
.tjp-meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px 12px;}
.tjp-meta label{display:block;font-size:.72rem;font-weight:700;color:var(--muted);
  letter-spacing:.03em;text-transform:uppercase;}
.tjp-meta input,.tjp-meta select{display:block;width:100%;margin-top:4px;font:inherit;font-size:.85rem;
  font-weight:400;text-transform:none;letter-spacing:0;color:var(--ink);padding:6px 9px;
  border:1px solid #dde5e0;border-radius:8px;background:#fff;}
.tjp-meta small{display:block;margin-top:3px;font-size:.68rem;font-weight:500;color:var(--brand-dark);
  text-transform:none;letter-spacing:0;min-height:1em;}

.tjp-diag{margin-top:18px;padding-top:16px;border-top:1px solid #dde8e1;}
.tjp-diag h4{font-size:.78rem;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);margin-bottom:10px;}
.tjp-diag-vuoto{margin-top:16px;font-size:.82rem;color:var(--muted);}
.tjp-diag-c{background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-bottom:10px;}
.tjp-diag-h{display:flex;align-items:center;gap:9px;flex-wrap:wrap;}
.tjp-diag-h b{font-size:.92rem;color:var(--ink);}
.tjp-diag-h em{font-style:normal;font-size:.74rem;color:var(--muted);margin-left:auto;}
.tjp-diag-h .tjp-stima{color:#8a5a14;font-weight:600;}
.tjp-cls{display:inline-flex;align-items:center;justify-content:center;min-width:26px;height:24px;
  border-radius:6px;font-weight:800;font-size:.85rem;color:#fff;background:var(--muted);padding:0 6px;}
.tjp-cls--A,.tjp-cls--B{background:#1a8f4c;}
.tjp-cls--C,.tjp-cls--D{background:#7bb03a;}
.tjp-cls--E{background:#e0a52a;}
.tjp-cls--F{background:#dd7b2a;}
.tjp-cls--G{background:#c0442a;}
.tjp-diag-k{display:grid;grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:8px;margin-top:10px;}
.tjp-diag-k > div{background:#f7fbf9;border-radius:8px;padding:7px 9px;}
.tjp-diag-k span{display:block;font-size:.65rem;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);font-weight:700;}
.tjp-diag-k b{display:block;font-size:1rem;margin-top:1px;color:var(--ink);font-variant-numeric:tabular-nums;}
.tjp-diag-k b small{font-size:.58em;font-weight:600;color:var(--muted);margin-left:3px;}
.tjp-diag-n{margin-top:9px;font-size:.74rem;color:var(--muted);line-height:1.45;}
.tjp-int{list-style:none;margin:10px 0 0;padding:0;}
.tjp-int li{display:flex;align-items:baseline;gap:8px;padding:5px 0;border-top:1px solid #eef2ef;font-size:.8rem;}
.tjp-int li b{color:var(--ink);font-weight:600;}
.tjp-int li span{color:var(--muted);font-size:.74rem;}
.tjp-int li i{margin-left:auto;font-style:normal;font-weight:700;color:var(--brand-dark);
  font-variant-numeric:tabular-nums;white-space:nowrap;}

/* Siti come linguette di un file Excel: si apre un foglio per volta, invece di
   accodare un blocco per sito e allungare la pagina a ogni aggiunta.
   Sulla linguetta NIENTE pulsanti: e' solo navigazione, e con matita e cestino
   li' sopra si finiva per cancellare un sito mentre lo si voleva aprire. */
.tjp-foglio{display:inline-flex;align-items:center;gap:7px;background:#f4f8f5;
  border:1px solid var(--line);border-bottom-color:var(--line);border-radius:10px 10px 0 0;
  padding:8px 14px;font:inherit;font-size:.86rem;font-weight:600;color:var(--muted);
  cursor:grab;position:relative;top:1px;max-width:22ch;touch-action:none;user-select:none;}
.tjp-foglio > span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.tjp-foglio:hover{background:#eef6f1;color:var(--brand-dark);}
.tjp-foglio.on{background:#fff;border-bottom-color:#fff;color:var(--brand-dark);
  box-shadow:0 -2px 6px rgba(4,16,28,.05);}
/* durante il trascinamento la linguetta trasla SOLO in orizzontale: il movimento
   e' vincolato alla riga, niente anteprima che vola per la pagina */
.tjp-foglio.is-drag{opacity:.75;cursor:grabbing;z-index:2;box-shadow:0 6px 16px rgba(4,16,28,.2);
  transition:none;touch-action:none;}
.tjp-foglio.is-over{box-shadow:inset 3px 0 0 var(--brand);}
.tjp-foglio-cls{font-style:normal;font-size:.66rem;font-weight:800;color:#fff;background:var(--muted);
  border-radius:4px;padding:1px 5px;line-height:1.4;flex:0 0 auto;}
.tjp-siti{align-items:flex-end;gap:4px;margin-bottom:0;border-bottom:1px solid var(--line);padding-bottom:0;}
/* Anche "Aggiungi sito" e' una linguetta: stesso profilo e stessa riga delle altre.
   Bordo tratteggiato e piu' verde per distinguerla dai siti veri, e il segno piu'
   piu' grande perche' e' quello che si cerca con l'occhio. */
.tjp-foglio--add{cursor:pointer;max-width:none;background:#fff;border-style:dashed;
  border-color:var(--line-strong);color:var(--brand-dark);font-weight:700;padding:8px 16px;}
.tjp-foglio--add:hover{background:#eef6f1;border-color:var(--brand);color:var(--brand-dark);}
.tjp-piu{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;}
.tjp-piu svg{width:20px;height:20px;stroke-width:2.6;}

/* barra del sito aperto: titolo grande, rinomina, elimina, dati immobile */
.tjp-sb{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:14px 2px 12px;}
.tjp-sb-t{font-size:1.3rem;font-weight:700;color:var(--ink);letter-spacing:-.01em;}
.tjp-sb-d{font-size:.78rem;color:var(--muted);}
.tjp-sb .tjp-meta-t{margin-left:auto;}
.tjp-rin{border:1.5px solid var(--brand);border-radius:10px;background:#fff;font:inherit;
  font-size:1.2rem;font-weight:700;color:var(--ink);width:20ch;padding:4px 10px;}
.tjp-rin:focus{outline:none;box-shadow:0 0 0 3px rgba(0,115,61,.15);}
.tjp-ic{border:0;background:none;padding:5px;line-height:0;color:var(--muted);cursor:pointer;border-radius:8px;}
.tjp-ic:hover{color:var(--brand-dark);background:rgba(0,115,61,.08);}
.tjp-ic svg{width:16px;height:16px;}
.tjp-ic.tjp-x:hover{color:#b23a24;background:#fbeae6;}
#tjpBarra .tjp-meta{padding:12px 14px;background:#fbfdfc;border:1px solid var(--line);
  border-radius:12px;margin-bottom:12px;}
.tjp-piede-s th,.tjp-piede-s td{background:#fbfdfc!important;font-weight:600!important;
  color:var(--muted)!important;font-size:.8rem;}

/* conferma prima di cancellare: un sito porta via tre anni di consumi */
.tjp-modal{position:fixed;inset:0;z-index:60;background:rgba(4,16,28,.42);
  display:flex;align-items:center;justify-content:center;padding:20px;}
.tjp-modal[hidden]{display:none;}
.tjp-modal-c{background:#fff;border-radius:16px;padding:22px 24px;max-width:420px;width:100%;
  box-shadow:0 24px 60px rgba(4,16,28,.3);}
.tjp-modal-c h3{font-size:1.1rem;color:var(--ink);margin-bottom:8px;}
.tjp-modal-c p{font-size:.88rem;color:var(--muted);line-height:1.5;}
.tjp-modal-a{display:flex;gap:10px;justify-content:flex-end;margin-top:18px;flex-wrap:wrap;}
.tjp-del{background:#c0442a;border-color:#c0442a;}
.tjp-del:hover{background:#a53821;border-color:#a53821;}

/* Passo del wizard Ristrutturazioni: i campi vanno in riga invece che impilati.
   Su telefono resta una colonna, che li' l'impilato e' giusto. Le domande a
   scelta, le stanze e i testi lunghi occupano tutta la riga: hanno gia' una
   griglia dentro o servono spazio per scrivere. */
.ris-wiz-campi{display:grid;grid-template-columns:1fr;gap:20px 22px;}
.ris-wiz-c{min-width:0;}
.ris-wiz-c .wiz-q{margin-bottom:0;}
.ris-wiz-c .field{margin-top:10px;}
.ris-wiz-c .wiz-grid{margin-top:14px;}
@media (min-width:760px){
  .ris-wiz-campi{grid-template-columns:repeat(auto-fit,minmax(230px,1fr));align-items:start;}
  .ris-wiz-c--largo{grid-column:1/-1;}
  /* i testi lunghi stanno in riga come gli altri: con due campi al passo
     Descrizione vengono circa 450px l'uno, larghezza da scrivere */
  .ris-wiz-c textarea{min-height:120px;}
  /* in riga le domande sono etichette di campo, non titoli di pagina */
  .ris-wiz-c:not(.ris-wiz-c--largo) .wiz-q{font-size:.95rem;font-weight:600;line-height:1.35;}
  .ris-wiz-c:not(.ris-wiz-c--largo) .ris-wiz-hint{font-size:.78rem;margin-top:4px;}
}

/* Barra laterale a gruppi. Sedici voci in fila si leggono tutte ogni volta;
   quattro blocchi con un'etichetta riducono la ricerca a un blocco.
   role="presentation" sul contenitore: le etichette non devono entrare nella
   navigazione da tastiera del tablist, che deve contenere solo schede. */
.dash-grp{display:flex;flex-direction:column;gap:9px;}
.dash-grp + .dash-grp{margin-top:16px;}
.dash-grp-t{padding:0 4px 2px;font-size:.68rem;font-weight:800;letter-spacing:.1em;
  text-transform:uppercase;color:var(--muted);opacity:.8;}
/* Sotto gli 820px la barra diventa una fila che scorre (vedi .dash-side sopra).
   Li' i gruppi devono sparire dal layout, o al posto di una fila di schede si
   otterrebbero quattro colonne affiancate: display:contents toglie il
   contenitore dal box tree e le schede tornano figlie dirette della fila. */
@media (max-width:820px){
  .dash-grp{display:contents;}
  .dash-grp-t{display:none;}
}

/* Calcolatore pubblico del contributo serramenti FVG (serramenti.html). Mobile first:
   una colonna, due dai 820px. */
.serr-calc{display:grid;gap:20px;margin-top:28px;}
.serr-calc-in,.serr-calc-out{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:20px;}
#contributo-fvg:focus-within,.serr-calc-in:focus-within{z-index:2;}
.serr-calc-in:focus-within{position:relative;}
.serr-calc-in .field:first-child{margin-top:0;}
.serr-calc-lbl{font-size:.85rem;font-weight:600;color:var(--ink);}
.serr-calc-radio{display:flex;gap:18px;flex-wrap:wrap;font-size:.95rem;}
.serr-calc-radio label{display:flex;align-items:center;gap:6px;cursor:pointer;}
.serr-calc-big{font-size:2rem;font-weight:800;color:var(--brand-dark);line-height:1.1;margin:4px 0 6px;}
.serr-calc-out p{margin:8px 0 0;font-size:.9rem;line-height:1.5;}
.serr-calc-out ul{margin:10px 0 0;padding-left:18px;font-size:.88rem;line-height:1.5;}
.serr-calc-bar{height:8px;border-radius:4px;background:var(--line);overflow:hidden;margin-top:6px;}
.serr-calc-bar i{display:block;height:100%;background:var(--brand);}
.serr-calc-bar i.over{background:#c2410c;}
.serr-calc-kv{display:flex;justify-content:space-between;gap:12px;font-size:.9rem;margin-top:10px;}
.serr-calc-note{margin-top:14px;padding:12px 14px;border-radius:12px;background:var(--surface-2);font-size:.86rem;line-height:1.5;}
@media (min-width:820px){.serr-calc{grid-template-columns:1fr 1fr;align-items:start;}}

/* ---- Sito pubblico, riscrittura del 02/10/2026: pochi pezzi nuovi, il resto riusa
   le classi esistenti (phero, section, cards, steps, faq, tab-legale, legale). ---- */
/* Home senza immagine: resta il fondo sfumato del brand con l'aurora. Quando arriva
   la nuova immagine si rimette <img class="hero-img"> in .hero-media e si toglie
   .hero--plain. */
.hero--plain .hero-stage{min-height:auto;padding:140px 0 90px;}
.hero--plain .hero-inner{padding-top:0;}   /* lo spazio per il menu fisso sta nel padding sopra */
.hero-paths{margin-top:34px;display:flex;flex-wrap:wrap;gap:14px;}
/* Avviso in pagina: informazione importante o servizio non ancora disponibile */
.notice{display:flex;gap:14px;align-items:flex-start;background:var(--surface);border:1px solid var(--line-strong);
  border-left:4px solid var(--brand);border-radius:var(--r-sm);padding:16px 18px;line-height:1.6;}
.notice svg{width:22px;height:22px;flex:0 0 auto;color:var(--brand);margin-top:2px;}
.notice b{color:var(--ink);}
.notice p+p{margin-top:8px;}
.notice--soon{border-left-color:#f2b705;}
.notice--soon svg{color:#b58900;}
/* Immagine generata con IA: etichetta sempre visibile sopra l'immagine (AI Act art. 50) */
.ai-fig{position:relative;margin:0;}
.ai-tag{position:absolute;left:12px;bottom:12px;z-index:2;background:rgba(14,36,64,.82);color:#fff;font-size:.72rem;
  line-height:1.3;padding:5px 10px;border-radius:var(--r-pill);max-width:calc(100% - 24px);}
/* Il numero delle pratiche approvate */
.num-band{background:radial-gradient(130% 130% at 80% -10%,#0a7d45,#0a4f7a 50%,var(--ink) 100%);color:#fff;
  padding:clamp(40px,5vw,60px) 0;text-align:center;}
.num-band .big{display:block;font-weight:800;font-size:clamp(2.6rem,7vw,4.4rem);line-height:1;}
.num-band p{max-width:52ch;margin:14px auto 0;color:var(--on-dark-mut);}
/* Fonte ufficiale sotto una risposta o una regola */
.fonte{display:block;margin-top:10px;font-size:.84rem;}
.fonte a{color:var(--brand-dark);text-decoration:underline;}
/* Esempio di calcolo con le ipotesi scritte */
.esempio{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:clamp(20px,3vw,30px);}
.esempio .big{font-weight:800;font-size:clamp(1.8rem,4vw,2.4rem);color:var(--brand-dark);line-height:1.1;}
.esempio ul{margin-top:14px;padding-left:18px;list-style:disc;}
.esempio li{margin-bottom:6px;line-height:1.6;color:var(--muted);}
/* Testo continuo nelle pagine servizio */
.prosa{max-width:70ch;}
.prosa p{line-height:1.75;margin-top:14px;}
.prosa ul{margin-top:12px;padding-left:20px;list-style:disc;}
.prosa li{line-height:1.7;margin-bottom:8px;}
.prosa h3{margin-top:28px;font-size:1.15rem;}
.tab-wrap{overflow-x:auto;margin-top:22px;}
.footer-col span{display:block;font-size:.93rem;padding:6px 0;color:var(--on-dark-mut);}
/* Link dentro i testi: si devono riconoscere senza passarci sopra */
.muted a:not(.btn),.prosa a:not(.btn),.notice a:not(.btn),.step p a,.faq-a-inner a,.legale p a,.legale li a{
  color:var(--brand-dark);text-decoration:underline;text-underline-offset:2px;}
/* Home: privati e professionisti affiancati, quasi a tutta larghezza. Ogni pannello e'
   orizzontale: testo a sinistra, foto a destra (generata con IA, con etichetta). Sotto i
   1200px i pannelli vanno uno sotto l'altro; sotto i 700px la foto va sopra il testo. */
.section--duo{padding:clamp(28px,4vw,56px) 0;}
.duo-wrap{padding:0 clamp(16px,2.2vw,40px);}
.duo{display:grid;grid-template-columns:1fr 1fr;gap:clamp(16px,1.6vw,28px);}
.duo-card{position:relative;overflow:hidden;border-radius:var(--r-lg);display:grid;grid-template-columns:1.15fr 1fr;
  min-height:480px;color:#fff;background:var(--ink);box-shadow:var(--shadow-lg);}
.duo-body{position:relative;z-index:1;padding:clamp(26px,3vw,44px);align-self:center;}
.duo-body .eyebrow{color:rgba(255,255,255,.85);}
.duo-body h2{color:#fff;font-size:clamp(1.45rem,2vw,1.95rem);margin:10px 0 18px;}
.duo-steps{display:grid;gap:12px;margin:0 0 24px;padding:0;list-style:none;}
.duo-steps li{color:rgba(255,255,255,.8);font-size:.93rem;line-height:1.55;}
.duo-steps b{display:block;color:#fff;font-size:1rem;}
.duo-steps a{color:#fff;text-decoration:underline;text-underline-offset:2px;}
.duo-media{position:relative;min-height:100%;}
.duo-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 22%;}
.duo-media::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,var(--ink) 0%,rgba(14,36,64,0) 28%);}
/* Etichetta IA discreta: piccola e semitrasparente, ma sempre leggibile senza clic */
.ai-tag--soft{left:auto;right:10px;bottom:10px;background:rgba(14,36,64,.55);color:rgba(255,255,255,.78);
  font-size:.66rem;padding:3px 8px;}
@media (max-width:1200px){.duo{grid-template-columns:1fr;}}
@media (max-width:700px){
  .duo-card{grid-template-columns:1fr;min-height:0;}
  .duo-media{order:-1;height:260px;}
  .duo-media::after{background:linear-gradient(0deg,var(--ink) 0%,rgba(14,36,64,0) 35%);}
}
.duo-body .duo-badge{background:var(--accent);color:#fff;display:inline-block;}
.duo-steps{gap:10px;}
.duo-steps li{position:relative;padding-left:22px;}
.duo-steps li::before{content:"";position:absolute;left:4px;top:.6em;width:7px;height:7px;border-radius:50%;background:var(--brand-bright);}
/* Titoli e pulsanti su una riga (sito pubblico). I titoli larghi non hanno piu' il tetto in
   caratteri; i pulsanti non vanno mai a capo. Dove una riga non basta (pannelli stretti,
   telefono) il testo si spezza in modo bilanciato, mai con una parola sola nella seconda riga. */
h1,h2,h3{text-wrap:balance;}
.btn{white-space:nowrap;}
.eyebrow--badge,.hero-badge,.card-tag{white-space:nowrap;}
@media (min-width:900px){
  .section .head,.section .head--center{max-width:none;}
  .phero h1{max-width:none;font-size:clamp(1.9rem,3vw,2.6rem);}
  .head--center .section-title{white-space:nowrap;}
  .hero-title .t1,.hero-title .t2{white-space:nowrap;}
  .hero-copy{max-width:900px;}
  .split .section-title{font-size:clamp(1.6rem,2.3vw,2.2rem);}
  .cta-band h2{font-size:clamp(1.5rem,2.2vw,2rem);}
}

/* Home: fotografia e percorsi prima dell'elenco dei servizi. */
.hero--home .hero-stage{min-height:min(850px,88svh);padding:130px 0 80px;background:var(--ink);}
.hero--home .hero-img{top:-80px;height:calc(100% + 105px);object-position:90% top;}
@media (min-width:1351px){.hero--home .hero-img{top:-100px;height:calc(100% + 125px);object-position:90% 20%;}}
.hero--home .hero-media-overlay{background:linear-gradient(90deg,rgba(8,22,38,.94) 0%,rgba(8,22,38,.78) 31%,rgba(8,22,38,.35) 62%,rgba(8,22,38,.05) 100%),linear-gradient(0deg,rgba(8,22,38,.45),transparent 35%);}
.hero--home .hero-inner{padding-top:0;}
.hero--home .hero-copy{max-width:720px;}
.hero--home .hero-title{margin-top:22px;}
.hero--home .hero-title .t1{font-size:clamp(1.4rem,2.2vw,2rem);font-weight:500;white-space:normal;}
.hero--home .hero-title .t2{font-size:clamp(3rem,5.1vw,5.1rem);line-height:1.16;margin-top:12px;white-space:normal;}
.hero--home .hero-sub{max-width:51ch;color:#f2f6f1;}
.hero--home .eyebrow--badge{background:rgba(1,77,42,.84);white-space:normal;line-height:1.45;}
.hero--home .hero-paths .btn{gap:16px;}
.hero--home .hero-paths{gap:10px;}
.hero--home .hero-paths .btn--on-dark-ghost{background:rgba(8,22,38,.55);border-color:rgba(255,255,255,.5);}
.hero--home .hero-paths span{font-size:1.2em;line-height:1;}
.hero--home .ai-tag{left:auto;right:18px;bottom:18px;}

.contact-hero-cta{margin-top:28px;}
.contact-register{margin-top:30px;padding:28px;border:1px solid #cde5d3;border-radius:var(--r-lg);background:linear-gradient(145deg,#fff 38%,#e9f6ed);box-shadow:var(--shadow-sm);}
.contact-register h3{margin:10px 0;font-size:clamp(1.4rem,2.2vw,1.8rem);}
.contact-register p{color:var(--muted);line-height:1.65;}
.contact-register a{margin-top:18px;color:var(--brand-dark);}
.contact-form-intro{margin-bottom:20px;}
.contact-form-intro h2{font-size:clamp(1.6rem,2.6vw,2rem);margin:10px 0;}
.contact-form-intro p{color:var(--muted);}
#modulo{scroll-margin-top:110px;}
#contactForm{scroll-margin-top:110px;}

.home-section-head{display:grid;grid-template-columns:minmax(0,1fr);justify-items:center;gap:12px;margin-bottom:36px;text-align:center;}
.home-section-head h2{font-size:clamp(2rem,3.7vw,3.25rem);margin-top:10px;}
.home-section-head p{max-width:65ch;margin-inline:auto;color:var(--muted);font-size:1.02rem;line-height:1.75;}
.section--duo{padding:clamp(64px,7vw,96px) 0;}
.section--duo .duo-body{padding:34px 38px 40px;align-self:stretch;display:flex;flex-direction:column;}
.section--duo .duo-body h3{color:#fff;font-size:clamp(1.5rem,2vw,2rem);margin:14px 0 18px;}
.section--duo .duo-steps{margin-bottom:28px;}
.section--duo .duo-body>.btn{align-self:flex-start;margin-top:auto;}
.section--duo .duo-badge{align-self:flex-start;max-width:100%;white-space:normal;line-height:1.4;}
.section--duo .duo-body>.btn{white-space:normal;line-height:1.35;text-align:center;}
.home-business-note{margin-top:30px;display:flex;flex-direction:column;align-items:center;gap:8px;color:var(--muted);text-align:center;}
.home-business-note strong{color:var(--ink);}
.home-business-note a{flex:0 0 auto;color:var(--brand-dark);font-weight:600;text-decoration:underline;text-underline-offset:3px;}

.num-band{padding:30px 0;text-align:left;background:var(--ink);scroll-margin-top:180px;overflow:hidden;}
.num-band-track,.num-band-group,.num-band-item{display:flex;align-items:center;}
.num-band-track{width:max-content;animation:numBandScroll 38s linear infinite;}
.num-band-group,.num-band-item{flex:0 0 auto;}
.num-band-item{gap:clamp(32px,4vw,60px);padding-right:80px;color:#fff;}
.num-band .big{font-size:clamp(3rem,5vw,4.6rem);white-space:nowrap;color:inherit;}
.num-band p{flex:0 0 min(60ch,55vw);margin:0;max-width:none;font-size:clamp(1.15rem,1.8vw,1.45rem);line-height:1.4;color:inherit;}
@keyframes numBandScroll{to{transform:translateX(-50%);}}
@keyframes numBandGradient{to{background-position:100% 0;}}
@supports (background-clip:text){
  .num-band-item{
    background:linear-gradient(90deg,#52ca68 0%,#48b4e8 25%,#52ca68 50%,#48b4e8 75%,#52ca68 100%);
    background-size:200% 100%;background-clip:text;-webkit-background-clip:text;
    color:transparent;-webkit-text-fill-color:transparent;
    animation:numBandGradient 6.96s linear infinite;
  }
}
@media (hover:hover){.num-band:hover .num-band-track{animation-play-state:paused;}}
@media (max-width:999px){
  .num-band-track,.num-band-group{display:block;width:auto;animation:none;}
  .num-band-item{display:block;width:auto;}
  .num-band-item{padding:0 24px;text-align:center;}
  .num-band-item:not(:first-child),.num-band-group + .num-band-group{display:none;}
  .num-band p{max-width:60ch;margin:8px auto 0;}
}

.home-service-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
#servizi>.container,#interventi>.container{max-width:none;padding-inline:clamp(24px,2vw,48px);}
#interventi .home-section-head{max-width:1200px;margin-inline:auto;}
.home-service-feature{grid-column:1 / -1;display:grid;grid-template-columns:.9fr 1.1fr;padding:0;min-height:370px;}
.home-service-photo{position:relative;min-height:320px;overflow:hidden;}
.home-service-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.home-service-copy{padding:clamp(32px,4vw,56px);align-self:center;}
.home-service-feature h3{font-size:clamp(1.8rem,2.6vw,2.6rem);}
.home-service-feature p{max-width:50ch;}
.home-service-interventions{display:flex;flex-wrap:wrap;gap:9px;list-style:none;margin:20px 0;}
.home-service-interventions li{padding:9px 14px;border:1px solid #c9dcd2;border-radius:999px;background:#f1f8f3;color:var(--ink);font-weight:600;}
.home-service-tag{display:inline-flex;align-items:center;gap:9px;margin-top:8px;padding:10px 15px;border-radius:999px;background:var(--brand);color:#fff;font-weight:700;transition:background .2s ease;}
.home-service-tag:hover{background:var(--brand-dark);color:#fff;}
.home-service-tag svg{width:17px;height:17px;}
.home-service-grid>.card:not(:first-child){display:flex;flex-direction:column;min-height:255px;box-shadow:none;}
.home-service-grid>.card:not(:first-child) .home-service-tag{align-self:flex-start;margin-top:auto;}
.home-service-grid>.card:not(:first-child) .home-service-tag::after{content:"";position:absolute;inset:0;z-index:4;}
.services-tech-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;margin-top:40px;}
.service-practical-grid .card{padding:clamp(26px,3vw,40px);}
.service-practical-grid h3{margin:13px 0 10px;color:var(--ink);font-size:clamp(1.2rem,2vw,1.6rem);line-height:1.3;}
.service-practical-grid p{color:var(--muted);max-width:58ch;}
.services-tech-card{overflow:hidden;border:1px solid var(--line);border-radius:var(--r-lg);background:#fff;}
.services-tech-visual{position:relative;height:220px;overflow:hidden;background:var(--ink);}
.services-tech-visual img{width:100%;height:100%;object-fit:cover;object-position:center 43%;}
.services-tech-visual--diagnosi{display:grid;place-items:center;background:linear-gradient(135deg,#0e2440,#086443);}
.services-tech-visual--diagnosi svg{width:min(85%,400px);}
.services-tech-body{padding:30px 34px 36px;}
.services-tech-body h3{margin:10px 0;font-size:1.55rem;}
.services-tech-body p{max-width:48ch;margin-bottom:22px;color:var(--muted);}
.partner-network-panel{display:grid;grid-template-columns:minmax(280px,.9fr) minmax(0,1.1fr);overflow:hidden;margin-top:38px;border:1px solid var(--line);border-radius:var(--r-lg);background:#fff;box-shadow:0 20px 60px rgba(14,36,64,.08);}
.partner-network-map{position:relative;display:grid;place-items:center;min-height:390px;overflow:hidden;background:radial-gradient(circle at 52% 44%,#effaf2,#dceee5 70%);}
.partner-network-canvas{position:relative;width:min(78%,380px);aspect-ratio:116/114;}
.partner-network-map svg{display:block;width:100%;height:100%;overflow:visible;filter:drop-shadow(0 14px 18px rgba(11,77,55,.17));}
.partner-network-map path{fill:#71c99b;stroke:#087143;stroke-width:1.7;stroke-linejoin:round;}
.partner-network-pins{position:absolute;inset:0;pointer-events:none;}
.partner-network-pin{position:absolute;width:21px;height:21px;transform:translate(-50%,-50%);border:3px solid #fff;border-radius:50%;background:#0876bc;box-shadow:0 2px 10px rgba(14,36,64,.35);cursor:pointer;pointer-events:auto;}
.partner-network-pin:hover,.partner-network-pin:focus-visible{transform:translate(-50%,-50%) scale(1.2);}
.partner-network-content{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;padding:clamp(30px,4vw,58px);}
.partner-network-content h3{margin:12px 0 22px;font-size:clamp(1.7rem,2.5vw,2.4rem);}
.partner-network-list{display:grid;gap:10px;width:100%;max-height:300px;overflow:auto;margin-bottom:26px;}
.partner-network-list>p,.partner-network-shop p{color:var(--muted);line-height:1.6;}
.partner-network-shop{padding:16px 18px;border:1px solid #dce9e1;border-radius:14px;background:#f8fcf9;}
.partner-network-shop h4{margin-bottom:3px;font-size:1.05rem;}
.audience-photo{position:relative;height:250px;overflow:hidden;margin-bottom:18px;border-radius:var(--r-lg);}
.audience-photo img{width:100%;height:100%;object-fit:cover;object-position:center 42%;}
#interventi,#servizi-aziende,#servizi-tecnici,#rete-fvg,#condomini{scroll-margin-top:74px;}
.services-help{max-width:70ch;margin:30px auto 0;text-align:center;}
.services-help p{color:var(--muted);line-height:1.7;}
.services-help strong{color:var(--ink);}
.services-help .link-arrow{margin-top:12px;}
.service-card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:18px;}
#interventi .service-card-actions .home-service-tag{margin-top:0;}
#interventi .home-service-grid>.card:not(:first-child) .service-card-actions{margin-top:auto;}
#interventi .home-service-tag::after{display:none;}
.service-card-request{padding:10px 15px;border:1px solid var(--brand);border-radius:999px;background:var(--brand);color:#fff;font:inherit;font-weight:700;cursor:pointer;box-shadow:0 8px 22px rgba(0,115,61,.24);transition:background .2s ease,box-shadow .2s ease;}
.service-card-request:hover{background:var(--brand-dark);box-shadow:0 12px 26px rgba(0,115,61,.3);}
#interventi .service-card-actions .home-service-tag{background:transparent;color:var(--brand-dark);border:1px solid var(--line-strong);}
#interventi .service-card-actions .home-service-tag:hover{background:#edf8f0;border-color:var(--brand);}
.service-request-dialog{position:fixed;inset:0;width:min(680px,calc(100vw - 28px));max-height:min(90dvh,900px);margin:auto;overflow:auto;padding:clamp(22px,3vw,36px);border:0;border-radius:24px;background:#fff;color:var(--ink);box-shadow:0 30px 90px rgba(6,28,34,.3);}
.service-request-dialog::backdrop{background:rgba(8,24,38,.7);backdrop-filter:blur(4px);}
.service-request-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;}
.service-request-head h2{margin-top:8px;font-size:clamp(1.45rem,3vw,2rem);}
.service-request-close{flex:none;width:42px;height:42px;border:1px solid var(--line);border-radius:12px;background:#fff;color:var(--ink);font-size:1.7rem;line-height:1;cursor:pointer;}
.service-request-intro{max-width:60ch;margin:14px 0 22px;color:var(--muted);line-height:1.6;}
.service-request-location{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
.service-request-location .field{margin:0;}
.service-request-work{margin-top:16px;}
.service-request-work[hidden]{display:none;}
.service-request-find{margin-top:20px;}
.service-request-error{margin-top:12px;color:#ae3728;}
.service-request-result{margin-top:24px;border-top:1px solid var(--line);padding-top:24px;}
.service-request-match{padding:22px;border:1px solid #cde5d3;border-radius:18px;background:#f2f9f4;}
.service-request-match h3{margin:8px 0;font-size:1.35rem;}
.service-request-match p,.service-request-form>p{color:var(--muted);line-height:1.6;}
.service-request-match a{display:inline-flex;margin:16px 18px 0 0;color:var(--brand-dark);font-weight:700;text-decoration:underline;text-underline-offset:3px;}
.service-request-form{display:grid;gap:14px;margin-top:26px;}
.service-request-form h3{font-size:1.3rem;}
.service-request-form .field{margin:0;}
.service-request-consent{display:flex;align-items:flex-start;gap:10px;font-size:.9rem;}
.service-request-consent input{margin-top:4px;}
.service-request-consent a{text-decoration:underline;}
.service-request-form .btn{justify-self:start;}
.service-request-submit-note{min-height:1.2em;color:var(--muted);font-size:.9rem;}
.service-request-success{margin-top:22px;padding:20px;border-radius:16px;background:#edf8f0;}
.service-request-success p{margin-top:6px;color:var(--muted);}

/* Aiuto rapido del sito pubblico: occupa l'angolo destro senza coprire "torna su". */
.help-bot{position:fixed;right:22px;bottom:calc(22px + env(safe-area-inset-bottom));z-index:56;font-family:var(--sans);}
.has-help-bot .totop{right:26px;bottom:calc(94px + env(safe-area-inset-bottom));}
.help-bot-launcher{position:relative;display:grid;place-items:center;width:58px;height:58px;padding:7px;border:1px solid rgba(255,255,255,.3);border-radius:50%;background:var(--brand);color:#fff;box-shadow:0 12px 34px rgba(0,75,41,.25);cursor:pointer;}
.help-bot-launcher svg{width:42px;height:42px;}
.help-bot-launcher:hover{background:var(--brand-dark);}
.help-bot-launcher::before{content:attr(data-hint);position:absolute;right:calc(100% + 12px);top:50%;padding:9px 13px;border:1px solid #cde4d4;border-radius:12px;background:#fff;color:var(--ink);box-shadow:0 10px 28px rgba(14,36,64,.14);font:600 .82rem var(--sans);white-space:nowrap;opacity:0;visibility:hidden;transform:translate(7px,-50%);pointer-events:none;transition:opacity .2s ease,transform .2s ease,visibility 0s linear .2s;}
.help-bot-launcher:hover::before,.help-bot-launcher:focus-visible::before{opacity:1;visibility:visible;transform:translate(0,-50%);transition-delay:0s;}
.help-bot-panel.is-open + .help-bot-launcher::before{visibility:hidden;opacity:0;}
.help-bot-panel{position:absolute;right:0;bottom:calc(100% + 12px);width:min(390px,calc(100vw - 28px));max-height:min(670px,calc(100dvh - 115px));overflow:auto;padding:22px;background:#fff;border:1px solid #cde4d4;border-radius:22px;box-shadow:0 26px 70px rgba(14,36,64,.23);color:var(--ink);opacity:0;visibility:hidden;transform:translateY(12px) scale(.97);transform-origin:bottom right;pointer-events:none;transition:opacity .26s ease,transform .26s cubic-bezier(.2,.8,.2,1),visibility 0s linear .26s;}
.help-bot-panel.is-open{opacity:1;visibility:visible;transform:translateY(0) scale(1);pointer-events:auto;transition-delay:0s;}
.help-bot-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;}
.help-bot-head h2{font-size:1.35rem;line-height:1.25;margin-top:5px;}
.help-bot-close{width:34px;height:34px;flex:none;border:1px solid var(--line-strong);border-radius:10px;background:#fff;color:var(--ink);font-size:1.4rem;line-height:1;cursor:pointer;}
.help-bot-intro{font-size:.87rem;color:var(--muted);margin:13px 0 16px;line-height:1.55;}
.help-bot-topics{display:flex;flex-wrap:wrap;gap:8px;}
.help-bot-topics button{border:1px solid #bfd9ca;border-radius:999px;background:#f2f8f3;color:var(--brand-dark);font:600 .78rem var(--sans);padding:7px 10px;cursor:pointer;}
.help-bot-topics button:hover{background:#dfefe3;}
.help-bot-search{margin-top:18px;}
.help-bot-search label{display:block;font-size:.8rem;font-weight:700;margin-bottom:6px;}
.help-bot-search>div{display:flex;gap:7px;}
.help-bot-search input{min-width:0;flex:1;padding:11px 12px;border:1px solid var(--line-strong);border-radius:11px;font:400 .85rem var(--sans);}
.help-bot-search button{width:43px;flex:none;border:0;border-radius:11px;background:var(--brand);color:#fff;font-size:1.25rem;cursor:pointer;}
.help-bot-answer{margin-top:16px;padding:15px;border-radius:13px;background:#eef6f0;border-left:3px solid var(--brand);font-size:.85rem;}
.help-bot-answer strong{display:block;color:var(--ink);}
.help-bot-answer p{margin:5px 0 8px;color:var(--muted);line-height:1.55;}
.help-bot-answer a,.help-bot-actions a{color:var(--brand-dark);font-weight:700;text-decoration:underline;text-underline-offset:3px;}
.help-bot-actions{display:flex;flex-wrap:wrap;gap:10px 18px;margin-top:17px;font-size:.82rem;}
.help-bot :focus-visible{outline:3px solid var(--accent);outline-offset:3px;}
@media(max-width:600px){.help-bot{right:12px;bottom:calc(12px + env(safe-area-inset-bottom));}.has-help-bot .totop{right:15px;bottom:calc(85px + env(safe-area-inset-bottom));}.help-bot-panel{max-height:calc(100dvh - 100px);}.help-bot-launcher{width:56px;height:56px;}}
@media(prefers-reduced-motion:reduce){.help-bot-panel,.help-bot-launcher::before,.help-bot-launcher,.help-bot-topics button{transition:none;}}
.privati-services>.container{max-width:none;padding-inline:clamp(24px,2vw,48px);}
.privati-services .home-section-head{max-width:1200px;margin-inline:auto;}
.privati-services .home-service-grid>.card:not(:first-child) .service-card-actions{margin-top:auto;padding-top:18px;}
#documenti-tecnici .services-tech-grid{margin-top:0;}
#documenti-tecnici .card{display:flex;flex-direction:column;}
#documenti-tecnici .service-card-actions{margin-top:auto;padding-top:24px;}
.service-document .head--center .section-title{white-space:normal;text-wrap:balance;}
.services-condo-grid{display:grid;grid-template-columns:.9fr 1.1fr;align-items:stretch;gap:24px;max-width:1180px;margin-inline:auto;}
.services-condo-info{display:flex;flex-direction:column;gap:16px;padding:clamp(28px,3vw,42px);border:1px solid var(--line);border-radius:var(--r-lg);background:#fff;}
.services-condo-info h3{font-size:clamp(1.35rem,2vw,1.7rem);}
.services-condo-info p{color:var(--muted);line-height:1.7;}
.services-condo-info .fonte{margin-top:auto;font-size:.88rem;}

.home-process{background:#fff;}
.home-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;list-style:none;}
.home-steps li{padding:36px 34px 40px;border:1px solid var(--line);border-radius:var(--r-lg);background:linear-gradient(145deg,#fff 45%,#f3f9f5);box-shadow:var(--shadow-sm);}
.home-steps li>span{display:grid;place-items:center;width:50px;height:50px;border-radius:16px;background:#ddf2e3;color:var(--brand-dark);font-weight:800;font-size:1.05rem;}
.home-steps h3{color:var(--ink);font-size:1.35rem;margin:26px 0 12px;}
.home-steps p{color:var(--muted);font-size:.96rem;line-height:1.65;}
.service-document .head + .home-steps{margin-top:44px;}
.service-document .home-steps .link-arrow{margin-top:18px;text-decoration:underline;text-underline-offset:4px;}
.home-process-support{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:24px;align-items:center;margin-top:18px;padding:28px 32px;border:1px solid #cfe6d6;border-radius:var(--r-lg);background:#edf8f0;}
.home-process-support-icon{display:grid;place-items:center;width:64px;height:64px;border-radius:20px;background:#d8f0df;color:var(--brand-dark);}
.home-process-support-icon svg{width:30px;height:30px;}
.home-process-support h3{font-size:1.45rem;margin:6px 0 8px;}
.home-process-support p{max-width:65ch;color:var(--muted);font-size:.94rem;line-height:1.6;}
.home-process-support-actions{display:flex;flex-direction:column;align-items:center;gap:12px;white-space:nowrap;}
.home-process-support-actions .btn{padding:12px 20px;}
.home-tool-grid{grid-template-columns:repeat(3,minmax(0,1fr));}
.home-tool-grid .card{display:flex;flex-direction:column;box-shadow:none;}
.home-tool-grid .card .link-arrow{align-self:flex-start;margin-top:auto;padding-top:18px;}
.home-faq-column{display:grid;align-content:start;gap:14px;min-width:0;}
@media (min-width:701px) and (max-width:1050px){.home-tool-grid{grid-template-columns:repeat(2,minmax(0,1fr));}.home-tool-grid .card:last-child{grid-column:1 / -1;}}
@media (min-width:701px){
  .home-service-feature .home-service-copy{order:1;}
  .home-service-feature .home-service-photo{order:2;}
  .home-service-photo img{object-position:center 68%;}
  #interventi .home-service-photo img{object-position:center 80%;}
}
@media (min-width:1200px){
  .home-faq{max-width:none;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(3,auto);grid-auto-flow:column;align-items:start;}
  .home-faq-column{display:contents;}
  .home-faq .faq-item{min-height:96px;}
  .home-faq .faq-item:not(.open) .faq-q{min-height:96px;}
}
@media (min-width:1400px){
  .home-service-grid{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);grid-auto-rows:minmax(0,1fr);}
  .home-service-feature{grid-column:1;grid-row:span 2;grid-template-columns:minmax(0,1.08fr) minmax(0,.92fr);min-height:520px;}
  .home-service-photo{min-height:0;}
  .home-service-copy{padding:clamp(28px,2.2vw,42px);}
  .home-service-grid>.card:not(:first-child){min-height:0;justify-content:center;padding:24px 28px;}
  .home-service-grid>.card:not(:first-child) .home-service-tag{margin-top:16px;}
}

@media (max-width:800px){
  .services-condo-grid{grid-template-columns:1fr;}
  .home-steps{grid-template-columns:1fr;}
  .home-steps li{padding:28px;}
  .home-steps h3{margin-top:18px;}
  .home-process-support{grid-template-columns:1fr;padding:28px;gap:16px;}
  .home-process-support-actions{align-items:flex-start;white-space:normal;}
}
@media (max-width:700px){
  .phero--services{padding:110px 0 54px;}
  .services-jump{flex-direction:column;align-items:stretch;}
  .service-hero-actions{flex-direction:column;align-items:stretch;}
  .service-request-location{grid-template-columns:1fr;}
  .hero--home .hero-stage{display:block;min-height:0;padding:0;}
  .hero--home .hero-media{position:relative;height:360px;}
  .hero--home .hero-img{top:-16px;height:calc(100% + 16px);object-position:right center;}
  .hero--home .hero-media-overlay{background:linear-gradient(180deg,rgba(8,22,38,.64),transparent 38%,rgba(8,22,38,.18));}
  .hero--home .hero-inner{padding:30px 26px 62px;background:var(--ink);}
  .hero--home .hero-title .t2{font-size:clamp(2.5rem,11vw,4rem);}
  .hero--home .hero-paths{flex-direction:column;align-items:stretch;}
  .hero--home .hero-paths .btn{justify-content:space-between;white-space:normal;}
  .hero--home .ai-tag{right:10px;bottom:10px;}
  .section--duo .duo-media{height:250px;}
  .section--duo .duo-body{padding:28px 26px 32px;}
  .home-service-grid,.home-tool-grid{grid-template-columns:1fr;}
  .home-service-feature{grid-column:auto;grid-template-columns:1fr;}
  .home-service-photo{min-height:0;height:250px;}
  .home-service-copy{padding:30px 28px 34px;}
  .services-tech-grid{grid-template-columns:1fr;}
  .services-tech-body{padding:28px;}
  .partner-network-panel{grid-template-columns:1fr;}
  .partner-network-map{min-height:280px;}
  .partner-network-canvas{width:min(72%,300px);}
  .partner-network-content{padding:28px;}
}

.company-services>.container{max-width:none;padding-inline:clamp(24px,2vw,48px);}
  .company-services .home-section-head{max-width:1200px;margin-inline:auto;}
  .company-services .home-section-head p{max-width:none;}
.company-services .home-service-grid>.card:not(:first-child) .service-card-actions{margin-top:auto;padding-top:18px;}
.company-services .service-card-request:hover{color:#fff;}
  .company-paths-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:20px;}
  .company-path-card{grid-column:span 2;display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,.65fr);min-width:0;min-height:390px;padding:0;overflow:hidden;box-shadow:none;}
  .company-path-card:nth-child(n+4){grid-column:span 3;}
  .company-path-copy{display:flex;flex-direction:column;align-items:flex-start;min-width:0;padding:clamp(24px,1.7vw,32px);}
  .company-path-card .eyebrow{margin-top:20px;}
  .company-path-card h3{font-size:clamp(1.35rem,1.6vw,1.7rem);margin:10px 0;line-height:1.25;}
  .company-path-card p{flex:1;color:var(--muted);line-height:1.65;}
  .company-path-card .service-card-request{align-self:flex-start;margin-top:24px;text-decoration:none;white-space:nowrap;}
  .company-path-image{position:relative;min-width:0;min-height:0;overflow:hidden;background:#e5eee8;}
  .company-path-image img{display:block;width:100%;height:100%;object-fit:cover;object-position:center;}
  .company-path-image .ai-tag{position:absolute;right:6px;bottom:6px;max-width:none;white-space:nowrap;font-size:.58rem;padding:3px 6px;}
  @media (min-width:1100px){.company-services .home-section-head p{white-space:nowrap;}}
  @media (min-width:1100px) and (max-width:1499px){.company-path-card,.company-path-card:nth-child(n+4){grid-column:span 3;}.company-path-card:last-child{grid-column:2 / span 4;}}
  @media (max-width:1099px){.company-paths-grid{grid-template-columns:1fr;}.company-path-card,.company-path-card:nth-child(n+4),.company-path-card:last-child{grid-column:auto;min-height:340px;}}
  @media (max-width:649px){.company-path-card{position:relative;display:flex;flex-direction:column;min-height:0;}.company-path-image{order:-1;height:255px;flex:none;}.company-path-copy{padding:20px 24px 24px;}.company-path-card .card-ico{position:absolute;top:16px;left:16px;z-index:2;margin:0;background:rgba(255,255,255,.94);box-shadow:0 5px 18px rgba(14,36,64,.14);}.company-path-card .eyebrow{margin-top:0;}.company-path-card h3{margin:8px 0;}.company-path-card p{flex:none;}.company-path-card .service-card-request{max-width:100%;margin-top:18px;white-space:normal;text-align:center;}}
.company-start-note{max-width:950px;margin:40px auto 0;padding:26px 30px;border:1px solid var(--line);border-radius:var(--r-lg);background:#fff;text-align:center;}
.company-start-note h3{margin:0 0 8px;font-size:clamp(1.2rem,1.8vw,1.45rem);color:var(--ink);}
.company-start-note p{margin:0;color:var(--muted);line-height:1.65;}
.company-tool{display:flex;align-items:center;justify-content:space-between;gap:32px;padding:clamp(28px,4vw,46px);border:1px solid var(--line);border-radius:var(--r-lg);background:#fff;}
.company-tool h3{font-size:clamp(1.4rem,2.2vw,1.8rem);}
.company-tool p{max-width:78ch;margin-top:12px;color:var(--muted);line-height:1.7;}
.company-tool .btn{flex:none;}
.company-notice{max-width:1000px;margin-inline:auto;}
.company-centered-actions{justify-content:center;margin-top:28px;}
@media (max-width:800px){.company-tool{flex-direction:column;align-items:stretch;}.company-tool .btn{align-self:flex-start;}}
@media (max-width:700px){.company-centered-actions .btn{width:100%;white-space:normal;text-align:center;}}

.about-story-grid .card,.about-expertise-grid .card{display:flex;flex-direction:column;align-items:flex-start;}
.about-story-grid h3{margin:14px 0 12px;font-size:clamp(1.4rem,2vw,1.75rem);}
.about-story-grid p,.about-expertise-grid p{color:var(--muted);line-height:1.7;}
.about-expertise-grid h3{margin:16px 0 10px;font-size:clamp(1.4rem,2vw,1.75rem);}
.about-reach{max-width:900px;margin:26px auto 0;padding:18px 24px;border:1px solid var(--line);border-radius:var(--r-lg);background:#fff;color:var(--muted);text-align:center;line-height:1.6;}
.about-reach strong{color:var(--ink);}
/* Rete pubblica e conferme operative: stessi pannelli chiari del sito. */
.rete-empty{grid-column:1/-1;text-align:center;max-width:800px;justify-self:center;line-height:1.7;}
#profiloReteHost .rete-editor{margin:0 0 24px;}
.procedura-dialog{margin:auto;overflow:auto;}.procedura-dialog ol{padding-left:24px;margin:20px 0;}
.rete-editor{margin-top:28px;padding:24px;border:1px solid #c9e3d5;border-radius:20px;background:#fff;color:#102743;}
.rete-editor h3{margin:8px 0 14px}.rete-editor p{line-height:1.6}.rete-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;}
.rete-editor label,.procedura-dialog form>label{display:block;font-weight:600;margin:14px 0;}
.rete-editor input:not([type=checkbox]),.rete-editor select,.rete-editor textarea,.procedura-dialog select,.procedura-dialog textarea{display:block;box-sizing:border-box;width:100%;margin-top:8px;padding:12px 14px;border:1px solid #ccdcd2;border-radius:12px;background:#fff;color:#102743;font:inherit;}
.rete-editor fieldset{margin:18px 0;padding:14px;border:1px solid #ccdcd2;border-radius:12px;}.rete-services{display:flex;flex-wrap:wrap;gap:8px 20px}.rete-services label{margin:4px 0;font-weight:500;}
.rete-check{display:flex!important;gap:12px;align-items:flex-start;font-weight:400!important;line-height:1.6;}.rete-check input{flex:0 0 auto;width:18px;height:18px;margin-top:4px;accent-color:#008044;}
.rete-preview{padding:18px;border:1px solid #c9e3d5;background:#f1f8f4;border-radius:14px;}.rete-preview [data-preview]{white-space:pre-line;margin-top:10px;overflow-wrap:anywhere;}
.rete-status,.procedura-note{margin:16px 0;line-height:1.5;}.rete-public-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;margin-top:28px;}.rete-public-card{padding:28px;background:#fff;border:1px solid #dce6df;border-radius:24px;overflow-wrap:anywhere;}.rete-public-card h2{font-size:1.4rem;}.rete-public-card a{display:block;color:#006d3c;text-decoration:underline;text-underline-offset:3px;margin-top:12px;}.rete-public-card[hidden]{display:none;}
.rete-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}.rete-metrics p{margin:0;padding:16px;border-radius:12px;background:#f1f8f4;}.rete-metrics b{display:block;font-size:1.5rem;}
.procedura-dialog{width:min(760px,calc(100vw - 32px));max-height:calc(100dvh - 40px);padding:28px;box-sizing:border-box;border:1px solid #c9e3d5;border-radius:24px;background:#fff;color:#102743;box-shadow:0 24px 70px #10274333;}.procedura-dialog::backdrop{background:#10274399;}.procedura-dialog p,.procedura-dialog li{line-height:1.65;}.procedura-dialog li+li{margin-top:12px;}.procedura-head{display:flex;justify-content:space-between;gap:16px;}.procedura-head h2{font-size:1.6rem;margin:8px 0 16px;}.procedura-head [data-close]{align-self:flex-start;background:#fff;border:1px solid #ccdcd2;border-radius:12px;padding:6px 14px;font-size:1.5rem;color:#102743;cursor:pointer;}.procedura-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:20px;flex-wrap:wrap;}.service-request-public-profile{display:block;margin:14px 0;color:#006d3c;text-decoration:underline;}
#obReteEditor .rete-editor{padding:20px;margin-top:24px;}#obReteEditor button[type=submit]{display:none;}
@media(max-width:850px){.rete-public-list{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media(max-width:600px){.rete-fields,.rete-public-list,.rete-metrics{grid-template-columns:1fr;}.rete-editor,.rete-public-card,.procedura-dialog{padding:20px;}.procedura-actions .btn{width:100%;}}
