The solution is to use a JavaScript to write the overlayed text only if the browser supports CSS, and to make sure that the page will still be intelligible, if not all that it can be, without the overlay. We'll look at a script that does this a little later. In principle, you could work from the margins and point sizes to calculate the values mathematically, but in practice I find it quicker to do it by trial and error. Overlay effects can be easily wrecked by changes in the resolution for the user's display, which will cause lines to break differently. And if you do use such a narrow width, users with high-resolution displays will be looking at a lot of dead space on the page.
Inheritance can cause problems with overlays.
This will not work if the element has a defined background, however, because a class specification can override but not undo a background specification in the primary element specification. Therefore, the background of the top-most layer will conceal the lower layer.