Les marges ne sont pas fiables sur les éléments en ligne. Les nouveaux navigateurs gèrent bien, mais les plus anciens ne fonctionnent toujours pas comme vous le souhaitez dans de nombreux cas. Il se peut donc que vous deviez faire de l'élément un élément de niveau bloc (ce qui vous obligera éventuellement à utiliser un flottant pour le ramener en ligne avant de le positionner sur l'élément de formulaire, ce que je suppose être la position finale voulue.)
De plus, z-index ne fonctionnera que pour les éléments qui sont positionnés Je suis surpris que la position: relative dérange d'autres choses, mais la position: absolute ne fonctionne pas, mon go to fix serait d'utiliser {position: relative left: -50px; z-index: 10;} pour faire glisser le span sur