Пробовал разные варианты в том числе и на JS IntersectionObserver, но если у шапки ставить position absolute или fixedте надо что бы она изначально была вообще простом состоянии ( в котором она должна скролиться в блоке со скроллом горизонтальным, а при вертикальном скролле уже отслеживать её и добавлять к ней уже fixed
а на блоки эти повесить анимации ( ну и подогнать их между друг другом )на вложенные блоки
а потом всем таблицам поменять структуру