transform: translate() on a parent element and its child elements requires specific z-index properties, Safari somehow resets/ignores the z-index(es) of the child elements.
Since translate() repositions an element only in the x and y axis, most of us assume that the z axis position should remain unaffected when using the function. However, Safari treats it otherwise – it seems to check that z-index is null and goes on to reset/ignore the z-index of all child elements in order to reposition the element and its children.
The easiest and failproof way to overcome this is to use
transform: translate3d() instead. For example, if you need to centralise an element on screen, instead of using
transform: translate(50%, -50%), use
transform: translate3d(50%, -50%, 0), like this:
position: absolute; top: 50%; left: 50%; transform: translate3d(-50%, -50%, 0);
Doing so makes Safari respect the z-index properties of the child elements.