# Export/import demo: variation duplication fix

## Symptom

Selecting `White` or `Blue` in the demo created another 3D product instead of
changing the material of the existing product.

## Cause

The demo variation tree described a whole-product material, but it did not expose
a logical Product 3D part. The Elements and Variations modules therefore had no
`partId` to send to `applyPartVariation()` and could fall through to the product
addition path.

## Fix

- the demo GLB now declares one logical part with `id: 'product'`;
- both material variations declare `partId: 'product'`;
- the variation picker refuses to add a second product when the requested catalog
  element is already present but its part mapping cannot be resolved.

The runtime instance id remains unchanged when switching between the demo
variations, so export/import snapshots continue to contain exactly one product.
