b846f0c002
DialogContent published itself as the portal container for popovers opened inside a dialog (so focus stays in the dialog and dismissal doesn't close it), but that same element carried `overflow-y-auto`. Every Select/Popover/ DropdownMenu in a dialog was therefore born inside a scroll box and got cropped at the dialog's edge — most visibly the worktree dialog's base-branch combobox, where the branch list was cut off entirely and only the search field showed. Split the box in two: the shell keeps position/size/skin and no longer clips (it stays the portal container), while a new inner body div owns layout and scrolling. Popovers remain DOM descendants of the dialog, so focus and dismissal behave exactly as before, but they can now paint past the dialog's bounds. The banner variant had the same `overflow-hidden` on its shell; its clip moves to the banner itself, which keeps the rounded bottom edge. Callers that passed layout/scroll classes (grid, gap-*, p-*, overflow-*) now pass them via the new `bodyClassName`; `className` keeps sizing and skin.