Time tracking and percent-complete billing

Log hours by phase, then bill the owner either hourly (from unbilled time entries) or percent-of-complete (lump-sum and % of construction).

Log hours:
- Time + billing tab → Time entries sub-tab → "+ Log hours"
- Date, phase, hours, optional rate + description

Draft an invoice:
- Time + billing tab → Invoices sub-tab
- **Hourly fee:** "Draft invoice from unbilled hours" — pulls every unbilled time entry into a single invoice
- **Lump-sum / % of construction:** "Draft invoice for due amount" — computes due-now from phase progress × phase weight × total fee, minus previously billed
- Issue the invoice when ready
- Mark paid when payment lands

The owner sees a clean total. Internally, every time entry that landed on an invoice is stamped `billed: true` with the invoice id for audit.