/* The position stays anchored; only its pin hops. The view sector uses the
   panorama's calibrated heading and actual horizontal field of view. */
.map-canvas > img { display: block; }
.map-floor-regions,
.map-direction {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}
.map-floor-regions { pointer-events: none; }
.map-floor-regions polygon { fill: transparent; pointer-events: all; }
.map-direction { overflow: hidden; pointer-events: none; }
.map-view-cone {
  position: absolute;
  left: var(--map-x);
  top: var(--map-y);
  width: clamp(64px, 30%, 110px);
  height: auto;
  transform: translate(-50%, -50%) rotate(var(--map-angle, 0deg));
}
.map-view-sector { stroke: #cc930b; stroke-opacity: .55; stroke-width: 1; }
.map-view-axis { fill: none; stroke: #b17b09; stroke-width: 1.7; stroke-linecap: round; }
.map-points { pointer-events: none; }
.map-point { pointer-events: auto; }
.mini-map .map-point.is-current,
.map-point.is-current {
  z-index: 3;
  opacity: 1;
  border-color: #f5b517;
  box-shadow: 0 0 0 3px #fffdf680, 0 2px 5px #63471236;
}
.map-location-pin {
  display: none;
  position: absolute;
  width: 25px;
  height: 32px;
  left: 50%;
  bottom: 50%;
  transform: translate(-50%, -3px);
  filter: drop-shadow(0 2px 2px #71511538);
  pointer-events: none;
}
.map-point.is-current .map-location-pin {
  display: block;
  animation: map-location-hop 1.8s ease-in-out infinite;
  animation-play-state: paused;
}
.map-canvas[data-map-live="true"] .map-location-pin { animation-play-state: running; }
.map-dialog .map-location-pin { width: 30px; height: 38px; }
@keyframes map-location-hop {
  0%, 45%, 100% { transform: translate(-50%, -3px); }
  22% { transform: translate(-50%, -9px); }
}
@media (prefers-reduced-motion: reduce) {
  .map-point.is-current .map-location-pin { animation: none; }
}
