header img имеет абсолютное позиционирование в то время как сам header имеет позиционирование по умолчанию static, соответственно header img вырывается из потока и позиционируется относительно родителя, в данном случае body. Сам мо себе body и html нельзя ограничить по ширине, если внутри есть элементы выходящие за пределы окна то body,html { overflow-x: hidden !important; } не поможет. Вообще лучше всегда делать обертку всего сайта внутри body и тогда будет работать overflow-x: hidden. Но в данной верстке надо бы и header сделать правильно, так как сейчас это пустышка с нулевой высотой.
Он у тебя на всех работает, просто последний слайд идет поверх остальных и скрывается только при помощи opacity: 0;
Добавь ко всем неактивным слайдам pointer-events: none; или visibility: hidden;
Интересная задача. В общем весь фокус в том, что поверх видимых карточек, лежит точно такая же сетка с невидимыми карточками у которых есть только синий border. На сетку, которая лежит сверху, наложена маска:
mask: radial-gradient(320px 320px at var(--x) var(--y), black 1%, transparent 40%);
То есть у всего блока с синими border остается видимым только радиальный градиент в 320px, а x и y это координаты курсора. Ну и грубо говоря получается такая картина: