The items in the "Votes cast" summary are laid out using the Flexbox model. The container element consists of two rows of items ("upvotes", "downvotes", "question votes", "answer votes" and "this month", "this week", "today" in the second respectively), each its own flex container (set with the d-flex
Stacks class).
To ensure proper column alignment, each row has the flex__allitems3
Stacks class set on it that sets the flex-basis
CSS property to calc(25% - var(--su16));
for all items (indicated via the flex--item
Stacks class) which sets the initial width of items roughly equal to ¼th of the width of the container.
This is enough for the elements to be aligned properly (as evidenced by the alignment on larger screens). However, each row also has the md:jc-space-between
Stacks class which is the source of the issue. The jc-space-between
Stacks class simply applies the justify-content: space-between;
rule to the flex container, and the md:
prefix makes it scoped to medium-sized screens or less.
And wherein lies the problem — the abovementioned class adds a media query with two problematic rulesets that kicks in for viewport widths less than 980px:
@media (max-width: 980px) {
html.html__responsive:not(.html__unpinned-leftnav) .md\:jc-space-between {
justify-content: space-between !important;
}
html.html__responsive:not(.html__unpinned-leftnav) .md\:fl-auto {
flex: 1 1 auto !important;
}
}
Of note is the shorthand flex
CSS property and it its third value which ensures that the flex-basis
is overridden to auto
. Combined with flex-grow
set to 1
and justify-content
also being overridden to space-between
, the media query causes the items to stretch resulting in what you observe.
Case in point, compare the component with the query disabled and without.
With:

Without:

Give it 6 to 8.
@media (max-width: 980px)
that completely screws everything up