{
  "_doc": "نئو top-up packages sold through Zarinpal. Read by api/main.py from {MIRROR_DIR}/neo_packages.json — scp it up to reprice, no deploy needed. Delete the file (or empty `packages`) and the launcher hides the top-up panel. The panel also hides itself when ZARINPAL_MERCHANT_ID is unset in the VPS env, so a half-configured server never shows a buy button that 503s.",
  "_fields_doc": "id (stable, stored on every purchase doc — never reuse one for a different amount or old receipts start lying) + neo (what lands in the balance) + price_toman (what Zarinpal charges; the server reads the price from HERE, never from the client) + bonus (percent, display only — fold it into `neo`, this field just draws the badge) + active + sort + name (shown in the launcher).",
  "_pricing_doc": "Anchored to the earn rate: the 120 نئو/day ceiling means the 300 نئو starter is about 2.5 days of playing, and the 3000 نئو pack is roughly a month. Toman prices are deliberately round numbers a teenager can read off a bank app. Raise the bonus, not the base rate, when running a sale — the base rate is what every player mentally anchors on.",
  "packages": [
    { "id": "starter", "name": "۳۰۰ نئو", "neo": 300, "price_toman": 20000, "bonus": 0, "sort": 1, "active": true },
    { "id": "plus", "name": "۸۰۰ نئو", "neo": 800, "price_toman": 50000, "bonus": 7, "sort": 2, "active": true },
    { "id": "pro", "name": "۱۷۰۰ نئو", "neo": 1700, "price_toman": 100000, "bonus": 13, "sort": 3, "active": true },
    { "id": "mega", "name": "۳۰۰۰ نئو", "neo": 3000, "price_toman": 165000, "bonus": 21, "sort": 4, "active": true }
  ]
}
