/* NOTE: Top-level menu — inline-flex + relative, same as .mud-menu */
.mw-menu {
    display: inline-flex;
    position: relative;
}

/* NOTE: Nested submenu — full width inside parent mud-menu-list, relative for flyout anchor */
.mw-menu-submenu {
    position: relative;
    width: 100%;
}

/* NOTE: Flyout opens to the right, above parent popover content.
   white-space:nowrap prevents menu item text from wrapping to multiple lines.
   visibility:hidden prevents MudPopover's FlipAlways from reacting to the flyout overflow
   before JS has a chance to reposition it. positionFlyout sets visibility:visible after
   adjusting for viewport bounds. The animation is a fallback if JS hasn't loaded yet. */
.mw-menu-flyout {
    position: absolute;
    left: 100%;
    top: 0;
    z-index: 1;
    white-space: nowrap;
    visibility: hidden;
    animation: mw-flyout-show 0s 250ms forwards;
}

@keyframes mw-flyout-show {
    to { visibility: visible; }
}

/* NOTE: Override MudBlazor's .mud-popover:has(> .mud-menu-list) { overflow: hidden }
   which clips submenu flyouts that extend beyond the popover bounds.
   white-space:nowrap prevents menu item text from wrapping when the popover
   is near a viewport edge. */
.mw-menu-popover {
    overflow: visible !important;
    white-space: nowrap;
}
