:root {
  --nmhm-red: #e63946;
  --nmhm-bordeaux: #701b33;
  --nmhm-bordeaux-dark: #2a050d;
  --nmhm-yellow: #c9a84c;
  --nmhm-orange: #9e3a21;
  --nmhm-cyan: #46b6b0;
}

.nm-heatmap {
  position: relative;
  width: min(92vw, 720px);
  aspect-ratio: 3 / 4;
  overflow: hidden;
  border-radius: 28px;
  border: 1px solid rgba(255,255,255,.10);
  box-shadow: 0 30px 100px rgba(0,0,0,.78);
  background: #010305;
  color: #fff;
  font-family: "Space Grotesk", Inter, system-ui, sans-serif;
  isolation: isolate;
}

.nm-heatmap__map {
  position: absolute;
  inset: 0;
  background-position: center;
  background-size: cover;
  filter: saturate(.78) brightness(.82) contrast(1.12);
}

.nm-heatmap__map::after {
  content: "";
  position: absolute;
  inset: 0;
  background:
    repeating-linear-gradient(0deg, rgba(255,255,255,.030) 0 1px, transparent 1px 4px),
    radial-gradient(circle at 50% 50%, transparent 0 38%, rgba(0,0,0,.44) 77%, rgba(0,0,0,.88) 100%),
    linear-gradient(180deg, rgba(0,0,0,.08), rgba(42,5,13,.22) 72%, rgba(0,0,0,.52));
  pointer-events: none;
  mix-blend-mode: normal;
  opacity: .9;
}

.nm-heatmap__rings {
  position: absolute;
  left: 59.8%;
  top: 52.5%;
  width: 86%;
  aspect-ratio: 1;
  border: 1px solid rgba(70,182,176,.075);
  border-radius: 50%;
  transform: translate(-50%, -50%);
  box-shadow:
    0 0 0 78px rgba(70,182,176,.018),
    0 0 0 175px rgba(70,182,176,.014),
    0 0 0 290px rgba(70,182,176,.010);
  z-index: 3;
  pointer-events: none;
}

.nm-heatmap__radar-origin {
  position: absolute;
  left: 59.8%;
  top: 52.5%;
  width: 1px;
  height: 1px;
  z-index: 4;
}

.nm-heatmap__sweep {
  position: absolute;
  left: 0;
  top: 0;
  width: 155vmax;
  height: 155vmax;
  transform-origin: 0 0;
  animation: nmhm-sweep 8s linear infinite;
  opacity: .58;
  pointer-events: none;
}

.nm-heatmap__sweep::before {
  content: "";
  position: absolute;
  inset: 0;
  background: conic-gradient(
    from -10deg,
    rgba(70,182,176,0) 0deg,
    rgba(70,182,176,0) 316deg,
    rgba(70,182,176,.105) 338deg,
    rgba(245,245,245,.25) 356deg,
    rgba(70,182,176,0) 360deg
  );
  filter: blur(.8px);
}

.nm-heatmap__labels {
  position: absolute;
  inset: 0;
  z-index: 7;
  pointer-events: none;
}

.nm-heatmap__map-label {
  position: absolute;
  transform: translate(-50%, -50%);
  text-align: center;
  white-space: nowrap;
  color: rgba(236, 238, 236, .74);
  text-shadow: 0 0 10px rgba(0,0,0,.88), 0 0 18px rgba(0,0,0,.72);
}

.nm-heatmap__map-label--city {
  color: rgba(242, 244, 240, .88);
  font-weight: 800;
  font-size: clamp(22px, 4.6vw, 34px);
  letter-spacing: .20em;
  text-transform: uppercase;
}

.nm-heatmap__map-label--district {
  color: rgba(242, 244, 240, .70);
  font-weight: 800;
  font-size: clamp(12px, 2.25vw, 17px);
  letter-spacing: .13em;
  text-transform: uppercase;
}

.nm-heatmap__label-gdynia { left: 63%; top: 21%; }
.nm-heatmap__label-srodmiescie { left: 62%; top: 26%; }

.nm-heatmap__energy {
  position: absolute;
  z-index: 5;
  left: calc(var(--x) * 1%);
  top: calc(var(--y) * 1%);
  width: var(--s);
  aspect-ratio: 1;
  transform: translate(-50%, -50%);
  border-radius: 999px;
  background: radial-gradient(circle, rgba(201,168,76,.45), rgba(158,58,33,.26) 42%, rgba(112,27,51,0) 72%);
  filter: blur(12px);
  pointer-events: none;
  animation: nmhm-energy-breath 3.2s ease-in-out infinite;
}

.nm-heatmap__pin {
  position: absolute;
  z-index: 8;
  left: calc(var(--x) * 1%);
  top: calc(var(--y) * 1%);
  transform: translate(-50%, -50%);
  width: 20px;
  height: 20px;
  border: 0;
  border-radius: 999px;
  cursor: pointer;
  background: transparent;
  padding: 0;
}

.nm-heatmap__pin::before {
  content: "";
  position: absolute;
  inset: 6px;
  border-radius: 999px;
  background: var(--nmhm-red);
  box-shadow: 0 0 6px rgba(230,57,70,.86), 0 0 15px rgba(112,27,51,.58);
}

.nm-heatmap__pin::after {
  content: "";
  position: absolute;
  inset: 2px;
  border-radius: 999px;
  border: 1px solid rgba(230,57,70,.42);
  animation: nmhm-pin-pulse 2.6s ease infinite;
}

.nm-heatmap__pin.is-event::before {
  background: #c9a84c;
  box-shadow: 0 0 7px rgba(201,168,76,.78), 0 0 17px rgba(112,27,51,.62);
}

.nm-heatmap__pin.is-live::before {
  background: #f0c35a;
  box-shadow: 0 0 10px rgba(240,195,90,.86), 0 0 24px rgba(230,57,70,.7), 0 0 40px rgba(112,27,51,.42);
}

.nm-heatmap__pin.is-live::after {
  border-color: rgba(201,168,76,.72);
  animation-duration: 1.45s;
}

.nm-heatmap__popover {
  position: absolute;
  z-index: 30;
  width: min(310px, calc(100% - 28px));
  left: 18px;
  top: 18px;
  display: none;
  background: linear-gradient(145deg, rgba(5,8,12,.96), rgba(26,3,10,.94));
  border: 1px solid rgba(255,255,255,.13);
  border-radius: 20px;
  box-shadow: 0 20px 60px rgba(0,0,0,.66), 0 0 30px rgba(112,27,51,.26);
  overflow: hidden;
  backdrop-filter: blur(10px);
}

.nm-heatmap__popover.is-active { display: block; }

.nm-heatmap__popover-header {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  padding: 16px 16px 12px;
  border-bottom: 1px solid rgba(255,255,255,.08);
}

.nm-heatmap__popover-title {
  font-size: 18px;
  font-weight: 800;
  letter-spacing: .03em;
}

.nm-heatmap__close {
  color: rgba(255,255,255,.7);
  border: 0;
  background: transparent;
  font-size: 22px;
  cursor: pointer;
  line-height: 1;
}

.nm-heatmap__event-list { padding: 8px; }

.nm-heatmap__event-link {
  display: grid;
  grid-template-columns: 72px 1fr auto;
  align-items: center;
  gap: 9px;
  padding: 11px 9px;
  border-radius: 14px;
  color: #fff;
  text-decoration: none;
}

.nm-heatmap__event-link:hover { background: rgba(255,255,255,.07); }

.nm-heatmap__time {
  font-family: "IBM Plex Mono", monospace;
  font-size: 11px;
  color: var(--nmhm-yellow);
}

.nm-heatmap__event-title {
  font-size: 13px;
  line-height: 1.2;
}

.nm-heatmap__tag {
  font-family: "IBM Plex Mono", monospace;
  font-size: 10px;
  color: var(--nmhm-red);
  border: 1px solid rgba(230,57,70,.4);
  border-radius: 999px;
  padding: 3px 6px;
}

.nm-heatmap__brand {
  position: absolute;
  left: 6.2%;
  right: 6.2%;
  bottom: 6.4%;
  z-index: 12;
  color: var(--nmhm-red);
  letter-spacing: .28em;
  font-size: clamp(30px, 10.4vw, 66px);
  font-weight: 800;
  text-align: center;
  text-shadow: 0 0 18px rgba(230,57,70,.26);
  pointer-events: none;
}

.nm-heatmap__coords {
  position: absolute;
  left: 7.8%;
  bottom: 2.9%;
  z-index: 12;
  font-family: "IBM Plex Mono", monospace;
  letter-spacing: .18em;
  font-size: clamp(11px, 2.2vw, 18px);
  color: rgba(255,255,255,.70);
  pointer-events: none;
}

.nm-heatmap__legend {
  position: absolute;
  z-index: 12;
  right: 18px;
  top: 18px;
  display: flex;
  gap: 7px;
  align-items: center;
  padding: 9px 12px;
  border: 1px solid rgba(255,255,255,.11);
  border-radius: 999px;
  background: rgba(0,0,0,.42);
  font-family: "IBM Plex Mono", monospace;
  font-size: 10px;
  letter-spacing: .12em;
  color: rgba(255,255,255,.70);
}

.nm-heatmap__dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--nmhm-red);
  box-shadow: 0 0 7px rgba(230,57,70,.82);
}

.nm-heatmap__dot--energy {
  background: var(--nmhm-yellow);
  box-shadow: 0 0 7px rgba(201,168,76,.72);
}

@keyframes nmhm-sweep { to { transform: rotate(360deg); } }

@keyframes nmhm-pin-pulse {
  0% { transform: scale(.55); opacity: .72; }
  100% { transform: scale(2.15); opacity: 0; }
}

@keyframes nmhm-energy-breath {
  0%,100% { opacity: .30; transform: translate(-50%, -50%) scale(.92); }
  50% { opacity: .56; transform: translate(-50%, -50%) scale(1.06); }
}

@media (max-width: 620px) {
  .nm-heatmap {
    width: 100%;
    max-height: 86vh;
    border-radius: 22px;
  }

  .nm-heatmap__popover {
    left: 12px !important;
    right: 12px;
    top: auto !important;
    bottom: 14px;
    width: auto;
    border-radius: 22px;
  }

  .nm-heatmap__brand {
    left: 5%;
    right: 5%;
    bottom: 6%;
    letter-spacing: .22em;
    font-size: clamp(26px, 11.2vw, 54px);
  }

  .nm-heatmap__coords {
    left: 5.5%;
    bottom: 3%;
  }

  .nm-heatmap__label-gdynia { left: 65%; top: 21.5%; }
  .nm-heatmap__label-srodmiescie { left: 64%; top: 26.6%; }
}

/* =========================================================
   NOISEMAP HEATMAP v004
   Layered map identity: Barlow Condensed / off-white labels /
   darker bordeaux radar / clean bottom map caption system.
   ========================================================= */

.nm-heatmap {
  font-family: "Barlow Condensed", "Space Grotesk", Inter, system-ui, sans-serif !important;
  border-color: rgba(235,232,220,.09) !important;
  box-shadow:
    0 34px 110px rgba(0,0,0,.84),
    0 0 0 1px rgba(112,27,51,.10) inset !important;
}

.nm-heatmap__map {
  filter: saturate(.62) brightness(.72) contrast(1.22) !important;
}

.nm-heatmap__map::after {
  background:
    repeating-linear-gradient(
      0deg,
      rgba(235,232,220,.022) 0 1px,
      transparent 1px 4px
    ),
    radial-gradient(
      circle at 50% 50%,
      transparent 0 34%,
      rgba(0,0,0,.36) 66%,
      rgba(0,0,0,.90) 100%
    ),
    linear-gradient(
      180deg,
      rgba(0,0,0,.18),
      rgba(42,5,13,.24) 64%,
      rgba(0,0,0,.72)
    ) !important;
  opacity: .95 !important;
}

/* Soft mask for old baked top label remnants. */
.nm-heatmap__labels::before {
  content: "";
  position: absolute;
  left: 43%;
  top: 3%;
  width: 42%;
  height: 13%;
  transform: translateX(-10%);
  border-radius: 999px;
  background:
    radial-gradient(
      ellipse at center,
      rgba(0,5,8,.78) 0%,
      rgba(0,5,8,.58) 42%,
      rgba(0,5,8,0) 76%
    );
  filter: blur(10px);
  pointer-events: none;
}

/* Modernist cartographic labels. */
.nm-heatmap__map-label {
  font-family: "Barlow Condensed", "Space Grotesk", Inter, system-ui, sans-serif !important;
  color: rgba(235,232,220,.46) !important;
  text-shadow:
    0 0 7px rgba(0,0,0,.95),
    0 0 18px rgba(0,0,0,.75) !important;
  filter: blur(.08px);
}

.nm-heatmap__map-label--city {
  font-size: clamp(17px, 3.45vw, 25px) !important;
  font-weight: 600 !important;
  letter-spacing: .24em !important;
  color: rgba(235,232,220,.52) !important;
}

.nm-heatmap__map-label--district {
  font-size: clamp(10px, 1.95vw, 14px) !important;
  font-weight: 600 !important;
  letter-spacing: .18em !important;
  color: rgba(235,232,220,.34) !important;
}

.nm-heatmap__label-gdynia {
  left: 66% !important;
  top: 25.5% !important;
}

.nm-heatmap__label-srodmiescie {
  left: 66% !important;
  top: 29.2% !important;
}

/* Bottom-left title, not a banner. */
.nm-heatmap__brand {
  left: 6.8% !important;
  right: auto !important;
  bottom: 3.4% !important;
  width: auto !important;
  max-width: 45% !important;
  color: rgba(235,232,220,.78) !important;
  font-family: "Barlow Condensed", "Space Grotesk", Inter, system-ui, sans-serif !important;
  font-size: clamp(24px, 5.4vw, 42px) !important;
  font-weight: 500 !important;
  letter-spacing: .26em !important;
  text-align: left !important;
  text-shadow:
    0 0 10px rgba(0,0,0,.85),
    0 0 18px rgba(112,27,51,.18) !important;
}

/* Bottom-right maritime coordinates. */
.nm-heatmap__coords {
  left: auto !important;
  right: 6.8% !important;
  bottom: 3.55% !important;
  max-width: 48% !important;
  color: rgba(235,232,220,.58) !important;
  font-family: "Barlow Condensed", "IBM Plex Mono", monospace !important;
  font-size: clamp(15px, 3.3vw, 24px) !important;
  font-weight: 500 !important;
  letter-spacing: .13em !important;
  text-align: right !important;
  text-shadow:
    0 0 10px rgba(0,0,0,.86),
    0 0 18px rgba(0,0,0,.60) !important;
}

/* Radar: more maritime echo, less black reflector. */
.nm-heatmap__rings {
  border-color: rgba(70,182,176,.045) !important;
  box-shadow:
    0 0 0 78px rgba(70,182,176,.012),
    0 0 0 175px rgba(70,182,176,.010),
    0 0 0 290px rgba(70,182,176,.007) !important;
}

.nm-heatmap__sweep {
  opacity: .42 !important;
}

.nm-heatmap__sweep::before {
  background: conic-gradient(
    from -10deg,
    rgba(70,182,176,0) 0deg,
    rgba(70,182,176,0) 318deg,
    rgba(70,182,176,.065) 340deg,
    rgba(235,232,220,.18) 356deg,
    rgba(70,182,176,0) 360deg
  ) !important;
  filter: blur(1.2px) !important;
}

/* Venue and event energy: bordeaux / dirty amber, not promo yellow. */
.nm-heatmap__energy {
  background:
    radial-gradient(
      circle,
      rgba(201,168,76,.28),
      rgba(112,27,51,.28) 42%,
      rgba(112,27,51,0) 73%
    ) !important;
  filter: blur(16px) !important;
  opacity: .76 !important;
}

.nm-heatmap__pin::before {
  background: #e63946 !important;
  box-shadow:
    0 0 5px rgba(230,57,70,.75),
    0 0 14px rgba(112,27,51,.60) !important;
}

.nm-heatmap__pin.is-event::before {
  background: #b89242 !important;
  box-shadow:
    0 0 6px rgba(184,146,66,.65),
    0 0 15px rgba(112,27,51,.64) !important;
}

.nm-heatmap__pin.is-live::before {
  background: #d0a64c !important;
  box-shadow:
    0 0 8px rgba(208,166,76,.76),
    0 0 20px rgba(230,57,70,.58),
    0 0 34px rgba(112,27,51,.42) !important;
}

.nm-heatmap__legend {
  background: rgba(0,0,0,.48) !important;
  border-color: rgba(235,232,220,.10) !important;
  color: rgba(235,232,220,.58) !important;
  font-family: "Barlow Condensed", "IBM Plex Mono", monospace !important;
  font-size: 13px !important;
  letter-spacing: .18em !important;
}

/* Mobile: keep title and coordinates elegant and non-overlapping. */
@media (max-width: 620px) {
  .nm-heatmap__brand {
    left: 6.2% !important;
    bottom: 3.7% !important;
    max-width: 42% !important;
    font-size: clamp(22px, 6.8vw, 34px) !important;
    letter-spacing: .22em !important;
  }

  .nm-heatmap__coords {
    right: 6.2% !important;
    bottom: 3.85% !important;
    max-width: 50% !important;
    font-size: clamp(13px, 4.2vw, 20px) !important;
    letter-spacing: .10em !important;
  }

  .nm-heatmap__label-gdynia {
    left: 66% !important;
    top: 25.5% !important;
  }

  .nm-heatmap__label-srodmiescie {
    left: 66% !important;
    top: 29.5% !important;
  }
}


/* =========================================================
   NOISEMAP HEATMAP v005
   Lat/lon projection + 666 m clustering + mobile touch area.
   ========================================================= */

.nm-heatmap__pin {
  width: 48px !important;
  height: 48px !important;
}

.nm-heatmap__pin::before {
  inset: 18px !important;
}

.nm-heatmap__pin::after {
  inset: 13px !important;
}

.nm-heatmap__pin.is-cluster::before {
  inset: 14px !important;
  background:
    radial-gradient(circle, #d0a64c 0 28%, #e63946 58%, #701b33 100%) !important;
  box-shadow:
    0 0 10px rgba(208,166,76,.72),
    0 0 22px rgba(230,57,70,.60),
    0 0 42px rgba(112,27,51,.46) !important;
}

.nm-heatmap__pin.is-cluster::after {
  inset: 7px !important;
  border-color: rgba(208,166,76,.48) !important;
}

.nm-heatmap__cluster-count {
  position: absolute;
  left: 50%;
  top: 50%;
  z-index: 4;
  transform: translate(-50%, -50%);
  color: rgba(3,5,7,.92);
  font-family: "Barlow Condensed", Inter, sans-serif;
  font-size: 12px;
  font-weight: 800;
  line-height: 1;
  pointer-events: none;
}

.nm-heatmap__event-link {
  grid-template-columns: 68px 1fr auto !important;
}


/* =========================================================
   NOISEMAP HEATMAP v006
   More visible teal city-veins + restored maritime radar sweep.
   Keeps v005 lat/lon projection and 666 m clustering.
   ========================================================= */

.nm-heatmap__map {
  filter:
    saturate(.92)
    brightness(.92)
    contrast(1.18) !important;
}

.nm-heatmap__map::after {
  background:
    repeating-linear-gradient(
      0deg,
      rgba(235,232,220,.020) 0 1px,
      transparent 1px 4px
    ),
    radial-gradient(
      circle at 48% 48%,
      transparent 0 46%,
      rgba(0,0,0,.20) 72%,
      rgba(0,0,0,.64) 100%
    ),
    linear-gradient(
      180deg,
      rgba(0,0,0,.06),
      rgba(42,5,13,.13) 68%,
      rgba(0,0,0,.38)
    ) !important;
  opacity: .78 !important;
}

/* Restore the “living city veins” impression. */
.nm-heatmap {
  background:
    radial-gradient(circle at 62% 28%, rgba(42,155,155,.16), transparent 36%),
    radial-gradient(circle at 44% 70%, rgba(112,27,51,.18), transparent 38%),
    #010305 !important;
}

/* Radar should be visible again, but still maritime/dirty. */
.nm-heatmap__rings {
  border-color: rgba(70,182,176,.090) !important;
  box-shadow:
    0 0 0 78px rgba(70,182,176,.022),
    0 0 0 175px rgba(70,182,176,.017),
    0 0 0 290px rgba(70,182,176,.012) !important;
}

.nm-heatmap__sweep {
  opacity: .72 !important;
  mix-blend-mode: screen;
}

.nm-heatmap__sweep::before {
  background: conic-gradient(
    from -10deg,
    rgba(70,182,176,0) 0deg,
    rgba(70,182,176,0) 314deg,
    rgba(70,182,176,.12) 336deg,
    rgba(220,255,245,.34) 356deg,
    rgba(70,182,176,0) 360deg
  ) !important;
  filter: blur(1px) !important;
}

/* Labels: still subtle, but not swallowed by the background. */
.nm-heatmap__map-label {
  color: rgba(235,232,220,.48) !important;
  text-shadow:
    0 0 8px rgba(0,0,0,.95),
    0 0 18px rgba(0,0,0,.76),
    0 0 8px rgba(70,182,176,.10) !important;
}

.nm-heatmap__map-label--city {
  color: rgba(235,232,220,.58) !important;
}

.nm-heatmap__map-label--district {
  color: rgba(235,232,220,.39) !important;
}

/* Event energy: keep it dirty, reduce clean promo-yellow feel. */
.nm-heatmap__energy {
  background:
    radial-gradient(
      circle,
      rgba(201,168,76,.34),
      rgba(158,58,33,.25) 38%,
      rgba(112,27,51,.13) 58%,
      rgba(112,27,51,0) 76%
    ) !important;
  filter: blur(14px) !important;
  opacity: .86 !important;
}

/* Pins / clusters readable but less candy-like. */
.nm-heatmap__pin::before {
  box-shadow:
    0 0 6px rgba(230,57,70,.82),
    0 0 16px rgba(112,27,51,.68),
    0 0 22px rgba(0,0,0,.42) !important;
}

.nm-heatmap__pin.is-event::before {
  background: #c29a45 !important;
  box-shadow:
    0 0 7px rgba(194,154,69,.72),
    0 0 18px rgba(112,27,51,.64),
    0 0 24px rgba(0,0,0,.46) !important;
}

.nm-heatmap__pin.is-cluster::before {
  background:
    radial-gradient(circle, #c29a45 0 26%, #d84545 56%, #701b33 100%) !important;
}

/* Bottom map caption: keep elegant, not too hidden. */
.nm-heatmap__brand {
  color: rgba(235,232,220,.82) !important;
}

.nm-heatmap__coords {
  color: rgba(235,232,220,.64) !important;
}


/* =========================================================
   NOISEMAP HEATMAP v007
   Clean base-map.svg + lat/lon labels overlay.
   ========================================================= */

.nm-heatmap__map {
  background-color: #020709 !important;
  filter: saturate(1.08) brightness(1.02) contrast(1.12) !important;
}

.nm-heatmap__map::after {
  background:
    repeating-linear-gradient(
      0deg,
      rgba(235,232,220,.016) 0 1px,
      transparent 1px 4px
    ),
    radial-gradient(
      circle at 50% 50%,
      transparent 0 52%,
      rgba(0,0,0,.24) 78%,
      rgba(0,0,0,.58) 100%
    ),
    linear-gradient(
      180deg,
      rgba(0,0,0,.00),
      rgba(42,5,13,.10) 70%,
      rgba(0,0,0,.30)
    ) !important;
  opacity: .70 !important;
}

.nm-heatmap__labels::before {
  display: none !important;
}

.nm-heatmap__map-label {
  position: absolute;
  transform: translate(-50%, -50%);
  white-space: nowrap;
  font-family: "Barlow Condensed", "Space Grotesk", Inter, system-ui, sans-serif !important;
  text-transform: uppercase;
  text-align: center;
  pointer-events: none;
  text-shadow:
    0 0 7px rgba(0,0,0,.95),
    0 0 18px rgba(0,0,0,.76) !important;
}

.nm-heatmap__map-label--city {
  color: rgba(235,232,220,.50) !important;
  font-size: clamp(17px, 3.25vw, 25px) !important;
  font-weight: 600 !important;
  letter-spacing: .23em !important;
}

.nm-heatmap__map-label--district {
  color: rgba(235,232,220,.32) !important;
  font-size: clamp(10px, 1.82vw, 14px) !important;
  font-weight: 600 !important;
  letter-spacing: .17em !important;
}

.nm-heatmap__sweep {
  opacity: .78 !important;
}

.nm-heatmap__sweep::before {
  background: conic-gradient(
    from -10deg,
    rgba(70,182,176,0) 0deg,
    rgba(70,182,176,0) 312deg,
    rgba(70,182,176,.14) 337deg,
    rgba(220,255,245,.40) 356deg,
    rgba(70,182,176,0) 360deg
  ) !important;
  filter: blur(.9px) !important;
}


/* =========================================================
   NOISEMAP HEATMAP v008
   Label collision engine styling + xerox/noise typography.
   ========================================================= */

.nm-heatmap__map-label {
  opacity: .86;
  mix-blend-mode: screen;
  filter: blur(.18px) contrast(1.08);
  text-shadow:
    0 0 2px rgba(235,232,220,.18),
    0 0 8px rgba(0,0,0,.96),
    0 0 19px rgba(0,0,0,.82),
    1px 0 0 rgba(112,27,51,.12),
    -1px 0 0 rgba(70,182,176,.10) !important;
}

.nm-heatmap__map-label--city {
  color: rgba(226,224,211,.48) !important;
  font-size: clamp(15px, 2.95vw, 23px) !important;
  font-weight: 600 !important;
  letter-spacing: .24em !important;
}

.nm-heatmap__map-label--district {
  color: rgba(226,224,211,.30) !important;
  font-size: clamp(9px, 1.62vw, 13px) !important;
  font-weight: 600 !important;
  letter-spacing: .18em !important;
}

.nm-heatmap__coords {
  white-space: nowrap !important;
  right: 6.4% !important;
  bottom: 3.7% !important;
  max-width: 62% !important;
  font-size: clamp(10px, 2.75vw, 15px) !important;
  letter-spacing: .105em !important;
  color: rgba(235,232,220,.54) !important;
}

.nm-heatmap__brand {
  max-width: 42% !important;
  font-size: clamp(22px, 5.0vw, 38px) !important;
  color: rgba(235,232,220,.74) !important;
}

.nm-heatmap__sweep {
  opacity: .86 !important;
}

.nm-heatmap__sweep::before {
  background: conic-gradient(
    from -10deg,
    rgba(70,182,176,0) 0deg,
    rgba(70,182,176,0) 310deg,
    rgba(70,182,176,.16) 337deg,
    rgba(232,255,248,.46) 356deg,
    rgba(70,182,176,0) 360deg
  ) !important;
  filter: blur(.75px) !important;
}

@media (max-width: 620px) {
  .nm-heatmap__coords {
    font-size: clamp(9px, 3.1vw, 13px) !important;
    letter-spacing: .075em !important;
    max-width: 60% !important;
  }

  .nm-heatmap__brand {
    max-width: 40% !important;
    font-size: clamp(20px, 6.2vw, 31px) !important;
    letter-spacing: .20em !important;
  }
}


/* v011 — label taxonomy: transport/landmark is not a district */
.nm-heatmap__map-label--transport {
  color: rgba(226,224,211,.22) !important;
  font-size: clamp(8px, 1.35vw, 11px) !important;
  font-weight: 500 !important;
  letter-spacing: .16em !important;
}

.nm-heatmap__map-label.is-hidden-at-base {
  display: none !important;
}


/* =========================================================
   NOISEMAP HEATMAP v012
   2-second blur/fade map load to remove visual jump.
   ========================================================= */

.nm-heatmap {
  --nmhm-load-duration: 2s;
}

.nm-heatmap__map {
  opacity: 0;
  filter:
    saturate(1.05)
    brightness(.58)
    contrast(1.02)
    blur(10px) !important;
  transform: scale(1.025);
  transition:
    opacity var(--nmhm-load-duration) ease,
    filter var(--nmhm-load-duration) ease,
    transform var(--nmhm-load-duration) ease;
  will-change: opacity, filter, transform;
}

.nm-heatmap.is-map-loaded .nm-heatmap__map {
  opacity: 1;
  filter:
    saturate(1.18)
    brightness(1.16)
    contrast(1.08)
    blur(0) !important;
  transform: scale(1);
}

.nm-heatmap__labels,
.nm-heatmap__pins,
.nm-heatmap__energies,
.nm-heatmap__rings,
.nm-heatmap__radar-origin,
.nm-heatmap__legend,
.nm-heatmap__brand,
.nm-heatmap__coords {
  opacity: 0;
  transition: opacity .85s ease;
}

.nm-heatmap.is-map-loaded .nm-heatmap__labels,
.nm-heatmap.is-map-loaded .nm-heatmap__pins,
.nm-heatmap.is-map-loaded .nm-heatmap__energies,
.nm-heatmap.is-map-loaded .nm-heatmap__rings,
.nm-heatmap.is-map-loaded .nm-heatmap__radar-origin,
.nm-heatmap.is-map-loaded .nm-heatmap__legend,
.nm-heatmap.is-map-loaded .nm-heatmap__brand,
.nm-heatmap.is-map-loaded .nm-heatmap__coords {
  opacity: 1;
}

.nm-heatmap.is-map-loaded .nm-heatmap__labels {
  transition-delay: .35s;
}

.nm-heatmap.is-map-loaded .nm-heatmap__pins,
.nm-heatmap.is-map-loaded .nm-heatmap__energies {
  transition-delay: .55s;
}

.nm-heatmap.is-map-loaded .nm-heatmap__radar-origin,
.nm-heatmap.is-map-loaded .nm-heatmap__rings {
  transition-delay: .75s;
}

@media (prefers-reduced-motion: reduce) {
  .nm-heatmap__map,
  .nm-heatmap__labels,
  .nm-heatmap__pins,
  .nm-heatmap__energies,
  .nm-heatmap__rings,
  .nm-heatmap__radar-origin,
  .nm-heatmap__legend,
  .nm-heatmap__brand,
  .nm-heatmap__coords {
    transition: none !important;
  }

  .nm-heatmap__map {
    opacity: 1 !important;
    transform: none !important;
    filter:
      saturate(1.18)
      brightness(1.16)
      contrast(1.08)
      blur(0) !important;
  }
}


/* =========================================================
   NOISEMAP HEATMAP v013
   Maritime radar beam: narrow sweep + event ping.
   ========================================================= */

.nm-heatmap__sweep {
  opacity: .95 !important;
  mix-blend-mode: screen !important;
  animation: nmhm-sweep 8s linear infinite !important;
}

/* Short, dirty radar tail — no quarter-circle reflector. */
.nm-heatmap__sweep::before {
  content: "" !important;
  position: absolute !important;
  inset: 0 !important;
  background: conic-gradient(
    from -8deg,
    rgba(70,182,176,0) 0deg,
    rgba(70,182,176,0) 342deg,
    rgba(70,182,176,.025) 348deg,
    rgba(70,182,176,.070) 353deg,
    rgba(70,182,176,.16) 357deg,
    rgba(70,182,176,0) 360deg
  ) !important;
  filter: blur(1.4px) !important;
}


.nm-heatmap__sweep::after {
  content: "" !important;
  position: absolute !important;
  left: 0 !important;
  top: -1px !important;
  width: 92vmax !important;
  height: 2px !important;
  transform-origin: left center !important;
  background: linear-gradient(
    90deg,
    rgba(232,255,248,.92) 0%,
    rgba(94,238,224,.72) 18%,
    rgba(70,182,176,.30) 54%,
    rgba(70,182,176,0) 100%
  ) !important;
  box-shadow:
    0 0 5px rgba(232,255,248,.62),
    0 0 14px rgba(70,182,176,.48),
    0 0 28px rgba(70,182,176,.22) !important;
  filter: blur(.25px) !important;
}

/* Radar ping when beam reaches a venue/event. */
.nm-heatmap__pin.is-radar-hit::before {
  transform: scale(1.18);
  filter: brightness(1.35);
}

.nm-heatmap__pin.is-radar-hit::after {
  animation: nmhm-radar-hit .82s ease-out 1 !important;
  border-color: rgba(232,255,248,.70) !important;
}

.nm-heatmap__pin.is-radar-hit.is-event::after,
.nm-heatmap__pin.is-radar-hit.is-live::after,
.nm-heatmap__pin.is-radar-hit.is-cluster::after {
  border-color: rgba(201,168,76,.90) !important;
}

@keyframes nmhm-radar-hit {
  0% {
    opacity: .95;
    transform: scale(.60);
    box-shadow:
      0 0 4px rgba(232,255,248,.65),
      0 0 18px rgba(70,182,176,.36);
  }
  55% {
    opacity: .58;
    transform: scale(2.35);
  }
  100% {
    opacity: 0;
    transform: scale(3.15);
    box-shadow:
      0 0 4px rgba(232,255,248,0),
      0 0 24px rgba(70,182,176,0);
  }
}


/* =========================================================
   NOISEMAP HEATMAP v014
   4s cinematic fade-in + darker dirty radar beam.
   Radar rotation and pings are JS-synchronized.
   ========================================================= */

.nm-heatmap {
  --nmhm-load-duration: 4s !important;
}

.nm-heatmap__map {
  transition:
    opacity 4s ease,
    filter 4s ease,
    transform 4s ease !important;
}

.nm-heatmap__labels,
.nm-heatmap__pins,
.nm-heatmap__energies,
.nm-heatmap__rings,
.nm-heatmap__radar-origin,
.nm-heatmap__legend,
.nm-heatmap__brand,
.nm-heatmap__coords {
  transition: opacity 1.35s ease !important;
}

.nm-heatmap.is-map-loaded .nm-heatmap__labels {
  transition-delay: 1.05s !important;
}

.nm-heatmap.is-map-loaded .nm-heatmap__pins,
.nm-heatmap.is-map-loaded .nm-heatmap__energies {
  transition-delay: 1.35s !important;
}

.nm-heatmap.is-map-loaded .nm-heatmap__radar-origin,
.nm-heatmap.is-map-loaded .nm-heatmap__rings {
  transition-delay: 1.65s !important;
}

/* JS controls exact rotation from v014 onward. */
.nm-heatmap__sweep {
  animation: none !important;
  opacity: .78 !important;
  mix-blend-mode: screen !important;
  will-change: transform;
}

/* Dirty, short maritime radar tail. */
.nm-heatmap__sweep::before {
  background: conic-gradient(
    from -8deg,
    rgba(36,116,112,0) 0deg,
    rgba(36,116,112,0) 345deg,
    rgba(36,116,112,.018) 350deg,
    rgba(54,150,142,.050) 354deg,
    rgba(132,190,176,.105) 357deg,
    rgba(36,116,112,0) 360deg
  ) !important;
  filter:
    blur(2.1px)
    contrast(.92)
    saturate(.80) !important;
  opacity: .82 !important;
}


.nm-heatmap__sweep::after {
  height: 2px !important;
  background: linear-gradient(
    90deg,
    rgba(205,232,220,.62) 0%,
    rgba(76,172,158,.45) 18%,
    rgba(44,122,116,.22) 52%,
    rgba(44,122,116,0) 100%
  ) !important;
  box-shadow:
    0 0 4px rgba(205,232,220,.34),
    0 0 12px rgba(70,182,176,.26),
    0 0 26px rgba(36,116,112,.14) !important;
  filter:
    blur(.55px)
    saturate(.82)
    contrast(.92) !important;
}

/* Ping echoes: dirtier, less clean neon. */
.nm-heatmap__pin.is-radar-hit::before {
  transform: scale(1.12);
  filter: brightness(1.18) saturate(.92);
}

.nm-heatmap__pin.is-radar-hit::after {
  animation: nmhm-radar-hit-v014 .92s ease-out 1 !important;
  border-color: rgba(205,232,220,.54) !important;
}

.nm-heatmap__pin.is-radar-hit.is-event::after,
.nm-heatmap__pin.is-radar-hit.is-live::after,
.nm-heatmap__pin.is-radar-hit.is-cluster::after {
  border-color: rgba(201,168,76,.72) !important;
}

@keyframes nmhm-radar-hit-v014 {
  0% {
    opacity: .82;
    transform: scale(.60);
    box-shadow:
      0 0 4px rgba(205,232,220,.38),
      0 0 16px rgba(70,182,176,.22),
      0 0 22px rgba(112,27,51,.18);
  }
  58% {
    opacity: .44;
    transform: scale(2.15);
  }
  100% {
    opacity: 0;
    transform: scale(3.00);
    box-shadow:
      0 0 4px rgba(205,232,220,0),
      0 0 22px rgba(70,182,176,0),
      0 0 30px rgba(112,27,51,0);
  }
}


/* =========================================================
   NOISEMAP HEATMAP v015
   Stable radar sweep repair.
   JS rotates the sweep; CSS fallback keeps it visible.
   ========================================================= */

.nm-heatmap__radar-origin {
  z-index: 6 !important;
  opacity: 1;
  pointer-events: none;
}

.nm-heatmap__sweep {
  opacity: .72 !important;
  mix-blend-mode: screen !important;
  will-change: transform !important;
  transform-origin: 0 0 !important;
}

/* Fallback only. JS overwrites transform frame-by-frame. */
.nm-heatmap:not(.is-js-radar-active) .nm-heatmap__sweep {
  animation: nmhm-sweep 8s linear infinite !important;
}

.nm-heatmap.is-js-radar-active .nm-heatmap__sweep {
  animation: none !important;
}

.nm-heatmap__sweep::before {
  background: conic-gradient(
    from -8deg,
    rgba(36,116,112,0) 0deg,
    rgba(36,116,112,0) 345deg,
    rgba(36,116,112,.018) 350deg,
    rgba(54,150,142,.050) 354deg,
    rgba(132,190,176,.105) 357deg,
    rgba(36,116,112,0) 360deg
  ) !important;
  filter: blur(2.1px) contrast(.92) saturate(.80) !important;
  opacity: .82 !important;
}

.nm-heatmap__sweep::after {
  content: "" !important;
  position: absolute !important;
  left: 0 !important;
  top: -1px !important;
  width: 92vmax !important;
  height: 2px !important;
  transform-origin: left center !important;
  background: linear-gradient(
    90deg,
    rgba(205,232,220,.58) 0%,
    rgba(76,172,158,.42) 18%,
    rgba(44,122,116,.20) 52%,
    rgba(44,122,116,0) 100%
  ) !important;
  box-shadow:
    0 0 4px rgba(205,232,220,.30),
    0 0 12px rgba(70,182,176,.22),
    0 0 26px rgba(36,116,112,.12) !important;
  filter: blur(.55px) saturate(.82) contrast(.92) !important;
}


/* =========================================================
   NOISEMAP HEATMAP v016
   Radar boot: sweep + title + coordinates visible before full map.
   ========================================================= */

/* During loading, keep a dark blurred map hint instead of total black. */
.nm-heatmap:not(.is-map-loaded) .nm-heatmap__map {
  opacity: .34 !important;
  filter:
    saturate(.76)
    brightness(.46)
    contrast(1.04)
    blur(13px) !important;
  transform: scale(1.035) !important;
}

/* Radar system starts immediately. */
.nm-heatmap .nm-heatmap__radar-origin,
.nm-heatmap .nm-heatmap__rings,
.nm-heatmap .nm-heatmap__brand,
.nm-heatmap .nm-heatmap__coords {
  opacity: 1 !important;
}

/* Brand/coords boot look: visible, but not screaming. */
.nm-heatmap:not(.is-map-loaded) .nm-heatmap__brand {
  color: rgba(235,232,220,.66) !important;
  text-shadow:
    0 0 12px rgba(0,0,0,.92),
    0 0 22px rgba(112,27,51,.24) !important;
}

.nm-heatmap:not(.is-map-loaded) .nm-heatmap__coords {
  color: rgba(235,232,220,.46) !important;
  text-shadow:
    0 0 10px rgba(0,0,0,.92),
    0 0 18px rgba(0,0,0,.70) !important;
}

/* Keep detailed data layers delayed until map resolves. */
.nm-heatmap:not(.is-map-loaded) .nm-heatmap__labels,
.nm-heatmap:not(.is-map-loaded) .nm-heatmap__pins,
.nm-heatmap:not(.is-map-loaded) .nm-heatmap__energies,
.nm-heatmap:not(.is-map-loaded) .nm-heatmap__legend {
  opacity: 0 !important;
}

/* Radar visible during boot, slightly ghosted. */
.nm-heatmap:not(.is-map-loaded) .nm-heatmap__sweep {
  opacity: .58 !important;
}

.nm-heatmap:not(.is-map-loaded) .nm-heatmap__rings {
  opacity: .55 !important;
}

/* After load, restore normal layer timing. */
.nm-heatmap.is-map-loaded .nm-heatmap__brand,
.nm-heatmap.is-map-loaded .nm-heatmap__coords,
.nm-heatmap.is-map-loaded .nm-heatmap__radar-origin,
.nm-heatmap.is-map-loaded .nm-heatmap__rings {
  opacity: 1 !important;
}


/* =========================================================
   NOISEMAP HEATMAP v017
   Active legend filters: Koncerty / Wydarzenia / Kluby / Puby
   Time range: Dziś / Jutro / Ten tydzień / Miesiąc
   ========================================================= */

.nm-heatmap__legend {
  left: 18px !important;
  right: auto !important;
  top: 18px !important;
  display: grid !important;
  gap: 8px !important;
  align-items: stretch !important;
  padding: 12px !important;
  border-radius: 18px !important;
  background:
    linear-gradient(145deg, rgba(3,7,9,.74), rgba(18,4,9,.58)) !important;
  backdrop-filter: blur(10px);
  font-family: "Barlow Condensed", Inter, system-ui, sans-serif !important;
  letter-spacing: .08em !important;
  max-width: min(86%, 360px);
}

.nm-heatmap__controls-title {
  color: rgba(235,232,220,.72);
  font-size: 15px;
  font-weight: 600;
  letter-spacing: .18em;
  text-transform: uppercase;
  line-height: 1;
}

.nm-heatmap__layer-row,
.nm-heatmap__range-row {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
}

.nm-heatmap__toggle,
.nm-heatmap__range {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 28px;
  border: 1px solid rgba(235,232,220,.12);
  border-radius: 999px;
  padding: 6px 9px;
  background: rgba(0,0,0,.28);
  color: rgba(235,232,220,.58);
  font: inherit;
  font-size: 13px;
  font-weight: 500;
  letter-spacing: .08em;
  text-transform: uppercase;
  cursor: pointer;
}

.nm-heatmap__toggle.is-active,
.nm-heatmap__range.is-active {
  border-color: rgba(235,232,220,.22);
  color: rgba(235,232,220,.84);
  background: rgba(255,255,255,.055);
}

.nm-heatmap__toggle-dot {
  width: 8px;
  height: 8px;
  border-radius: 999px;
  background: var(--dot, #e63946);
  box-shadow: 0 0 8px var(--dot, #e63946);
}

.nm-heatmap__toggle[data-layer="concert"] {
  --dot: #e63946;
}

.nm-heatmap__toggle[data-layer="event"] {
  --dot: #c29a45;
}

.nm-heatmap__toggle[data-layer="club"] {
  --dot: #e63946;
}

.nm-heatmap__toggle[data-layer="pub"] {
  --dot: #6f6a8c;
}

.nm-heatmap__pin.is-pub::before {
  inset: 20px !important;
  background: #6f6a8c !important;
  box-shadow:
    0 0 5px rgba(111,106,140,.58),
    0 0 12px rgba(70,182,176,.16) !important;
}

.nm-heatmap__pin.is-pub::after {
  inset: 15px !important;
  border-color: rgba(111,106,140,.40) !important;
}

.nm-heatmap__pin.is-concert::before {
  background: #e63946 !important;
}

.nm-heatmap__pin.is-event::before {
  background: #c29a45 !important;
}

.nm-heatmap__pin.is-club::before {
  background: #e63946 !important;
}

.nm-heatmap__auto-note {
  color: rgba(235,232,220,.42);
  font-size: 11px;
  letter-spacing: .07em;
  line-height: 1.2;
  display: none;
}

.nm-heatmap__auto-note.is-visible {
  display: block;
}

@media (max-width: 620px) {
  .nm-heatmap__legend {
    left: 12px !important;
    top: 12px !important;
    right: 12px !important;
    max-width: none;
    padding: 10px !important;
  }

  .nm-heatmap__controls-title {
    font-size: 13px;
  }

  .nm-heatmap__toggle,
  .nm-heatmap__range {
    min-height: 26px;
    font-size: 12px;
    padding: 5px 8px;
  }
}


/* =========================================================
   NOISEMAP HEATMAP v018
   Collapsible Radar Sceny panel.
   Opens on load, auto-minimizes after 3s, click toggles.
   ========================================================= */

.nm-heatmap__legend {
  overflow: hidden !important;
  transition:
    max-height .46s ease,
    width .46s ease,
    padding .34s ease,
    background .34s ease,
    border-color .34s ease,
    opacity .34s ease !important;
  max-height: 240px;
}

.nm-heatmap__legend-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  width: 100%;
  border: 0;
  padding: 0;
  margin: 0;
  background: transparent;
  color: rgba(235,232,220,.74);
  font-family: "Barlow Condensed", Inter, system-ui, sans-serif;
  cursor: pointer;
  text-align: left;
}

.nm-heatmap__controls-title {
  pointer-events: none;
}

.nm-heatmap__legend-caret {
  display: inline-grid;
  place-items: center;
  width: 18px;
  height: 18px;
  flex: 0 0 auto;
  color: rgba(230,57,70,.78);
  filter:
    drop-shadow(0 0 5px rgba(230,57,70,.28))
    drop-shadow(0 0 10px rgba(112,27,51,.20));
  transition:
    transform .34s ease,
    color .34s ease,
    opacity .34s ease;
}

.nm-heatmap__legend-caret::before {
  content: "";
  width: 0;
  height: 0;
  border-left: 5px solid rgba(230,57,70,.78);
  border-top: 4px solid transparent;
  border-bottom: 4px solid transparent;
  transform: translateX(1px);
}

.nm-heatmap__legend.is-open .nm-heatmap__legend-caret {
  transform: rotate(90deg);
  color: rgba(235,232,220,.74);
}

.nm-heatmap__legend-body {
  display: grid;
  gap: 8px;
  opacity: 1;
  transform: translateY(0);
  transition:
    opacity .30s ease,
    transform .30s ease;
}

.nm-heatmap__legend:not(.is-open) {
  max-height: 42px !important;
  width: auto !important;
  padding: 12px 14px !important;
  background:
    linear-gradient(145deg, rgba(3,7,9,.70), rgba(18,4,9,.48)) !important;
  border-color: rgba(235,232,220,.10) !important;
}

.nm-heatmap__legend:not(.is-open) .nm-heatmap__legend-body {
  opacity: 0;
  transform: translateY(-8px);
  pointer-events: none;
}

.nm-heatmap__legend:not(.is-open) .nm-heatmap__controls-title {
  color: rgba(235,232,220,.70);
}

.nm-heatmap__legend:not(.is-open) .nm-heatmap__legend-head {
  min-width: 138px;
}

.nm-heatmap__legend.is-open {
  max-height: 260px !important;
}

@media (max-width: 620px) {
  .nm-heatmap__legend:not(.is-open) {
    right: auto !important;
    width: auto !important;
    max-width: calc(100% - 24px) !important;
  }

  .nm-heatmap__legend:not(.is-open) .nm-heatmap__legend-head {
    min-width: 126px;
  }
}


/* =========================================================
   NOISEMAP HEATMAP v019
   Narrower Radar Sceny panel + draggable collapsed state.
   ========================================================= */

.nm-heatmap__legend {
  max-width: min(78%, 318px) !important;
}

.nm-heatmap__legend.is-open {
  max-height: 260px !important;
  width: min(78%, 318px) !important;
}

.nm-heatmap__legend:not(.is-open) {
  max-height: 40px !important;
  width: auto !important;
  min-width: 118px !important;
  padding: 10px 12px !important;
  cursor: grab;
  user-select: none;
  touch-action: none;
}

.nm-heatmap__legend:not(.is-open):active {
  cursor: grabbing;
}

.nm-heatmap__legend:not(.is-open) .nm-heatmap__legend-head {
  min-width: 104px !important;
  gap: 10px !important;
  cursor: grab;
}

.nm-heatmap__legend:not(.is-open) .nm-heatmap__controls-title {
  font-size: 13px !important;
  letter-spacing: .15em !important;
}

.nm-heatmap__legend:not(.is-open) .nm-heatmap__legend-caret {
  width: 15px !important;
  height: 15px !important;
}

.nm-heatmap__legend.is-dragging {
  transition: none !important;
  cursor: grabbing !important;
}

.nm-heatmap__legend.is-dragging .nm-heatmap__legend-head {
  cursor: grabbing !important;
}

@media (max-width: 620px) {
  .nm-heatmap__legend {
    max-width: min(82%, 310px) !important;
  }

  .nm-heatmap__legend.is-open {
    width: min(82%, 310px) !important;
  }

  .nm-heatmap__legend:not(.is-open) {
    right: auto !important;
    width: auto !important;
    min-width: 112px !important;
  }
}


/* =========================================================
   NOISEMAP HEATMAP v020
   Mobile-first drag for collapsed Radar Sceny.
   Long-press / touch-drag friendly.
   ========================================================= */

.nm-heatmap__legend:not(.is-open) {
  touch-action: none !important;
  -webkit-user-select: none !important;
  user-select: none !important;
}

.nm-heatmap__legend:not(.is-open) .nm-heatmap__legend-head {
  touch-action: none !important;
  -webkit-user-select: none !important;
  user-select: none !important;
}

.nm-heatmap__legend.is-touch-armed {
  outline: 1px solid rgba(230,57,70,.28);
  box-shadow:
    0 0 0 1px rgba(230,57,70,.08) inset,
    0 0 18px rgba(112,27,51,.28) !important;
}

.nm-heatmap__legend.is-dragging {
  transition: none !important;
  opacity: .92 !important;
  transform: scale(.985);
}


/* =========================================================
   NOISEMAP HEATMAP v021
   Mobile drag fix: position via CSS variables with !important.
   ========================================================= */

.nm-heatmap__legend.is-custom-position {
  left: var(--nm-radar-left, 12px) !important;
  top: var(--nm-radar-top, 12px) !important;
  right: auto !important;
  bottom: auto !important;
}

.nm-heatmap__legend.is-custom-position:not(.is-open) {
  left: var(--nm-radar-left, 12px) !important;
  top: var(--nm-radar-top, 12px) !important;
  right: auto !important;
  bottom: auto !important;
}

.nm-heatmap__legend.is-dragging {
  z-index: 80 !important;
  opacity: .94 !important;
  transform: scale(.985) !important;
  transition: none !important;
}

.nm-heatmap__legend.is-touch-armed:not(.is-open) {
  outline: 1px solid rgba(230,57,70,.42) !important;
}


/* =========================================================
   NOISEMAP HEATMAP v023
   True compact collapsed panel + better non-obstruction spawn.
   ========================================================= */

.nm-heatmap__legend {
  box-sizing: border-box !important;
}

/* Expanded: panel z filtrami. */
.nm-heatmap__legend.is-open {
  width: min(78%, 318px) !important;
  max-width: min(78%, 318px) !important;
  min-width: 250px !important;
  max-height: 270px !important;
}

/* Collapsed: tylko napis + trójkąt. */
.nm-heatmap__legend:not(.is-open) {
  display: inline-flex !important;
  width: auto !important;
  min-width: 0 !important;
  max-width: none !important;
  max-height: 38px !important;
  padding: 9px 11px !important;
  overflow: hidden !important;
}

.nm-heatmap__legend:not(.is-open) .nm-heatmap__legend-head {
  display: inline-flex !important;
  width: auto !important;
  min-width: 0 !important;
  max-width: none !important;
  flex: 0 0 auto !important;
  gap: 9px !important;
  white-space: nowrap !important;
}

.nm-heatmap__legend:not(.is-open) .nm-heatmap__controls-title {
  display: inline-block !important;
  width: auto !important;
  min-width: 0 !important;
  max-width: none !important;
  white-space: nowrap !important;
  font-size: 13px !important;
  letter-spacing: .14em !important;
  line-height: 1 !important;
}

.nm-heatmap__legend:not(.is-open) .nm-heatmap__legend-caret {
  flex: 0 0 14px !important;
  width: 14px !important;
  height: 14px !important;
}

.nm-heatmap__legend:not(.is-open) .nm-heatmap__legend-body,
.nm-heatmap__legend:not(.is-open) .nm-heatmap__layer-row,
.nm-heatmap__legend:not(.is-open) .nm-heatmap__range-row,
.nm-heatmap__legend:not(.is-open) .nm-heatmap__auto-note {
  display: none !important;
}

/* Auto/custom positions must override older left/right rules. */
.nm-heatmap__legend.is-auto-position {
  left: var(--nm-radar-auto-left, 12px) !important;
  top: var(--nm-radar-auto-top, 12px) !important;
  right: auto !important;
  bottom: auto !important;
}

.nm-heatmap__legend.is-custom-position {
  left: var(--nm-radar-left, 12px) !important;
  top: var(--nm-radar-top, 12px) !important;
  right: auto !important;
  bottom: auto !important;
}

@media (max-width: 620px) {
  .nm-heatmap__legend.is-open {
    width: min(82%, 310px) !important;
    max-width: min(82%, 310px) !important;
    min-width: 246px !important;
  }

  .nm-heatmap__legend:not(.is-open) {
    width: auto !important;
    min-width: 0 !important;
    max-width: none !important;
    right: auto !important;
  }
}


/* =========================================================
   NOISEMAP HEATMAP v025
   Scrollable popover for dense event lists.
   ========================================================= */

.nm-heatmap__popover {
  max-height: min(62vh, 520px) !important;
  display: flex !important;
  flex-direction: column !important;
  overflow: hidden !important;
}

.nm-heatmap__popover-header {
  flex: 0 0 auto !important;
  position: sticky !important;
  top: 0 !important;
  z-index: 2 !important;
  background:
    linear-gradient(180deg, rgba(20,3,8,.96), rgba(20,3,8,.84)) !important;
  backdrop-filter: blur(8px);
}

.nm-heatmap__event-list {
  flex: 1 1 auto !important;
  overflow-y: auto !important;
  overflow-x: hidden !important;
  max-height: min(50vh, 430px) !important;
  overscroll-behavior: contain !important;
  -webkit-overflow-scrolling: touch !important;
  padding-right: 4px !important;
}

.nm-heatmap__event-list::-webkit-scrollbar {
  width: 5px;
}

.nm-heatmap__event-list::-webkit-scrollbar-track {
  background: rgba(255,255,255,.035);
  border-radius: 999px;
}

.nm-heatmap__event-list::-webkit-scrollbar-thumb {
  background: rgba(230,57,70,.38);
  border-radius: 999px;
}

.nm-heatmap__event-list::-webkit-scrollbar-thumb:hover {
  background: rgba(230,57,70,.55);
}

@media (max-width: 620px) {
  .nm-heatmap__popover {
    max-height: 58vh !important;
  }

  .nm-heatmap__event-list {
    max-height: 46vh !important;
  }

  .nm-heatmap__event-link {
    min-height: 54px;
  }
}


/* =========================================================
   NOISEMAP HEATMAP v026
   Popover visibility repair after v025 scroll layer.
   Hidden by default, flex only when active.
   ========================================================= */

.nm-heatmap__popover {
  display: none !important;
  max-height: min(62vh, 520px) !important;
  flex-direction: column !important;
  overflow: hidden !important;
  pointer-events: none !important;
}

.nm-heatmap__popover.is-active {
  display: flex !important;
  pointer-events: auto !important;
}

.nm-heatmap__popover-header {
  flex: 0 0 auto !important;
  position: sticky !important;
  top: 0 !important;
  z-index: 4 !important;
}

.nm-heatmap__close {
  position: relative !important;
  z-index: 8 !important;
  pointer-events: auto !important;
  touch-action: manipulation !important;
}

.nm-heatmap__event-list {
  flex: 1 1 auto !important;
  overflow-y: auto !important;
  overflow-x: hidden !important;
  overscroll-behavior: contain !important;
  -webkit-overflow-scrolling: touch !important;
}


/* =========================================================
   NOISEMAP HEATMAP v030
   HD toggle badge: dirty bordeaux H + broken white D.
   ========================================================= */

.nm-heatmap__hd-btn {
  position: absolute;
  right: 14px;
  top: 14px;
  z-index: 58;
  display: none;
  align-items: center;
  justify-content: center;
  height: 28px;
  min-width: 42px;
  padding: 0 9px;
  border: 1px solid rgba(235, 232, 220, .12);
  border-radius: 8px;
  background:
    linear-gradient(145deg, rgba(3, 7, 9, .42), rgba(18, 4, 9, .36));
  backdrop-filter: blur(8px);
  font-family: "Barlow Condensed", Inter, system-ui, sans-serif;
  font-size: 17px;
  font-weight: 700;
  letter-spacing: .08em;
  line-height: 1;
  cursor: pointer;
  opacity: .76;
  box-shadow:
    0 0 0 1px rgba(255,255,255,.035) inset,
    0 8px 22px rgba(0,0,0,.34);
  touch-action: manipulation;
}

.nm-heatmap__hd-btn.is-visible {
  display: inline-flex;
}

.nm-heatmap__hd-btn:active {
  transform: scale(.96);
}

.nm-heatmap__hd-h {
  color: #701b33;
  text-shadow:
    0 0 5px rgba(112, 27, 51, .62),
    0 0 12px rgba(230, 57, 70, .18);
}

.nm-heatmap__hd-d {
  color: rgba(235, 232, 220, .88);
  text-shadow:
    0 0 5px rgba(235, 232, 220, .22);
}

.nm-heatmap__hd-btn.is-loading {
  opacity: .52;
  pointer-events: none;
}

.nm-heatmap__hd-btn.is-active {
  opacity: .96;
  border-color: rgba(230, 57, 70, .28);
  box-shadow:
    0 0 0 1px rgba(230,57,70,.12) inset,
    0 0 18px rgba(112,27,51,.28),
    0 8px 22px rgba(0,0,0,.36);
}

.nm-heatmap__hd-btn.is-active .nm-heatmap__hd-h {
  color: #8a243f;
}

.nm-heatmap__hd-btn.is-active .nm-heatmap__hd-d {
  color: rgba(255, 249, 230, .94);
}

@media (max-width: 620px) {
  .nm-heatmap__hd-btn {
    right: 12px;
    top: 12px;
    height: 26px;
    min-width: 40px;
    font-size: 16px;
    border-radius: 7px;
  }
}


/* =========================================================
   NOISEMAP HEATMAP v031
   HD zoom/pan mode. HD badge prefers top-left and avoids points.
   ========================================================= */

.nm-heatmap {
  --nmhd-scale: 1;
  --nmhd-x: 0px;
  --nmhd-y: 0px;
}

.nm-heatmap.is-hd-map {
  touch-action: none;
}

/* In HD mode the map scene transforms together.
   UI overlays remain outside this transform. */
.nm-heatmap.is-hd-map .nm-heatmap__map,
.nm-heatmap.is-hd-map .nm-heatmap__rings,
.nm-heatmap.is-hd-map .nm-heatmap__radar-origin,
.nm-heatmap.is-hd-map .nm-heatmap__labels,
.nm-heatmap.is-hd-map .nm-heatmap__energies,
.nm-heatmap.is-hd-map .nm-heatmap__pins {
  transform:
    translate3d(var(--nmhd-x), var(--nmhd-y), 0)
    scale(var(--nmhd-scale)) !important;
  transform-origin: 50% 50% !important;
  will-change: transform;
}

/* HD badge: top-left by default, smart JS may move it. */
.nm-heatmap__hd-btn {
  left: 14px !important;
  right: auto !important;
  top: 14px !important;
}

.nm-heatmap__hd-btn.is-smart-position {
  left: var(--nm-hd-left, 14px) !important;
  top: var(--nm-hd-top, 14px) !important;
  right: auto !important;
  bottom: auto !important;
}

/* Zoom controls appear only after HD is active. */
.nm-heatmap__zoom-controls {
  position: absolute;
  right: 14px;
  top: 50px;
  z-index: 58;
  display: none;
  flex-direction: column;
  gap: 6px;
  opacity: .82;
}

.nm-heatmap.is-hd-map .nm-heatmap__zoom-controls {
  display: flex;
}

.nm-heatmap__zoom-btn {
  width: 30px;
  height: 30px;
  border: 1px solid rgba(235,232,220,.12);
  border-radius: 8px;
  background:
    linear-gradient(145deg, rgba(3,7,9,.46), rgba(18,4,9,.34));
  color: rgba(235,232,220,.78);
  backdrop-filter: blur(8px);
  font-family: "Barlow Condensed", Inter, system-ui, sans-serif;
  font-size: 19px;
  font-weight: 700;
  line-height: 1;
  box-shadow:
    0 0 0 1px rgba(255,255,255,.035) inset,
    0 8px 22px rgba(0,0,0,.30);
  cursor: pointer;
  touch-action: manipulation;
}

.nm-heatmap__zoom-btn--reset {
  font-size: 13px;
  letter-spacing: .08em;
}

.nm-heatmap__zoom-btn:active {
  transform: scale(.94);
}

.nm-heatmap.is-hd-dragging {
  cursor: grabbing;
}

@media (max-width: 620px) {
  .nm-heatmap__hd-btn {
    left: 12px !important;
    top: 12px !important;
  }

  .nm-heatmap__zoom-controls {
    right: 12px;
    top: 48px;
  }

  .nm-heatmap__zoom-btn {
    width: 29px;
    height: 29px;
  }
}


/* NOISEMAP HEATMAP v032 DEBUG — visible only with ?nmdebug=1 */
.nm-hd-debug-panel {
  position: fixed;
  left: 8px;
  right: 8px;
  bottom: 8px;
  z-index: 99999;
  max-height: 42vh;
  overflow: auto;
  padding: 10px;
  border: 1px solid rgba(230,57,70,.35);
  border-radius: 10px;
  background: rgba(2, 4, 7, .92);
  color: rgba(235,232,220,.92);
  font: 11px/1.35 "IBM Plex Mono", monospace;
  white-space: pre-wrap;
  box-shadow: 0 16px 40px rgba(0,0,0,.55);
}

.nm-hd-debug-box {
  position: absolute;
  z-index: 99990;
  pointer-events: none;
  border: 1px dashed rgba(255,255,255,.28);
  background: rgba(230,57,70,.035);
}

.nm-hd-debug-box::after {
  content: attr(data-label);
  position: absolute;
  left: 2px;
  top: 2px;
  color: rgba(255,255,255,.72);
  background: rgba(0,0,0,.55);
  font: 10px "IBM Plex Mono", monospace;
  padding: 1px 3px;
}


/* =========================================================
   NOISEMAP HEATMAP v033
   Shared HD world transform.
   Fixes layer drift: map/labels/pins/energies/radar move as one scene.
   ========================================================= */

.nm-heatmap__world {
  position: absolute;
  inset: 0;
  z-index: 2;
  overflow: visible;
  pointer-events: none;
  transform:
    translate3d(var(--nmhd-x, 0px), var(--nmhd-y, 0px), 0)
    scale(var(--nmhd-scale, 1));
  transform-origin: 50% 50%;
  will-change: transform;
}

.nm-heatmap__world .nm-heatmap__map,
.nm-heatmap__world .nm-heatmap__rings,
.nm-heatmap__world .nm-heatmap__radar-origin,
.nm-heatmap__world .nm-heatmap__labels,
.nm-heatmap__world .nm-heatmap__energies,
.nm-heatmap__world .nm-heatmap__pins {
  pointer-events: none;
}

/* Critical: cancel v031 per-layer transform.
   Only WORLD may transform in HD mode. */
.nm-heatmap.is-hd-map .nm-heatmap__world .nm-heatmap__map,
.nm-heatmap.is-hd-map .nm-heatmap__world .nm-heatmap__rings,
.nm-heatmap.is-hd-map .nm-heatmap__world .nm-heatmap__radar-origin,
.nm-heatmap.is-hd-map .nm-heatmap__world .nm-heatmap__labels,
.nm-heatmap.is-hd-map .nm-heatmap__world .nm-heatmap__energies,
.nm-heatmap.is-hd-map .nm-heatmap__world .nm-heatmap__pins {
  transform: none !important;
}

/* Pins and event energy layers must have real height.
   Previously they were static / h:0, which pushed pins to the frame edge. */
.nm-heatmap__world .nm-heatmap__pins,
.nm-heatmap__world .nm-heatmap__energies,
.nm-heatmap__world .nm-heatmap__labels {
  position: absolute !important;
  inset: 0 !important;
  width: 100% !important;
  height: 100% !important;
  overflow: visible !important;
}

/* Keep pin click/touch targets active even though world itself is pointer-free. */
.nm-heatmap__world .nm-heatmap__pin,
.nm-heatmap__world .nm-heatmap__energy {
  pointer-events: auto;
}

/* UI layers stay unscaled above the world. */
.nm-heatmap__legend,
.nm-heatmap__hd-btn,
.nm-heatmap__zoom-controls,
.nm-heatmap__popover,
.nm-heatmap__brand,
.nm-heatmap__coords {
  z-index: 55;
}


/* =========================================================
   NOISEMAP HEATMAP v034
   Controlled pin scaling in HD + dirty HD loading dots.
   ========================================================= */

.nm-heatmap {
  --nmhd-pin-scale: 1;
  --nmhd-energy-scale: 1;
}

/* Pins follow the world position, but their visual size is compensated.
   This prevents red/yellow dots from becoming huge after pinch zoom. */
.nm-heatmap.is-hd-map .nm-heatmap__world .nm-heatmap__pin {
  transform:
    translate(-50%, -50%)
    scale(var(--nmhd-pin-scale, 1)) !important;
  transform-origin: 50% 50% !important;
}

/* Energy echoes can grow a little, but not brutally. */
.nm-heatmap.is-hd-map .nm-heatmap__world .nm-heatmap__energy {
  transform:
    translate(-50%, -50%)
    scale(var(--nmhd-energy-scale, 1)) !important;
  transform-origin: 50% 50% !important;
}

/* Slightly tighter rings around clusters in HD so they stay readable. */
.nm-heatmap.is-hd-map .nm-heatmap__pin.is-cluster::after {
  transform: scale(calc(var(--nmhd-pin-scale, 1) * 1.08)) !important;
}

/* HD loading state: small dirty dots orbit/pulse around the badge. */
.nm-heatmap__hd-btn {
  overflow: visible;
}

.nm-heatmap__hd-btn::before,
.nm-heatmap__hd-btn::after {
  content: "";
  position: absolute;
  display: none;
  width: 5px;
  height: 5px;
  border-radius: 999px;
  background: rgba(235, 232, 220, .78);
  box-shadow:
    0 0 7px rgba(235,232,220,.42),
    0 0 14px rgba(112,27,51,.24);
  pointer-events: none;
}

.nm-heatmap__hd-btn::before {
  left: -3px;
  top: 50%;
  margin-top: -2.5px;
}

.nm-heatmap__hd-btn::after {
  right: -3px;
  top: 50%;
  margin-top: -2.5px;
  background: rgba(112, 27, 51, .95);
  box-shadow:
    0 0 7px rgba(112,27,51,.70),
    0 0 14px rgba(230,57,70,.22);
}

.nm-heatmap__hd-btn.is-loading::before,
.nm-heatmap__hd-btn.is-loading::after {
  display: block;
  animation: nmHdDotPulse 900ms infinite ease-in-out;
}

.nm-heatmap__hd-btn.is-loading::after {
  animation-delay: 180ms;
}

.nm-heatmap__hd-btn.is-loading {
  opacity: .84;
  border-color: rgba(230,57,70,.26);
  box-shadow:
    0 0 0 1px rgba(230,57,70,.13) inset,
    0 0 18px rgba(112,27,51,.30),
    0 8px 22px rgba(0,0,0,.36);
}

.nm-heatmap__hd-btn.is-loading .nm-heatmap__hd-h,
.nm-heatmap__hd-btn.is-loading .nm-heatmap__hd-d {
  animation: nmHdTextFlicker 720ms infinite steps(2, end);
}

.nm-heatmap__hd-btn.is-loading .nm-heatmap__hd-h::after,
.nm-heatmap__hd-btn.is-loading .nm-heatmap__hd-d::after {
  content: "";
}

/* Four-corner loader dots using inner spans inserted by JS. */
.nm-heatmap__hd-loader-dot {
  position: absolute;
  width: 4px;
  height: 4px;
  border-radius: 999px;
  background: rgba(235,232,220,.70);
  opacity: 0;
  pointer-events: none;
  box-shadow:
    0 0 6px rgba(235,232,220,.35),
    0 0 12px rgba(112,27,51,.24);
  animation: nmHdCornerPulse 920ms infinite ease-in-out;
}

.nm-heatmap__hd-loader-dot:nth-child(3) {
  left: 4px;
  top: 3px;
  animation-delay: 0ms;
}

.nm-heatmap__hd-loader-dot:nth-child(4) {
  right: 4px;
  top: 3px;
  background: rgba(112,27,51,.92);
  animation-delay: 160ms;
}

.nm-heatmap__hd-loader-dot:nth-child(5) {
  right: 4px;
  bottom: 3px;
  animation-delay: 320ms;
}

.nm-heatmap__hd-loader-dot:nth-child(6) {
  left: 4px;
  bottom: 3px;
  background: rgba(112,27,51,.92);
  animation-delay: 480ms;
}

.nm-heatmap__hd-btn:not(.is-loading) .nm-heatmap__hd-loader-dot {
  display: none;
}

@keyframes nmHdDotPulse {
  0%, 100% {
    transform: scale(.72);
    opacity: .18;
    filter: blur(.4px);
  }
  45% {
    transform: scale(1.45);
    opacity: .95;
    filter: blur(0);
  }
}

@keyframes nmHdCornerPulse {
  0%, 100% {
    opacity: .08;
    transform: scale(.62);
  }
  45% {
    opacity: .95;
    transform: scale(1.35);
  }
}

@keyframes nmHdTextFlicker {
  0%, 100% {
    opacity: .64;
    filter: blur(.15px);
  }
  50% {
    opacity: 1;
    filter: blur(0);
  }
}

@media (prefers-reduced-motion: reduce) {
  .nm-heatmap__hd-btn.is-loading::before,
  .nm-heatmap__hd-btn.is-loading::after,
  .nm-heatmap__hd-loader-dot,
  .nm-heatmap__hd-btn.is-loading .nm-heatmap__hd-h,
  .nm-heatmap__hd-btn.is-loading .nm-heatmap__hd-d {
    animation: none !important;
  }
}


/* =========================================================
   NOISEMAP HEATMAP v035
   HD loader: 8 broken-white dots around HD badge.
   ========================================================= */

/* Wyłączamy stare pseudo-kropki v034, żeby nie mieszały układu. */
.nm-heatmap__hd-btn.is-loading::before,
.nm-heatmap__hd-btn.is-loading::after {
  display: none !important;
}

.nm-heatmap__hd-loader-dot {
  position: absolute !important;
  display: none;
  width: 4px;
  height: 4px;
  border-radius: 999px;
  background: rgba(235, 232, 220, .86) !important;
  opacity: 0;
  pointer-events: none;
  box-shadow:
    0 0 5px rgba(235,232,220,.42),
    0 0 10px rgba(235,232,220,.18),
    0 0 14px rgba(112,27,51,.20);
  animation: nmHdEightDotPulse 960ms infinite ease-in-out;
}

/* Kropki liczone po obrysie badge’a HD:
   0 góra, 1 prawa-góra, 2 prawa, 3 prawa-dół,
   4 dół, 5 lewa-dół, 6 lewa, 7 lewa-góra. */
.nm-heatmap__hd-btn.is-loading .nm-heatmap__hd-loader-dot {
  display: block;
}

.nm-heatmap__hd-loader-dot[data-dot="0"] {
  left: 50%;
  top: -5px;
  margin-left: -2px;
  animation-delay: 0ms;
}

.nm-heatmap__hd-loader-dot[data-dot="1"] {
  right: -3px;
  top: -2px;
  animation-delay: 120ms;
}

.nm-heatmap__hd-loader-dot[data-dot="2"] {
  right: -6px;
  top: 50%;
  margin-top: -2px;
  animation-delay: 240ms;
}

.nm-heatmap__hd-loader-dot[data-dot="3"] {
  right: -3px;
  bottom: -2px;
  animation-delay: 360ms;
}

.nm-heatmap__hd-loader-dot[data-dot="4"] {
  left: 50%;
  bottom: -5px;
  margin-left: -2px;
  animation-delay: 480ms;
}

.nm-heatmap__hd-loader-dot[data-dot="5"] {
  left: -3px;
  bottom: -2px;
  animation-delay: 600ms;
}

.nm-heatmap__hd-loader-dot[data-dot="6"] {
  left: -6px;
  top: 50%;
  margin-top: -2px;
  animation-delay: 720ms;
}

.nm-heatmap__hd-loader-dot[data-dot="7"] {
  left: -3px;
  top: -2px;
  animation-delay: 840ms;
}

@keyframes nmHdEightDotPulse {
  0%, 100% {
    opacity: .10;
    transform: scale(.62);
    filter: blur(.45px);
  }
  45% {
    opacity: .96;
    transform: scale(1.38);
    filter: blur(0);
  }
}


/* =========================================================
   NOISEMAP HEATMAP v036
   Auto HD on pinch + loading text near HD badge.
   ========================================================= */

.nm-heatmap__hd-loading-label {
  position: absolute;
  left: calc(100% + 8px);
  top: 50%;
  transform: translateY(-50%);
  display: none;
  white-space: nowrap;
  pointer-events: none;
  font-family: "Barlow Condensed", Inter, system-ui, sans-serif;
  font-size: 13px;
  font-weight: 500;
  letter-spacing: .11em;
  text-transform: lowercase;
  color: rgba(235, 232, 220, .74);
  text-shadow:
    0 0 7px rgba(235,232,220,.18),
    0 0 12px rgba(112,27,51,.18);
  opacity: .86;
  filter: blur(.05px);
}

.nm-heatmap__hd-btn.is-loading .nm-heatmap__hd-loading-label {
  display: inline-block;
  animation: nmHdLoadingTextPulse 980ms infinite ease-in-out;
}

.nm-heatmap__hd-btn.is-right-side .nm-heatmap__hd-loading-label {
  left: auto;
  right: calc(100% + 8px);
  text-align: right;
}

.nm-heatmap__hd-btn.is-bottom-side .nm-heatmap__hd-loading-label {
  top: auto;
  bottom: calc(100% + 7px);
  left: 50%;
  right: auto;
  transform: translateX(-50%);
  text-align: center;
}

.nm-heatmap__hd-auto-toast {
  position: absolute;
  left: 50%;
  top: 16px;
  z-index: 59;
  transform: translateX(-50%);
  padding: 5px 10px;
  border: 1px solid rgba(235,232,220,.10);
  border-radius: 999px;
  background: rgba(3,7,9,.52);
  backdrop-filter: blur(8px);
  color: rgba(235,232,220,.70);
  font-family: "Barlow Condensed", Inter, system-ui, sans-serif;
  font-size: 13px;
  letter-spacing: .13em;
  text-transform: uppercase;
  pointer-events: none;
  opacity: 0;
  transition: opacity 220ms ease, transform 220ms ease;
}

.nm-heatmap__hd-auto-toast.is-visible {
  opacity: .9;
  transform: translateX(-50%) translateY(2px);
}

@keyframes nmHdLoadingTextPulse {
  0%, 100% {
    opacity: .46;
    filter: blur(.25px);
  }
  45% {
    opacity: .95;
    filter: blur(0);
  }
}


/* =========================================================
   NOISEMAP HEATMAP v037
   HD loading text cleanup + street-level label behavior.
   ========================================================= */

.nm-heatmap__hd-loading-label {
  text-transform: uppercase !important;
  font-family: "Barlow Condensed", Inter, system-ui, sans-serif !important;
  font-size: 13px !important;
  font-weight: 600 !important;
  letter-spacing: .16em !important;
}

/* Above zoom 4 we prepare the map for future street-name layer:
   city/district/landmark labels fade away. */
.nm-heatmap.is-hd-street-level .nm-heatmap__map-label {
  opacity: 0 !important;
  visibility: hidden !important;
  transition:
    opacity .28s ease,
    visibility .28s ease !important;
}

/* Keep event/venue pins visible; this is only about orientation labels. */
.nm-heatmap.is-hd-street-level .nm-heatmap__pin,
.nm-heatmap.is-hd-street-level .nm-heatmap__energy {
  visibility: visible !important;
}


/* =========================================================
   NOISEMAP HEATMAP v039
   Target Mode: IDĘ TAM, live distance, bearing, user dot.
   ========================================================= */

.nm-heatmap__go-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 34px;
  width: calc(100% - 16px);
  margin: 8px;
  border: 1px solid rgba(230,57,70,.28);
  border-radius: 999px;
  background:
    linear-gradient(145deg, rgba(112,27,51,.34), rgba(3,7,9,.42));
  color: rgba(235,232,220,.92);
  font-family: "Barlow Condensed", Inter, system-ui, sans-serif;
  font-size: 15px;
  font-weight: 700;
  letter-spacing: .16em;
  text-transform: uppercase;
  box-shadow:
    0 0 0 1px rgba(230,57,70,.10) inset,
    0 0 18px rgba(112,27,51,.18);
  cursor: pointer;
  touch-action: manipulation;
}

.nm-heatmap__go-btn:active {
  transform: scale(.985);
}

.nm-heatmap__target-panel {
  position: absolute;
  left: 14px;
  bottom: 46px;
  z-index: 60;
  display: none;
  width: min(330px, calc(100% - 28px));
  border: 1px solid rgba(235,232,220,.12);
  border-radius: 16px;
  background:
    linear-gradient(145deg, rgba(3,7,9,.82), rgba(18,4,9,.70));
  backdrop-filter: blur(12px);
  box-shadow:
    0 0 0 1px rgba(255,255,255,.035) inset,
    0 18px 45px rgba(0,0,0,.42);
  overflow: hidden;
  font-family: "Barlow Condensed", Inter, system-ui, sans-serif;
}

.nm-heatmap.is-target-mode .nm-heatmap__target-panel {
  display: block;
}

.nm-heatmap__target-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 10px 12px 7px;
  border-bottom: 1px solid rgba(235,232,220,.08);
}

.nm-heatmap__target-title {
  color: rgba(235,232,220,.86);
  font-size: 15px;
  font-weight: 700;
  letter-spacing: .17em;
  text-transform: uppercase;
}

.nm-heatmap__target-close {
  width: 28px;
  height: 28px;
  border: 0;
  border-radius: 999px;
  background: rgba(255,255,255,.04);
  color: rgba(235,232,220,.70);
  font-size: 20px;
  line-height: 1;
  cursor: pointer;
}

.nm-heatmap__target-body {
  padding: 10px 12px 12px;
}

.nm-heatmap__target-venue {
  color: rgba(235,232,220,.92);
  font-size: 18px;
  font-weight: 600;
  line-height: 1.05;
  letter-spacing: .04em;
  margin-bottom: 7px;
}

.nm-heatmap__target-metrics {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
}

.nm-heatmap__target-metric {
  border: 1px solid rgba(235,232,220,.08);
  border-radius: 12px;
  padding: 8px;
  background: rgba(0,0,0,.18);
}

.nm-heatmap__target-label {
  display: block;
  color: rgba(235,232,220,.38);
  font-size: 11px;
  letter-spacing: .14em;
  text-transform: uppercase;
  margin-bottom: 2px;
}

.nm-heatmap__target-value {
  display: block;
  color: rgba(235,232,220,.86);
  font-size: 18px;
  font-weight: 700;
  letter-spacing: .06em;
}

.nm-heatmap__target-note {
  margin-top: 8px;
  color: rgba(235,232,220,.46);
  font-family: "IBM Plex Mono", monospace;
  font-size: 10px;
  line-height: 1.35;
}

.nm-heatmap__target-arrow {
  display: inline-block;
  color: rgba(230,57,70,.92);
  text-shadow: 0 0 8px rgba(230,57,70,.35);
  transform: rotate(var(--target-bearing, 0deg));
}

.nm-heatmap__user-dot {
  position: absolute;
  left: calc(var(--user-x) * 1%);
  top: calc(var(--user-y) * 1%);
  z-index: 30;
  width: 18px;
  height: 18px;
  border-radius: 999px;
  transform: translate(-50%, -50%) scale(var(--nmhd-pin-scale, 1));
  background: rgba(235,232,220,.92);
  box-shadow:
    0 0 0 5px rgba(235,232,220,.10),
    0 0 16px rgba(235,232,220,.34),
    0 0 30px rgba(91,215,216,.18);
  pointer-events: none;
}

.nm-heatmap__target-line {
  position: absolute;
  left: calc(var(--line-x) * 1%);
  top: calc(var(--line-y) * 1%);
  z-index: 24;
  width: var(--line-len);
  height: 1px;
  transform-origin: 0 50%;
  transform: rotate(var(--line-angle));
  background:
    linear-gradient(90deg, rgba(235,232,220,.70), rgba(230,57,70,.58), rgba(230,57,70,0));
  box-shadow:
    0 0 8px rgba(230,57,70,.22);
  pointer-events: none;
}

@media (max-width: 620px) {
  .nm-heatmap__target-panel {
    left: 12px;
    bottom: 38px;
    width: min(315px, calc(100% - 24px));
  }

  .nm-heatmap__target-value {
    font-size: 16px;
  }
}


/* =========================================================
   NOISEMAP HEATMAP v040
   Maritime outside-city distance mode.
   ========================================================= */

.nm-heatmap__target-maritime {
  display: none;
  margin-top: 9px;
  border: 1px solid rgba(91,215,216,.12);
  border-radius: 12px;
  padding: 9px 10px;
  background:
    linear-gradient(145deg, rgba(3,17,20,.42), rgba(18,4,9,.24));
  color: rgba(235,232,220,.76);
}

.nm-heatmap__target-maritime.is-visible {
  display: grid;
  gap: 4px;
}

.nm-heatmap__target-shipline {
  display: flex;
  align-items: center;
  gap: 8px;
  font-family: "Barlow Condensed", Inter, system-ui, sans-serif;
  font-size: 15px;
  font-weight: 600;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.nm-heatmap__target-ship {
  color: rgba(91,215,216,.88);
  text-shadow:
    0 0 8px rgba(91,215,216,.25),
    0 0 14px rgba(112,27,51,.18);
}

.nm-heatmap__target-maritime-small {
  color: rgba(235,232,220,.46);
  font-family: "IBM Plex Mono", monospace;
  font-size: 10px;
  line-height: 1.35;
}


/* =========================================================
   NOISEMAP HEATMAP v041
   UI must never scale with HD world.
   Remove HD dot loader. Keep central ŁADOWANIE HD overlay.
   ========================================================= */

/* UI layers: absolutely no HD transform inheritance/regression. */
.nm-heatmap > .nm-heatmap__popover,
.nm-heatmap > .nm-heatmap__legend,
.nm-heatmap > .nm-heatmap__hd-btn,
.nm-heatmap > .nm-heatmap__zoom-controls,
.nm-heatmap > .nm-heatmap__target-panel,
.nm-heatmap > .nm-heatmap__brand,
.nm-heatmap > .nm-heatmap__coords,
.nm-heatmap > .nm-heatmap__hd-center-loader {
  transform: none !important;
}

/* Popover is UI, not world. Keep readable size after HD zoom. */
.nm-heatmap__popover {
  z-index: 80 !important;
  transform: none !important;
  scale: 1 !important;
  max-height: min(58vh, 500px) !important;
  overflow: hidden !important;
  touch-action: pan-y !important;
  overscroll-behavior: contain !important;
}

.nm-heatmap__popover.is-active {
  display: flex !important;
  pointer-events: auto !important;
}

.nm-heatmap__event-list {
  max-height: min(45vh, 400px) !important;
  overflow-y: auto !important;
  overflow-x: hidden !important;
  -webkit-overflow-scrolling: touch !important;
  touch-action: pan-y !important;
  overscroll-behavior: contain !important;
}

.nm-heatmap__popover-header,
.nm-heatmap__close,
.nm-heatmap__go-btn {
  transform: none !important;
  touch-action: manipulation !important;
}

/* Target panel is UI too. */
.nm-heatmap__target-panel {
  z-index: 79 !important;
  transform: none !important;
  scale: 1 !important;
}

/* Remove all HD loading dots permanently. */
.nm-heatmap__hd-loader-dot,
.nm-heatmap__hd-btn::before,
.nm-heatmap__hd-btn::after {
  display: none !important;
  animation: none !important;
}

/* Remove side loading label near HD badge. */
.nm-heatmap__hd-loading-label {
  display: none !important;
}

/* Central HD loading overlay. */
.nm-heatmap__hd-center-loader {
  position: absolute;
  left: 50%;
  top: 50%;
  z-index: 95;
  transform: translate(-50%, -50%) !important;
  display: none;
  pointer-events: none;
  padding: 9px 16px 8px;
  border: 1px solid rgba(235,232,220,.12);
  border-radius: 999px;
  background:
    radial-gradient(circle at 20% 50%, rgba(112,27,51,.28), transparent 42%),
    linear-gradient(145deg, rgba(3,7,9,.72), rgba(18,4,9,.58));
  backdrop-filter: blur(10px);
  color: rgba(235,232,220,.82);
  font-family: "Barlow Condensed", Inter, system-ui, sans-serif;
  font-size: 15px;
  font-weight: 700;
  letter-spacing: .18em;
  text-transform: uppercase;
  text-shadow:
    0 0 8px rgba(235,232,220,.22),
    0 0 18px rgba(112,27,51,.24);
  box-shadow:
    0 0 0 1px rgba(255,255,255,.035) inset,
    0 0 26px rgba(112,27,51,.24),
    0 18px 45px rgba(0,0,0,.40);
}

.nm-heatmap.is-hd-loading .nm-heatmap__hd-center-loader {
  display: block;
  animation: nmHdCenterPulse 980ms infinite ease-in-out;
}

@keyframes nmHdCenterPulse {
  0%, 100% {
    opacity: .48;
    filter: blur(.25px);
    transform: translate(-50%, -50%) scale(.985) !important;
  }
  48% {
    opacity: .96;
    filter: blur(0);
    transform: translate(-50%, -50%) scale(1.018) !important;
  }
}

/* During HD drag/pinch reduce expensive decorative layers. */
.nm-heatmap.is-hd-dragging .nm-heatmap__energy {
  opacity: .22 !important;
}

.nm-heatmap.is-hd-dragging .nm-heatmap__street-labels {
  opacity: .30 !important;
}

.nm-heatmap.is-hd-dragging .nm-heatmap__popover,
.nm-heatmap.is-hd-dragging .nm-heatmap__target-panel {
  opacity: .92 !important;
}


/* =========================================================
   NOISEMAP HEATMAP v041
   UI must never scale with HD world.
   Remove HD dot loader. Keep central ŁADOWANIE HD overlay.
   ========================================================= */

/* UI layers: absolutely no HD transform inheritance/regression. */
.nm-heatmap > .nm-heatmap__popover,
.nm-heatmap > .nm-heatmap__legend,
.nm-heatmap > .nm-heatmap__hd-btn,
.nm-heatmap > .nm-heatmap__zoom-controls,
.nm-heatmap > .nm-heatmap__target-panel,
.nm-heatmap > .nm-heatmap__brand,
.nm-heatmap > .nm-heatmap__coords,
.nm-heatmap > .nm-heatmap__hd-center-loader {
  transform: none !important;
}

/* Popover is UI, not world. Keep readable size after HD zoom. */
.nm-heatmap__popover {
  z-index: 80 !important;
  transform: none !important;
  scale: 1 !important;
  max-height: min(58vh, 500px) !important;
  overflow: hidden !important;
  touch-action: pan-y !important;
  overscroll-behavior: contain !important;
}

.nm-heatmap__popover.is-active {
  display: flex !important;
  pointer-events: auto !important;
}

.nm-heatmap__event-list {
  max-height: min(45vh, 400px) !important;
  overflow-y: auto !important;
  overflow-x: hidden !important;
  -webkit-overflow-scrolling: touch !important;
  touch-action: pan-y !important;
  overscroll-behavior: contain !important;
}

.nm-heatmap__popover-header,
.nm-heatmap__close,
.nm-heatmap__go-btn {
  transform: none !important;
  touch-action: manipulation !important;
}

/* Target panel is UI too. */
.nm-heatmap__target-panel {
  z-index: 79 !important;
  transform: none !important;
  scale: 1 !important;
}

/* Remove all HD loading dots permanently. */
.nm-heatmap__hd-loader-dot,
.nm-heatmap__hd-btn::before,
.nm-heatmap__hd-btn::after {
  display: none !important;
  animation: none !important;
}

/* Remove side loading label near HD badge. */
.nm-heatmap__hd-loading-label {
  display: none !important;
}

/* Central HD loading overlay. */
.nm-heatmap__hd-center-loader {
  position: absolute;
  left: 50%;
  top: 50%;
  z-index: 95;
  transform: translate(-50%, -50%) !important;
  display: none;
  pointer-events: none;
  padding: 9px 16px 8px;
  border: 1px solid rgba(235,232,220,.12);
  border-radius: 999px;
  background:
    radial-gradient(circle at 20% 50%, rgba(112,27,51,.28), transparent 42%),
    linear-gradient(145deg, rgba(3,7,9,.72), rgba(18,4,9,.58));
  backdrop-filter: blur(10px);
  color: rgba(235,232,220,.82);
  font-family: "Barlow Condensed", Inter, system-ui, sans-serif;
  font-size: 15px;
  font-weight: 700;
  letter-spacing: .18em;
  text-transform: uppercase;
  text-shadow:
    0 0 8px rgba(235,232,220,.22),
    0 0 18px rgba(112,27,51,.24);
  box-shadow:
    0 0 0 1px rgba(255,255,255,.035) inset,
    0 0 26px rgba(112,27,51,.24),
    0 18px 45px rgba(0,0,0,.40);
}

.nm-heatmap.is-hd-loading .nm-heatmap__hd-center-loader {
  display: block;
  animation: nmHdCenterPulse 980ms infinite ease-in-out;
}

@keyframes nmHdCenterPulse {
  0%, 100% {
    opacity: .48;
    filter: blur(.25px);
    transform: translate(-50%, -50%) scale(.985) !important;
  }
  48% {
    opacity: .96;
    filter: blur(0);
    transform: translate(-50%, -50%) scale(1.018) !important;
  }
}

/* During HD drag/pinch reduce expensive decorative layers. */
.nm-heatmap.is-hd-dragging .nm-heatmap__energy {
  opacity: .22 !important;
}

.nm-heatmap.is-hd-dragging .nm-heatmap__street-labels {
  opacity: .30 !important;
}

.nm-heatmap.is-hd-dragging .nm-heatmap__popover,
.nm-heatmap.is-hd-dragging .nm-heatmap__target-panel {
  opacity: .92 !important;
}


/* =========================================================
   NOISEMAP HEATMAP v041
   UI must never scale with HD world.
   Remove HD dot loader. Keep central ŁADOWANIE HD overlay.
   ========================================================= */

/* UI layers: absolutely no HD transform inheritance/regression. */
.nm-heatmap > .nm-heatmap__popover,
.nm-heatmap > .nm-heatmap__legend,
.nm-heatmap > .nm-heatmap__hd-btn,
.nm-heatmap > .nm-heatmap__zoom-controls,
.nm-heatmap > .nm-heatmap__target-panel,
.nm-heatmap > .nm-heatmap__brand,
.nm-heatmap > .nm-heatmap__coords,
.nm-heatmap > .nm-heatmap__hd-center-loader {
  transform: none !important;
}

/* Popover is UI, not world. Keep readable size after HD zoom. */
.nm-heatmap__popover {
  z-index: 80 !important;
  transform: none !important;
  scale: 1 !important;
  max-height: min(58vh, 500px) !important;
  overflow: hidden !important;
  touch-action: pan-y !important;
  overscroll-behavior: contain !important;
}

.nm-heatmap__popover.is-active {
  display: flex !important;
  pointer-events: auto !important;
}

.nm-heatmap__event-list {
  max-height: min(45vh, 400px) !important;
  overflow-y: auto !important;
  overflow-x: hidden !important;
  -webkit-overflow-scrolling: touch !important;
  touch-action: pan-y !important;
  overscroll-behavior: contain !important;
}

.nm-heatmap__popover-header,
.nm-heatmap__close,
.nm-heatmap__go-btn {
  transform: none !important;
  touch-action: manipulation !important;
}

/* Target panel is UI too. */
.nm-heatmap__target-panel {
  z-index: 79 !important;
  transform: none !important;
  scale: 1 !important;
}

/* Remove all HD loading dots permanently. */
.nm-heatmap__hd-loader-dot,
.nm-heatmap__hd-btn::before,
.nm-heatmap__hd-btn::after {
  display: none !important;
  animation: none !important;
}

/* Remove side loading label near HD badge. */
.nm-heatmap__hd-loading-label {
  display: none !important;
}

/* Central HD loading overlay. */
.nm-heatmap__hd-center-loader {
  position: absolute;
  left: 50%;
  top: 50%;
  z-index: 95;
  transform: translate(-50%, -50%) !important;
  display: none;
  pointer-events: none;
  padding: 9px 16px 8px;
  border: 1px solid rgba(235,232,220,.12);
  border-radius: 999px;
  background:
    radial-gradient(circle at 20% 50%, rgba(112,27,51,.28), transparent 42%),
    linear-gradient(145deg, rgba(3,7,9,.72), rgba(18,4,9,.58));
  backdrop-filter: blur(10px);
  color: rgba(235,232,220,.82);
  font-family: "Barlow Condensed", Inter, system-ui, sans-serif;
  font-size: 15px;
  font-weight: 700;
  letter-spacing: .18em;
  text-transform: uppercase;
  text-shadow:
    0 0 8px rgba(235,232,220,.22),
    0 0 18px rgba(112,27,51,.24);
  box-shadow:
    0 0 0 1px rgba(255,255,255,.035) inset,
    0 0 26px rgba(112,27,51,.24),
    0 18px 45px rgba(0,0,0,.40);
}

.nm-heatmap.is-hd-loading .nm-heatmap__hd-center-loader {
  display: block;
  animation: nmHdCenterPulse 980ms infinite ease-in-out;
}

@keyframes nmHdCenterPulse {
  0%, 100% {
    opacity: .48;
    filter: blur(.25px);
    transform: translate(-50%, -50%) scale(.985) !important;
  }
  48% {
    opacity: .96;
    filter: blur(0);
    transform: translate(-50%, -50%) scale(1.018) !important;
  }
}

/* During HD drag/pinch reduce expensive decorative layers. */
.nm-heatmap.is-hd-dragging .nm-heatmap__energy {
  opacity: .22 !important;
}

.nm-heatmap.is-hd-dragging .nm-heatmap__street-labels {
  opacity: .30 !important;
}

.nm-heatmap.is-hd-dragging .nm-heatmap__popover,
.nm-heatmap.is-hd-dragging .nm-heatmap__target-panel {
  opacity: .92 !important;
}


/* =========================================================
   NOISEMAP HEATMAP v042
   HD loader near HD badge + zoom 10 street-level mode.
   ========================================================= */

/* Przestawiamy loader z centrum mapy w okolice badge'a HD. */
.nm-heatmap__hd-center-loader {
  left: var(--nm-hd-loader-left, 62px) !important;
  top: var(--nm-hd-loader-top, 18px) !important;
  transform: translate(0, 0) !important;
  padding: 6px 10px 5px !important;
  font-size: 12px !important;
  letter-spacing: .17em !important;
  z-index: 96 !important;
  border-radius: 999px !important;
  white-space: nowrap !important;
}

.nm-heatmap.is-hd-loading .nm-heatmap__hd-center-loader {
  display: block !important;
  animation: nmHdButtonSidePulse 980ms infinite ease-in-out !important;
}

@keyframes nmHdButtonSidePulse {
  0%, 100% {
    opacity: .46;
    filter: blur(.25px);
    transform: translate(0, 0) scale(.985) !important;
  }
  48% {
    opacity: .96;
    filter: blur(0);
    transform: translate(0, 0) scale(1.018) !important;
  }
}

/* Nazwy ulic: bardziej czytelne przy głębokim zoomie. */
.nm-heatmap__street-label {
  font-size: 11px !important;
  letter-spacing: .13em !important;
  color: rgba(235,232,220,.76) !important;
  text-shadow:
    0 0 4px rgba(0,0,0,.96),
    0 0 8px rgba(0,0,0,.92),
    0 0 12px rgba(3,7,9,.90) !important;
}

.nm-heatmap__street-label--major {
  font-size: 12px !important;
  font-weight: 600 !important;
  color: rgba(255,248,226,.86) !important;
}

.nm-heatmap__street-label--minor {
  font-size: 10px !important;
  opacity: .64 !important;
}

/* Przy bardzo dużym zoomie nazwy ulic mogą być mocniejsze. */
.nm-heatmap.is-hd-deep-street .nm-heatmap__street-label {
  opacity: .92 !important;
}

.nm-heatmap.is-hd-deep-street .nm-heatmap__street-label--minor {
  opacity: .72 !important;
}

/* Podczas przesuwania/pincha dalej odchudzamy koszt renderu. */
.nm-heatmap.is-hd-dragging .nm-heatmap__street-label {
  opacity: .22 !important;
}

/* NOISEMAP native Radar Sceny dock/drag fix v001 */
.nm-heatmap__legend.is-nm-corner-docked {
  z-index: 190 !important;
}

.nm-heatmap__legend.is-nm-corner-returning {
  transition:
    left .22s ease-out,
    top .22s ease-out,
    transform .22s ease-out,
    opacity .18s ease-out !important;
}

.nm-heatmap__legend.is-nm-corner-docked:not(.is-open) {
  transform: translateZ(0) !important;
}


/* NOISEMAP V087 — event venue label inside Radar Sceny popover */
.nm-heatmap__event-venue{
  display:block;
  margin-top:2px;
  font-size:10px;
  line-height:1.15;
  opacity:.72;
  font-weight:500;
  letter-spacing:.02em;
}


/* V088 calendar custom range / event meta */
.nm-heatmap__event-venue{
  display:block;
  margin-top:3px;
  font-size:10px;
  line-height:1.2;
  letter-spacing:.04em;
  opacity:.78;
  text-transform:uppercase;
}


/* NOISEMAP V090 event venue/date line */
.nm-heatmap__event-venue{
  display:block;
  margin-top:3px;
  font-size:10px;
  line-height:1.15;
  opacity:.72;
  letter-spacing:.03em;
  text-transform:uppercase;
}

