Thanks again for your elaborate response. I actually just managed to fix it myself. It turned out to be quite a trivial case of adding some vendor prefixes.
The reason for 'mixing' technologies is to keep things as lightweight as possible. But this is still fairly rough and patchy testing code. Before this goes into production, I will try to stabilize it as much as possible. Although all of my target platforms already seem to be behaving properly with this.
I do however aim to always produce clean, reusable and testable code. And as you're making some valid points in that regard, I will take them into consideration while refining!