/* NIGHT_96 — shared themed tooltip.
 * Fires on ANY [data-tooltip] element (column-header <span class="col-tt">, score /
 * accountability / percentile badges, tier icons, degraded cells). Both themes.
 *
 * DEFAULT position = BELOW the element (data-tooltip-pos="bottom"). Headers sit at the
 * top of an overflow:auto scroll container (.data-table-wrap → overflow-y computes to
 * auto), so an upward tooltip would clip at the container's top edge (HALT #9). Rendering
 * downward puts the popover over the first body rows, safely inside the wrap. tooltip_position.js
 * flips to "top" only when the element is near the viewport bottom (no room below).
 *
 * The pre-existing .score-badge / .accountability-badge :hover::after rules are class-scoped
 * (0,3,1) and keep winning for their bg/color/position — they gain only the fade + caret from
 * here (HALT #10: they still fire, now themed). */

[data-tooltip] {
  position: relative;
}
.col-tt {
  cursor: help;
}

[data-tooltip]::after {
  content: attr(data-tooltip);
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  z-index: 100;
  padding: 8px 12px;
  border-radius: 6px;
  font-size: 12px;
  font-weight: 400;
  line-height: 1.4;
  white-space: normal;
  max-width: 280px;
  min-width: 120px;
  width: max-content;
  pointer-events: none;
  opacity: 0;
  transition: opacity 0.15s ease-in-out;

  /* DARK theme default (non-neg #16 — dark stays default). */
  background: #171717;              /* neutral-900 */
  color: #f5f5f5;                   /* neutral-100 */
  border: 1px solid #404040;        /* neutral-700 */
  box-shadow: 0 6px 16px rgba(0, 0, 0, 0.35);
}

/* Position — DEFAULT below (safe against top-clip in the scroll container). */
[data-tooltip]::after,
[data-tooltip][data-tooltip-pos="bottom"]::after {
  top: calc(100% + 7px);
  bottom: auto;
}

/* Position — ABOVE (flipped by JS when the element is near the viewport bottom). */
[data-tooltip][data-tooltip-pos="top"]::after {
  bottom: calc(100% + 7px);
  top: auto;
}

/* Horizontal edge-alignment (tooltip_position.js sets data-tooltip-halign for edge
 * columns) so a centered popover never renders offscreen (HALT #9). */
[data-tooltip][data-tooltip-halign="start"]::after {
  left: 0;
  right: auto;
  transform: none;
}
[data-tooltip][data-tooltip-halign="end"]::after {
  left: auto;
  right: 0;
  transform: none;
}

[data-tooltip]:hover::after,
[data-tooltip]:focus-visible::after,
[data-tooltip].is-tt-open::after {
  opacity: 1;
}

/* LIGHT theme override (self-scoped [data-theme="light"], wins regardless of load order). */
[data-theme="light"] [data-tooltip]::after {
  background: #ffffff;              /* white */
  color: #262626;                   /* neutral-800 — Rule-4 dark-gray floor */
  border: 1px solid #e5e5e5;        /* neutral-200 */
  box-shadow: 0 6px 16px rgba(16, 24, 40, 0.12);
}

/* Caret / arrow. */
[data-tooltip]::before {
  content: "";
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  z-index: 101;
  border: 5px solid transparent;
  pointer-events: none;
  opacity: 0;
  transition: opacity 0.15s ease-in-out;
}

/* Default below → caret sits at the element's bottom edge pointing UP into the popover. */
[data-tooltip]::before,
[data-tooltip][data-tooltip-pos="bottom"]::before {
  top: 100%;
  bottom: auto;
  border-bottom-color: #171717;
}

/* Above → caret at the element's top edge pointing DOWN. */
[data-tooltip][data-tooltip-pos="top"]::before {
  bottom: 100%;
  top: auto;
  border-top-color: #171717;
}

[data-theme="light"] [data-tooltip][data-tooltip-pos="bottom"]::before,
[data-theme="light"] [data-tooltip]:not([data-tooltip-pos="top"])::before {
  border-bottom-color: #ffffff;
}

[data-theme="light"] [data-tooltip][data-tooltip-pos="top"]::before {
  border-top-color: #ffffff;
}

/* Caret follows horizontal edge-alignment — stays over the element, not the popover center. */
[data-tooltip][data-tooltip-halign="start"]::before {
  left: 14px;
  right: auto;
  transform: none;
}
[data-tooltip][data-tooltip-halign="end"]::before {
  left: auto;
  right: 14px;
  transform: none;
}

[data-tooltip]:hover::before,
[data-tooltip]:focus-visible::before,
[data-tooltip].is-tt-open::before {
  opacity: 1;
}

/* Respect reduced-motion. */
@media (prefers-reduced-motion: reduce) {
  [data-tooltip]::after,
  [data-tooltip]::before {
    transition: none;
  }
}
