*{box-sizing:border-box}:root{--bg:#f4f7fb;--card:#fff;--text:#172033;--muted:#667085;--border:#e4e9f0;--blue:#1f5d92;--blue2:#174a75;--green:#16803c;--orange:#d97706;--red:#dc2626;--side:#10283d}body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,Arial,Helvetica,sans-serif}.hidden{display:none!important}.login-shell{min-height:100vh;display:grid;place-items:center;padding:20px;background:linear-gradient(135deg,#10283d,#1f5d92)}.login-card{width:min(430px,100%);background:#fff;padding:32px;border-radius:18px;box-shadow:0 24px 70px #0004}.brand-mark{width:52px;height:52px;border-radius:14px;background:var(--blue);color:#fff;display:grid;place-items:center;font-weight:900;font-size:25px;margin-bottom:20px}.brand-mark.small{width:34px;height:34px;border-radius:9px;margin:0}.eyebrow,.card-label{font-size:11px;letter-spacing:1.1px;font-weight:800;color:var(--muted)}.login-card h1{margin:6px 0 8px;font-size:27px}.login-card label{display:block;font-size:13px;font-weight:700;margin:24px 0 7px}.login-card select,.topbar select,input{width:100%;border:1px solid var(--border);background:#fff;padding:10px 11px;border-radius:9px;color:var(--text)}button{font:inherit;cursor:pointer;border:0}.primary{width:100%;margin-top:12px;padding:11px;border-radius:9px;background:var(--blue);color:#fff;font-weight:800}.hint{font-size:11px;color:var(--muted);margin:12px 0 0}.app{min-height:100vh;display:grid;grid-template-columns:235px 1fr}.sidebar{position:sticky;top:0;height:100vh;background:var(--side);color:#fff;padding:20px 14px;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:10px;padding:0 7px 22px}.brand small{display:block;opacity:.62;margin-top:2px}.sidebar nav{display:grid;gap:5px}.nav{background:transparent;color:#d9e5ef;text-align:left;padding:11px 12px;border-radius:8px}.nav:hover,.nav.active{background:#ffffff17;color:#fff}.sidebar-foot{margin-top:auto;border-top:1px solid #ffffff1c;padding:16px 7px 0}.sidebar-foot span{display:block;font-size:11px;opacity:.7;margin-bottom:10px}.ghost{background:transparent;color:#fff;padding:0}.workspace{min-width:0}.topbar{min-height:82px;padding:14px 26px;background:#fff;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:20px}.title-select{font-size:20px!important;font-weight:800!important;border:0!important;padding:2px 0!important;min-width:260px}.top-actions{display:flex;align-items:center;gap:18px}.top-actions small{display:block;color:var(--muted);font-size:10px;margin-bottom:4px}.connection{font-size:12px;color:var(--muted);white-space:nowrap}.status-dot{width:8px;height:8px;border-radius:50%;background:#54c77a;display:inline-block;margin-right:6px}.content{max-width:1320px;margin:auto;padding:24px}.page{display:none}.page.active{display:block}.page-head{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px}.page-head h2{margin:0 0 4px;font-size:25px}.muted{color:var(--muted);font-size:13px}.cards{display:grid;gap:14px}.cards.four{grid-template-columns:repeat(4,1fr)}.cards.three{grid-template-columns:repeat(3,1fr)}.cards.two{grid-template-columns:repeat(2,1fr)}.card{background:var(--card);border:1px solid var(--border);border-radius:12px;box-shadow:0 2px 10px #1720330a;padding:19px}.big{font-size:29px;font-weight:800;margin-top:10px}.section{margin-top:14px}.section h3,.card h3{margin:6px 0 8px}.state{font-size:21px;font-weight:850;margin-top:11px}.normal{color:var(--green)}.low{color:var(--orange)}.critical{color:var(--red)}.toolbar{display:flex;justify-content:space-between;align-items:center;gap:16px}.filters{display:flex;gap:8px;align-items:center}.filters input{width:auto}.filters button,.secondary{padding:9px 12px;border:1px solid var(--border);background:#fff;border-radius:8px;color:var(--blue);font-weight:750}.chart-wrap{margin-top:15px;border:1px solid var(--border);border-radius:9px;overflow:hidden}#chart{display:block;width:100%;height:310px}.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:14px}.stats-grid div{padding:13px;background:#f8fafc;border:1px solid var(--border);border-radius:9px}.stats-grid span{display:block;font-size:11px;color:var(--muted);margin-bottom:5px}.table-scroll{overflow:auto}table{width:100%;border-collapse:collapse;font-size:13px}th,td{text-align:left;padding:12px;border-bottom:1px solid var(--border);white-space:nowrap}th{color:var(--muted);font-size:11px;letter-spacing:.5px}.admin-list{display:grid;gap:8px;margin-top:12px}.admin-item{padding:10px;background:#f8fafc;border:1px solid var(--border);border-radius:8px}.admin-item small{display:block;color:var(--muted);margin-top:3px}@media(max-width:1000px){.cards.four{grid-template-columns:1fr 1fr}.stats-grid{grid-template-columns:1fr 1fr}}@media(max-width:760px){.app{grid-template-columns:1fr}.sidebar{position:static;height:auto}.sidebar nav{grid-template-columns:repeat(3,1fr)}.sidebar-foot{display:none}.topbar{align-items:flex-start;flex-direction:column}.top-actions{width:100%;justify-content:space-between}.content{padding:16px}.cards.three,.cards.two,.cards.four{grid-template-columns:1fr}.toolbar,.page-head{align-items:flex-start;flex-direction:column}.filters{flex-wrap:wrap}.stats-grid{grid-template-columns:1fr 1fr}}@media(max-width:480px){.sidebar nav{grid-template-columns:1fr 1fr}.title-select{min-width:0}.top-actions{flex-direction:column;align-items:flex-start}.stats-grid{grid-template-columns:1fr}}
.demo-note{margin:18px 0 4px;padding:12px 13px;border:1px solid var(--border);border-radius:9px;background:#f8fafc;font-size:12px;line-height:1.45}.demo-note b{color:var(--blue)}

/* Configurazione cisterna */
.tank-config-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:16px;
  margin-top:16px;
}

.tank-config-grid label{
  display:flex;
  flex-direction:column;
  gap:7px;
  min-width:0;
  font-size:12px;
  font-weight:700;
  color:var(--muted);
}

.tank-config-grid input,
.tank-config-grid select,
.tank-config-grid textarea{
  display:block;
  width:100%;
  min-width:0;
  border:1px solid var(--border);
  background:#fff;
  padding:10px 11px;
  border-radius:9px;
  color:var(--text);
  font:inherit;
  outline:none;
}

.tank-config-grid input:focus,
.tank-config-grid select:focus,
.tank-config-grid textarea:focus{
  border-color:var(--blue);
}

.tank-config-grid textarea{
  min-height:90px;
  resize:vertical;
}

@media(max-width:1000px){
  .tank-config-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
}

@media(max-width:760px){
  .tank-config-grid{
    grid-template-columns:1fr;
  }
}

/* =========================================================
   LORA SUITE — SUPER ADMIN UI
   ========================================================= */

#page-admin{
  --admin-blue:#155b91;
  --admin-blue-dark:#103e64;
  --admin-blue-soft:#eef6fc;
  --admin-border:#dce6ef;
  --admin-bg:#f7f9fc;
}

/* Intestazione pagina */
#page-admin > .page-head{
  margin-bottom:22px;
  padding-bottom:18px;
  border-bottom:1px solid var(--admin-border);
}

#page-admin > .page-head h2{
  font-size:28px;
  letter-spacing:-.4px;
  color:#142033;
}

#page-admin > .page-head .muted{
  margin:6px 0 0;
  font-size:13px;
}

/* Card principali */
#page-admin .card{
  border:1px solid var(--admin-border);
  border-radius:14px;
  box-shadow:0 3px 14px rgba(23,32,51,.055);
}

#page-admin .cards.two{
  align-items:start;
  gap:18px;
}

/* Titoli sezione */
#page-admin .card-label{
  display:inline-flex;
  align-items:center;
  min-height:25px;
  padding:5px 9px;
  border-radius:6px;
  background:var(--admin-blue-soft);
  color:var(--admin-blue);
  font-size:10px;
  font-weight:850;
  letter-spacing:1.15px;
}

#page-admin .card h3{
  color:#172033;
  font-size:18px;
}

/* Pulsanti azione principali */
#page-admin #adminNewCondominiumButton,
#page-admin #adminNewUserButton,
#page-admin #adminNewGatewayButton{
  background:var(--admin-blue) !important;
  color:#fff !important;
  border:1px solid var(--admin-blue) !important;
  border-radius:8px !important;
  padding:10px 16px !important;
  font-size:13px !important;
  font-weight:800 !important;
  box-shadow:0 2px 5px rgba(21,91,145,.18) !important;
  transition:.15s ease;
}

#page-admin #adminNewCondominiumButton:hover,
#page-admin #adminNewUserButton:hover,
#page-admin #adminNewGatewayButton:hover{
  background:var(--admin-blue-dark) !important;
  border-color:var(--admin-blue-dark) !important;
  transform:translateY(-1px);
}

/* Pannelli modifica / creazione */
#page-admin .admin-item{
  background:var(--admin-bg);
  border:1px solid var(--admin-border);
  border-radius:10px;
  padding:15px;
}

#page-admin .admin-item h3{
  margin-top:0;
  padding-bottom:10px;
  border-bottom:1px solid var(--admin-border);
}

/* Form */
#page-admin label{
  color:#344054;
  font-size:12px;
  font-weight:700;
}

#page-admin input,
#page-admin select,
#page-admin textarea{
  margin-top:6px;
  border:1px solid #d5dee8;
  border-radius:8px;
  background:#fff;
  min-height:40px;
  font:inherit;
}

#page-admin input:focus,
#page-admin select:focus,
#page-admin textarea:focus{
  outline:none;
  border-color:#7eb2db;
  box-shadow:0 0 0 3px rgba(21,91,145,.08);
}

/* Pulsanti salva */
#page-admin [id*="Save"]{
  border-radius:8px !important;
  box-shadow:none !important;
  transition:.15s ease;
}

/* Pulsanti annulla */
#page-admin [id*="Cancel"]{
  border-radius:8px !important;
  box-shadow:none !important;
}

/* Liste generate da JS */
#page-admin #adminCondos,
#page-admin #adminUsers,
#page-admin #adminLoraGateways{
  margin-top:14px;
}

/* Sezioni inferiori */
#page-admin > article.card.section{
  margin-top:18px;
  padding:22px;
}

/* Infrastruttura LoRa */
#page-admin #adminLoraGateways{
  padding-top:4px;
}

/* Unità immobiliari */
#page-admin #adminUnitsSection{
  border:1px solid var(--admin-border) !important;
  border-radius:14px !important;
  box-shadow:0 3px 14px rgba(23,32,51,.055);
}

/* Sicurezza */
#page-admin > article.card.section:last-of-type{
  background:#fbfcfe;
}

/* Responsive */
@media(max-width:1000px){
  #page-admin .cards.two{
    grid-template-columns:1fr;
  }
}

@media(max-width:760px){
  #page-admin > .page-head h2{
    font-size:24px;
  }

  #page-admin .card,
  #page-admin > article.card.section{
    padding:16px;
  }
}


/* =========================================================
   AMMINISTRAZIONE - NAVIGAZIONE
   ========================================================= */

.admin-controlbar{
  margin:0 0 22px;
  padding:18px;
  background:#fff;
  border:1px solid #dfe5eb;
  border-radius:12px;
  box-shadow:0 2px 8px rgba(0,0,0,.04);
}

.admin-active-condo{
  display:flex;
  align-items:center;
  gap:14px;
  flex-wrap:wrap;
}

.admin-active-condo label{
  font-weight:700;
  white-space:nowrap;
}

.admin-active-condo select{
  min-width:280px;
  max-width:460px;
  flex:1;
}

.admin-section-menu{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
  margin-top:16px;
  padding-top:16px;
  border-top:1px solid #edf0f2;
}

.admin-section-tab{
  border:1px solid #d8dee5;
  background:#f8f9fa;
  border-radius:8px;
  padding:9px 15px;
  cursor:pointer;
  font-weight:700;
}

.admin-section-tab:hover{
  background:#eef3f7;
}

.admin-section-tab.active{
  background:#1f4f78;
  border-color:#1f4f78;
  color:#fff;
}

@media(max-width:700px){
  .admin-active-condo{
    display:block;
  }

  .admin-active-condo select{
    display:block;
    width:100%;
    min-width:0;
    max-width:none;
    margin-top:8px;
  }

  .admin-section-tab{
    flex:1 1 45%;
  }
}


/* =========================================================
   STORICO & EXPORT
   ========================================================= */

#page-reports{
  --reports-blue:#155b91;
  --reports-blue-dark:#103e64;
  --reports-blue-soft:#eef6fc;
  --reports-border:#dce6ef;
  --reports-muted:#667085;
}

#page-reports .reports-head{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:30px;
  margin-bottom:22px;
  padding-bottom:20px;
  border-bottom:1px solid var(--reports-border);
}

#page-reports .reports-eyebrow{
  margin-bottom:7px;
  color:var(--reports-blue);
  font-size:10px;
  font-weight:850;
  letter-spacing:1.25px;
}

#page-reports .reports-head h2{
  margin:0;
  color:#142033;
  font-size:28px;
  letter-spacing:-.4px;
}

#page-reports .reports-head p{
  max-width:650px;
  margin:7px 0 0;
  color:var(--reports-muted);
  font-size:13px;
  line-height:1.55;
}

#page-reports .reports-context{
  min-width:240px;
  padding:12px 15px;
  border:1px solid var(--reports-border);
  border-radius:10px;
  background:#fff;
}

#page-reports .reports-context span{
  display:block;
  margin-bottom:4px;
  color:var(--reports-muted);
  font-size:10px;
}

#page-reports .reports-context strong{
  color:#26364a;
  font-size:12px;
}

#page-reports .reports-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:18px;
}

#page-reports .reports-card{
  position:relative;
  display:grid;
  grid-template-columns:48px minmax(0,1fr);
  gap:16px;
  min-height:245px;
  padding:22px;
  border:1px solid var(--reports-border);
  border-radius:14px;
  background:#fff;
  box-shadow:0 3px 14px rgba(23,32,51,.055);
}

#page-reports .reports-icon{
  width:46px;
  height:46px;
  display:grid;
  place-items:center;
  border-radius:11px;
  background:var(--reports-blue-soft);
  color:var(--reports-blue);
  font-size:18px;
  font-weight:900;
}

#page-reports .reports-card-body{
  min-width:0;
}

#page-reports .reports-label{
  display:inline-flex;
  align-items:center;
  min-height:25px;
  padding:5px 9px;
  border-radius:6px;
  background:var(--reports-blue-soft);
  color:var(--reports-blue);
  font-size:10px;
  font-weight:850;
  letter-spacing:1.05px;
}

#page-reports .reports-card h3,
#page-reports .reports-telemetry h3{
  margin:10px 0 7px;
  color:#172033;
  font-size:19px;
}

#page-reports .reports-card p,
#page-reports .reports-telemetry p{
  margin:0;
  color:var(--reports-muted);
  font-size:13px;
  line-height:1.55;
}

#page-reports .reports-meta{
  display:flex;
  justify-content:space-between;
  align-items:center;
  margin-top:20px;
  padding-top:14px;
  border-top:1px solid #edf1f5;
}

#page-reports .reports-meta span{
  color:var(--reports-muted);
  font-size:11px;
}

#page-reports .reports-meta strong{
  color:#344054;
  font-size:11px;
}

#page-reports .reports-download{
  grid-column:1 / -1;
  align-self:end;
  width:100%;
  padding:10px 15px;
  border:1px solid var(--reports-blue);
  border-radius:8px;
  background:#fff;
  color:var(--reports-blue);
  font-size:13px;
  font-weight:800;
  transition:.15s ease;
}

#page-reports .reports-download:hover{
  background:var(--reports-blue-soft);
}

#page-reports .reports-telemetry{
  margin-top:18px;
  padding:22px;
  border:1px solid var(--reports-border);
  border-radius:14px;
  background:#fff;
  box-shadow:0 3px 14px rgba(23,32,51,.055);
}

#page-reports .reports-telemetry-head{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:20px;
}

#page-reports .reports-format-badge{
  padding:6px 10px;
  border-radius:6px;
  background:#f4f6f8;
  color:#667085;
  font-size:10px;
  font-weight:850;
  letter-spacing:.7px;
}

#page-reports .reports-filter-grid{
  display:grid;
  grid-template-columns:minmax(180px,1fr) 32px minmax(180px,1fr) auto;
  align-items:end;
  gap:12px;
  margin-top:22px;
  padding:18px;
  border:1px solid #edf1f5;
  border-radius:10px;
  background:#f8fafc;
}

#page-reports .reports-field{
  display:flex;
  flex-direction:column;
  gap:7px;
}

#page-reports .reports-field span{
  color:#475467;
  font-size:11px;
  font-weight:750;
}

#page-reports .reports-field input{
  min-height:40px;
  border:1px solid #d8e0e8;
  background:#fff;
}

#page-reports .reports-range-arrow{
  align-self:center;
  padding-top:17px;
  text-align:center;
  color:#98a2b3;
  font-size:18px;
}

#page-reports .reports-download-primary{
  width:auto;
  min-height:40px;
  padding-left:20px;
  padding-right:20px;
  background:var(--reports-blue);
  color:#fff;
}

#page-reports .reports-download-primary:hover{
  background:var(--reports-blue-dark);
  color:#fff;
}

@media(max-width:900px){
  #page-reports .reports-grid{
    grid-template-columns:1fr;
  }

  #page-reports .reports-filter-grid{
    grid-template-columns:1fr 24px 1fr;
  }

  #page-reports .reports-download-primary{
    grid-column:1 / -1;
    width:100%;
  }
}

@media(max-width:650px){
  #page-reports .reports-head,
  #page-reports .reports-telemetry-head{
    flex-direction:column;
  }

  #page-reports .reports-context{
    width:100%;
  }

  #page-reports .reports-card{
    grid-template-columns:1fr;
  }

  #page-reports .reports-filter-grid{
    grid-template-columns:1fr;
  }

  #page-reports .reports-range-arrow{
    display:none;
  }
}

