:root {
  --bg: #0f172a;
  --panel: #1e293b;
  --panel-2: #273449;
  --text: #e2e8f0;
  --muted: #94a3b8;
  --accent: #38bdf8;
  --accent-2: #f472b6;
}

* { box-sizing: border-box; }

body {
  margin: 0;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
  background: var(--bg);
  color: var(--text);
}

header {
  padding: 24px 32px 8px;
  border-bottom: 1px solid #1f2937;
}

header h1 { margin: 0; font-size: 22px; letter-spacing: .2px; }
header .sub { margin: 4px 0 0; color: var(--muted); font-size: 13px; }

main { padding: 20px 32px 40px; display: grid; gap: 20px; }

.card {
  background: var(--panel);
  border: 1px solid #243144;
  border-radius: 10px;
  padding: 16px 18px;
}

.card h2 { margin: 0 0 12px; font-size: 15px; color: var(--accent); }

.grid-2 {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
}

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

#kpis {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 12px;
}

@media (max-width: 700px) { #kpis { grid-template-columns: repeat(2, 1fr); } }

.kpi {
  background: var(--panel-2);
  border-radius: 8px;
  padding: 12px 14px;
}

.kpi .label { display: block; font-size: 11px; color: var(--muted);
              text-transform: uppercase; letter-spacing: .6px; }
.kpi .value { display: block; font-size: 22px; font-weight: 600;
              margin-top: 4px; }

#map { height: 460px; border-radius: 8px; overflow: hidden; }
.leaflet-container { background: #0b1220; }

.caption { color: var(--muted); font-size: 12px; margin: 8px 0 0; }

.controls { display: flex; gap: 10px; align-items: center; margin-bottom: 8px; }
select {
  background: var(--panel-2); color: var(--text);
  border: 1px solid #334155; border-radius: 6px;
  padding: 6px 10px; font-size: 13px;
}

footer { padding: 16px 32px 32px; color: var(--muted); font-size: 12px; }

/* D3 chart styles */
.axis text { fill: var(--muted); font-size: 11px; }
.axis path, .axis line { stroke: #334155; }
.bar { fill: var(--accent); }
.bar:hover { fill: var(--accent-2); }
.pie-slice { stroke: var(--panel); stroke-width: 2px; }
.pie-label { fill: var(--text); font-size: 11px; }
.line-history { fill: none; stroke: var(--accent); stroke-width: 2px; }
.line-forecast { fill: none; stroke: var(--accent-2); stroke-width: 2px;
                  stroke-dasharray: 5 4; }

.tooltip {
  position: absolute;
  background: #0b1220;
  border: 1px solid #334155;
  color: var(--text);
  padding: 6px 8px;
  border-radius: 6px;
  font-size: 12px;
  pointer-events: none;
  opacity: 0;
  transition: opacity .12s ease;
}

/* Leaflet legend */
.info {
  padding: 6px 8px;
  background: rgba(11,18,32,0.9);
  color: var(--text);
  border: 1px solid #334155;
  border-radius: 5px;
  font-size: 12px;
}
.info h4 { margin: 0 0 4px; color: var(--accent); font-size: 12px; }
.legend i { width: 14px; height: 14px; float: left; margin-right: 6px;
            opacity: 0.85; }
