This is not the accordion failing to reflow. Browsers always push content down when a section opens, and that part is reliable. What appears to happen in some careers platforms is that the activity content sits in a container whose height is measured once when the page loads, with the Submit button placed directly after it. The container is fixed at, say, 900px, Submit sits at 900px, and the moment your content grows past that it spills out and renders over the button.
That is inferred from how it renders rather than from digging through the platform, so treat it as a working theory — but it predicts the behaviour accurately.
Do not let your content change its own height after the page loads. If the total height never changes, none of this can happen — and you can still have things expand, collapse and swap over.
The trick behind the first two patterns is one line: hide panels with visibility: hidden, never display: none. display: none takes the element out of the layout entirely, so the container shrinks and grows as you click, which is exactly what causes the problem. visibility: hidden keeps the element’s space reserved and just makes it invisible. Every panel is stacked in a single CSS grid cell (grid-area: 1/1) with all but one hidden that way, so the container is permanently as tall as your longest panel whichever one is showing.
The third pattern takes a different route: genuine <details> accordions inside a fixed-height box with overflow-y: auto. They expand into the box’s own scroll area instead of into the page. Open all of them at once and the box still does not budge.
The first two are built from radio buttons and labels, so they are keyboard-navigable for free — arrow keys move between sections — and screen readers announce them sensibly. The third uses the browser’s own <details> element. Nothing here needs a script, which is what lets it survive the security filters that strip scripts out of most platforms.