Mobile polish, trip detail preview, and nav memory
 
Frontend:
  - Trip detail previews the newest expenses, with the full list a tap away
  - The Viajes tab returns to the trip you were reading, and pops back to the list once you are already in it
  - Confirmation banner after saves and deletes
  - Date range picker for trips + Spanish datepicker locale
  - Mobile spacing driven by tokens: containers own the vertical rhythm via gap, children carry no margins
  - Trip detail header clears the fold on a phone; trips list tightened
 
Backend:
  - Birth date is now optional on registration and profile (migration: users.birth_date becomes nullable — runs on deploy)
  
Tooling: 
  - front-lint checks prettier too, matching what CI already ran