Place on the <input> or <textarea>. On blur it Unicode-NFC-normalizes
the value, optionally collapses internal whitespace runs to a single space
(cngxTrimCollapse), and trims the ends. When the value changes it writes
back and dispatches a native input event, so a bound [field] / CngxInput
sees the normalized value through the existing DOM->signal path - this is a
deliberate imperative DOM normalizer, not a second managed copy.
Kept separate from CngxInputFormat so a format/parse atom is not overloaded
with normalization (Pillar 3).