One border weight, and no sliver beside the nav

The nav's right edge read as two lines because it was two things: its own
border, and a sliver of the stage's background showing through a
sub-pixel gap before the app's webview began. The stage rect is now
rounded to whole pixels and to the same edges each time, so the app
covers the stage exactly.

Borders are one weight throughout and the lightest that still separates -
slate-200 in light, slate-800 in dark. Nothing drawn heavier than it
needs to be to read as an edge.
This commit is contained in:
2026-09-01 15:32:21 +02:00
parent 0567a4b7c7
commit 07bb22eb2d
4 changed files with 25 additions and 9 deletions
@@ -302,6 +302,16 @@ The margin That margin is the only part of the window that is not a web page, an
therefore the only place left to grab it by. Full screen has no use for it and gets the
room back.
### Borders
One weight everywhere, and the lightest that still separates: `slate-200` in light,
`slate-800` in dark. Nothing is drawn heavier than it needs to be to read as an edge.
The stage rect is rounded to whole pixels, and to the same edges every time. A fractional
left edge leaves a sliver of the stage's own background between the nav's border and the
app beside it, and at a hairline weight that sliver reads as a second border line running
the full height of the window.
## Dialogs
An app's webview is a native view that paints above the shell, so a dialog cannot simply