One shader quad over the whole page. It paints neutral grey — the identity value under hard-light — so the layout below keeps every pixel it had until the tube's own fields darken or lighten it: curvature, bezel, vignette, rolling scanlines, aperture grille, phosphor grain, glass glare, chroma fringing and tape wobble.
Saturated bars and a grey ramp make the tube legible: the chroma slider fringes the bar edges, the grain sits in the ramp, the grille rides the flat fields.
Nothing is captured, rasterised or proxied. Text stays selectable, links stay
clickable, and the layer is pointer-events: none above it all.
blend mode · hard-light
A barrel pinch bends the whole field, and anything pushed past the glass edge becomes bezel.
Per-channel grain, scaled by the vignette so the corners stay quieter than the centre.
The three channels sample the tube at slightly different offsets; the disagreement is the fringe.
Toggle Framed host in the panel and the same controller moves its layer into this element — absolute instead of fixed, sized by a ResizeObserver, paused by an IntersectionObserver when it scrolls away.