LAPAWORLD LIBRARY — FINAL PROJECT

1. Install dependencies:
   python -m pip install -r requirements.txt

2. Test in development:
   RUN_DEV.bat
   or:
   python app.py

3. Edit the visible products:
   products.json

4. Re-encrypt the product database after editing:
   python build_db.py

5. Build customer EXE:
   BUILD_EXE.bat

Final EXE:
   dist\LAPAWORLD_Library.exe

COVERS
------
Optional cover files:
  covers\lapaworld.jpg
  covers\world_part_01.jpg
  covers\world_part_02.jpg
  covers\world_part_03.jpg

If they are missing, the launcher shows branded LAPAWORLD placeholders.

IMPORTANT
---------
- The four Google Drive IDs are the test IDs used during development.
- Replace placeholder product sizes with the real byte sizes before release.
- Add real SHA256 values if you want integrity verification.
- The AES key is shared by build_db.py and crypto.py in this packaged project.
  If you change one, change the other and rebuild products.dat.
- Resume uses .part files.
- Closing while downloading offers Cancel and Exit / Minimize to Tray / Continue Downloading.

V2 VISUAL FIX
-------------
The theme is now embedded in gui/theme.py and applied to QApplication, so Windows dark mode
cannot silently replace the Lapa cream/pink/purple/yellow palette.

Four branded product covers are bundled in /covers.
These are Lapa-style launcher covers generated for this package, not the original website JPGs.
To use the exact website artwork, replace the four JPG files with your originals using the same names.

The four existing Google Drive IDs are mapped in order to:
1. Lava
2. Desert
3. Swamp
4. Ultimate

V3 COMPACT STORE GRID
---------------------
- LAPAWORLD products are now shown as a compact 3-column cover grid.
- The header now includes a LAPAMODELS SITE ↗ button.
- Set your actual public website URL in config.py:

    SITE_URL = "https://your-domain.com"

The uploaded manual website project did not contain a public custom-domain URL,
so the package intentionally does not guess or hard-code one.
