feat: white-tone desktop + login crossfade + BUG-031 FAT chain fix + DESK-E texture panics
- BUG-031: fat32_io.h on-demand FAT sector read (FAT beyond 128KB cache walked OOB, font/wallpaper corrupted past first clusters); host unit test diff=0
- material pack: gen_textures.py wired into build.ps1, startMenuLogo.rgba packaged; missing wallpaper/logo/font now fatal (DESK-E02/E03/E04 red fatal screen)
- login->desktop crossfade 16 steps, boot typewriter screen removed
- IDE exit: Esc detaches and returns to desktop page
- white theme: KS_* light palette, g_wf_light taskbar, hardcoded dark fills replaced
- QEMU verified: labels/clock render, wallpaper + start logo loaded, zero spurious panic