no mire el código pero para que z-index funcione las capas tienen que estar posicionadas distinto de static, o sea, deben ser: relative, absolute o fixed.
si trabajas con absolute controlá (si lo creés necesario) que tengas un padre relativo para que la posicion dependa de este.
Yo por paranoico siempre trato de que las capas que se apilen sean hermanas entre sí, o sea, hijas del mismo padre.
este ejemplo ilustra bien el caso.ç
Sin dudas, sin el html es muy dificil responder porque al parecer estas haciendo bien.