:root{
  --azul-amend:#0b3d91;
  --azul-claro:#2f6fed;
  --bg:#f4f6fa;
  --card:#ffffff;
  --texto:#1d2433;
  --texto-suave:#6b7280;
  --borda:#e3e7ef;
  --verde:#1aa260;
  --laranja:#e08a1f;
  --vermelho:#d6453d;
  --cor-a:#2f6fed;
  --cor-b:#e08a1f;
  --cor-c:#1aa260;
}
*{box-sizing:border-box;}
body{
  margin:0;
  font-family:Arial, Helvetica, sans-serif;
  background:var(--bg);
  color:var(--texto);
}
.topbar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  background:var(--azul-amend);
  color:#fff;
  padding:12px 20px;
  flex-wrap:wrap;
  gap:10px;
}
.brand{display:flex;flex-direction:column;}
.brand-name{font-size:20px;font-weight:bold;letter-spacing:1px;}
.brand-sub{font-size:12px;opacity:.85;}
.tabs{display:flex;gap:8px;}
.tab-btn{
  background:rgba(255,255,255,.12);
  border:none;
  color:#fff;
  padding:8px 16px;
  border-radius:6px;
  cursor:pointer;
  font-size:14px;
}
.tab-btn.active{background:#fff;color:var(--azul-amend);font-weight:bold;}

.filters{
  display:flex;
  align-items:flex-end;
  gap:16px;
  background:var(--card);
  padding:12px 20px;
  border-bottom:1px solid var(--borda);
  flex-wrap:wrap;
}
.filter-group{display:flex;flex-direction:column;gap:4px;}
.filter-group label{font-size:11px;color:var(--texto-suave);text-transform:uppercase;}
.filter-group select, .filter-group input{
  padding:7px 10px;
  border:1px solid var(--borda);
  border-radius:6px;
  font-size:14px;
  min-width:160px;
}
.search-group input{min-width:240px;}
.filter-stats{
  margin-left:auto;
  font-size:13px;
  color:var(--texto-suave);
  align-self:center;
}
.btn-exportar{
  align-self:center;
  background:var(--verde);
  color:#fff;
  border:none;
  padding:9px 16px;
  border-radius:6px;
  font-size:13px;
  font-weight:bold;
  cursor:pointer;
}
.btn-exportar:hover{filter:brightness(0.92);}

.btn-editar{
  align-self:center;
  background:var(--azul-claro);
  color:#fff;
  border:none;
  padding:9px 16px;
  border-radius:6px;
  font-size:13px;
  font-weight:bold;
  cursor:pointer;
}
.btn-editar.ativo{background:var(--vermelho);}
.btn-editar:hover{filter:brightness(0.92);}

.btn-salvar{
  align-self:center;
  background:var(--laranja);
  color:#fff;
  border:none;
  padding:9px 16px;
  border-radius:6px;
  font-size:13px;
  font-weight:bold;
  cursor:pointer;
}
.btn-salvar:hover{filter:brightness(0.92);}

.aviso-salvo{
  padding:8px 20px;
  font-size:13px;
  font-weight:bold;
}
.aviso-salvo.ok{background:#e6f7ee;color:var(--verde);}
.aviso-salvo.erro{background:#fdeceb;color:var(--vermelho);}

.edit-select{
  padding:4px 6px;
  border:1px solid var(--borda);
  border-radius:4px;
  font-size:12px;
}
.row-fora-horario{background:#fdeceb !important;}
.aviso-horario{
  color:var(--vermelho);
  font-size:11px;
  font-weight:bold;
}

main{padding:0;}
.view{display:none;}
.view.active{display:block;}

#map{
  height:calc(100vh - 132px);
  width:100%;
}

.lista-container{
  padding:16px 20px;
  display:flex;
  flex-direction:column;
  gap:18px;
}
.dia-bloco{
  background:var(--card);
  border:1px solid var(--borda);
  border-radius:10px;
  overflow:hidden;
}
.dia-header{
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:10px 16px;
  background:#eef2fb;
  font-weight:bold;
}
.dia-header .badge{
  font-size:12px;
  padding:2px 8px;
  border-radius:12px;
  color:#fff;
}
table.visitas{
  width:100%;
  border-collapse:collapse;
  font-size:13px;
}
table.visitas th, table.visitas td{
  text-align:left;
  padding:8px 12px;
  border-bottom:1px solid var(--borda);
}
table.visitas th{
  background:#fafbfd;
  color:var(--texto-suave);
  font-size:11px;
  text-transform:uppercase;
}
table.visitas tr:last-child td{border-bottom:none;}

.resumo-container{
  padding:20px;
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(220px,1fr));
  gap:16px;
}
.kpi-card{
  background:var(--card);
  border:1px solid var(--borda);
  border-radius:10px;
  padding:16px;
}
.kpi-card .valor{font-size:28px;font-weight:bold;color:var(--azul-amend);}
.kpi-card .label{font-size:12px;color:var(--texto-suave);text-transform:uppercase;}
.resumo-table-wrap{
  grid-column:1/-1;
  background:var(--card);
  border:1px solid var(--borda);
  border-radius:10px;
  padding:0;
  overflow:hidden;
}

.loading-overlay{
  position:fixed;inset:0;
  background:rgba(255,255,255,.9);
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:12px;z-index:9999;
}
.loading-overlay.hidden{display:none;}
.spinner{
  width:36px;height:36px;
  border:4px solid var(--borda);
  border-top-color:var(--azul-claro);
  border-radius:50%;
  animation:spin 0.8s linear infinite;
}
@keyframes spin{to{transform:rotate(360deg);}}

tr.desloc-row td{
  background:#f6f8fb;
  color:var(--texto-suave);
  font-size:11.5px;
  font-style:italic;
  padding:4px 12px;
  border-bottom:1px dashed var(--borda);
}

.leaflet-popup-content{font-size:13px;}
.popup-titulo{font-weight:bold;margin-bottom:4px;}
.popup-linha{margin:2px 0;color:#444;}
.popup-edit{
  margin-top:8px;
  padding-top:8px;
  border-top:1px solid var(--borda);
  display:flex;
  align-items:center;
  gap:6px;
  flex-wrap:wrap;
}
.popup-edit label{font-size:11px;color:var(--texto-suave);}
.popup-edit select{padding:3px 5px;font-size:12px;border:1px solid var(--borda);border-radius:4px;}

.cor-dia-toggle{
  align-self:center;
  font-size:13px;
  color:var(--texto-suave);
  display:flex;
  align-items:center;
  gap:6px;
  cursor:pointer;
  white-space:nowrap;
}

@media (max-width:700px){
  .filters{flex-direction:column;align-items:stretch;}
  .filter-stats{margin-left:0;}
  #map{height:60vh;}
}
