Root cause: Alpine 3.14.9 x-if on template element doesn't reliably re-render when a reactive property changes. previewItem was being set (confirmed by logs) but x-if never re-evaluated. Fix: replace <template x-if> wrapper with direct x-show on the preview-panel div. x-show with x-transition is the reliable pattern for this Alpine version.