From what I know and from my understanding, you are really running a simple query on a very large table on a very small Azure SQL DB.
Until now, you haven't told us what kind and size of Azure SQL database you are running...
From what I can see in the execution plan, it looks like you are running an Azure SQL DB with only two vCores (according to EstimatedAvailableDegreeOfParallelism) which means that your database has a maximum of 6GB RAM! But according to your ExecPlan, your query would like to have, to run optimally, at least 35GB RAM (optimally => without spilling data to the drive)...
So your query reads data from your database, stores it on disk, load another part of the data, and saves it on a disk.... over and over again... if the process finishes, it will be displayed to you from the disk...
Your ExecPlan shows an AvgRowSize="55171" (Bytes) and an EstimateRows="683321" => 683321*55171= 37699502891 Bytes = ~38GB
That's why your query runs that slow ;-)