Workaround for #9023.

This is an ugly fix for #9023.

We make the background and the container fill the entire document. We can then scroll as normal within the document, and we aren't using fixed anywhere, as the virtual keyboard breaks that.

To get the modal into the right place, we add padding to the current scroll position.

This will break if the page changes shape (shouldn't happen on iOS, basic rotation is fine). It also sniffs for iOS, which isn't great, but I can't see another way.

So overall this is a pretty nasty fix, and I wouldn't blame you for not merging it, but it may be of interest to someone with the same problem as me. It works fine for my use case.