- pointerdown records position, pointermove detects drag (>5px) - pointerup fires review logic only if no drag occurred - Hit-test priority: existing pin → scene object → empty canvas - 10px screen-space click radius for forgiving object detection - Permission gating: viewer role cannot place draft pins