InlineForm and Tabular are siblings in the same VBox. Default
getWidgetById() searches downward from the source widget, missing
siblings. Use 'app.' prefix to resolve from root.
- Changed DataViewer to Tabular with row_options.fields for proper table rendering
- Form submit target changed from 'self' to 'billing_page' (root VBox ID)
with mode:replace, preventing nested page loading inside Form
- Fixed page_size to page_rows (correct parameter name)
- Added column definitions: date, time, subject, direction, summary, amount, balance