diff --git a/app/views/stats/index.html.erb b/app/views/stats/index.html.erb
index a7f3b73d..175140e9 100644
--- a/app/views/stats/index.html.erb
+++ b/app/views/stats/index.html.erb
@@ -554,11 +554,26 @@
right_margin = 2
bottom_margin = 25
- # Calculate bar width and spacing
+ # Calculate bar width and spacing that actually fits
available_width = 100 - left_margin - right_margin
- min_bar_width = 0.15
- bar_spacing = 0.05
- bar_width = [(available_width - (total_days * bar_spacing)) / total_days, min_bar_width].max
+ target_bar_width = available_width / total_days.to_f
+ min_bar_width = 0.1 # Minimum visible bar width
+ max_bar_spacing = 0.05 # Maximum spacing when there's room
+
+ if target_bar_width >= min_bar_width + max_bar_spacing
+ # Plenty of room - use max spacing
+ bar_spacing = max_bar_spacing
+ bar_width = target_bar_width - bar_spacing
+ else
+ # Tight on space - eliminate spacing and use minimum width
+ bar_spacing = 0
+ bar_width = [target_bar_width, min_bar_width].max
+
+ # If still can't fit, scale everything down proportionally
+ if bar_width * total_days > available_width
+ bar_width = available_width / total_days.to_f
+ end
+ end
# Show fewer labels for readability
label_interval = (total_days / 6.0).ceil