Fixed positioning escaped the clipping, but not the stacking: the header
carries `z-index: 2`, which makes it a stacking context, so whatever
z-index a menu inside it carries is confined below level 2. The spectrum
overlays paint as high as 9600, so both dropdowns opened underneath them.
Reparent each menu to the body when it opens. Leaving that subtree is
the only way out of an ancestor's stacking context, and the menus are
already positioned in viewport coordinates, so nothing else about them
changes. The outside-click test now considers the menu as well as its
wrapper, since the two are no longer nested.
Verified by hit testing rather than by inspecting z-index:
elementFromPoint at the open menu's centre returns the menu.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GdyUjuXejCEfiub675z6cz
Signed-off-by: Stan Grams <sjg@haxx.space>