- Shipped
- September 6, 2026 at 12:40 AM UTC
- Author
- Kamo
- Commit
- 4158255
The scroller had an OVERLAY scrollbar: Chrome's default for an inner scroll container, taking no layout space and fading out when idle. On a document you tolerate that, but here the page itself no longer scrolls — the pane does — so there is no window scrollbar to fall back on, and an application that plainly continues below the fold looked like it did not move at all. Measured before: 400px of content below the fold against offsetWidth - clientWidth of exactly 0, which is what an overlay scrollbar reserves. It is 10 now. scrollbar-width opts the element out of overlay behaviour and scrollbar-gutter holds the track's space whether or not it is in use, so the form does not jump sideways the first time it grows past one screen. The ::-webkit-scrollbar rules below are for the engines that predate the standard properties; Chrome 121 and Safari 18.2 onwards ignore them in favour of the ones above, which is the intended overlap rather than a duplicate. The track is opaque deliberately. Behind the scroller lies BackgroundStage, `fixed inset-0` in the lender's own --brand and overscaled for its drift, so a transparent track would take whatever colour that lender happens to have chosen and a thumb at a third of an alpha over a dark one would be near enough invisible. The gap around the pane is now var(--color-secondary): the organization's own base colour, the same token and the same #cdcdcd default kamo-login and kamo-register use, overridden at runtime by the themed stylesheet DynamicMetaLoader appends. Verified end to end — the stage resolves to rgb(152, 170, 66) from theme.kamocrm.com's --color-secondary rather than the warm grey this site had picked for itself. One caveat on the evidence: this machine has no display and headless Chrome does not paint scrollbars into screenshots at all — forcing scrollbar-color to red and green renders nothing either way — so the bar itself is unverified by eye. What is verified is the layout it now reserves, the computed properties, and that the earlier fix still holds: the background moves 0px while the pane scrolls 350.