/* ——— Controls that wait for the pointer ———
   ==========================================================================

   A row's ⋯, a column's maximize, a card's claim circle: in the markup all
   along, invisible until the thing they belong to is pointed at.

   Each surface keeps its own REST state and its own trigger, because those
   differences are real and were argued for: the message feed delays its fade
   so a pointer crossing the feed does not strobe a control on every line, the
   to-do's ⋯ parks its pointer-events as well as its opacity, the board's
   column buttons have no transition at all, and every one of them is revealed
   by a different ancestor.

   What is NOT different is the phone. Nothing hovers there, so a control that
   waits for a pointer waits forever. Four files had each written that rule
   out, a fifth was about to — and one had simply forgotten it: the board
   column's ⋯ and its maximize button were invisible and unreachable on touch
   (found 2026-08-29, while unifying the rest). Which is the argument for
   saying it once: the copies do not drift so much as go missing.

   In `utilities`, not `components`, and that is the whole point. This has to
   beat five components' rest states, and inside one layer only source order
   and specificity decide — messages.css already carries a comment about
   winning that fight by a selector's depth. A later layer wins outright, so
   no file here has to know what any other file weighs.

   `--hover-reveal-touch` is the lever for a surface that wants something other
   than fully present. The message feed shows its dots at half ink and full
   while their menu stands open; it sets the property in its own file, and a
   custom property crosses layers freely, so that stays the feed's decision. */
@layer utilities {
  @media (hover: none) {
    .board__column summary .btn--circle,
    .todo__menu,
    .cards__menu .btn--circle,
    .cards__maximize-button,
    .messages .message__actions .message__options,
    .dock-tool__remove,
    .dock-tool__blank .btn {
      opacity: var(--hover-reveal-touch, 1);
      /* Back with the opacity, or the control is visible and dead to the
         finger — the to-do's ⋯ is the one that proved it. */
      pointer-events: auto;
    }

    /* The dock's two also RISE into place (dock.css), so the rest state has to
       be undone in full — a tile left at `translate: 0 2px` sits 2px low
       forever on a phone. */
    .dock-tool__remove,
    .dock-tool__blank .btn {
      translate: 0 0;
    }

    /* The claim circle hides only its GLYPH, so the button was never dead and
       must not start taking the click itself (icons.css keeps every icon
       pointer-transparent on purpose). Opacity alone here. */
    .card__claim .icon {
      opacity: var(--hover-reveal-touch, 1);
    }
  }
}
