It's still a native <input type="range">, so dragging, touch, arrow keys, Page Up/Down and Home/End all work. appearance: none strips the browser's own styling, and the thumb is restyled with the ::-webkit-slider-thumb and ::-moz-range-thumb pseudo-elements.
The filled part of the track is a hard-stop gradient at --fill. The bubble is the slightly tricky bit: the thumb's center doesn't travel the full width (it stops half a thumb from each end), so the bubble's position adds a correction of 12px − ratio × 24px to stay centered on it.
aria-valuetext makes screen readers say "$400" instead of a bare "400", and the <output> element is tied to the input with for.