The issue with your file seems to be Experimental Feature Set, where you use Adaptive Subdivision Surface modifier. Switching to Supported Feature Set works with Normal node (also easier to adjust direction).
I know it is not a solution if you want to keep Adaptive Subdivision, sorry.
It gives me an impression it's a loop that should not work, because Displacement node is waiting for Normal that is generated from displacement ... I would expect result of Normal calculated from flat plane, but it is calculated from output of Displacement that is at the end of node tree. It is like a question what was first - egg or chicken. But it works :)
It is out of my understanding how shader data are used by regular Subdiv vs Adaptive.
BTW - for Micro-displacement (Adaptive Subsurf) you don't need such high dense mesh, four vertices are enough.
Here is a test from scratch to avoid hidden things.
- Feature Set - Supported
- Few times Subdivided W Plane with classic Subdivision Surface modifier set to 4
- Material Propeties > Surface > Displacement+Bump (even there is not bump set result is much detailed, hm)
Or you can use Separate XYZ node as factor for mix.. Mix node with colors plugged into Diffuse shader is just to better visualise effect.