This. Or offer to go shopping with her and let her pick out something she’d like (up to a certain amount if you’re on a budget). It might also be an opportunity for her to get something she might not normally. For example, I might not buy something like a fancy lipstick or eyeshadow for myself because it’s too expensive, but as a gift it seems a bit more special somehow, and you’ll think of the gifter when you use it.
OP, it’s really sweet that you want to get her something, but I personally think it’s too risky to just buy it unless you know the exact product she uses. Better to ask outright. If you still want it to be a surprise, you could always ask her for 2-3 options you can choose from. That way she gets something she’ll like/use but won’t know exactly what it is.
Yes this! A couple of years ago my sister got me a voucher for an online sewing shop for Christmas, but she stuck the code on a piece of coloured card and decorated it with a still from The Shop Around The Corner and stickers of Christmassy decorations and the city I live in. I loved it so much I’ve still got it stuck to the inside of one of my sewing boxes even though I used the code ages ago. Something like that can definitely help elevate it from being ‘just’ a gift card.