Added a bytestring copy call in PAK after decompressing.  This helps garbage collect the lazy BS, resulting in approx half memory usage of app.  Additionally copy calls in the same entryData function don't improve memory usage much more.
Tried out a newer version of Map to lower memory usage, but no dice.  Updated cabal to use explicit containers version to avoid getting warnings when using new 0.5.2.1.
Reduced memory usage from 70 MB to 50 MB by turning off profiling of non-debug executable.
Redesigned message passing using idiomatic 2 channel approach.  This did not solve my memory leak problem, but I think it's still better than before.
Changed the usage of forM to forM_ to try to help memory.  No dice.
I updated TPG to get elements by ID in a batch, then updated most functions to operate on lists instead of individual elements.  This cuts JSON traffic and increases app responsiveness.
Achieved dramatically improved memory performance by using the -threaded linking option, which enables the multithreaded RTS.
Initialization now extracts Huge font, and modified CSS to use it.
Big UI commit.  Extracts background images and centers frame.
Background is now selected randomly.  I excluded screen 7 because I don't think it fits with the rest.
Made main frame transparent and eliminated extraneous CSS.
Removed 'Searching...' status message.  Cleaned up item filter input field.
Made overlay that crossfades into GUI.  Also changed initialization procedure to have events that are proper types.
Fixed the CSS for centering the overlay.