In a large mixing bowl, combine the flour, salt, sugar, yeast, and cold water. Mix until a dough forms.
Knead the dough for about 5 minutes until it becomes smooth and elastic. Shape it into a rectangle and wrap it in plastic wrap. Place it in the refrigerator for 1 hour.
Meanwhile, beat the room-temperature butter to soften it. Place it between two sheets of plastic wrap and shape it into a 20x20cm square. Refrigerate until firm.
Roll out the chilled dough on a floured surface into a 40x20cm rectangle. Place the chilled butter square diagonally on the dough, then fold the corners of the dough over the butter to encase it completely.
Roll out the dough-butter combination into a 60x20cm rectangle. Fold the top third down, then fold the bottom third up, creating three layers. Refrigerate dough for 1 hour by wrapping it in plastic wrap.
Perform the rolling and folding process twice more, ensuring to chill the dough for 1 hour between each fold.
After the final fold, wrap the dough in plastic wrap and refrigerate overnight.
The next day, roll out the dough to a 60x30cm rectangle. Cut the dough lengthwise into two equal strips, then cut diagonally to create triangles.
Starting from the base of each triangle, roll up the dough tightly towards the tip. Place the croissants on a baking sheet lined with parchment paper, brush them with beaten egg wash, and leave to prove for 2 hours.
Preheat the oven to 200°C (180°C fan) and bake the croissants for 15-20 minutes or until golden brown and flaky.
Remove from the oven and allow them to cool slightly before serving.