## Why

The admin Statistics page needs to show the total number of people, orders and amount for the selected filters, but `GET /admin/lunch-orders/report` only returns per-employee rows, and the paginated response only carries the current page. Separately, the admin UI shows only item names (not prices) on the menu detail screens and the "Add item" popup, so the API contract for item `price` on those endpoints needs to be pinned down.

## What Changes

- `GET /api/v1/admin/lunch-orders/report`: when `limit` is sent (paginated response), add a `summary` object `{ total_people, total_orders, total_amount }` next to the existing pagination fields. The summary covers all rows matching the filters, not only the current page.
- When `limit` is not sent, the response stays a plain array with no `summary` (unchanged, not breaking).
- The report accepts `sort` (`total_amount`) and `order` (`asc`/`desc`). The default row order changes from `number_orders desc` to `total_amount desc`, with ties broken by `number_orders desc` then `account_id asc` so paging is stable. This applies with and without `limit`.
- `GET /api/v1/admin/lunch-menus/{id}` (`data.items[].price`) and `GET /api/v1/admin/public/lunch-items` (`data[].price`): document and guarantee that every item carries `price`, as a number when set (including `0`) and `null` when never set. The current code already returns this field; the change locks it in as a requirement and verifies it, with no code change expected.

## Capabilities

### New Capabilities
- `lunch-order-report-summary`: Totals (people, orders, amount) returned by the admin lunch order report.
- `lunch-item-price-exposure`: Lunch item `price` returned by admin menu detail and public item list endpoints, including the null vs 0 rule.

### Modified Capabilities

## Impact

- Code: `packages/w3suga/lunch-ordering/src/Http/Controllers/LunchOrderController.php` (`ordersReport()` and its OpenAPI annotation). OpenAPI annotations for `LunchMenuController::show()` and `LunchItemController::getList()` if they do not yet list `price`.
- API: additive field `summary` on the paginated report response; no breaking changes.
- No migrations, no new dependencies.
