Can you stop the shadow from fading?
To make the roof transparent (or semi-transparent as you have it) but opaque in the shadows you can use the Ray Depth output of the Light Path node.
But, this gives you a value of 0 or 1 which in your case means your roof will be completely invisible but have a shadow, because for the camera the Mix Shader is using a factor of 0 (fully transparent) and for the shadow 1, so the Toon BSDF is only used to create the shadow.
So in order to keep it semi-transparent when the Ray Depth is 0, you can take a Math node to add the desired mix factor to this result, for example 0.6 as you are using here. Then to the camera the Mix Shader is set to 0.6 (semi-transparent) and 1.6 for the shadow (a value larger 1 is fully opaque). To avoid out-of-range values you could enable Clamp in the Math node but it's not necessary in this case.
My example (I just used a simple Diffuse instead of Toon):