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>