Hmm I don't get alt text unless I set a size a size in the CSS and that's in Safari 4.05 PC & Mac. I wonder if its your large font/120dpi settings allowing more room for the text to show (or have you got a newer nightly build).
On another matter I've also just noticed in Safari that if you disable images from the develop menu you don't get any alt text either unlike Firefox. It's just blank.
Except Opera's minimum font-size is making the white input text render OVER your image, and you cannot trust the different browsers to make the width and height end up the same size on the input...
That's a good point and I missed out the negative text-indent trick I posted right at the start in post #3
Also there's something strange going on in Opera 10.53 (and 9.55) because I don't see any text anyway (and again this may be your settings so I accept that you may be seeing it). In my versions the minimum font-size is only obeyed if you set a font-size greater than zero. If you set font-size:1px you get 9px (the default min size) but if you set font-size:0 you get nothing. This happens in 10.52 and 9.55 but not in 9.2.
Firefox's minimum font-size is the same also and if you set font-size:0 you get nothing but if you set 1px or greater then you get the minimum font-size. Safari seems to obey the minimum even if you set zero though.
The negative text-indent trick works for me in opera 10.53 and 9.55 (but not in 9.2) and also works for me in Safari.
THOUGH - I think you were on the right track... I dislike all the excess absolute positioning and messing with z-index though, and overcoming opera's min-font-size means needing a slightly different approach...
Rather than absolute positioning the input just ride it up with a negative margin, rather than try to hide the input text with font-color and font-size, make the parent container overflow and then just pad the **** out of the input. We don't need z-index since a position:relative after the absolute in the source order will depth sort automatically.
Yes I have no problems with that alternative and the padding method for hiding text seems to work fine.:)