phase 1: LVGL boot screen, MeshCore radio params, compile-clean build
- Add lv_conf.h (16-bit color, swap, custom malloc, dark theme, Montserrat fonts)
- Add meshtanic_config.h (350 contacts, 40 channels, 128 dedup ring, feature flags)
- Add partitions.csv (16MB: dual OTA + 3.375MB LittleFS)
- Rewrite main.cpp: LVGL init with double PSRAM buffers, boot progress screen,
FreeRTOS tasks (ui/gps/housekeeping on core0)
- Update display: LovyanGFX LVGL flush via writePixels, SPI3_HOST for ESP32-S3
- Update keyboard: ISR-based detection, LVGL keypad driver with key mapping
- Update radio: MeshCore params (915MHz/BW250/SF10/CR5/22dBm/preamble16),
TCXO 1.8V, CRC, RX boosted gain, pointer-based SX1262 ctor
- Wire contact.h/router.h to meshtanic_config.h constants
- Remove ESP32-audioI2S and LittleFS_esp32 deps (native ESP-IDF i2s + built-in LittleFS)
- Build passes: 7.6% RAM, 10.4% Flash