/* Broadcast map orb effect; kept verbatim in sync with web/map.template.html. */
    .pulsing-dot-police {
      width: 12px;
      height: 12px;
      border-radius: 50%;
      animation: policeDoubleFlash var(--orb-period, 600ms) infinite steps(1);
      animation-delay: var(--orb-phase, 0ms);
      background: radial-gradient(circle, rgba(255,0,0,0.95) 0%, rgba(255,0,0,0.3) 60%, rgba(255,0,0,0.1) 90%);
      box-shadow: 0 0 24px 8px rgba(255, 0, 0, 0.8);
      position: relative;
      display: flex;
      align-items: center;
      justify-content: center;
    }

    .pulsing-dot-police::after {
      content: "";
      width: 3px;
      height: 3px;
      border-radius: 50%;
      position: absolute;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
      animation: policeCenterPulse var(--orb-period, 600ms) infinite steps(1);
      animation-delay: var(--orb-phase, 0ms);
      filter: blur(1.0px);
    }

    @keyframes policeDoubleFlash {
      0%, 10% {
        background: radial-gradient(circle, rgba(255,0,0,0.95) 0%, rgba(255,0,0,0.3) 60%, rgba(255,0,0,0.1) 90%);
        box-shadow: 0 0 24px 8px rgba(255, 0, 0, 0.8);
      }
      11%, 20% {
        background: radial-gradient(circle, rgba(255,0,0,0.95) 0%, rgba(255,0,0,0.3) 60%, rgba(255,0,0,0.1) 90%);
        box-shadow: none;
      }
      21%, 30% {
        background: radial-gradient(circle, rgba(255,0,0,0.95) 0%, rgba(255,0,0,0.3) 60%, rgba(255,0,0,0.1) 90%);
        box-shadow: 0 0 24px 8px rgba(255, 0, 0, 0.8);
      }
      31%, 50% {
        background: radial-gradient(circle, rgba(255,0,0,0.95) 0%, rgba(255,0,0,0.3) 60%, rgba(255,0,0,0.1) 90%);
        box-shadow: none;
      }
      51%, 60% {
        background: radial-gradient(circle, rgba(0,0,255,0.95) 0%, rgba(0,0,255,0.3) 60%, rgba(0,0,255,0.1) 90%);
        box-shadow: 0 0 24px 8px rgba(0, 0, 255, 0.8);
      }
      61%, 70% {
        background: radial-gradient(circle, rgba(0,0,255,0.95) 0%, rgba(0,0,255,0.3) 60%, rgba(0,0,255,0.1) 90%);
        box-shadow: none;
      }
      71%, 80% {
        background: radial-gradient(circle, rgba(0,0,255,0.95) 0%, rgba(0,0,255,0.3) 60%, rgba(0,0,255,0.1) 90%);
        box-shadow: 0 0 24px 8px rgba(0, 0, 255, 0.8);
      }
      81%, 100% {
        background: radial-gradient(circle, rgba(0,0,255,0.95) 0%, rgba(0,0,255,0.3) 60%, rgba(0,0,255,0.1) 90%);
        box-shadow: none;
      }
    }

    @keyframes policeCenterPulse {
      0%, 10%, 21%, 30%, 51%, 60%, 71%, 80% {
        background-color: white;
        box-shadow: 0 0 4px 2px white;
        opacity: 0.95;
      }
      11%, 20%, 31%, 50%, 61%, 70%, 81%, 100% {
        opacity: 0;
        box-shadow: none;
      }
    }
