.loc-poi {
  position: relative;
  width: 14px;
  height: 14px;
  padding: 0;
  border: 0;
  overflow: visible;
  color: #fff;
  background: transparent;
  font: inherit;
  font-size: 12px;
  cursor: pointer;
}

.loc-poi-dot,
.aerial-point-dot {
  display: block;
  border-radius: 50%;
  background: #1976d2;
  border: 2px solid #fff;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.4);
}

.loc-poi-dot { position: absolute; inset: 1px; }
.loc-poi-floor::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 100%;
  width: 1px;
  height: var(--haste, 0px);
  background: rgba(255, 255, 255, 0.5);
}
.loc-kind-enterprise .loc-poi-dot,
.loc-kind-enterprise .aerial-point-dot { background: var(--brand, var(--color-accent, #008bd8)); }
.loc-kind-tour .loc-poi-dot,
.loc-kind-tour .aerial-point-dot { background: #32a66a; }
.loc-kind-info .loc-poi-dot,
.loc-kind-info .aerial-point-dot { background: #6f7680; }

.loc-poi-body {
  position: absolute;
  left: 20px;
  top: 50%;
  transform: translateY(-50%);
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 9px;
  border: 1px solid rgba(255, 255, 255, 0.2);
  border-radius: 9px;
  color: #fff;
  background: rgba(10, 10, 12, 0.78);
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.28);
  backdrop-filter: blur(10px);
  white-space: nowrap;
  pointer-events: none;
}

.loc-poi-body strong {
  max-width: min(210px, calc(100vw - 100px));
  overflow: hidden;
  text-overflow: ellipsis;
  font-weight: 650;
}

.loc-poi-body img {
  width: 148px;
  height: 82px;
  object-fit: cover;
  border-radius: 7px 7px 3px 3px;
}

.loc-poi-time { font-style: normal; font-weight: 700; color: rgba(255, 255, 255, 0.88); }
.loc-poi-tour .loc-poi-body { border-color: var(--brand, var(--color-accent, #008bd8)); }
.loc-poi-label .loc-poi-body { pointer-events: auto; min-height: 44px; box-sizing: border-box; }
.loc-poi:hover .loc-poi-body,
.loc-poi:focus-visible .loc-poi-body { background: rgba(22, 23, 26, 0.94); }
.loc-poi-marker .loc-poi-body { opacity: 0; transform: translate(-4px, -50%) scale(0.96); transition: opacity 120ms ease, transform 120ms ease; }
.loc-poi-marker:hover .loc-poi-body,
.loc-poi-marker:focus-visible .loc-poi-body { opacity: 1; transform: translate(0, -50%) scale(1); }
.loc-poi-card .loc-poi-body { width: 220px; align-items: center; padding: 7px; white-space: normal; pointer-events: auto; }
.loc-poi-card .loc-poi-body strong { padding: 1px 3px 3px; }
.loc-poi-card.loc-card-top .loc-poi-body { width: 168px; flex-direction: column; align-items: stretch; }
.loc-poi-card.loc-card-side .loc-poi-body img,
.loc-poi-card.loc-card-auto .loc-poi-body img { width: 88px; height: 62px; }
.loc-poi.align-left .loc-poi-body { left: auto; right: 20px; }
.loc-poi.align-top .loc-poi-body { left: 50%; top: auto; bottom: 20px; transform: translateX(-50%); }
.loc-poi.align-bottom .loc-poi-body { left: 50%; top: 20px; transform: translateX(-50%); }
.loc-poi.edge-left .loc-poi-body { left: 20px; right: auto; top: 50%; bottom: auto; transform: translateY(-50%); }
.loc-poi.edge-right .loc-poi-body { left: auto; right: 20px; top: 50%; bottom: auto; transform: translateY(-50%); }

.loc-site-pin {
  position: relative;
  display: flex;
  align-items: center;
  gap: 9px;
  min-width: 0;
  max-width: min(290px, calc(100vw - 40px));
  padding: 8px 10px;
  border: 1px solid rgba(255, 255, 255, 0.24);
  border-radius: 11px;
  color: #fff;
  background: rgba(10, 10, 12, 0.86);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.34);
  backdrop-filter: blur(12px);
  font: inherit;
  text-align: left;
}

button.loc-site-pin { cursor: pointer; }
.loc-site-pin::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 100%;
  width: 2px;
  height: 15px;
  transform: translateX(-50%);
  background: var(--brand, var(--color-accent, #008bd8));
}
.loc-site-copy { display: flex; min-width: 0; flex-direction: column; gap: 2px; }
.loc-site-copy strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 12.5px; }
.loc-site-copy small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: rgba(255, 255, 255, 0.66); font-size: 10.5px; }
.loc-site-pin img { width: 82px; height: 54px; flex: none; object-fit: cover; border-radius: 7px; }
.loc-site-marker { width: 22px; height: 22px; min-width: 22px; padding: 0; border-radius: 50%; background: var(--brand, var(--color-accent, #008bd8)); }
.loc-site-marker .loc-site-copy { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
.loc-site-card { padding: 7px; }
.loc-site-card.loc-card-top { width: 190px; flex-direction: column; align-items: stretch; }
.loc-site-card.loc-card-top img { width: 100%; height: 96px; }

.aerial-point {
  position: absolute;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 0;
  padding: 0;
  border: 0;
  color: #fff;
  background: transparent;
  font: inherit;
  font-size: 12px;
  cursor: pointer;
  overflow: visible;
  isolation: isolate;
}

.aerial-point-dot { width: 13px; height: 13px; flex: none; }
.aerial-point-body {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 7px 10px;
  border: 1px solid rgba(255, 255, 255, 0.2);
  border-radius: 10px;
  background: rgba(10, 10, 12, 0.8);
  box-shadow: 0 5px 18px rgba(0, 0, 0, 0.32);
  backdrop-filter: blur(10px);
  white-space: nowrap;
}
.aerial-point-body strong { max-width: min(220px, calc(100vw - 80px)); overflow: hidden; text-overflow: ellipsis; }
.aerial-point-body small { color: rgba(255, 255, 255, 0.65); font-size: 10.5px; }
.aerial-point-label .aerial-point-dot,
.aerial-point-card .aerial-point-dot,
.aerial-point-stem .aerial-point-dot { margin-right: 6px; }
.aerial-point-marker { width: 24px; height: 24px; }
.aerial-point-marker .aerial-point-dot { width: 18px; height: 18px; }
.aerial-point-stem::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 100%;
  width: 1px;
  height: var(--stem-height, 56px);
  background: linear-gradient(rgba(255, 255, 255, 0.82), rgba(255, 255, 255, 0.2));
  transform: translateX(-50%);
  pointer-events: none;
}
.aerial-point-stem::before {
  content: "";
  position: absolute;
  left: 50%;
  top: calc(100% + var(--stem-height, 56px) - 3px);
  width: 7px;
  height: 7px;
  border: 2px solid #fff;
  border-radius: 50%;
  background: var(--brand, var(--color-accent, #008bd8));
  transform: translateX(-50%);
  pointer-events: none;
}
.aerial-point-card .aerial-point-body { width: 230px; white-space: normal; }
.aerial-point-card .aerial-point-body img { width: 88px; height: 66px; flex: none; object-fit: cover; border-radius: 7px; }
.aerial-point-card.loc-card-top .aerial-point-body { width: 180px; flex-direction: column; align-items: stretch; }
.aerial-point-card.loc-card-top .aerial-point-body img { width: 100%; height: 94px; }
.aerial-point:hover .aerial-point-body,
.aerial-point:focus-visible .aerial-point-body { background: rgba(22, 23, 26, 0.95); border-color: rgba(255, 255, 255, 0.34); }

.location-aerial-active .maplibregl-control-container { visibility: hidden; }

@media (max-width: 720px) {
  .loc-poi-card.loc-card-auto .loc-poi-body,
  .aerial-point-card.loc-card-auto .aerial-point-body { width: 150px; flex-direction: column; align-items: stretch; }
  .loc-poi-card.loc-card-auto .loc-poi-body img,
  .aerial-point-card.loc-card-auto .aerial-point-body img { width: 100%; height: 76px; }
  .loc-site-card.loc-card-auto { width: 180px; flex-direction: column; align-items: stretch; }
  .loc-site-card.loc-card-auto img { width: 100%; height: 90px; }
}

@media (prefers-reduced-transparency: reduce) {
  .loc-poi-body,
  .loc-site-pin,
  .aerial-point-body { background: #151619; backdrop-filter: none; }
}

@media (prefers-reduced-motion: reduce) {
  .loc-poi-marker .loc-poi-body { transition: none; }
}
