Finally figured this out. There were a few things I had to fix to get what I wanted.
The order of the objects within the flex container matters. I originally had a column container with a flex repeater first and the button second. The repeater wouldn't extend all the way to the bottom of the container because the button was in the way. So the button didn't actually "float" over the repeater. When I re-arranged them so the button was first, the CSS still forced it to the bottom, so this fixed the floating problem. This leaves a gap at the top where the button would be without the CSS, but I can live with that.
If you wanted the button to stick to the top of the screen, you would need to put the button at the bottom and repeater on top so the button floats over the repeater.
I also found that the calc() isn't really necessary in the CSS. When you use 100vw and 100vh, these are referring to the entire viewport, not just the view that contains the button. So the button is trying to get to the corner of your screen, but the view is stopping it. This means the button is tightly stuck against the corner of the view no matter what you put in the offset. If your view was the entire screen, this would have looked normal, but I wanted this to work in a small view within the page.
So to get the button to be offset from the corner, just use margins.
I'm guessing @victordcq was using a view that took up the entire viewport, so it seemed to work fine. While I was using a smaller view and was confused why the same solution didn't work.
Here is the CSS with my changes:
.psc-floating-button {
position: sticky;
top: 100vh;
left: 100vw;
width: 40px;
z-index: 1;
margin: 20px;
}
Here is the result (ignore the ugly background):