
:root{
  --bg:#0d1117;
  --panel:#151b23;
  --panel2:#111820;
  --line:#263341;
  --text:#edf3f8;
  --muted:#93a4b5;
  --accent:#74c7ec;
  --accent2:#b7ecff;
  --danger:#ff5d73;
  --ok:#7ee787;
  --shadow:0 18px 60px rgba(0,0,0,.35);
}
*{box-sizing:border-box}
body{margin:0;font-family:Inter,Segoe UI,Arial,sans-serif;background:radial-gradient(circle at top left,#172232 0,#0d1117 42%,#090c10 100%);color:var(--text)}
.app{display:flex;min-height:100vh}
.sidebar{width:280px;padding:24px;background:rgba(8,12,17,.84);border-right:1px solid var(--line);position:sticky;top:0;height:100vh}
.brand{display:flex;gap:14px;align-items:center;margin-bottom:34px}
.brand-mark{width:46px;height:46px;border-radius:16px;background:linear-gradient(135deg,var(--accent),#22566b);display:grid;place-items:center;font-weight:900;color:#051014}
.brand strong{display:block;font-size:18px}
.brand span,.side-card span,.eyebrow{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.12em}
nav{display:grid;gap:8px}
nav a{color:var(--muted);text-decoration:none;padding:12px 14px;border-radius:14px}
nav a.active,nav a:hover{background:#182331;color:var(--text)}
.side-card{margin-top:28px;padding:16px;border:1px solid var(--line);border-radius:20px;background:var(--panel2);display:grid;gap:8px}
.side-card strong{font-size:13px;color:var(--accent2)}
main{flex:1;padding:28px;max-width:1500px;margin:0 auto}
.topbar{display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:20px}
h1,h2{margin:0}
h1{font-size:34px}
h2{font-size:20px}
#lastUpdate{color:var(--muted);font-size:13px}
.top-actions{display:flex;gap:10px;align-items:center}
input,select,button{font:inherit}
input,select{background:#0f1620;color:var(--text);border:1px solid var(--line);border-radius:14px;padding:12px 14px;outline:none}
#globalSearch{width:360px}
button{border:0;border-radius:14px;padding:12px 16px;background:var(--accent);color:#061018;font-weight:800;cursor:pointer}
button.ghost{background:#0f1620;color:var(--accent2);border:1px solid var(--line)}
.filters{display:grid;grid-template-columns:1fr 1fr 1fr auto;gap:12px;margin-bottom:18px;background:rgba(21,27,35,.7);padding:14px;border:1px solid var(--line);border-radius:22px}
.filters label{display:block;color:var(--muted);font-size:12px;margin-bottom:6px}
.filters select{width:100%}
.kpis{display:grid;grid-template-columns:repeat(6,1fr);gap:14px;margin-bottom:18px}
.kpis article,.panel{background:linear-gradient(180deg,rgba(21,27,35,.96),rgba(15,22,31,.96));border:1px solid var(--line);border-radius:24px;box-shadow:var(--shadow)}
.kpis article{padding:18px}
.kpis span{color:var(--muted);font-size:13px}
.kpis strong{display:block;font-size:28px;margin-top:8px}
.grid{display:grid;gap:18px;margin-bottom:18px}
.grid.two{grid-template-columns:1.2fr .8fr}
.panel{padding:18px;overflow:hidden}
.panel-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:14px}
.badge{padding:8px 12px;border:1px solid var(--line);border-radius:999px;color:var(--accent2);background:#0f1620;font-weight:700}
.brazil-map{
  position:relative;
  min-height:620px;
  border-radius:24px;
  background:
    radial-gradient(circle at 50% 52%, rgba(116,199,236,.10), transparent 42%),
    #05080c url('../img/brasil-contorno.png') center/contain no-repeat;
  border:1px solid var(--line);
  overflow:hidden;
}
.state{
  position:absolute;
  transform:translate(-50%,-50%);
  min-width:44px;
  min-height:34px;
  padding:4px 6px;
  border-radius:12px;
  background:rgba(5,8,12,.34);
  border:1px solid rgba(255,255,255,.06);
  color:#f7fbff;
  display:grid;
  place-items:center;
  cursor:pointer;
  transition:.18s;
  text-shadow:0 2px 8px rgba(0,0,0,.95);
  box-shadow:0 0 calc(8px + 22px * var(--heat)) rgba(116,199,236,.16);
}
.state:hover,.state.active{
  transform:translate(-50%,-50%) scale(1.12);
  background:rgba(116,199,236,.85);
  color:#061018;
  border-color:rgba(183,236,255,.95);
  text-shadow:none;
  z-index:5;
}
.state small{display:block;color:inherit;opacity:.9;font-size:11px;text-align:center;font-weight:800}
.state strong{font-size:14px;font-weight:900}
.summary-card{padding:14px;border-radius:18px;background:#0f1620;border:1px solid var(--line);margin-bottom:12px;color:var(--muted);line-height:1.6}
.summary-card b{color:var(--text)}
.table-wrap{overflow:auto;border-radius:18px;border:1px solid var(--line)}
.table-wrap.tall{max-height:560px}
table{width:100%;border-collapse:collapse;background:#0f1620}
th,td{padding:11px 12px;border-bottom:1px solid var(--line);font-size:14px}
th{position:sticky;top:0;background:#15202b;color:var(--accent2);text-align:left;z-index:1}
td{color:#dce7ef}
.num{text-align:right;white-space:nowrap}
.goals{display:grid;gap:12px}
.goal-card{padding:14px;border:1px solid var(--line);border-radius:18px;background:#0f1620}
.goal-row{display:flex;justify-content:space-between;gap:12px;margin-bottom:10px}
.progress{height:12px;background:#253141;border-radius:999px;overflow:hidden}
.progress span{display:block;height:100%;background:linear-gradient(90deg,var(--accent),var(--ok));border-radius:999px}
@media(max-width:1000px){
  .app{display:block}.sidebar{position:relative;width:auto;height:auto}.topbar,.top-actions{display:block}.top-actions input{width:100%;margin:12px 0}.filters,.kpis,.grid.two{grid-template-columns:1fr}.kpis{grid-template-columns:1fr 1fr}
}
@media(max-width:620px){main{padding:16px}.kpis{grid-template-columns:1fr}.brazil-map{min-height:560px}.state{min-width:38px;min-height:30px}.state strong{font-size:12px}.state small{font-size:10px}}

.goal-data-note{margin:0 0 12px;padding:10px 12px;border:1px solid rgba(116,199,236,.22);border-radius:14px;background:rgba(116,199,236,.07);color:var(--accent2);font-size:12px;line-height:1.45}
.goal-data-note.warning{border-color:rgba(255,93,115,.28);background:rgba(255,93,115,.07);color:#ff9aaa}
