- Shipped
- September 6, 2026 at 12:22 AM UTC
- Author
- Kamo
- Commit
- ada1ad1
The pane could not both anchor `position: fixed` children and scroll them, and was being asked to do both. Its transform is what makes it their containing block, and that is the whole reason the background stage and the support bubble stay inside the frame rather than escaping to the viewport — but a fixed child of a scrolling box still rides that box's content. So the background slid up the page as the form was scrolled and the bubble climbed with it, which is the one thing a support bubble must never do. The two jobs are now two boxes: .kamo-pane clips and anchors, .kamo-pane-scroll scrolls. Nothing else moves — the layer is exactly the pane's height, so everything measured against --pane-h is untouched. Measured rather than reasoned about, by scrolling the pane 350px and reading both back: the background moves 0px and a probe carrying the bubble's own positioning moves 0px, while the heading moves the full -350px. At 1440x900 and 390x844 alike. The continue button also gains an arrow. White by inheritance from the button's own text colour rather than by a second declaration that could drift from it, aria-hidden because the label already says where the button goes, and mirrored under `rtl` — Arabic is one of the twenty-two locales, and an arrow is one of the few glyphs that means the wrong thing when it is not flipped. It is withheld while submitting, where the label reads "Sending…" and an arrow would promise movement that has already happened. Re-swept the eleven viewports afterwards: the sticky rail still measures exactly the pane's height at every desktop size, the document still never scrolls, and no page text sits under the ribbon.