- Fix Header mobile logo/button overflow on 320px-375px screens by making logo text truncate gracefully & action buttons compact
- Make 3 hero stat boxes stay side-by-side in a 3-column grid with centered icons/text on mobile screens
- Adjust 'کیفیت / استانداردهای فوقدارویی' label position so it stays contained within the image boundaries without overflowing the screen
- Add interactive Back to Top button (both floating and footer button) for quick navigation
- Add local Persian fonts: Vazirmatn, Sahel, Shabnam, Lalezar, IranNastaliq
- Configure @font-face in globals.css with all font weights
- Set Vazirmatn as primary font, Lalezar for headings, Sahel for alt text
- Fix Hero image loading with crossOrigin and error fallback
- Fix SmartAdvisor disabled button contrast (WCAG compliance)
- Add visible labels for form inputs in SmartAdvisor step 1
- Fix UserDashboard null safety for walletBalance
- Fix announcement bar hydration mismatch (loading state guard)
- Fix UserDashboard null checks for profile fields
- Improve overall frontend robustness and data-loading guards
- Hero.tsx reads hero_image_url from uiText store first, falls back to banners then default
- Seed script now only creates keys that don't exist (no overwrite)
- Added hero_image_url key to seed + admin panel UI texts groups
- Reverted DEFAULT_TEXTS initialization (caused hydration mismatch)
- settingsStore back to empty init, fetchSettings populates from API
- Fix seed-products.ts TS error (implicit any) and BOM handling
- Re-run full seed to restore correct Persian encoding in DB
- Fix productService query→search param mismatch
- Fix IngredientWiki hardcoded port 4000→use settingsStore
- Restore seed-products-data.json from git after accidental corruption