I'm attaching a patch that fixes both problems with border-box sizing and separates width calculations in Ruby from border sizing in CSS. This also allows future border changes without adjusting the width calculations.
- Explicitly apply
box-sizing: border-box to Gantt bars.
- Adjust bar heights to preserve their outer dimensions in the normal layout.
- Use the calculated bar widths without subtracting 2px.
Responsive layout after the patch

Progress widths after the patch (enlarged 4×)

Confirmed in Chrome, Safari, and Firefox on macOS. Visual regression tests found no new regressions across 46 scenarios. Full visual test report: https://redmine-gantt-comparison.hidakatsuya.chatgpt.site/
Note: Both problems affect Redmine 7.0.2. However, this patch is based on the updated Gantt implementation in #44567 and cannot be backported as is.