makeover 5.12.0

Shared theme loading for the make-family apps: TOML theme files parsed into intent-based color tokens, with perceptual derivations and WCAG contrast.
Documentation
# Contributing

## Versioning

A version number tells a consumer what taking the update will do to them, so
each kind of change moves its own digit.

The rule holds across the makeover suite and quasi. makeover itself is past
`1.0`; its `0.x` siblings put additions on the patch, so that their minor stays
reserved for looks and breaks.

| the change | while `0.x` | from `1.0` |
|---|---|---|
| breaks a consumer's build | the minor | the major |
| changes a look | the minor | the minor |
| adds API | the patch | the minor |
| fixes a bug and changes no look | the patch | the patch |

A look change is anything a consumer would see differently on screen without
touching their own code: a derived colour, a spacing, a default. Its commit
subject starts `look:` and names its before/after render, which the
`commit-msg` hook in `scripts/githooks/` enforces for the paths listed in
`scripts/githooks/look-paths`.

A look never ships on a patch, so a consumer taking only patches never sees
the screen change under them.

Bento's publish preflight checks the bump against the commits since the
previous release tag and refuses a `look:` commit on a release that keeps the
minor. While `0.x`, a minor bump with no `look:` commit is published with a
warning that names the commits, since only a break justifies it and the
preflight cannot tell a break from an addition. The marker below opts this repo in.

<!-- bento:bump-policy=look-minor -->