Короче, блочные элементы растягиваются по высоте содержимого. Вы задали overflow, но никакого переполнения нет => скролла нет.
Зададите высоту или макс высоту => будет скролл.
Что-то тут не то.
% загрузки откуда прилетает, так?
Зачем его снова получать через ширину?
p.s. кстати, есть тег progress.
Если он не подходит по какой-то темной причине, то для своего прогресса в большинстве случаев достаточно одного div и градиента либо псевдоэлемента для цвета.
Только нужно понимать, что если вы открываете файл html из папки (ваш скрин на это намекает), то корнем окажется диск F. И картинка снова не покажется.
Да. Поэтому гугл просит вас указать размеры изображения через атрибуты.
Вы можете указать либо родные либо пропорциональные. Об этом написано в хелпе гугла, но лень искать где.
Чтобы вам эта фикс высота не мешала при адаптиве, вы её переопределяете стилями. Пропорции при этом сохраняются, все довольны.
С флексами это решается костылем: добавляется максимально возможное минус один количество пустых, не имеющих высоты и отступов элементов в конец.
Альтернатива с js: вместо пустых элементов использовать псевдоэлемент и передавать ему ширину (или базис) через кастомное свойство.
Либо, если фон страницы известный и однотонный, приделать в угол псевдоэлемент с градиентом с четкой границей из серого в белый.
Либо верхнюю и правую границы тоже рисовать градиентами (calc(100% - размер уголка)).
Потому что sticky работает не так, как вы пытаетесь его применить.
Элемент с position: sticky «прилипает» к экрану при прокрутке, пока не встретится с границей родительского блока.
Чтобы добиться того эффекта, которого вы, вероятно, хотите, нужно вытащить список из header, чтобы он стал потомком body. А лучше вместе с nav и перевесить sticky на nav.
Короче, блочные элементы растягиваются по высоте содержимого. Вы задали overflow, но никакого переполнения нет => скролла нет.
Зададите высоту или макс высоту => будет скролл.