Three layers
A preset bundles all three.
Tokens
Every colour and measurement lives under the GoHud type in the Theme, addressed by name.
Opacity — the game behind the panel
Popups, dialogs, sheets, cards, HUD panels, alerts and snackbars draw their face at 80% opacity.
Skins — where a Theme cannot reach
class_name MySkin extends GoSkin func draw_joystick(canvas: CanvasItem, center: Vector2, knob: Vector2, radius: float…
Your own preset — one file
Adding a theme used to mean editing four places by hand — the builder's palette, the shape, a skin, a preset resource.
Readability is measured
"Pretty" is taste; "legible" can be measured.