Я подумал, что могу рассказать вам, почему это происходит, поскольку эта информация может пригодиться в будущем.
Элемент "h3" является блочным элементом. Это означает, что он, как правило, будет занимать целую «строку».
Причина, по которой элемент «span» (например) ведет себя по-разному, заключается в том, что он является «встроенным» элементом, что означает, что он займет «достаточно» места.
Есть два решения, которые уже могут помочь, вы также можете установить
display: inline;
На элементе h3, но это также изменит другое поведение.