.passage-targets { position: absolute; inset: 0; z-index: 8; pointer-events: none; overflow: hidden; }
.passage-target {
  position: absolute; left: 0; top: 0; padding: 0; max-width: 100%;
  display: flex; flex-direction: column; align-items: center; gap: 8px;
  border: 0; background: transparent; color: #fff; pointer-events: none;
  opacity: 0; visibility: hidden; transition: opacity .18s ease, visibility 0s .18s;
  font: 600 12px/1.3 system-ui, sans-serif; cursor: pointer;
  touch-action: manipulation;
}
.passage-target[hidden] { display: none; }
.passage-target.visible { opacity: 1; visibility: visible; pointer-events: auto; transition-delay: 0s; }
.passage-target .aim-ring {
  box-sizing: border-box; width: 44px; height: 44px; flex-shrink: 0;
  border-radius: 50%; border: 2px solid rgba(255,255,255,.88);
  box-shadow: 0 0 0 1px rgba(0,0,0,.28), 0 4px 14px rgba(0,0,0,.35);
  background: rgba(255,255,255,.08);
}
.passage-target .aim-name {
  box-sizing: border-box; max-width: 100%; padding: 5px 10px; border-radius: 8px;
  background: rgba(0,0,0,.72); backdrop-filter: blur(6px);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  text-shadow: 0 1px 4px rgba(0,0,0,.5);
}
.passage-target:focus-visible { outline: 3px solid #fff; outline-offset: 3px; }
@media (prefers-reduced-motion: reduce) { .passage-target { transition: none; } }
