OVERSCANUI KIT
no button at all a worn bezel with weight channels do not converge zero depth instrumented, full of smoke a field of real characters a camera looking out additive, so no shadow hairlines, no new shader no raster, so no scanlines

finish.css

Overscan finish.

The finish sits OVER the interface, which is why it is CSS and not a shader: a GLSL pass cannot sample the DOM. Two pseudo-element layers, no extra markup.

Everything here erodes contrast, and by an amount that depends on where on the surface an element sits. tools/finish.py models exactly these rules and reports the delivered ratio per position. If you change a value here, change it there, or the model is a claim rather than a measurement.

src/finish.css · 1 block · blocks that belong to a custom element are on that element's page

.ov-finish

No still yet.

Everything on the surface sits above the field, EXCEPT the field itself. The exclusion is what makes it work: .ov-finish > * is a class selector and ov-field is an element selector, so without :not() the more specific rule wins, the backdrop becomes position:relative, and it takes layout space and pushes the whole surface down. Two of this kit's own stylesheets fighting over one property, which is exactly what the specificity note in TOKENS.md is about.

selectorkind
.ov-finishblock
.ov-finish--viewportmodifier

Written into markup by src/ov-modal.js, so an element sets it for you. Used on allocator.html, annunciator.html, ascii.html, aux.html, avatar.html, balance.html, baseline.html, bevel.html and 68 more.