Fields are created/destroyed programmatically via document.createElement as steps advance
Technique: Each step's fields are created programmatically via document.createElement(). When advancing, previous step fields are removed via removeChild() and new fields are appended. No innerHTML.
Why it matters: This is how React, Vue, Angular, and other SPA frameworks render forms. The virtual DOM reconciliation results in elements being created/destroyed as component state changes.
Expected result: Hash should remain stable due to SDK's fingerprint cache keyed by form_id.