:root{
  --c-bg:#f5f8fa; --c-fg:#0e2233; --c-sea:#1976a8; --c-sea-dark:#0e547d;
  --c-acc:#5fb7a8; --c-warn:#e07b00; --c-bord:#d6e2ea; --c-card:#ffffff;
  --shadow:0 2px 6px rgba(14,34,51,.08);
}
*{box-sizing:border-box}
body{margin:0;font-family:-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;
     color:var(--c-fg);background:var(--c-bg);line-height:1.4}
a{color:var(--c-sea-dark);text-decoration:none}
a:hover{text-decoration:underline}

.endemica-header{display:flex;justify-content:space-between;align-items:center;
  padding:.6rem 1.2rem;background:linear-gradient(90deg,var(--c-sea-dark),var(--c-sea));
  color:#fff;box-shadow:var(--shadow)}
.endemica-header .brand strong{font-size:1.05rem;display:block}
.endemica-header .brand span{font-size:.78rem;opacity:.85}
.endemica-header nav a{color:#fff;margin-left:1rem;font-size:.92rem}
.endemica-header nav .nav-sep{margin-left:.8rem;opacity:.5}
.endemica-header nav .nav-user{margin-left:.8rem;font-size:.85rem;opacity:.85}
.endemica-header nav .nav-login,
.endemica-header nav .nav-logout{margin-left:.5rem;background:#fbbf24;color:#5a3e00;padding:.25rem .7rem;border-radius:4px;font-weight:600;font-size:.82rem}
.endemica-header nav .nav-login:hover,
.endemica-header nav .nav-logout:hover{background:#f59e0b;text-decoration:none}

.endemica-messages{padding:.6rem 1.2rem}
.endemica-messages .msg{padding:.5rem .8rem;border-radius:6px;margin-bottom:.4rem;background:#e6f6ef;border:1px solid #b3e2cf}
.endemica-messages .msg-error{background:#fde7e7;border-color:#f5b5b5}

.endemica-footer{padding:1rem 1.2rem;font-size:.78rem;color:#557;
  border-top:1px solid var(--c-bord);background:#fff;margin-top:2rem}

.container{max-width:1080px;margin:1.2rem auto;padding:0 1rem}

/* Atlante */
.atlante-wrap{display:grid;grid-template-columns:340px 1fr;gap:0;
              height:calc(100vh - 110px);
              min-height:640px; /* fail-safe: anche se viewport schiacciata,
                                   l'atlante mantiene un'altezza usabile */}
.atlante-side{padding:1rem 1.2rem;overflow-y:auto;background:#fff;border-right:1px solid var(--c-bord)}
.atlante-side h1{font-size:1.2rem;margin:.2rem 0 .4rem}
.atlante-side .lead{font-size:.88rem;color:#345}
.atlante-map{width:100%;height:100%;
             min-height:600px; /* idem: garantisce altezza minima al container Leaflet */}
.counters{display:grid;grid-template-columns:repeat(2,1fr);gap:.5rem;margin:.8rem 0}
.counters>div{background:var(--c-bg);padding:.6rem;border-radius:6px;text-align:center}
.counters strong{display:block;font-size:1.4rem;color:var(--c-sea-dark)}
.counters span{font-size:.72rem;color:#557;text-transform:uppercase;letter-spacing:.05em}
.filter-list{display:flex;flex-direction:column;gap:.18rem;font-size:.85rem;
  max-height:200px;overflow-y:auto;padding:.4rem;background:var(--c-bg);border-radius:6px}
.filter-list label{display:flex;align-items:center;gap:.4rem;cursor:pointer}
.fasi{padding-left:1rem;font-size:.85rem}
.fasi li{margin:.2rem 0}

@media(max-width:780px){
  .atlante-wrap{grid-template-columns:1fr;height:auto}
  .atlante-map{height:60vh}
}

.btn{display:inline-block;padding:.55rem 1rem;border-radius:6px;background:#fff;
  border:1px solid var(--c-sea);color:var(--c-sea-dark);cursor:pointer;font-weight:600}
.btn.primary{background:var(--c-sea);color:#fff;border-color:var(--c-sea)}
.btn.primary:hover{background:var(--c-sea-dark);text-decoration:none}

.poi-table{width:100%;border-collapse:collapse;background:#fff;box-shadow:var(--shadow);border-radius:6px;overflow:hidden}
.poi-table th,.poi-table td{padding:.55rem .7rem;text-align:left;border-bottom:1px solid var(--c-bord);font-size:.9rem}
.poi-table thead{background:#eef4f8}

.poi-detail .poi-img{max-width:100%;border-radius:8px;margin:1rem 0}
.poi-detail .meta{list-style:none;padding:0;display:flex;flex-wrap:wrap;gap:.6rem;font-size:.85rem}
.poi-detail .meta li{background:#fff;padding:.4rem .7rem;border-radius:4px;border:1px solid var(--c-bord)}
.back{font-size:.85rem;color:#557}

.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:.8rem;background:#fff;
  padding:1rem;border-radius:8px;box-shadow:var(--shadow);margin-top:.8rem}
.form-grid .field{display:flex;flex-direction:column;gap:.2rem}
.form-grid .field.full{grid-column:1/-1}
.form-grid label{font-size:.82rem;color:#345;font-weight:600}
.form-grid input,.form-grid select,.form-grid textarea{
  padding:.45rem .6rem;border:1px solid var(--c-bord);border-radius:5px;font:inherit}
.form-grid .errs{color:#c0392b;font-size:.8rem}
.form-grid small{color:#789;font-size:.75rem}

.poi-popup h4{margin:.1rem 0}
.poi-popup .tipo{font-size:.75rem;color:#557;text-transform:uppercase;margin:.1rem 0 .3rem}
.poi-popup .descr{font-size:.85rem;margin:.3rem 0 .5rem;max-height:280px;overflow-y:auto;word-break:break-word}
.poi-popup .descr img{max-width:100%;height:auto !important;border-radius:4px;margin:.3rem 0}
.poi-popup .descr a{color:var(--c-sea-dark);word-break:break-all}
.poi-popup .dettaglio{font-weight:600}

.doc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1rem;margin-top:1rem}
.doc-card{background:#fff;border-radius:8px;padding:1rem;box-shadow:var(--shadow)}
.doc-card img{width:100%;border-radius:6px;margin-bottom:.5rem}
.doc-card .tipo{font-size:.75rem;color:#557;text-transform:uppercase}

.progetto h2{color:var(--c-sea-dark);margin-top:1.4rem;border-bottom:1px solid var(--c-bord);padding-bottom:.3rem}
.sinergie{padding-left:1rem}
.sinergie li{margin:.2rem 0}
