- Add isTokenExpired() / getTokenExpiry() JWT helpers to auth.ts - Pre-flight token expiry check in apiFetch (60s margin) - Graceful 401 handling: set session_expired flag before redirect - LoginPage shows "session expired" banner when flag is set - OrdersTable cancel button: add pending state + inline error display Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>