А если, следуя второму моему пониманию задачи, что нужно сделать реально в обратную сторону (больше viewport — меньше картинка), то это уже только на JS, на CSS такого сделать нельзя.
SVG великолепно анимируется. Более того, это второй по функционалу инструмент для создания анимированных элементов после canvas'а. А в ряде вещей и вообще первый.
S_Tigrov, возможно, не заметил, если не меняли текст вопроса.
В любом случае, когда элемент один, тем более текст через before — это невозможно.
Выносите текст в отдельный элемент/псевдоэлемент. Делайте фигуру фоном. Но transform вы не сможете отменить ни для content псевдоэлемента, ни для textContent, если это был нормальный текст внутри блока. Текст в любом случае нужно выносить в отдельный блок.