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.
| selector | kind |
|---|---|
.ov-finish | block |
.ov-finish--viewport | modifier |
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.