* fix: calculate ban expiration correctly * fix: handle negative ban time and long durations * fix: display remaining ban time with days * test: add time formatter coverage