Unify popup text de-emphasis and meter sizing tokens

Text de-emphasis had drifted into eleven ad-hoc opacity literals across the
popup, the shared components, and the Providers config page. Several of them
(0.52-0.62) put Kirigami.Theme.textColor below the WCAG AA 4.5:1 ratio against
the Breeze Light popup background, and neighbouring labels in the same row
often disagreed by a few hundredths for no reason.

Replace them with a two-step scale on the applet root: secondaryTextOpacity
for supporting text and valueTextOpacity for the value a label annotates, so a
label/value pair keeps its hierarchy without inventing a new step per section.
0.7 is the lowest step that still clears AA. configProviders.qml mirrors the
constant the same way it already mirrors providerReadableColor.

Also size the three meters that stack in one provider detail view from a shared
meterTrackHeight derived from gridUnit instead of pinning 6 or 7 device pixels,
size the provider status badge from Kirigami.Theme.smallFont instead of a
hardcoded 10px that ignored the user font setting, and size the tab icons from
Kirigami.Units.iconSizes.small instead of a bare 16.

Guard all of it with static assertions in test_ui_regressions.sh: the tokens
must exist, no Label/Heading may set opacity from a literal, and no popup text
may size from device pixels.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
ebfb2c1fbaSimone committed on 8/10/2026, 4:15:45 PMparent3b8752d
7 files changedLine totals unavailable