.map_swiss {
  --map_swiss_land: #e6f2ef;
  --map_swiss_cantons: color-mix(in srgb, #3f8f86 35%, transparent);
  --map_swiss_lakes: #b3d3ca;
  --map_swiss_city: var(--text_muted);
  --map_swiss_dot: var(--primary_color);
  --map_swiss_dot_core: #3d3d3c;
  --map_swiss_dot_size: 1.15rem;
  --map_swiss_label_bg: var(--light_color);
  --map_swiss_label_color: var(--title_color);
  container-type: inline-size;
  display: grid;
  gap: var(--space_l);
  align-items: center;
}
[data-theme=dark] .map_swiss {
  --map_swiss_land: #2c2e2d;
  --map_swiss_cantons: color-mix(in srgb, #b3d3ca 22%, transparent);
  --map_swiss_lakes: color-mix(in srgb, #3f8f86 55%, #2c2e2d);
  --map_swiss_label_bg: #343635;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme=light]) .map_swiss {
    --map_swiss_land: #2c2e2d;
    --map_swiss_cantons: color-mix(in srgb, #b3d3ca 22%, transparent);
    --map_swiss_lakes: color-mix(in srgb, #3f8f86 55%, #2c2e2d);
    --map_swiss_label_bg: #343635;
  }
}
@media (min-width: 1020px) {
  .map_swiss.map_swiss_with_list {
    grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
  }
}
.map_swiss_stage {
  position: relative;
  width: 100%;
}
@media (max-width: 1019px) {
  .map_swiss_stage {
    order: -1;
  }
}
.map_swiss_svg {
  display: block;
  width: 100%;
  height: auto;
  overflow: visible;
}
.map_swiss_land {
  fill: var(--map_swiss_land);
}
.map_swiss_cantons {
  fill: none;
  stroke: var(--map_swiss_cantons);
  stroke-width: 1;
  stroke-linejoin: round;
  vector-effect: non-scaling-stroke;
}
.map_swiss_lakes {
  fill: var(--map_swiss_lakes);
}
.map_swiss_cities, .map_swiss_locations {
  position: absolute;
  inset: 0;
  margin: 0;
  padding: 0;
  list-style: none;
  pointer-events: none;
}
.map_swiss_city {
  position: absolute;
  left: var(--x);
  top: var(--y);
  width: 5px;
  height: 5px;
  translate: -50% -50%;
  background-color: var(--map_swiss_city);
  opacity: 0.7;
}
.map_swiss_city span {
  position: absolute;
  top: 50%;
  translate: 0 -50%;
  color: var(--map_swiss_city);
  font-size: clamp(0.55rem, 0.4rem + 0.35vw, 0.72rem);
  font-weight: 500;
  letter-spacing: 0.06em;
  line-height: 1;
  white-space: nowrap;
}
.map_swiss_city[data-side=right] span {
  left: calc(100% + 0.4em);
}
.map_swiss_city[data-side=left] span {
  right: calc(100% + 0.4em);
}
@media (max-width: 579px) {
  .map_swiss_city span {
    display: none;
  }
}
.map_swiss_location {
  position: absolute;
  left: var(--x);
  top: var(--y);
  translate: -50% -50%;
  pointer-events: auto;
}
.map_swiss_dot {
  position: relative;
  display: block;
  width: var(--map_swiss_dot_size);
  height: var(--map_swiss_dot_size);
  padding: 0;
  border: 0;
  background-color: var(--map_swiss_dot);
  cursor: pointer;
  transition: scale var(--transition_time_s) var(--ease_standard);
}
.map_swiss_dot::before {
  content: "";
  position: absolute;
  inset: 30%;
  background-color: var(--map_swiss_dot_core);
}
.map_swiss_dot::after {
  content: "";
  position: absolute;
  inset: 0;
  border: 2px solid var(--map_swiss_dot);
  pointer-events: none;
  animation: map_swiss_pulse 2.4s var(--ease_standard) var(--delay, 0s) infinite;
}
.map_swiss_dot:hover, .map_swiss_dot:focus-visible, .map_swiss_dot.is_active {
  scale: 1.25;
}
.map_swiss_dot:focus-visible {
  outline: var(--focus_ring_width) solid var(--focus_ring_color);
  outline-offset: var(--focus_ring_offset);
}
.map_swiss_dot_label {
  position: absolute;
  bottom: calc(100% + 0.55rem);
  left: 50%;
  translate: -50% 0;
  padding: 0.3em 0.6em;
  background-color: var(--map_swiss_label_bg);
  box-shadow: 0 4px 14px color-mix(in srgb, #1d1d1b 14%, transparent);
  color: var(--map_swiss_label_color);
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  line-height: 1;
  white-space: nowrap;
  pointer-events: none;
  scale: 0.8;
  transform-origin: bottom center;
}
.map_swiss_dot:not(:hover, :focus-visible, .is_active) .map_swiss_dot_label {
  scale: 1;
}
.map_swiss_list {
  margin: 0;
  padding: 0;
  list-style: none;
  border-top: 1px solid var(--line_color_light);
}
.map_swiss_list_item {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--space_s);
  width: 100%;
  padding: var(--space_s);
  border: 0;
  border-bottom: 1px solid var(--line_color_light);
  background: none;
  color: var(--text_color);
  text-align: start;
  cursor: pointer;
  transition: background-color var(--transition_time_s) var(--ease_standard);
}
.map_swiss_list_item:hover, .map_swiss_list_item:focus-visible, .map_swiss_list_item.is_active {
  background-color: var(--surface_fill);
}
.map_swiss_list_mark {
  width: 0.75rem;
  height: 0.75rem;
  background-color: var(--map_swiss_dot);
}
.map_swiss_list_text {
  display: grid;
  gap: 0.2em;
}
.map_swiss_list_title {
  color: var(--title_color);
  font-size: var(--h5_size);
  font-weight: 700;
  line-height: 1.2;
}
.map_swiss_list_lines {
  color: var(--text_muted);
  font-size: var(--text_small);
}
.map_swiss_list_glyph {
  --control_size: 2.05rem;
  --glyph_size: 0.9rem;
  display: inline-grid;
  place-items: center;
  width: var(--control_size);
  height: var(--control_size);
  background-color: var(--button_color_bg);
  color: var(--button_color_text);
  position: relative;
}
.map_swiss_list_glyph::before, .map_swiss_list_glyph::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  box-sizing: border-box;
  transition: transform var(--transition_time_s), clip-path var(--transition_time_s);
}
.map_swiss_list_glyph::before {
  width: calc(var(--glyph_size) * 0.55);
  height: calc(var(--glyph_size) * 0.55);
  border-top: var(--glyph_stroke) solid currentColor;
  border-right: var(--glyph_stroke) solid currentColor;
  transform: translate(-50%, -50%) rotate(0deg) translateX(calc(var(--glyph_size) * -0.12)) rotate(45deg);
}
.map_swiss_list_glyph::after {
  content: none;
}

.map_swiss_panel {
  display: grid;
  gap: var(--space_m);
}
.map_swiss_panel_lines {
  margin: 0;
  color: var(--text_color);
  font-style: normal;
  line-height: 1.6;
}
.map_swiss_panel_contact {
  display: grid;
  gap: 0.3em;
}
.map_swiss_panel_contact a {
  color: var(--title_color);
}
.map_swiss_panel_hours {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--text_small);
}
.map_swiss_panel_hours td {
  padding: 0.35em 0;
  border-bottom: 1px solid var(--line_color_light);
}
.map_swiss_panel_hours td:last-child {
  text-align: end;
}
.map_swiss_panel_person {
  display: grid;
  grid-template-columns: 5rem minmax(0, 1fr);
  align-items: center;
  gap: var(--space_s);
  padding-top: var(--space_m);
  border-top: 1px solid var(--line_color_light);
}
.map_swiss_panel_person img {
  display: block;
  width: 5rem;
  height: 5rem;
  object-fit: cover;
}
.map_swiss_panel_person_eyebrow {
  margin: 0 0 0.3em;
  color: var(--primary_color);
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}
.map_swiss_panel_person_name {
  margin: 0;
  color: var(--title_color);
  font-weight: 700;
}
.map_swiss_panel_person_role {
  margin: 0 0 0.3em;
  color: var(--text_muted);
  font-size: var(--text_small);
}

@keyframes map_swiss_pulse {
  0% {
    opacity: 0.8;
    scale: 1;
  }
  80%, 100% {
    opacity: 0;
    scale: 2.6;
  }
}
@media (prefers-reduced-motion: reduce) {
  .map_swiss_dot::after {
    animation: none;
  }
}