- Shipped
- November 7, 2026 at 10:17 PM UTC
- Author
- Kamo
- Commit
- 55cf08d
The live sweep with a pale brand showed the root MUI fix was not enough: hand-made CSS drew the brand as TEXT and white ON the brand directly, so a light organization colour left launchpad rows, shelf headers, buttons, the admin bar, the rail and the top bar unreadable. Shared variables, no per-org values: - globals.css: --on-primary now follows the brand's luminance (the ON_BRAND / onBrandText line, 0.179) instead of assuming white; an org theme that declares it still wins. Every existing var(--on-primary) user is fixed by this alone. - --nav-on: the ink for the nav chrome (brand scaled toward black 60-90%), measured on the lightest stop. Dark and mid brands keep their white chrome exactly; a pale brand gets black. - Brand as text: color: var(--color-primary) / var(--text-primary) (the org template points that back at the raw brand) / text-[var(--color-primary)] -> var(--color-primary-ink), the existing AA ink (OKLCH L <= 0.42; a dark brand is unchanged). Fills, borders and tints keep the brand. - White on a brand fill (same sx/style block, Tailwind class string, the house hero region, the settings hero, BackToHomeButton onGradient) -> var(--on-primary), white washes -> color-mix of it. - NavTop, NavPri, the rail/bar buttons and the home admin bar entries -> var(--nav-on). The dropdown panels keep white: they sit on the legible() ground, which already reads (guard kept).
