matchMedia's change event fires OUTSIDE the Angular zone; the handler
re-enters via zone.run (same pattern as mj-filter-popover) so template
flips driven by the emission are seen by change detection. Zoneless
subscribers should still call SafeDetectChanges after mutating their own
state in the subscription.
Reactive "is the shell in mobile chrome?" signal.
matchMedia's
changeevent fires OUTSIDE the Angular zone; the handler re-enters via zone.run (same pattern as mj-filter-popover) so template flips driven by the emission are seen by change detection. Zoneless subscribers should still call SafeDetectChanges after mutating their own state in the subscription.