PostgreSQL query slows due to ORDER BY even with an index
If you don't have an ORDER BY clause the database takes any 10 records that meet your criteria and returns them. With ORDER BY it first finds all rows that meet criteria and then orders them.

You could try enabling btree-gist and then creating index on the spatial column and the area

CREATE INDEX offices_st_area_idx 
ON public.offices
USING gist (area, st_area(area));


But otherwise then that it's a normal question regarding performance and depends heavily on your data and server settings.