/* Visual spec mirrors deepsuite @deepseek/ui Tooltip.css (size m, no arrow),
   except padding tightened 6/12 -> 3/7, type 14/22 -> 13/20, and radius
   10 -> 8 by product ruling: tooltip-bg plate,
   one text color across both themes (the plate stays dark in light and dark
   mode). Behavior (fixed positioning off the anchor rect) is local — the
   upstream Floating stack is intentionally not vendored. */

.bubble {
  position: fixed;
  z-index: 100;
  /* Fixed-position shrink-to-fit measures only the space from `left` to the
     viewport edge, so anchors near the right edge would wrap early;
     max-content sizes by the label alone, capped at half the viewport. */
  width: max-content;
  max-width: 50vw;
  padding: 3px 7px;
  border-radius: 8px;
  background: var(--dsw-alias-tooltip-bg);
  color: var(--dsw-static-neutral-bluish-00);
  font-size: 13px;
  line-height: 20px;
  white-space: pre-line;
  /* Unbreakable tokens (URLs, paths) must not push past max-width. */
  overflow-wrap: break-word;
  pointer-events: none;
  animation: tooltip-in 150ms var(--ds-ease-in-out);
}

.bubble[data-side='right'] {
  transform: translateY(-50%);
}

.bubble[data-side='bottom'] {
  transform: translateX(-50%);
}

.bubble[data-side='top'] {
  transform: translate(-50%, -100%);
}

@keyframes tooltip-in {
  from { opacity: 0; }
}

@media (prefers-reduced-motion: reduce) {
  .bubble {
    animation: none;
  }
}
