Convert all money-flow endpoints (api_open_case, api_submit_contract,
api_execute_upgrade, api_sell_item, api_sell_bulk_items,
api_open_multiple_cases, api_open_slot_case, api_open_case_animated,
api_crash_bet, api_crash_cashout, api_get_inventory, api_item_detail,
api_rpu_info) to use AsyncSession + await throughout.
Critical bugfix: rpu.py and achievements.py functions (all async def)
were being called without 'await' and with sync Session objects, which
returned coroutine objects instead of actual data. This made RPU
weight adjustment, achievement tracking, and stat updates non-functional.
Also added AsyncSession to imports.
- Add 85 custom Dildo items (knife/skin pattern names, various rarities)
- Create Dildo Case config (hidden, items obtained via contracts)
- Fix admin user_detail.html nested script tag (Notify fallback removed)
- Fix admin cases.html embedded script tag
- Add notifications.js to admin base.html
- Fix admin users.html: use counts instead of relationship lists
- Replace old money format with |money filter across all templates
- Standardize nav partial (_nav.html) with active_page highlighting
- Fix RARITY_COLORS rename in activity sidebar
- Fix toast animation (forwards) and remove duplicate CSS
- Replace showToast() with Notify.* in upgrade page
- Add cs2_simulator.db and *.log to .gitignore
- Create remote-deploy.sh with DB exclusion