- Add 17 SVG icons to app/assets/icons/ (Material Icons paths, Apache 2.0)
- Remove Google Material Icons and Symbols CDN link tags
- Add normaliseIconName(), loadIcon(), getIcon(), iconEl() — icon name
normalisation per spec §2.3, async fetch-and-cache, sync accessor,
element builder with broken-image fallback for missing icons
- Preload all standard icons (+ categories-selecticon if set) concurrently
in boot() before UI is built, so all icon references are sync after that
- Replace ICONS object with icon cache system throughout:
theme toggle → light_mode/dark_mode, search → search, hamburgers → menu,
section toggles → arrow_right/arrow_drop_down, dropdown carets →
arrow_drop_down, category selecticon → normalised SVG lookup
- Update .toggle-icon, .category-icon, .nav-caret CSS for SVG layout
- Add .mdcms-icon CSS class (inline-flex, currentColor fill)
- Fix pre-existing ICONS.close bug (was undefined; hamburger now always
shows menu icon)
https://claude.ai/code/session_015XtsgTMi8UtmgxEgb5Qt2c