Protect bottom controls from mobile safe areas
Reserve mobile safe-area insets beneath sticky bottom controls while preserving touch targets, content access, and zero horizontal overflow.Description
Requirements
Size challenge-shell against the dynamic viewport so browser chrome changes do not hide controls.
Add env(safe-area-inset-bottom) to a nonzero base block-end padding.
Protect bottom-controls from left and right safe-area insets.
Keep the final challenge-item content scrollable above the bottom controls.
Keep each challenge-control at least 44 CSS pixels in both dimensions.
Avoid horizontal overflow at a 320 CSS-pixel viewport with safe-area padding.
Home indicator
Bottom safe inset is 34px
Controls retain base padding plus the 34px inset
Size challenge-shell against the dynamic viewport so browser chrome changes do not hide controls.
Narrow landscape
Inline safe insets are present
Controls remain visible without sideways scrolling
Add env(safe-area-inset-bottom) to a nonzero base block-end padding.
Constraints
Edit CSS only and keep the supplied shared fixture class namesSupport narrow and wide viewports without horizontal page overflowPreserve visible keyboard focus and readable text in every tested mode
Hints
Hint 1
Start with the dynamic-viewport-shell behavior and make its observable result deterministic.
Hint 2
Model bottom-safe-area-padding independently before combining it with the remaining states.
Hint 3
Verify the boundary described by no-horizontal-overflow without changing caller-owned input.