* iconHelpers.js (new): shared SVG library + renderSelectPicker /
renderToggle helpers, injected once per editor session by MenuManager.
Pulls the visual layer out of machineGroupControl so every node that
loads /<node>/menu.js inherits the cards without per-node code.
* logger.js, physicalPosition.js: new initVisuals() step that upgrades
the native checkbox + select to icon cards using the shared helpers.
Native controls stay in the DOM (hidden) as the save targets.
* asset.js: rewrite the asset selector into a left->right wizard —
chip strip (Supplier > Type > Model > Unit), per-stage type-to-filter
combobox, node-aware spec strip + curve mini-chart sparkline. Models
are server-side enriched with a slim previewCurve per softwareType
(rotatingMachine Q-H, valve Cv, diffuser SOTE; measurement has no
curve data yet). Hidden native selects remain canonical save targets.
* MenuManager: each menu's initEditor now owns its own initVisuals
call so async-data menus (asset) can sequence visuals after loadData.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>