Another thing to keep in mind is z-index is scoped just like absolute positioning is scoped - that is no matter how high you set the z-index of an element, it will never appear in front of an element that has a higher z-index than a parent of the element your setting the z-index on. Consider the following.
In the above, div “A” can never be in front of div “B” because, no matter how high it’s z-index is set, the z-index of it’s parent, nav, is lower than the z-index of div “B”.