почему тогда с вьюпортом не работает? а с body?
потому что твой блок не пересекается с вьюпотртом, потому что он внутри container, а контейнер скрывает его от пересечения с парентами, эти твои маржины они у рута, ты можешь просто огромный рут сделать и повесить посередине контейнер, а в нем свой target, который никак не будет вылазить за body, и всё равно пересечения не будет, потому что контейнер его (как это по русски) clip