A wrapper div, then the children, then the banner: a span with the text and an empty div for the fold. No role, no aria-* and no tabIndex.
- The label is in the reading order. It is real text in a span, so a screen reader reads it as part of the card. Nothing has to be added for that.
- It is read last, not first. The banner comes after children, so a screen reader reads the card's title and body and only then “Most popular”, while a sighted reader sees the banner before anything else.
- So the word has to stand on its own, out of order and next to the card's name. “Beta” after a card called “Workflows” still works. A word that was written to be read first does not.
- If the order matters, say it inside the card as well and let the ribbon repeat it visually.