The trunk you have walked was only visible on hover. The ribbons feeding each selected group now carry `is-path` and stay emphasised, so the lineage from the root to the current selection reads as a continuous band against the lineages you passed over.
Three states, in rising order: an ordinary ribbon, a ribbon on the selected path, and either of those under the pointer. Verified in the browser as three distinct computed styles — `rgb(64,145,111) @0.42`, `rgb(57,135,95) @0.74`, `rgb(47,125,92) @0.9`. The hover rules are listed after the trunk rules so a hover still wins on the selected path, since both carry the same specificity.
Seventeen tests pass; the new one checks that the highlighted ribbons are exactly the ones arriving at a selected group, and that the root (which nothing flows into) never has one.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Lift captions over the ribbons, light the inflowing flux, move counts to the tooltip (#5)