yea, gmail does not like display none, and it removes it from inline CSS. However, I've had some mixed success with using it along with !important in a media query, but it's still not a good idea I don't think.

Not sure about visibility, will look it up.