.map-page { background: var(--ink); }
.map-page .site-header { background: rgba(5, 9, 15, .94); }
.map-main { margin: 0 auto; max-width: 1600px; padding: clamp(2.5rem, 6vw, 5.5rem) clamp(1rem, 3vw, 3rem) 5rem; }
.map-intro { align-items: end; display: grid; gap: 2rem; grid-template-columns: minmax(0, 1fr) auto; margin-bottom: 2.2rem; }
.map-intro h1 { font-size: clamp(2.8rem, 7vw, 6.6rem); letter-spacing: -.065em; line-height: .9; margin: 0; }
.map-intro > div:first-child > p:last-child { color: var(--muted); font-size: 1.05rem; margin: 1.3rem 0 0; max-width: 700px; }
.map-stats { border: 1px solid var(--line-strong); display: grid; grid-template-columns: repeat(2, minmax(120px, 1fr)); }
.map-stats div { padding: 1rem 1.25rem; }
.map-stats div + div { border-left: 1px solid var(--line); }
.map-stats strong { color: var(--cyan); display: block; font-family: "IBM Plex Mono", monospace; font-size: 1.55rem; line-height: 1; }
.map-stats span { color: var(--muted); display: block; font-size: .72rem; margin-top: .45rem; text-transform: uppercase; }
.map-workspace { border: 1px solid var(--line-strong); background: var(--ink-2); }
.map-toolbar { align-items: end; display: grid; gap: .8rem; grid-template-columns: minmax(280px, 1fr) auto auto; padding: 1rem; }
.map-search span { color: var(--muted); display: block; font-family: "IBM Plex Mono", monospace; font-size: .67rem; letter-spacing: .1em; margin-bottom: .4rem; text-transform: uppercase; }
.map-search input { background: #050c13; border: 1px solid var(--line-strong); border-radius: 0; color: var(--white); font: inherit; min-height: 46px; padding: .7rem .85rem; width: 100%; }
.map-search input::placeholder { color: #6f858e; }
.map-filters { display: flex; gap: 1px; }
.map-filters button, .map-reset, .map-error button { background: #08121b; border: 1px solid var(--line-strong); color: #b8c8cd; cursor: pointer; font-family: "IBM Plex Mono", monospace; font-size: .7rem; min-height: 46px; padding: .65rem .85rem; text-transform: uppercase; }
.map-filters button:hover, .map-filters button.is-active, .map-reset:hover, .map-error button:hover { border-color: var(--cyan); color: var(--cyan); }
.map-frame { height: min(68vh, 760px); min-height: 520px; overflow: hidden; position: relative; }
#data-center-map { height: 100%; width: 100%; z-index: 1; }
.leaflet-tile-pane { filter: brightness(.54) saturate(.48) contrast(1.2); }
.leaflet-container { background: #09131c; font-family: "Manrope", sans-serif; }
.leaflet-control-zoom a { background: #07111a; border-color: var(--line-strong); color: var(--white); }
.leaflet-control-zoom a:hover { background: #0b202c; color: var(--cyan); }
.leaflet-control-attribution { background: rgba(5, 9, 15, .82) !important; color: #8ea0a7; }
.leaflet-control-attribution a { color: var(--cyan-dim); }
.leaflet-popup-content-wrapper, .leaflet-popup-tip { background: #0a1721; color: var(--white); }
.leaflet-popup-content-wrapper { border: 1px solid rgba(33, 217, 229, .35); border-radius: 0; box-shadow: 0 14px 38px rgba(0,0,0,.45); }
.leaflet-popup-content { line-height: 1.45; margin: 1rem; min-width: 220px; }
.popup-meta { color: var(--cyan); font-family: "IBM Plex Mono", monospace; font-size: .65rem; letter-spacing: .08em; text-transform: uppercase; }
.leaflet-popup-content h3 { font-size: 1.1rem; line-height: 1.2; margin: .35rem 0 .55rem; }
.leaflet-popup-content p { color: #aebfc5; font-size: .8rem; margin: .3rem 0; }
.leaflet-popup-content .popup-evidence { border-left: 2px solid rgba(33,217,229,.45); color: #d5e2e6; font-family: "IBM Plex Mono", monospace; font-size: .68rem; margin-top: .65rem; padding-left: .55rem; }
.leaflet-popup-content a { color: var(--cyan); display: inline-block; font-family: "IBM Plex Mono", monospace; font-size: .68rem; margin-top: .6rem; text-decoration: none; text-transform: uppercase; }
.leaflet-popup-close-button { color: #95aab2 !important; }
.facility-dot { background: var(--cyan); border: 2px solid #dffcff; border-radius: 50%; box-shadow: 0 0 0 4px rgba(33,217,229,.16), 0 0 15px rgba(33,217,229,.65); height: 13px; width: 13px; }
.facility-dot.is-development { background: var(--amber); border-color: #fff2d8; box-shadow: 0 0 0 4px rgba(240,181,90,.16), 0 0 15px rgba(240,181,90,.6); }
.marker-cluster-small div, .marker-cluster-medium div, .marker-cluster-large div { background: #0c7780; color: white; font-family: "IBM Plex Mono", monospace; }
.marker-cluster-small, .marker-cluster-medium, .marker-cluster-large { background: rgba(33,217,229,.24); }
.map-loading, .map-error { align-items: center; background: rgba(5,9,15,.92); display: flex; flex-direction: column; inset: 0; justify-content: center; padding: 2rem; position: absolute; text-align: center; z-index: 4; }
.map-loading > span { animation: mapPulse 1s ease-in-out infinite alternate; background: var(--cyan); box-shadow: 0 0 24px rgba(33,217,229,.8); height: 8px; margin-bottom: 1.2rem; width: 8px; }
.map-loading small, .map-error p { color: var(--muted); margin-top: .45rem; }
.map-error[hidden], .map-loading[hidden] { display: none; }
.map-legend { background: rgba(5,9,15,.9); border: 1px solid var(--line); bottom: 1rem; display: flex; gap: 1rem; left: 1rem; padding: .65rem .8rem; position: absolute; z-index: 3; }
.map-legend span { align-items: center; color: #aebfc5; display: flex; font-family: "IBM Plex Mono", monospace; font-size: .62rem; gap: .4rem; text-transform: uppercase; }
.map-legend i { border-radius: 50%; display: block; height: 8px; width: 8px; }
.pin-operating { background: var(--cyan); box-shadow: 0 0 8px var(--cyan); }
.pin-development { background: var(--amber); box-shadow: 0 0 8px var(--amber); }
.map-notes { align-items: start; border-bottom: 1px solid var(--line); display: grid; gap: 2rem; grid-template-columns: minmax(260px, .7fr) minmax(0, 1.3fr); padding: 3rem 0 0; }
.map-notes h2 { font-size: clamp(1.7rem, 3vw, 2.6rem); letter-spacing: -.035em; line-height: 1.05; margin: .5rem 0 2.8rem; }
.map-notes > p { color: var(--muted); margin: 0 0 2.8rem; }
@keyframes mapPulse { to { opacity: .35; transform: scale(.72); } }

@media (max-width: 900px) {
  .map-intro { align-items: start; grid-template-columns: 1fr; }
  .map-stats { width: 100%; }
  .map-toolbar { align-items: stretch; grid-template-columns: 1fr; }
  .map-filters { display: grid; grid-template-columns: repeat(3, 1fr); }
  .map-filters button { padding-left: .4rem; padding-right: .4rem; }
}

@media (max-width: 620px) {
  .map-main { padding-top: 2.5rem; }
  .map-frame { height: 66vh; min-height: 500px; }
  .map-stats strong { font-size: 1.3rem; }
  .map-stats span { font-size: .63rem; }
  .map-legend { align-items: flex-start; flex-direction: column; gap: .4rem; }
  .map-notes { gap: .4rem; grid-template-columns: 1fr; }
}
