Lumiere v2.5 - GHL Appointments

1. Upload/replace the FULL lumiere project with this package.
2. Open /lumiere/import/install_schema.php once.
3. Open /lumiere/import/import_ghl_appointments.php once for the initial historical import.
   Default range: 3 years back through 1 year ahead.
   Optional: ?from=2024-01-01&to=2026-12-31
4. Refresh /lumiere/dashboard/

For ongoing sync, run import_ghl_appointments.php on cron. The importer is UPSERT-based and does not duplicate appointments.

Appointment status comes from GHL. Typical HighLevel statuses include new, confirmed, cancelled, showed, noshow, completed and active. Dashboard "Showed" counts showed/completed; "No-show / Cancelled" counts noshow/cancelled.
