- Bug 1+5 (tab-swipe race / first-load schedule): re-schedule on window
'load' as a safety net so [data-bottom-nav] is in the DOM by the time
the 800ms relevance check runs. Operator console trace showed the
schedule path was only reliably firing on hashchange.
- Bug 2 (edge-drawer): flip condition from innerWidth > 768 to < 768.
Edge-swipe drawer is a mobile feature per #1064/#1184.
- Bug 3 (pull-refresh): decouple from .pull-to-reconnect element (which
only renders on WS disconnect per #1068). Gate on touch viewport
(pointer: coarse) instead.
- Bug 4 (row-swipe scope): widen route filter from /packets|/nodes to
also include /channels and /observers (both verified to have swipable
row markup). /perf and /analytics deliberately omitted.
Preserves: #1244 /live exclusion, reduced-motion behavior, singleton
guard, dismiss-flow semantics.