- make PeriodComparator::previous() period-aware: shift by whole months
derived from the period length so variable-length salary months,
quarters, and years compute the correct previous period (and an
end-inclusive end-of-day bound no longer leaks an extra day)
- snap trend() from/to to the user's period boundaries so emitted buckets
match how transactions are grouped, and resolve the start day once
- share the dashboard top-categories period so the drill-down, links, and
description use the same window as the parent rows
- gate the custom start day read path behind CustomMonthStartDay so rolling
the flag back reverts to calendar months instead of stranding users
- relax month_start_day validation to sometimes|required
- resolve "today" in the user timezone for the cashflow page so the client
and server agree on the current period near boundaries
- bucket the category monthly breakdown drawer by the user's period
- cover previous-period math across short months, quarters, years, trend
alignment, and flag rollback