This is a 2D amplitude-plane view of the same protocol as the 3D Bloch-sphere version — no camera, no 3D geometry. Each qubit is drawn as two vectors in the complex (Argand) plane, one per basis amplitude:
|ψ⟩ = a|0⟩ + b|1⟩ → draw vector a and vector b
from the origin of a unit disk
Two quantum processors (QPU-A, QPU-B) share one entangled pair pre-dressed with the target gate U: resource = (I⊗U)|Φ+⟩. Alice performs a real Bell-basis measurement on her data qubit and her half of the pair; the exact 3-qubit amplitudes are expanded in the Bell basis to get the true probability of each of the 4 outcomes — that live distribution is the bar chart in the centre of the canvas, recomputed from the real complex matrices every time you move a slider or change the gate.
|ψ⟩⊗resource = ½ Σ_k |Bell_k⟩_AB ⊗ (U·P_k)|ψ⟩
Pressing Run samples one outcome k from that exact distribution, animates 2 classical bits crossing the channel strip, then applies Bob's correction D_k = U·M_k-1 (derived at runtime from the true post-measurement map, not a lookup table) — Node B's amplitude-plane disk snaps to exactly U|ψ⟩, and the fidelity readout confirms it.
- H, X, Z, S — pick the gate to apply remotely at Node B.
- θ, φ sliders — set the unknown input state |ψ⟩ at Node A (parametrised the same way as a Bloch angle, but plotted here as two amplitude vectors, not a 3D arrow).
- Histogram — the exact probability of each Bell outcome for the current state and gate, before you even press Run.
- Run Protocol — samples a real outcome, animates the 2 classical bits, then reveals Node B's corrected amplitudes.
Because Bob's disk cannot update until the classical bits visibly finish crossing the channel, the protocol cannot signal faster than light even though the entangled channel itself is drawn as continuous — fidelity always converges to ~100%, but only after the classical packet lands.