.bubble { display: inline-flex; align-items: center; gap: 8px; 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: var(--dsw-radius-sm); 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-portal] { z-index: 1100; } .label { min-width: 0; } /* A 16px keycap centered beside a 20px label has 5px of vertical clearance. */ .bubble[data-has-shortcut] { padding-inline-end: 5px; } .bubble[data-has-shortcut]:not(:has(.label)) { padding: 3px; } .bubble[data-side='right'] { transform: translateY(-50%); } .bubble[data-side='bottom'] { transform: translateX(-50%); } .bubble[data-side='top'] { transform: translate(-50%, -100%); } /* End alignment: `left` carries the anchor's right edge, so the bubble sits fully left of it instead of centering. */ .bubble[data-side='bottom'][data-align='end'] { transform: translateX(-100%); } .bubble[data-side='top'][data-align='end'] { transform: translate(-100%, -100%); } @keyframes tooltip-in { from { opacity: 0; } } @media (prefers-reduced-motion: reduce) { .bubble { animation: none; } }