Ciao, il problema è che con opacity stai applicando una trasparenza all'intero elemento (compreso il suo contenuto).
Se vuoi applicare la trasparenza solo al colore di sfondo, puoi usare la notazione rgba() su background-color.
Tieni giusto presente che versioni poco recenti di IE non supportano quella notazione. Se lo ritieni necessario, esistono diversi trucchetti che potresti applicare. Nel caso ti può dare una mano San Gugol.