In Belle of the Ball, there are six different families, each noted by a unique symbol+color. The illustrations are also color-coded, using only the palette associated with their family. Each family also has a unique upper border, pattern and ornate family crest behind the illustrated portrait. And if that wasn't enough, I made each guests name alliterative, based on the first letter of their family's surname. All those things make the families distinguishable from each other even without being able to distinguish the colors.
Each guest has up to two actions they may be doing at the party: Either flirting, snubbing or neither, and either eating, drinking, dancing, or neither. For example, a guest may be flirting+eating, snubbing+drinking, just dancing, just flirting or none of the above. Imagine these category 1 as A, B, C and category 2 as a, b, c, d.
The symbols for either action will always go directly beneath the suit, but they are not color coded. They are dark, bold silhouettes representative of that particular action. The symbols from category 1 always go in the upper half of the text block. The symbols from category 2 always go in the lower half. So, at a glance, you can see whether a guest is doing two, one or none of the actions available.
And lastly, you may have noticed a small number above the suit. Each member of the family is numbered 1-16 to help you check that you're not missing any cards. Males are odd-numbered. Females are even-numbered. The numbers themselves aren't used in play, but if they were, I'd be sure to make them the same size as the symbols.
So that's what I've learned so far about the visual codes in my game design. Hope you found this information useful, too!