/* ==========================================================================
   E.V.I. S.p.A. — Servizio Idrico Integrato Isola d'Ischia
   Design system
   ========================================================================== */

/* --------------------------------------------------------------------------
   Font ospitati localmente (self-hosted) — GDPR compliant.
   In precedenza i font erano caricati da fonts.googleapis.com: quel caricamento
   trasmetteva l'indirizzo IP dell'utente ai server di Google ad ogni visita,
   senza base giuridica né consenso (cfr. provvedimenti del Garante Privacy e
   giurisprudenza UE). I file .woff2 sono ora serviti dallo stesso dominio del
   sito, quindi nessun dato viene inviato a terze parti.
   -------------------------------------------------------------------------- */

/* Fraunces — display serif (asse variabile opsz + wght) */
@font-face{
  font-family:'Fraunces';
  font-style:normal;
  font-weight:400 700;
  font-display:swap;
  src:url('../fonts/fraunces-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:'Fraunces';
  font-style:normal;
  font-weight:400 700;
  font-display:swap;
  src:url('../fonts/fraunces-latin-ext.woff2') format('woff2');
  unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

/* Inter — testo (asse variabile wght) */
@font-face{
  font-family:'Inter';
  font-style:normal;
  font-weight:400 700;
  font-display:swap;
  src:url('../fonts/inter-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:'Inter';
  font-style:normal;
  font-weight:400 700;
  font-display:swap;
  src:url('../fonts/inter-latin-ext.woff2') format('woff2');
  unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

/* IBM Plex Mono — monospace (pesi 500 e 600) */
@font-face{
  font-family:'IBM Plex Mono';
  font-style:normal;
  font-weight:500;
  font-display:swap;
  src:url('../fonts/ibm-plex-mono-500-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:'IBM Plex Mono';
  font-style:normal;
  font-weight:500;
  font-display:swap;
  src:url('../fonts/ibm-plex-mono-500-latin-ext.woff2') format('woff2');
  unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face{
  font-family:'IBM Plex Mono';
  font-style:normal;
  font-weight:600;
  font-display:swap;
  src:url('../fonts/ibm-plex-mono-600-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:'IBM Plex Mono';
  font-style:normal;
  font-weight:600;
  font-display:swap;
  src:url('../fonts/ibm-plex-mono-600-latin-ext.woff2') format('woff2');
  unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

:root{
  /* Palette derivata dal logo E.V.I. — Energia Verde Idrica
     (verde foglia, verde scuro, blu acqua, giallo sole). I nomi delle
     variabili restano invariati per non toccare i riferimenti nel sito:
     --teal* = verde del marchio, --blue-deep* = blu acqua, --gold = giallo sole. */
  --blue-deep:#0A4C86;      /* blu acqua profondo (hero, footer, titoli) */
  --blue-deep-2:#0D5C9E;    /* blu acqua */
  --teal:#1B8A3C;           /* verde marchio (pulsanti, accenti) */
  --teal-dark:#14692D;      /* verde scuro (hover, link, testo) */
  --terracotta:#B8571E;     /* accento caldo / stati di errore */
  --terracotta-dark:#934416;
  --foam:#E8F3EA;           /* verde chiarissimo (sfondi tenui) */
  --foam-2:#F4FAF5;         /* quasi bianco virato verde */
  --gold:#E4B81E;           /* giallo sole (accento) */
  --ink:#12301C;            /* testo scuro virato verde */
  --ink-soft:#40614C;       /* testo secondario verde-grigio */
  --white:#ffffff;
  --line:#cfe6d3;           /* bordi virati verde */

  --font-display:'Fraunces', serif;
  --font-body:'Inter', sans-serif;
  --font-mono:'IBM Plex Mono', monospace;

  --radius:14px;
  --radius-sm:8px;
  --shadow-sm: 0 1px 2px rgba(10,76,52,.06), 0 1px 1px rgba(10,76,52,.04);
  --shadow-md: 0 8px 24px rgba(10,76,52,.10);
  --shadow-lg: 0 20px 48px rgba(10,76,52,.16);
  --container: 1180px;
}

*,*::before,*::after{box-sizing:border-box;}
html{scroll-behavior:smooth;}
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto;}
  *,*::before,*::after{animation-duration:.001ms !important; animation-iteration-count:1 !important; transition-duration:.001ms !important;}
}
body{
  margin:0;
  font-family:var(--font-body);
  color:var(--ink);
  background:var(--foam-2);
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%; display:block;}
a{color:inherit;}
h1,h2,h3,h4{
  font-family:var(--font-display);
  line-height:1.12;
  margin:0 0 .5em;
  font-weight:600;
  letter-spacing:-.01em;
}
p{margin:0 0 1em;}
.container{
  width:100%;
  max-width:var(--container);
  margin:0 auto;
  padding:0 24px;
}
:focus-visible{
  outline:3px solid var(--blue-deep);
  outline-offset:2px;
}
/* Su sfondi scuri il focus deve restare visibile: outline chiaro */
.hero :focus-visible,
.site-footer :focus-visible,
.panel :focus-visible,
.topbar :focus-visible,
.news-slider :focus-visible,
.btn-primary:focus-visible,
.btn-terra:focus-visible,
.auth-side :focus-visible{
  outline-color:#fff;
}

/* Link "Salta al contenuto" (accessibilità WCAG 2.4.1) */
.skip-link{
  position:absolute; left:12px; top:-60px; z-index:2000;
  background:var(--blue-deep); color:#fff; padding:10px 16px;
  border-radius:0 0 8px 8px; text-decoration:none; font-weight:600;
  transition:top .15s ease;
}
.skip-link:focus{ top:0; }

/* Pulsante che deve apparire come un link nel menu (es. Esci) */
.nav-linklike{
  background:none; border:0; font:inherit; cursor:pointer;
  color:var(--teal-dark); font-weight:600; padding:0;
}

/* ---------- Buttons ---------- */
.btn{
  display:inline-flex;
  align-items:center;
  gap:8px;
  font-family:var(--font-body);
  font-weight:600;
  font-size:.95rem;
  padding:13px 24px;
  border-radius:999px;
  border:1.5px solid transparent;
  cursor:pointer;
  text-decoration:none;
  transition:transform .15s ease, box-shadow .15s ease, background .15s ease, color .15s ease;
}
.btn:hover{transform:translateY(-1px);}
.btn-primary{background:var(--teal-dark); color:var(--white); box-shadow:var(--shadow-sm);}
.btn-primary:hover{background:#0f5423; box-shadow:var(--shadow-md);}
.btn-outline{background:transparent; border-color:rgba(255,255,255,.55); color:var(--white);}
.btn-outline:hover{background:rgba(255,255,255,.12);}
.btn-ghost{background:transparent; border-color:var(--line); color:var(--blue-deep);}
.btn-ghost:hover{background:var(--foam);}
.btn-terra{background:var(--terracotta); color:var(--white);}
.btn-terra:hover{background:var(--terracotta-dark);}
.btn-block{width:100%; justify-content:center;}

/* ---------- Header / Nav ---------- */
/* Il contenitore #site-header (in cui viene iniettato il partial) non deve
   creare un blocco che limiti lo sticky: display:contents lo rende "trasparente"
   così la .site-header si aggancia rispetto all'intera pagina durante lo scroll. */
#site-header{ display:contents; }

.site-header{
  position:sticky; top:0; z-index:100;
  background:rgba(255,255,255,.92);
  backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line);
}

/* Fascia superiore — Numero Verde Pronto Intervento (sempre visibile) */
.topbar{
  background:linear-gradient(90deg, var(--teal-dark), #17772F);
  color:#fff;
}
.topbar-inner{
  display:flex; align-items:center; justify-content:space-between;
  gap:12px; min-height:38px; padding-top:6px; padding-bottom:6px;
  font-size:.85rem; flex-wrap:wrap;
}
.topbar-label{ display:inline-flex; align-items:center; gap:7px; font-weight:500; }
.topbar-label svg{ flex:none; }
.topbar-num{
  text-decoration:none; color:#fff; font-weight:500;
  display:inline-flex; align-items:center; gap:6px;
}
.topbar-num strong{
  font-family:var(--font-mono); font-size:1rem; letter-spacing:.02em;
  background:rgba(255,255,255,.18); padding:1px 8px; border-radius:6px;
}
.topbar-num:hover strong{ background:rgba(255,255,255,.3); }
@media (max-width:560px){
  .topbar-inner{ justify-content:center; }
  .topbar-label{ display:none; }
}
.nav{
  display:flex; align-items:center; justify-content:space-between;
  padding:14px 0;
}
.brand{
  display:flex; align-items:center; gap:10px;
  text-decoration:none;
}
.brand img{
  height:56px; width:auto; display:block;
}
/* Mark testuale mantenuto come fallback se in futuro si tornasse al testo */
.brand .mark{
  width:38px; height:38px; border-radius:10px;
  background:linear-gradient(155deg, var(--teal), var(--blue-deep));
  display:flex; align-items:center; justify-content:center;
  color:#fff; font-family:var(--font-display); font-weight:700; font-size:1.05rem;
  flex:none;
}
.brand small{display:block; font-family:var(--font-body); font-weight:500; font-size:.65rem; color:var(--ink-soft); letter-spacing:.03em;}

.primary-nav{display:contents;}
.nav-links{
  display:flex; align-items:center; gap:22px; flex-wrap:nowrap;
  list-style:none; margin:0; padding:0;
}
.nav-links a, .nav-links .nav-trigger{white-space:nowrap;}
.nav-links a{
  text-decoration:none; color:var(--ink); font-weight:500; font-size:.95rem;
  position:relative; padding:6px 0;
}
.nav-links a::after{
  content:''; position:absolute; left:0; right:100%; bottom:0; height:2px;
  background:var(--teal); transition:right .2s ease;
}
.nav-links a:hover::after{right:0;}
.nav-cta{display:flex; align-items:center; gap:12px; flex-wrap:nowrap; white-space:nowrap; flex:none;}
.nav-cta > div{display:flex; align-items:center; gap:12px;}
.nav .brand{flex:none;}
.nav-toggle{
  display:none; flex-direction:column; gap:5px; background:none; border:0; cursor:pointer; padding:8px;
}
.nav-toggle span{width:24px; height:2px; background:var(--blue-deep); border-radius:2px;}

/* ---------- Dropdown di navigazione ---------- */
.nav-item-dropdown{position:relative;}
.nav-item-dropdown > .nav-trigger{
  display:flex; align-items:center; gap:5px; cursor:pointer;
  text-decoration:none; color:var(--ink); font-weight:500; font-size:.95rem; padding:6px 0;
  background:none; border:0; font-family:var(--font-body);
}
.nav-trigger .chevron{width:9px; height:9px; border-right:1.5px solid currentColor; border-bottom:1.5px solid currentColor; transform:rotate(45deg); margin-top:-3px; transition:transform .15s ease;}
.nav-item-dropdown:hover .chevron{transform:rotate(225deg); margin-top:3px;}
.nav-dropdown-panel{
  position:absolute; top:100%; left:50%; transform:translateX(-50%);
  background:#fff; border:1px solid var(--line); border-radius:var(--radius-sm);
  box-shadow:var(--shadow-lg); padding:10px; min-width:240px;
  opacity:0; visibility:hidden; translate:0 6px;
  transition:opacity .15s ease, visibility .15s ease, translate .15s ease;
  z-index:50;
}
.nav-item-dropdown:hover .nav-dropdown-panel,
.nav-item-dropdown:focus-within .nav-dropdown-panel{
  opacity:1; visibility:visible; translate:0 0;
}
.nav-dropdown-panel a{
  display:block; padding:9px 12px; border-radius:6px; font-size:.88rem; font-weight:500;
  color:var(--ink); white-space:nowrap;
}
.nav-dropdown-panel a:hover{background:var(--foam); color:var(--teal-dark);}
.nav-dropdown-panel a::after{display:none;}
.nav-dropdown-panel .dropdown-divider{height:1px; background:var(--line); margin:6px 4px;}

/* Menu "Gestione" per gli amministratori (nella barra, a destra) */
.nav-admin > .nav-trigger{
  border:1.5px solid var(--line); border-radius:999px; padding:12px 20px;
  color:var(--blue-deep); font-weight:600; white-space:nowrap; transition:background .15s ease;
}
.nav-admin > .nav-trigger:hover{background:var(--foam);}
.nav-admin .nav-dropdown-panel{left:auto; right:0; transform:none; min-width:200px;}
.nav-admin .nav-dropdown-panel a{text-decoration:none;}

/* ---------- Hero ---------- */
.hero{
  position:relative;
  background:linear-gradient(150deg, var(--blue-deep) 0%, var(--blue-deep-2) 55%, var(--teal-dark) 100%);
  color:#fff;
  overflow:hidden;
  padding:76px 0 0;
}
.hero-grid{
  display:grid; grid-template-columns:1fr; gap:40px; align-items:center;
  padding-bottom:70px;
  text-align:center;
}
.hero-grid > div{max-width:760px; margin-inline:auto;}
.hero-grid h1, .hero-grid p.lead{margin-inline:auto;}
.hero-grid .hero-actions{justify-content:center;}
.hero-grid .hero-stats{justify-content:center;}
.hero-grid .hero-stats div:last-child{padding-right:0; margin-right:0;}
.eyebrow{
  display:inline-flex; align-items:center; gap:8px;
  font-size:.78rem; font-weight:600; letter-spacing:.08em; text-transform:uppercase;
  color:var(--gold); margin-bottom:18px;
}
.eyebrow::before{content:''; width:22px; height:1.5px; background:var(--gold);}
.hero h1{
  font-size:clamp(2.2rem, 4.4vw, 3.4rem);
  color:#fff;
  max-width:16ch;
}
.hero h1 em{font-style:italic; color:var(--gold);}
.hero p.lead{
  font-size:1.08rem; color:rgba(255,255,255,.82); max-width:46ch; margin-bottom:28px;
}
.hero-actions{display:flex; gap:14px; flex-wrap:wrap; margin-bottom:44px;}
.hero-stats{
  display:flex; gap:0; flex-wrap:wrap;
  border-top:1px solid rgba(255,255,255,.18);
  padding-top:24px;
}
.hero-stats div{padding-right:36px; margin-right:36px; border-right:1px solid rgba(255,255,255,.18);}
.hero-stats div:last-child{border-right:0;}
.hero-stats strong{
  display:block; font-family:var(--font-mono); font-size:1.7rem; color:var(--gold); font-weight:600;
}
.hero-stats span{font-size:.82rem; color:rgba(255,255,255,.7);}

/* Su smartphone/tablet le statistiche restano su un'unica riga con i separatori:
   tre colonne di uguale larghezza, spaziatura ridotta, etichette che vanno a capo. */
@media (max-width: 640px){
  .hero-grid .hero-stats{flex-wrap:nowrap;}
  .hero-grid .hero-stats div{flex:1; min-width:0; padding-right:12px; margin-right:12px;}
  .hero-grid .hero-stats strong{font-size:1.3rem;}
  .hero-grid .hero-stats span{font-size:.72rem;}
}

.hero-visual{position:relative;}
.hero-card{
  background:rgba(255,255,255,.08);
  border:1px solid rgba(255,255,255,.18);
  border-radius:var(--radius);
  padding:26px;
  backdrop-filter:blur(6px);
}
.hero-card h3{color:#fff; font-size:1.05rem; margin-bottom:14px;}
.gauge-row{display:flex; align-items:center; gap:14px; margin-bottom:14px;}
.gauge-row:last-child{margin-bottom:0;}
.gauge-bar{flex:1; height:8px; border-radius:99px; background:rgba(255,255,255,.15); overflow:hidden;}
.gauge-fill{height:100%; border-radius:99px; background:linear-gradient(90deg, var(--teal), var(--gold));}
.gauge-label{font-size:.78rem; color:rgba(255,255,255,.75); width:120px; flex:none;}
.gauge-val{font-family:var(--font-mono); font-size:.82rem; color:#fff; width:44px; text-align:right; flex:none;}

/* coastline ribbon divider — signature element */
.coastline{
  display:block; width:100%; height:64px; margin-top:-2px;
}

/* ---------- Sections ---------- */
section{padding:88px 0;}
.section-head{max-width:640px; margin:0 0 48px;}
.section-head.center{margin-left:auto; margin-right:auto; text-align:center;}
.section-head h2{font-size:clamp(1.7rem, 3vw, 2.3rem); color:var(--blue-deep);}
.section-head p{color:var(--ink-soft); font-size:1.05rem;}
.eyebrow-dark{
  display:inline-block; font-size:.78rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase;
  color:var(--teal-dark); margin-bottom:12px;
}

/* Services grid */
.grid-3{display:grid; grid-template-columns:repeat(3,1fr); gap:24px;}
.grid-4{display:grid; grid-template-columns:repeat(4,1fr); gap:20px;}
.card{
  background:#fff; border:1px solid var(--line); border-radius:var(--radius);
  padding:28px; transition:transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}
.card:hover{transform:translateY(-4px); box-shadow:var(--shadow-md); border-color:transparent;}
.card .icon{
  width:46px; height:46px; border-radius:12px; margin-bottom:18px;
  display:flex; align-items:center; justify-content:center;
  background:var(--foam); color:var(--teal-dark);
}
.card h3{font-size:1.1rem; color:var(--blue-deep); margin-bottom:8px;}
.card p{color:var(--ink-soft); font-size:.94rem; margin-bottom:14px;}
.card a.link{
  color:var(--teal-dark); font-weight:600; font-size:.9rem; text-decoration:none; display:inline-flex; align-items:center; gap:6px;
}

/* Steps (genuinely sequential — registration flow) */
.steps{display:grid; grid-template-columns:repeat(3,1fr); gap:0; counter-reset:step; position:relative;}
.step{position:relative; padding:0 20px 0 0;}
.step-num{
  font-family:var(--font-mono); font-size:.85rem; color:var(--gold); font-weight:600;
  display:flex; align-items:center; gap:10px; margin-bottom:14px;
}
.step-num::before{
  content:''; width:34px; height:1px; background:var(--line);
}
.step h4{color:var(--blue-deep); font-size:1.05rem; margin-bottom:6px;}
.step p{color:var(--ink-soft); font-size:.92rem;}

/* Comuni band */
.comuni-band{
  background:var(--foam); border-top:1px solid var(--line); border-bottom:1px solid var(--line);
}
.comuni-list{
  display:flex; flex-wrap:wrap; gap:12px; justify-content:center;
}
.comune-chip{
  background:#fff; border:1px solid var(--line); border-radius:999px;
  padding:9px 18px; font-size:.88rem; font-weight:500; color:var(--blue-deep);
  display:flex; align-items:center; gap:8px;
}
.comune-chip .dot{width:6px; height:6px; border-radius:50%; background:var(--teal);}
a.comune-chip{ text-decoration:none; transition:border-color .15s ease, box-shadow .15s ease, transform .15s ease; }
a.comune-chip:hover{ border-color:var(--teal); box-shadow:var(--shadow-sm); transform:translateY(-1px); }

/* Two column feature */
.feature-split{display:grid; grid-template-columns:1fr 1fr; gap:56px; align-items:center;}
.panel{
  background:var(--blue-deep); color:#fff; border-radius:var(--radius); padding:36px;
}
.feature-split .panel h3{color:#fff; font-size:1.3rem;}
.check-list{list-style:none; margin:0; padding:0;}
.check-list li{
  display:flex; gap:12px; padding:10px 0; border-bottom:1px solid rgba(255,255,255,.12); font-size:.94rem; color:rgba(255,255,255,.85);
}
.check-list li:last-child{border-bottom:0;}
.check-list li::before{content:'✓'; color:var(--teal); font-weight:700; flex:none;}

/* ---------- Forms (auth) ---------- */
.auth-wrap{
  min-height:calc(100vh - 78px);
  display:grid; grid-template-columns:1fr 1fr;
  background:var(--foam-2);
}
.auth-side{
  background:linear-gradient(160deg, var(--blue-deep), var(--teal-dark));
  color:#fff; padding:64px; display:flex; flex-direction:column; justify-content:space-between;
  position:relative; overflow:hidden;
}
.auth-side h2{color:#fff; font-size:1.9rem; max-width:14ch;}
.auth-side p{color:rgba(255,255,255,.78); max-width:32ch;}
.auth-form-col{
  display:flex; align-items:center; justify-content:center; padding:48px 24px;
}
.auth-card{width:100%; max-width:420px;}
.auth-card h1{font-size:1.7rem; color:var(--blue-deep); margin-bottom:6px;}
.auth-card .sub{color:var(--ink-soft); margin-bottom:32px; font-size:.95rem;}

.field{margin-bottom:18px;}
.field label{
  display:block; font-size:.85rem; font-weight:600; color:var(--blue-deep); margin-bottom:7px;
}
.field input, .field select{
  width:100%; padding:12px 14px; border-radius:var(--radius-sm);
  border:1.5px solid var(--line); font-family:var(--font-body); font-size:.96rem;
  background:#fff; color:var(--ink); transition:border-color .15s ease, box-shadow .15s ease;
}
.field input:focus, .field select:focus{
  border-color:var(--teal-dark); box-shadow:0 0 0 3px rgba(20,105,45,.30);
}
.field-row{display:grid; grid-template-columns:1fr 1fr; gap:14px;}
.field-hint{font-size:.78rem; color:var(--ink-soft); margin-top:6px;}
.field-error{font-size:.8rem; color:var(--terracotta-dark); margin-top:6px; font-weight:500;}
.checkbox-row{display:flex; align-items:flex-start; gap:10px; font-size:.87rem; color:var(--ink-soft); margin-bottom:22px;}
.checkbox-row input{margin-top:3px;}
.auth-alt{margin-top:26px; text-align:center; font-size:.9rem; color:var(--ink-soft);}
.auth-alt a{color:var(--teal-dark); font-weight:600; text-decoration:none;}

.alert{
  padding:13px 16px; border-radius:var(--radius-sm); font-size:.9rem; margin-bottom:20px; font-weight:500;
  display:flex; align-items:flex-start; gap:10px;
}
.alert-error{background:#fbe9e2; color:var(--terracotta-dark); border:1px solid #f0c6b3;}
.alert-success{background:#e2f4f1; color:var(--teal-dark); border:1px solid #b9e4dd;}

/* Dashboard (area riservata) */
.dash-header{
  background:var(--blue-deep); color:#fff; padding:36px 0 60px;
}
.dash-header h1{color:#fff; font-size:1.7rem;}
.dash-header p{color:rgba(255,255,255,.75);}
.dash-body{margin-top:-40px; padding-bottom:80px;}
.dash-grid{display:grid; grid-template-columns:2fr 1fr; gap:24px;}
.dash-card{background:#fff; border-radius:var(--radius); box-shadow:var(--shadow-md); padding:28px; border:1px solid var(--line);}
.dash-card h3{color:var(--blue-deep); font-size:1.05rem; margin-bottom:16px;}
.meter-row{display:flex; justify-content:space-between; align-items:center; padding:14px 0; border-bottom:1px solid var(--line); font-size:.92rem;}
.meter-row:last-child{border-bottom:0;}
.meter-row .val{font-family:var(--font-mono); font-weight:600; color:var(--blue-deep);}
.badge{
  display:inline-block; font-size:.72rem; font-weight:700; padding:3px 10px; border-radius:99px;
  background:#e2f4f1; color:var(--teal-dark); text-transform:uppercase; letter-spacing:.03em;
}
.badge-warn{background:#fbe9e2; color:var(--terracotta-dark);}

/* ---------- Footer ---------- */
.site-footer{background:var(--ink); color:rgba(255,255,255,.7); padding:56px 0 28px;}
.footer-grid{display:grid; grid-template-columns:1.4fr 1fr 1fr 1fr; gap:32px; margin-bottom:40px;}
.footer-grid h4{color:#fff; font-size:.92rem; margin-bottom:16px;}
.footer-grid ul{list-style:none; margin:0; padding:0;}
.footer-grid li{margin-bottom:10px;}
.footer-grid a{color:rgba(255,255,255,.65); text-decoration:none; font-size:.9rem;}
.footer-grid a:hover{color:#fff;}
.footer-bottom{
  border-top:1px solid rgba(255,255,255,.12); padding-top:24px;
  display:flex; justify-content:space-between; flex-wrap:wrap; gap:12px; font-size:.8rem; color:rgba(255,255,255,.5);
}

/* ---------- Slider notizie ---------- */
.news-slider{
  position:relative;
  border-radius:var(--radius);
  overflow:hidden;
  background:var(--blue-deep);
  box-shadow:var(--shadow-md);
}
.news-track{
  display:flex;
  transition:transform .5s cubic-bezier(.4,0,.2,1);
}
.news-slide{
  flex:0 0 100%;
  display:grid;
  grid-template-columns:1fr 1fr;
  min-height:320px;
}
.news-slide-text{
  padding:44px 48px;
  display:flex;
  flex-direction:column;
  justify-content:center;
  color:#fff;
}
.news-badge{
  display:inline-flex; align-items:center; gap:6px;
  align-self:flex-start;
  font-size:.72rem; font-weight:700; letter-spacing:.05em; text-transform:uppercase;
  background:rgba(212,162,76,.18); color:var(--gold);
  padding:5px 12px; border-radius:999px; margin-bottom:16px;
}
.news-slide-text h3{color:#fff; font-size:1.5rem; margin-bottom:10px;}
.news-slide-text p{color:rgba(255,255,255,.78); font-size:.95rem; margin-bottom:18px;}
.news-date{font-size:.78rem; color:rgba(255,255,255,.55); font-family:var(--font-mono);}
.news-slide-media{
  background-color:#0a2e22;
  background-image:linear-gradient(160deg, var(--teal-dark), var(--blue-deep-2));
  background-size:contain; background-repeat:no-repeat; background-position:center;
  position:relative;
}
.news-slide-media::after{
  content:none;
}
.news-nav{
  position:absolute; top:50%; transform:translateY(-50%);
  width:38px; height:38px; border-radius:50%;
  background:rgba(255,255,255,.15); border:1px solid rgba(255,255,255,.25);
  color:#fff; display:flex; align-items:center; justify-content:center;
  cursor:pointer; z-index:5; transition:background .15s ease;
}
.news-nav:hover{background:rgba(255,255,255,.28);}
.news-nav.prev{left:16px;}
.news-nav.next{right:16px;}
.news-dots{
  position:absolute; bottom:18px; left:50%; transform:translateX(-50%);
  display:flex; gap:8px; z-index:5;
}
.news-dot{
  width:8px; height:8px; border-radius:50%; background:rgba(255,255,255,.35);
  border:0; cursor:pointer; padding:0; transition:background .15s ease, width .15s ease;
}
.news-dot.active{background:var(--gold); width:22px; border-radius:4px;}
.news-play{
  position:absolute; bottom:14px; right:16px; z-index:5;
  width:30px; height:30px; border-radius:50%;
  background:rgba(255,255,255,.15); border:1px solid rgba(255,255,255,.3);
  color:#fff; font-size:.7rem; line-height:1; cursor:pointer;
  display:flex; align-items:center; justify-content:center; transition:background .15s ease;
}
.news-play:hover{background:rgba(255,255,255,.3);}
.news-empty{
  padding:60px 40px; text-align:center; color:rgba(255,255,255,.7);
}

@media (max-width: 720px){
  .news-slide{grid-template-columns:1fr; min-height:auto;}
  .news-slide-media{height:220px; order:-1;}
  .news-slide-text{padding:28px 24px;}
}

/* ---------- Admin notizie ---------- */
.admin-wrap{padding:40px 0 80px;}
.admin-grid{display:grid; grid-template-columns:.9fr 1.4fr; gap:24px; align-items:start;}
.admin-card{background:#fff; border:1px solid var(--line); border-radius:var(--radius); padding:26px;}
.admin-news-row{
  display:flex; gap:14px; align-items:flex-start; padding:14px 0; border-bottom:1px solid var(--line);
}
.admin-news-row:last-child{border-bottom:0;}
.admin-news-row img{width:64px; height:64px; object-fit:cover; border-radius:8px; flex:none; background:var(--foam);}
.admin-news-row .meta{flex:1; min-width:0;}
.admin-news-row h4{font-size:.95rem; color:var(--blue-deep); margin:0 0 4px; overflow-wrap:anywhere;}
.admin-news-row .sub{font-size:.8rem; color:var(--ink-soft); margin:0; overflow-wrap:anywhere;}
.admin-news-actions{display:flex; gap:8px; flex:none;}
.icon-btn{
  width:30px; height:30px; border-radius:8px; border:1px solid var(--line); background:#fff;
  display:flex; align-items:center; justify-content:center; cursor:pointer; color:var(--ink-soft);
  transition:background .15s ease, color .15s ease;
}
.icon-btn:hover{background:var(--foam); color:var(--terracotta-dark);}
.text-center{text-align:center;}
.mt-0{margin-top:0;}
[data-auth-only],
[data-guest-only],
[data-admin-only]{ /* stato iniziale prima che il JS determini l'autenticazione: vedi classe .js-hidden nel markup */ }
.js-hidden{display:none !important;}
.btn[disabled]{opacity:.6; cursor:not-allowed; transform:none;}
.skeleton{
  background:linear-gradient(90deg, var(--foam) 25%, #d6ece0 37%, var(--foam) 63%);
  background-size:400% 100%; animation:skeleton-loading 1.4s ease infinite;
  border-radius:6px; height:14px;
}
@keyframes skeleton-loading{0%{background-position:100% 50%;}100%{background-position:0 50%;}}
.toast{
  position:fixed; bottom:24px; right:24px; z-index:999;
  background:var(--ink); color:#fff; padding:13px 20px; border-radius:var(--radius-sm);
  font-size:.9rem; box-shadow:var(--shadow-lg); opacity:0; transform:translateY(8px);
  transition:opacity .2s ease, transform .2s ease; pointer-events:none;
}
.toast.show{opacity:1; transform:translateY(0);}
.toast.toast-error{background:var(--terracotta-dark);}

/* ---------- Responsive ---------- */
@media (max-width: 980px){
  .grid-3, .grid-4{grid-template-columns:1fr 1fr;}
  .feature-split{grid-template-columns:1fr;}
  .hero-grid{grid-template-columns:1fr;}
  .steps{grid-template-columns:1fr; gap:28px;}
  .auth-wrap{grid-template-columns:1fr;}
  .auth-side{padding:44px 32px; min-height:220px;}
  .admin-grid{grid-template-columns:1fr;}
}
@media (max-width: 720px){
  .grid-3, .grid-4{grid-template-columns:1fr;}
  .footer-grid{grid-template-columns:1fr 1fr;}
  .dash-grid{grid-template-columns:1fr;}
  .field-row{grid-template-columns:1fr;}
  .hero-stats div{margin-right:20px; padding-right:20px;}
  section{padding:56px 0;}
}

/* Menu "hamburger": la barra completa compare solo da 1200px, dove c'è spazio per tutte le voci
   (anche con il menu di gestione degli amministratori) senza andare a capo */
@media (max-width: 1199px){
  .nav-links, .nav-cta .btn-ghost{display:none;}
  .nav-toggle{display:flex;}
  .nav-cta .nav-admin{display:none;}
  .nav.open .nav-links{
    display:flex; position:absolute; top:100%; left:0; right:0; background:#fff;
    flex-direction:column; align-items:flex-start; padding:20px 24px; gap:4px; border-bottom:1px solid var(--line); box-shadow:var(--shadow-md);
    max-height:70vh; overflow-y:auto;
  }
  .nav-item-dropdown{width:100%;}
  .nav-item-dropdown > .nav-trigger{width:100%; justify-content:space-between; padding:10px 0;}
  .nav-dropdown-panel{
    position:static; transform:none; opacity:1; visibility:visible; translate:0;
    box-shadow:none; border:0; padding:0 0 8px 14px; min-width:0; display:none;
    background:transparent;
  }
  .nav-item-dropdown.mobile-open .nav-dropdown-panel{display:block;}
  .nav-item-dropdown.mobile-open .chevron{transform:rotate(225deg); margin-top:3px;}
  .nav-links > li:not(.nav-item-dropdown) > a{padding:10px 0; width:100%;}
}

/* ---------- Accordion qualità acqua ---------- */
.qa-month{
  background:#fff; border:1px solid var(--line); border-radius:var(--radius-sm);
  margin-bottom:10px; overflow:hidden;
}
.qa-month summary{
  padding:16px 20px; cursor:pointer; font-weight:600; color:var(--blue-deep);
  display:flex; justify-content:space-between; align-items:center;
  list-style:none;
}
.qa-month summary::-webkit-details-marker{display:none;}
.qa-month summary::after{
  content:'+'; font-size:1.3rem; color:var(--teal-dark); font-weight:400; margin-left:12px;
}
.qa-month[open] summary::after{content:'−';}
.qa-count{font-size:.78rem; font-weight:500; color:var(--ink-soft); font-family:var(--font-mono); margin-right:auto; margin-left:12px;}
.qa-month-body{padding:0 20px 12px;}
.qa-month .meter-row{padding:10px 0;}

/* ---------- Voci di navigazione duplicate, visibili solo nel menu mobile ---------- */
.mobile-only-nav-item{display:none;}
@media (max-width: 1199px){
  .nav.open .nav-links .mobile-only-nav-item{
    display:block; width:100%; border-top:1px solid var(--line); margin-top:8px; padding-top:8px;
  }
  .nav.open .nav-links .mobile-only-nav-item a{
    display:block; padding:10px 0; font-weight:600; color:var(--teal-dark);
  }
}

/* ==========================================================================
   Pagine legali (privacy, cookie policy), banner cookie e strumenti privacy
   ========================================================================== */
.legal h3{ color:var(--blue-deep); margin-top:34px; margin-bottom:10px; }
.legal p, .legal li{ color:var(--ink-soft); line-height:1.7; }
.legal ul{ margin:0 0 16px 1.1rem; }
.legal li{ margin-bottom:6px; }
.legal a{ color:var(--teal-dark); }
.legal code{ font-family:'IBM Plex Mono',monospace; font-size:.85em; background:var(--sand,#f3efe9); padding:1px 5px; border-radius:4px; }

.legal .da-verificare{
  display:inline-block; background:#fff4e5; color:#9a5b00;
  border:1px dashed #e0a04d; border-radius:6px; padding:0 6px; font-size:.85em;
}

.legal-table{ width:100%; border-collapse:collapse; margin:8px 0 20px; font-size:.9rem; }
.legal-table th, .legal-table td{
  text-align:left; padding:10px 12px; border:1px solid var(--line,#e6e1d8);
  vertical-align:top; color:var(--ink-soft);
}
.legal-table th{ background:var(--sand,#f3efe9); color:var(--blue-deep); font-weight:600; }

/* Modal cookie / privacy (informativo — solo cookie tecnici) */
.cookie-modal-overlay{
  position:fixed; inset:0; z-index:9999;
  background:rgba(10,76,52,.55); backdrop-filter:blur(2px);
  display:flex; align-items:center; justify-content:center; padding:20px;
  animation:cookieFade .25s ease;
}
.cookie-modal{
  background:#fff; border-radius:18px; max-width:480px; width:100%;
  box-shadow:0 24px 70px rgba(10,76,52,.35); padding:30px 28px;
  text-align:center; animation:cookiePop .25s ease;
}
.cookie-modal .cookie-icon{
  width:56px; height:56px; border-radius:50%; margin:0 auto 16px;
  display:flex; align-items:center; justify-content:center;
  background:var(--sand,#f3efe9); font-size:1.7rem;
}
.cookie-modal h2{
  font-family:var(--font-display); font-size:1.4rem; color:var(--blue-deep);
  margin:0 0 10px;
}
.cookie-modal p{ margin:0 0 12px; font-size:.94rem; color:var(--ink-soft); line-height:1.6; }
.cookie-modal p a{ color:var(--teal-dark); font-weight:600; }
.cookie-modal .cookie-actions{ margin-top:20px; }
.cookie-modal.hide, .cookie-modal-overlay.hide{ display:none; }

@keyframes cookieFade{ from{opacity:0;} to{opacity:1;} }
@keyframes cookiePop{ from{opacity:0; transform:translateY(12px) scale(.97);} to{opacity:1; transform:none;} }

/* Riquadro "I tuoi dati e la tua privacy" nell'area riservata */
.privacy-tools .btn{ margin-top:8px; }
.privacy-tools .danger-zone{
  margin-top:16px; padding-top:16px; border-top:1px solid var(--line,#e6e1d8);
}
.btn-danger{ background:var(--terracotta-dark,#b3492e); color:#fff; }
.btn-danger:hover{ filter:brightness(.94); }

/* Anteprima mappe sportelli (Google Maps con caricamento su richiesta) */
.map-embed{ margin-top:16px; }
.map-embed .map-load{
  background:var(--teal-dark); color:#fff; border:0; border-radius:var(--radius-sm);
  padding:9px 14px; font:inherit; font-weight:600; cursor:pointer; transition:background .15s ease;
}
.map-embed .map-load:hover{ background:#0f5423; }
.map-embed .map-open{
  display:inline-block; margin-left:12px; color:var(--teal-dark); font-weight:600;
}
.map-embed .map-consent{ margin:10px 0 0; }
.map-embed .map-frame{
  width:100%; height:240px; border:0; border-radius:var(--radius-sm);
  margin-bottom:4px; display:block;
}

/* Elementi visibili solo su desktop (nascosti su mobile, <=720px) */
@media (max-width: 720px){
  .desktop-only{ display:none !important; }
}

/* ==========================================================================
   Rifiniture responsive (tablet e smartphone) — full responsive
   ========================================================================== */
/* Timeline a 4 tappe (chi-siamo): 4 col desktop → 2 col tablet → 1 col mobile */
.steps.cols-4{grid-template-columns:repeat(4,1fr); gap:0 8px;}
@media (max-width: 980px){
  .steps.cols-4{grid-template-columns:repeat(2,1fr); gap:32px 24px;}
}
@media (max-width: 640px){
  .steps.cols-4{grid-template-columns:1fr; gap:28px;}
  .steps.cols-4 .step{padding-right:0;}
}
/* Tabelle e spaziature più compatte sugli schermi piccoli */
@media (max-width: 560px){
  .legal-table{font-size:.8rem;}
  .legal-table th, .legal-table td{padding:8px 9px;}
  .container{padding:0 18px;}
  section{padding:48px 0;}
}

/* Le àncore della navbar si fermano sotto l'header sticky (offset regolato via JS) */
html{ scroll-padding-top:130px; scroll-behavior:smooth; }
@media (prefers-reduced-motion: reduce){ html{ scroll-behavior:auto; } }

/* Pulsante "Torna su" (presente su ogni pagina) */
.back-to-top{
  position:fixed; right:20px; bottom:calc(20px + env(safe-area-inset-bottom, 0px)); z-index:1200;
  width:46px; height:46px; border-radius:50%;
  background:var(--teal-dark); color:#fff; border:0; cursor:pointer;
  display:flex; align-items:center; justify-content:center;
  box-shadow:0 4px 14px rgba(0,0,0,.25);
  opacity:0; visibility:hidden; transform:translateY(8px);
  transition:opacity .2s ease, visibility .2s ease, transform .2s ease, background .15s ease;
}
.back-to-top.visible{ opacity:1; visibility:visible; transform:translateY(0); }
.back-to-top:hover{ background:#0f5423; }
.back-to-top:focus-visible{ outline-color:#fff; }
@media (max-width:560px){ .back-to-top{ right:14px; bottom:calc(20px + env(safe-area-inset-bottom, 0px)); width:44px; height:44px; } }

/* Faccina informativa con tooltip (pagina scadenzario) */
.qa-info{ position:absolute; right:14px; bottom:12px; font-size:1.15rem; line-height:1; cursor:help; }
.qa-info .qa-tooltip{
  position:absolute; right:0; bottom:150%; width:230px;
  background:var(--blue-deep); color:#fff; font-size:.8rem; line-height:1.45;
  padding:10px 12px; border-radius:8px; box-shadow:0 6px 20px rgba(0,0,0,.25);
  opacity:0; visibility:hidden; transform:translateY(6px); transition:opacity .18s ease, transform .18s ease, visibility .18s ease;
  z-index:10; pointer-events:none; text-align:left; font-weight:400;
}
.qa-info:hover .qa-tooltip, .qa-info:focus .qa-tooltip, .qa-info:focus-within .qa-tooltip{ opacity:1; visibility:visible; transform:translateY(0); }
.qa-info:focus-visible{ outline:3px solid var(--blue-deep); outline-offset:3px; border-radius:4px; }

/* ---------- Ricerca nel sito ---------- */
.visually-hidden{position:absolute !important; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0;}
.nav-search{
  width:44px; height:44px; flex:none; border-radius:50%; border:1.5px solid var(--line); background:#fff;
  color:var(--blue-deep); display:inline-flex; align-items:center; justify-content:center; cursor:pointer;
  transition:background .15s ease, border-color .15s ease;
}
.nav-search:hover{background:var(--foam); border-color:var(--teal-dark);}
.nav-search:focus-visible{outline:3px solid var(--blue-deep); outline-offset:2px;}
html.search-open{overflow:hidden;}
.search-overlay{
  position:fixed; inset:0; z-index:1500; background:rgba(8,32,52,.55);
  display:flex; align-items:flex-start; justify-content:center; padding:8vh 16px 16px;
}
.search-overlay[hidden]{display:none;}
.search-dialog{
  width:100%; max-width:680px; max-height:84vh; display:flex; flex-direction:column;
  background:#fff; border-radius:16px; box-shadow:0 24px 60px rgba(0,0,0,.3); overflow:hidden;
}
.search-form{display:flex; align-items:center; gap:10px; padding:14px 16px; border-bottom:1px solid var(--line);}
.search-form-icon{color:var(--teal-dark); flex:none;}
.search-input{
  flex:1; min-width:0; border:0; outline:none; font:inherit; font-size:1.08rem; color:var(--ink); background:transparent; padding:6px 0;
}
.search-input::-webkit-search-cancel-button{display:none;}
.search-close{
  flex:none; border:1px solid var(--line); background:#fff; color:var(--ink-soft); border-radius:6px;
  font:inherit; font-size:.75rem; padding:4px 8px; cursor:pointer;
}
.search-close:hover{background:var(--foam);}
.search-status{margin:0; padding:10px 18px 0; font-size:.82rem; color:var(--ink-soft);}
.search-status:empty{display:none;}
.search-results{list-style:none; margin:0; padding:8px; overflow-y:auto;}
.search-result{
  display:block; padding:11px 12px; border-radius:10px; text-decoration:none; color:var(--ink);
}
.search-result:hover, .search-result:focus{background:var(--foam); outline:none;}
.search-result:focus-visible{box-shadow:inset 0 0 0 2px var(--blue-deep);}
.search-type{
  display:inline-block; font-size:.68rem; font-weight:700; letter-spacing:.04em; text-transform:uppercase;
  color:var(--teal-dark); background:#e3f2e7; border-radius:999px; padding:2px 8px; margin-bottom:4px;
}
.search-type-documento{color:#0A4C86; background:#e2edf8;}
.search-type-notizia{color:#8a5a00; background:#fbf1d3;}
.search-type-scadenza{color:#6b3fa0; background:#efe7f8;}
.search-type-qualita{color:#0a6b78; background:#dff3f5;}
.search-title{display:block; font-weight:600; color:var(--blue-deep); line-height:1.35;}
.search-section{font-weight:400; color:var(--ink-soft);}
.search-snippet{display:block; margin-top:3px; font-size:.86rem; line-height:1.45; color:var(--ink-soft);}
.search-results mark{background:#f8e7a1; color:inherit; border-radius:2px; padding:0 1px;}
@media (max-width:720px){
  .search-overlay{padding:0;}
  .search-dialog{max-width:none; max-height:100%; height:100%; border-radius:0;}
  .nav-search{width:40px; height:40px;}
}

/* Barra su una riga anche su smartphone: con il menu a scomparsa "Esci" è già dentro il menu */
@media (max-width: 1199px){
  .nav-cta .logout-btn{display:none;}
}
@media (max-width: 380px){
  .brand img{height:46px;}
}
