Add contrastTextColor() utility that calculates relative luminance per
WCAG 2.1 and picks black or white text to guarantee >= 4.5:1 contrast.
Attribute and Talent cards now derive text color from the background
color itself instead of checking dark/light theme, fixing mid-luminance
colors that were previously unreadable.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>