mirror of
https://github.com/multica-ai/multica.git
synced 2026-08-12 19:06:06 +02:00
Hierarchy was being expressed with alpha: 152 call sites of text-muted-foreground/30..80, plus 26 of text-foreground/60..90 and a handful on destructive and current. On light surfaces every muted variant failed WCAG AA - /80 reached only 3.78:1 and /40 sat at 1.80:1 - because the palette had no step below --muted-foreground, so alpha was the only tool for 'quieter than muted'. The palette now has that step, and it is deliberately non-text: --faint-foreground clears 3:1 (WCAG 1.4.11) on every surface for icons, chevrons, separator glyphs and empty-cell em dashes. There is no room for a third readable text tone - AA caps a lighter text tone 0.018 L away from muted - so text keeps exactly one floor, --muted-foreground. Also fixes text-destructive/70 on a cron error message, which was 3.61:1. apps/web/app/text-contrast.test.ts recomputes the contrast floors from tokens.css rather than hard-coding ratios, and fails the build on new alpha-as-hierarchy. Alpha behind hover/focus/disabled stays allowed: the resting state carries the contrast obligation and it is solid. Co-authored-by: multica-agent <github@multica.ai>