The key difference from the generic fix: instead of using scrollIntoView() on the iframe (which gets confused by your scale transform), this targets the .tally-wrap div, calculates its actual position on the page with getBoundingClientRect(), and scrolls the window there directly. The – 20 is a small top padding so it doesn’t sit flush against the top edge. The 150ms delay gives Tally time to render the new page before the scroll fires. Keep your CSS exactly as it is — don’t change anything there.