"""Hard overlap resolution via projected gradient descent.

After each optimizer step, projects positions to satisfy hard constraints
(e.g., no node overlap). This is the "projection" in projected gradient descent.
"""
