.rvsi-directory-map {
  margin: 26px 0 28px;
  overflow: hidden;
  border: 1px solid #d6e2e5;
  border-radius: 18px;
  background: #fff;
  color: #172c3d;
  box-shadow: 0 10px 30px rgba(16, 40, 58, .06);
}

.rvsi-directory-map *,
.rvsi-directory-map *::before,
.rvsi-directory-map *::after { box-sizing: border-box; }

.rvsi-directory-map__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 23px 26px 19px;
}

.rvsi-directory-map__copy { min-width: 0; }
.rvsi-directory-map h3 {
  margin: 0 0 7px;
  color: #142d40;
  font-family: inherit;
  font-size: clamp(21px, 2.7vw, 27px);
  font-weight: 750;
  line-height: 1.2;
  letter-spacing: -.025em;
}
.rvsi-directory-map__copy p,
.rvsi-directory-map__description {
  margin: 0;
  color: #536775;
  font-size: 14px;
  line-height: 1.5;
}

.rvsi-directory-map__toolbar {
  display: flex;
  flex: 0 0 auto;
  align-items: center;
  gap: 7px;
}
.rvsi-directory-map__toolbar[hidden] { display: none; }
.rvsi-directory-map [data-map-action] {
  display: inline-flex;
  min-width: 42px;
  min-height: 42px;
  align-items: center;
  justify-content: center;
  margin: 0;
  padding: 7px 12px;
  border: 1px solid #b5c6ce;
  border-radius: 9px;
  background: #fff;
  color: #173f59;
  font: inherit;
  font-size: 22px;
  font-weight: 700;
  line-height: 1;
  cursor: pointer;
  touch-action: manipulation;
}
.rvsi-directory-map [data-map-action="reset"] {
  font-size: 13px;
  white-space: nowrap;
  padding-right: 14px;
  padding-left: 14px;
}
.rvsi-directory-map [data-map-action]:hover:not(:disabled) { background: #eaf3f5; border-color: #527b8f; }
.rvsi-directory-map [data-map-action]:disabled { color: #97a8b2; border-color: #dce5e9; background: #f7fafb; cursor: default; }
.rvsi-directory-map [data-map-action]:focus-visible,
.rvsi-directory-map__close:focus-visible,
.rvsi-directory-map__profile:focus-visible { outline: 3px solid #d9752b; outline-offset: 3px; }

.rvsi-directory-map__canvas {
  position: relative;
  height: clamp(300px, 47vw, 530px);
  overflow: hidden;
  border-top: 1px solid #e0eaed;
  border-bottom: 1px solid #e0eaed;
  background: radial-gradient(ellipse at 55% 45%, #f5fafb 0%, #edf5f7 73%, #e6f0f3 100%);
}
.rvsi-directory-map__svg {
  display: block;
  width: 100%;
  height: 100%;
  max-width: none;
  overflow: hidden;
  touch-action: pan-y;
  user-select: none;
  -webkit-user-select: none;
}
.rvsi-directory-map__svg:focus-visible { outline: 3px solid #d9752b; outline-offset: -5px; }
.rvsi-directory-map__canvas.is-zoomed .rvsi-directory-map__svg { cursor: grab; touch-action: none; }
.rvsi-directory-map__canvas.is-dragging .rvsi-directory-map__svg { cursor: grabbing; }
.rvsi-directory-map__geography path {
  fill: #c8ddda;
  stroke: #f8fcfd;
  stroke-width: 1.15;
  stroke-linejoin: round;
  vector-effect: non-scaling-stroke;
}
.rvsi-directory-map__geography text,
.rvsi-directory-map__label {
  fill: #597580;
  font-family: inherit;
  font-size: 13px;
  font-weight: 600;
  letter-spacing: .08em;
  pointer-events: none;
}
.rvsi-directory-map__pin { cursor: pointer; outline: none; }
.rvsi-directory-map__pin-hit { fill: transparent; pointer-events: all; }
.rvsi-directory-map__pin-halo { fill: #173f59; opacity: 0; pointer-events: none; }
.rvsi-directory-map__pin-shape {
  fill: #cf641f;
  stroke: #fff;
  stroke-width: 1.5;
  stroke-linejoin: round;
  filter: drop-shadow(0 2px 2px rgba(20, 45, 64, .28));
  pointer-events: none;
}
.rvsi-directory-map__pin-center { fill: #fff; pointer-events: none; }
.rvsi-directory-map__pin-count { fill: #fff; font-family: inherit; font-size: 11px; font-weight: 800; pointer-events: none; }
.rvsi-directory-map__pin:hover .rvsi-directory-map__pin-shape,
.rvsi-directory-map__pin:focus .rvsi-directory-map__pin-shape,
.rvsi-directory-map__pin[aria-expanded="true"] .rvsi-directory-map__pin-shape { fill: #173f59; }
.rvsi-directory-map__pin:hover .rvsi-directory-map__pin-halo,
.rvsi-directory-map__pin:focus .rvsi-directory-map__pin-halo,
.rvsi-directory-map__pin[aria-expanded="true"] .rvsi-directory-map__pin-halo { opacity: .13; }
.rvsi-directory-map__pin:focus-visible .rvsi-directory-map__pin-halo { stroke: #173f59; stroke-width: 2; stroke-dasharray: 3 2; opacity: .35; }

.rvsi-directory-map__popup {
  margin: 18px 22px 0;
  padding: 17px 19px;
  border: 1px solid #bfd2d9;
  border-left: 4px solid #d9752b;
  border-radius: 10px;
  background: #f8fbfc;
}
.rvsi-directory-map__popup[hidden] { display: none; }
.rvsi-directory-map__popup-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 15px; }
.rvsi-directory-map .rvsi-directory-map__popup-heading {
  margin: 0;
  color: #142d40;
  font-family: inherit;
  font-size: 19px;
  font-weight: 750;
  line-height: 1.35;
  overflow-wrap: anywhere;
}
.rvsi-directory-map__popup-heading:focus { outline: none; }
.rvsi-directory-map__close {
  flex: 0 0 36px;
  width: 36px;
  min-height: 36px;
  margin: -6px -7px 0 0;
  padding: 3px;
  border: 0;
  border-radius: 6px;
  background: transparent;
  color: #36586d;
  font-family: inherit;
  font-size: 27px;
  line-height: 1;
  cursor: pointer;
}
.rvsi-directory-map__close:hover { background: #e3eef2; }
.rvsi-directory-map__popup-list { display: block; margin: 0; padding: 0; list-style: none; }
.rvsi-directory-map__popup-item { display: flex; align-items: center; justify-content: space-between; gap: 18px; margin: 0; padding: 9px 0 0; }
.rvsi-directory-map__popup-item + .rvsi-directory-map__popup-item { margin-top: 12px; padding-top: 15px; border-top: 1px solid #dce7eb; }
.rvsi-directory-map__popup-copy { min-width: 0; }
.rvsi-directory-map__popup-name { display: block; font-size: 16px; line-height: 1.4; overflow-wrap: anywhere; }
.rvsi-directory-map .rvsi-directory-map__popup-location { margin: 3px 0 0; color: #536775; font-size: 14px; line-height: 1.5; }
.rvsi-directory-map__profile {
  display: inline-flex;
  flex: 0 0 auto;
  align-items: center;
  justify-content: center;
  min-height: 42px;
  padding: 10px 15px;
  border: 1px solid #173f59;
  border-radius: 8px;
  background: #173f59;
  color: #fff;
  font-size: 13px;
  font-weight: 700;
  line-height: 1.2;
  text-decoration: none;
}
.rvsi-directory-map__profile:visited { color: #fff; }
.rvsi-directory-map__profile:hover { color: #fff; background: #245975; }

.rvsi-directory-map__status,
.rvsi-directory-map__note,
.rvsi-directory-map__caption {
  margin: 0;
  padding: 13px 25px 0;
  color: #536775;
  font-size: 12px;
  line-height: 1.55;
}
.rvsi-directory-map__status { color: #344f5e; font-weight: 600; }
.rvsi-directory-map__note,
.rvsi-directory-map__caption { padding-top: 5px; }
.rvsi-directory-map > .rvsi-directory-map__note { padding-bottom: 18px; }
.rvsi-directory-map noscript p { margin: 0; padding: 13px 25px; font-size: 14px; }

@media (max-width: 650px) {
  .rvsi-directory-map { margin-top: 21px; border-radius: 13px; }
  .rvsi-directory-map__header { flex-wrap: wrap; gap: 13px; padding: 18px 17px 16px; }
  .rvsi-directory-map__copy { flex: 1 1 100%; }
  .rvsi-directory-map__toolbar { width: 100%; }
  .rvsi-directory-map [data-map-action="reset"] { margin-left: auto; }
  .rvsi-directory-map__canvas { height: 300px; }
  .rvsi-directory-map__popup { margin: 14px 12px 0; padding: 14px; }
  .rvsi-directory-map__popup-item { flex-wrap: wrap; align-items: flex-start; gap: 10px; }
  .rvsi-directory-map__popup-copy { flex: 1 1 100%; }
  .rvsi-directory-map__status,
  .rvsi-directory-map__note,
  .rvsi-directory-map__caption { padding-right: 17px; padding-left: 17px; }
}

@media (prefers-reduced-motion: reduce) {
  .rvsi-directory-map *, .rvsi-directory-map *::before, .rvsi-directory-map *::after { scroll-behavior: auto; }
}
