@font-face{font-family:Caladea;src:url(fonts/Caladea-Bold.ttf) format("truetype");font-weight:700;font-display:swap}
@font-face{font-family:Carlito;src:url(fonts/Carlito-Regular.ttf) format("truetype");font-weight:400;font-display:swap}
@font-face{font-family:Carlito;src:url(fonts/Carlito-Bold.ttf) format("truetype");font-weight:700;font-display:swap}
:root{--verde:#2DA22D;--verde-scuro:#1C6E1F;--verde-chiaro:#6BC25A;--verde-medio:#2DA22D;--giallo:#2DA22D;--crema:#F1F7EE;--chiaro:#E3F2DC;--ink:#222;--grigio:#56635a}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:#fff;color:var(--ink);font-family:Carlito,"Segoe UI",Arial,sans-serif;font-size:18px;line-height:1.55;min-height:100vh;display:flex;flex-direction:column}
main{flex:1}
a{color:var(--verde)}
.wrap{max-width:1080px;margin:0 auto;padding:0 20px}
h1,h2,h3{font-family:Caladea,Georgia,serif;color:var(--verde);line-height:1.15;margin:0 0 .5em}
h1{font-size:clamp(32px,5vw,50px)}
h2{font-size:clamp(26px,3.6vw,34px);margin-top:1.2em}
h3{font-size:21px}
p{margin:0 0 1em}
.lead{color:var(--grigio);font-size:20px;max-width:760px}

/* marchio: nome e slogan della stessa larghezza */
.brand{display:inline-flex;flex-direction:column;text-decoration:none;line-height:1}
.brand b{font-family:Caladea,Georgia,serif;color:#fff;letter-spacing:.5px}
.brand span{color:var(--giallo)}
.brand.sm b{font-size:30px}
.brand.sm span{font-size:12.4px;margin-top:2px}

/* home */
.home{background:#fff;display:flex;flex-direction:column;min-height:100vh}
.home main{background:var(--verde);color:var(--chiaro);display:flex;align-items:center;justify-content:center;text-align:center;padding:70px 20px;min-height:92vh}
.home .brand b{font-size:clamp(76px,15vw,150px)}
.home .brand span{font-size:clamp(31px,6.2vw,62px);margin-top:4px}
.home .brand{align-items:flex-start}
.home nav{margin-top:56px;display:flex;flex-wrap:wrap;gap:12px;justify-content:center}
.pill{display:inline-block;border:1.5px solid var(--chiaro);color:#fff;text-decoration:none;padding:11px 22px;border-radius:999px;font-weight:700;font-size:17px}
.pill:hover,.pill.on{background:var(--giallo);border-color:var(--giallo);color:var(--verde)}

/* pagine interne */
header.top{background:var(--verde)}
header.top .wrap{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-top:16px;padding-bottom:16px}
header.top nav{display:flex;flex-wrap:wrap;gap:6px 18px}
header.top nav a{color:var(--chiaro);text-decoration:none;font-size:16px}
header.top nav a:hover,header.top nav a.on{color:var(--giallo)}
.menu-btn{display:none;background:none;border:1.5px solid var(--chiaro);color:#fff;border-radius:8px;padding:6px 12px;font:inherit;font-size:15px}
.hero{background:var(--verde);color:var(--chiaro);padding:30px 0 56px}
.hero h1{color:#fff}
.hero .tag{color:var(--giallo);font-weight:700;letter-spacing:.08em;text-transform:uppercase;font-size:14px;margin-bottom:8px}
section{padding:56px 0}
section.alt{background:var(--crema)}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
.grid2{display:grid;grid-template-columns:repeat(2,1fr);gap:22px}
.card{background:var(--crema);border-radius:16px;padding:24px}
section.alt .card{background:#fff}
.card ul{margin:0;padding-left:18px}
.band{background:var(--verde);color:#fff;border-radius:16px;padding:22px 26px;margin-top:22px;font-size:19px}
.flow{display:grid;grid-template-columns:1fr auto 1fr auto 1fr;gap:12px;align-items:center;margin-bottom:16px}
.node{border-radius:14px;padding:18px;text-align:center;min-height:118px;display:flex;flex-direction:column;justify-content:center}
.node b{font-family:Caladea,Georgia,serif;font-size:20px;display:block;margin-bottom:4px}
.n1{background:var(--verde-medio);color:#fff}.n2{background:var(--giallo);color:var(--verde)}.n3{background:var(--verde);color:#fff}.n3 b{color:var(--giallo)}
.arrow{color:var(--verde-medio);font-size:28px;font-weight:700;text-align:center}
.stat b{display:block;font-family:Caladea,Georgia,serif;font-size:40px;color:var(--verde)}
.stat span{color:var(--grigio)}
.steps{counter-reset:s;display:grid;grid-template-columns:repeat(2,1fr);gap:22px 40px}
.step{display:flex;gap:16px;align-items:flex-start}
.step:before{counter-increment:s;content:counter(s);flex:0 0 46px;height:46px;border-radius:50%;background:var(--giallo);color:var(--verde);font-weight:700;font-size:20px;display:flex;align-items:center;justify-content:center}
.step p{margin:2px 0 0;color:var(--grigio)}
.btn{display:inline-block;background:var(--giallo);color:var(--verde);font-weight:700;padding:13px 26px;border-radius:999px;text-decoration:none;border:0;cursor:pointer;font:inherit;font-weight:700}
form{display:grid;gap:14px;max-width:640px}
label{font-weight:700;font-size:16px;color:var(--verde)}
input,textarea,select{width:100%;font:inherit;padding:12px 14px;border:1px solid #cfd8d3;border-radius:10px;background:#fff;color:var(--ink)}
textarea{min-height:130px}
.hidden{display:none}
.contact{display:grid;grid-template-columns:1.2fr 1fr;gap:40px}
.small{font-size:15px;color:var(--grigio)}
.legal h2{font-size:24px}
.legal{max-width:820px}

footer{background:var(--verde);color:var(--chiaro);padding:26px 0;font-size:15px}

footer .wrap{display:flex;justify-content:space-between;gap:12px 20px;flex-wrap:wrap;align-items:center}
footer a{color:var(--chiaro)}
footer a:hover{color:var(--giallo)}
footer nav{display:flex;gap:16px;flex-wrap:wrap}

@media (max-width:860px){
  .grid3,.grid4,.grid2,.steps,.contact{grid-template-columns:1fr}
  .flow{grid-template-columns:1fr}
  .arrow{transform:rotate(90deg)}
  header.top nav{display:none;width:100%;flex-direction:column;gap:10px;padding-top:12px}
  header.top nav.open{display:flex}
  header.top .wrap{flex-wrap:wrap}
  .menu-btn{display:block}
  section{padding:44px 0}
}

.home .teaser{max-width:680px;margin:44px auto 0;font-size:20px;color:var(--chiaro);line-height:1.5}
.home .pillars{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;max-width:760px;margin:30px auto 0}
.home .pillars div{border:1px solid rgba(201,222,211,.35);border-radius:14px;padding:14px 10px}
.home .pillars b{display:block;font-family:Caladea,Georgia,serif;color:var(--giallo);font-size:22px}
.home .pillars span{font-size:15px;color:var(--chiaro)}
.home .soon{margin:34px 0 14px;font-size:22px;color:#fff}
@media (max-width:860px){.home .pillars{grid-template-columns:repeat(2,1fr)}.home .teaser{font-size:18px}}

/* mappa */
.mapbox{display:grid;grid-template-columns:320px 1fr;gap:28px;align-items:start}
.mapside input{margin-top:6px}
.esito{margin-top:16px;background:#fff;border-radius:14px;padding:16px;min-height:120px;color:var(--grigio)}
.esito b{display:block;font-family:Caladea,Georgia,serif;font-size:24px;color:var(--verde)}
.esito span{display:block;margin:4px 0 14px;font-size:15px}
#italia{width:100%;max-height:720px;background:#fff;border-radius:16px}
#italia .reg{fill:#E4EDE7;stroke:#fff;stroke-width:1.5}
#italia .pt{fill:var(--verde-medio);opacity:.75;cursor:pointer;transition:r .15s}
#italia .pt:hover{fill:var(--verde);opacity:1}
#italia .pt.on{fill:var(--giallo);stroke:var(--verde);stroke-width:2.5;opacity:1;r:9}
.dot{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--verde-medio);margin-right:4px}
@media (max-width:860px){.mapbox{grid-template-columns:1fr}#italia{max-height:520px}}

/* obiettivi */
.tappe{display:flex;flex-wrap:wrap;gap:10px;margin:8px 0 26px}
.tappe button{font:inherit;font-weight:700;font-size:20px;color:var(--verde);background:var(--crema);border:2px solid transparent;border-radius:14px;padding:10px 20px;cursor:pointer;text-align:left;line-height:1.1}
.tappe button span{display:block;font-weight:400;font-size:14px;color:var(--grigio)}
.tappe button.on{background:var(--verde);color:var(--giallo)}
.tappe button.on span{color:var(--chiaro)}
.counters{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:14px}
.ctr{background:var(--verde);color:var(--chiaro);border-radius:16px;padding:22px 18px}
.ctr b{display:block;font-family:Caladea,Georgia,serif;font-size:clamp(30px,3.4vw,44px);color:var(--giallo);line-height:1.05;font-variant-numeric:tabular-nums}
.ctr span{display:block;margin-top:8px;font-size:15px;line-height:1.35}
@media (max-width:860px){.counters{grid-template-columns:repeat(2,1fr)}}

/* palette GSE: nome in due verdi */
.brand em,.fname em{font-style:normal}
.c1{color:var(--verde-chiaro)}
.c2{color:var(--verde-scuro)}
.brand b{color:var(--verde-scuro)}
.brand span{color:var(--verde)}
h1,h2,h3{color:var(--verde-scuro)}
a{color:var(--verde-scuro)}
.home main{background:#fff;color:var(--ink)}
.home .teaser{color:var(--grigio)}
.home .pillars div{border:1.5px solid var(--chiaro);background:var(--crema)}
.home .pillars b{color:var(--verde-scuro)}
.home .pillars span{color:var(--grigio)}
.pill{border-color:var(--verde);color:var(--verde-scuro)}
.pill:hover,.pill.on{background:var(--verde);border-color:var(--verde);color:#fff}
.btn{background:var(--verde);color:#fff}
.btn:hover{background:var(--verde-scuro)}
header.top{background:#fff;border-bottom:3px solid var(--verde)}
header.top nav a{color:var(--verde-scuro)}
.hero{background:var(--verde);color:#fff}
.hero h1{color:#fff}
.hero .tag{color:#E3F2DC}
.band{background:var(--verde-scuro)}
footer{background:var(--verde-scuro);color:#E3F2DC}
footer a{color:#E3F2DC}
footer a:hover{color:#fff}
.fname{font-family:Caladea,Georgia,serif}
.fname .c1{color:#9BDB86}.fname .c2{color:#fff}
.tappe button{color:var(--verde-scuro)}
.tappe button.on{background:var(--verde);color:#fff}
.tappe button.on span{color:#E3F2DC}
.ctr{background:var(--verde-scuro);color:#E3F2DC}
.ctr b{color:#9BDB86}
.esito b{color:var(--verde-scuro)}
#italia .reg{fill:#E3F2DC}
#italia .pt{fill:var(--verde)}
#italia .pt:hover{fill:var(--verde-scuro)}
#italia .pt.on{fill:#FFD54A;stroke:var(--verde-scuro)}
label{color:var(--verde-scuro)}
.gse{display:flex;gap:20px;align-items:center;justify-content:space-between;background:#fff;border:2px solid var(--verde);border-radius:16px;padding:18px 22px;margin-top:18px}
@media (max-width:860px){.gse{flex-direction:column;align-items:flex-start}}
.gse .btn{white-space:nowrap;flex:none}
