* { box-sizing: border-box; }
html, body { width: 100%; height: 100%; margin: 0; }
body { background: #fff; color: #1c2136; font: 14px/1.4 system-ui, sans-serif; }
main { display: grid; grid-template-rows: auto minmax(0, 1fr) auto; width: 100%; height: 100%; min-height: 280px; }
#map { min-width: 0; min-height: 0; width: 100%; height: 100%; background: #e8ede8; }
.map-toolbar { display: flex; align-items: center; gap: 12px; justify-content: space-between; padding: 12px 16px; border-bottom: 1px solid #d7dbe1; background: #fff; }
.map-toolbar > div { min-width: 0; }
.map-toolbar strong { display: block; font-size: 16px; }
.map-toolbar p { margin: 3px 0 0; color: #51607a; }
.map-toolbar button { flex-shrink: 0; padding: 8px 10px; min-height: 44px; border: 1px solid #c5cbd5; border-radius: 6px; background: #fff; color: #1c2136; font: 600 14px system-ui,sans-serif; cursor: pointer; }
.map-toolbar button:disabled { opacity: .55; cursor: default; }
.map-toolbar button:hover:enabled { background: #f2f4f6; }
button:focus-visible, .leaflet-interactive:focus-visible { outline: 3px solid #f60f00; outline-offset: 3px; }
.map-note { margin: 0; padding: 9px 16px; border-top: 1px solid #d7dbe1; background: #fff; color: #36445b; font-size: 13px; }
.spark-district, .spark-cluster { display: flex; align-items: center; justify-content: center; border: 2px solid #fff; border-radius: 50%; background: #f60f00; color: #fff; box-shadow: 0 2px 7px #1c213645; font: 750 13px system-ui,sans-serif; }
.spark-cluster { background: #1c2136; font-size: 14px; }
.leaflet-popup-content { color: #1c2136; font: 14px/1.5 system-ui,sans-serif; }
.leaflet-popup-content strong { font-size: 18px; }
.leaflet-popup-content p { margin: 6px 0; }
.leaflet-container .leaflet-control-attribution { max-width: calc(100% - 12px); font-size: 11px; }
.leaflet-container .leaflet-control-zoom a { width: 44px; height: 44px; line-height: 44px; }
.map-fallback { margin: 0; padding: 16px; background: #fff; }
@media (max-width: 440px) {
  .map-toolbar { padding: 10px 12px; gap: 8px; }
  .map-toolbar strong { font-size: 14px; }
  .map-toolbar p { font-size: 12px; }
  .map-note { padding: 8px 12px; font-size: 12px; }
}
