Свойство CSS "opacity" не наследуется, хотя может показаться, что так оно и есть.
Поскольку содержимое в пределах , при наложении непрозрачность будет, в лучшем случае, непрозрачностью родительского (наложение). Итак, если родитель имеет непрозрачность 0,5, то визуально все его дочерние элементы могут только когда-либо достичь этой непрозрачности (не выше).
Чтобы избежать этого, элементы должны быть отдельными в HTML. Я знаю, что это боль, и я думаю, что CSS действительно должен иметь какой-то способ справиться с этим, но, к сожалению, это не так.
Другой метод, который будет работать с вложенными элементами, - это забыть о свойстве opacity и вместо этого использовать изображение PNG с альфа-прозрачностью и установить его в качестве фона для наложения.