I learned that there are two words for "heart": "koro" and "kero". The first one is a biological term, while the second one is a term for a playing card (♥️). Why are there two words? I checked a few languages and the word is the same in most languages (English, German, French, Italian) for both terms. The word "piko" can also refer both to a playing card (♠️) and to a sting.
According to Vilborg, all four playing card suit names were taken together directly from French - apparently without regard to koro - which comes primarily from Latin.
In fact, all four suits correspond to objects that have their own names in Esperanto:
- kero / koro
- trefo / trifolio
- karoo / kahelo
- piko / pikilo
You checked wrong languages :) The obvious ones to look at are Polish and Russian:
hearts (♥️): kiery, червы
heart (biological, metaphorical): serce, сердце
Meanings of Esperanto words are very often based on Slavic languages, rather than Germanic or Romance ones. And I think it's a good thing, as it makes Esperanto more international. The Slavic influence on Esperanto is underestimated, as people often only pay attention to how the words look like and not to details of their meanings.
And in this case it is in fact possible that the Esperanto names of card suits come not from French, but from Polish (which in turn has them from French):
- trefo - trefl
- karoo - karo
- kero - kier
- piko - pik