01 - Combine flour, sugar, salt, and yeast in a large bowl. Whisk warm milk and egg together, then pour into dry ingredients. Mix until soft dough forms. Incorporate softened butter thoroughly. Cover bowl and refrigerate for 1 hour.
02 - Place cold butter between parchment paper sheets. Pound and roll into 5 x 7-inch rectangle. Refrigerate until firm, approximately 20 minutes.
03 - Roll chilled dough on lightly floured surface into 10 x 14-inch rectangle. Position butter layer centrally. Fold dough edges over butter to completely encase. Roll gently back to 10 x 14-inch rectangle. Fold into thirds like a letter. Wrap and refrigerate 30 minutes.
04 - Repeat rolling, folding into thirds, and refrigerating process two additional times for total of three laminations. Maintain 30-minute chill periods between folds.
05 - Roll finished dough into 12 x 16-inch rectangle. Cut into 8 equal triangles. Starting from wide end, roll each triangle tightly toward point. Curve ends slightly to form crescent shape. Arrange on parchment-lined baking sheet.
06 - Cover loosely with plastic wrap. Place in warm draft-free area for 2 hours until doubled in size and puffy.
07 - Preheat oven to 400°F. Whisk egg yolk with milk until smooth. Brush mixture evenly over risen croissants.
08 - Bake for 18-20 minutes until deep golden brown and crisp. Rotate pan halfway through for even coloring.
09 - Transfer to wire rack. Cool for at least 15 minutes before serving to allow interior structure to set.