For the Macaron Shells:
Sift the powdered sugar and almond flour together into a bowl to ensure the mixture is fine and lump-free. Set it aside.
In a separate clean mixing bowl, use a hand mixer or stand mixer to whisk the egg whites. Start on low speed, then increase to medium-high. When soft peaks begin to form, gradually add the granulated sugar and continue to whisk until stiff peaks form.
Add the sifted almond flour and powdered sugar mixture to the whipped egg whites. Fold the ingredients together gently using a spatula. Add a few drops of food coloring (optional) and continue folding until the mixture flows off the spatula like thick lava.
Transfer the macaron batter into a piping bag with a round tip. On a baking sheet lined with parchment paper, pipe heart shapes by drawing a "V" shape and completing the heart. Try to make them uniform in size for even baking.
Let the piped macarons sit at room temperature for 30 minutes to 1 hour, allowing them to form a dry skin. This is crucial for achieving the characteristic foot (ruffled edge) on the macaron shells.
Preheat the oven to 300°F (150°C). Once the macarons have rested and developed a skin, bake them for 18 to 20 minutes. The macarons should be firm to the touch and easily lift off the parchment paper.
For the Buttercream Filling:
In a medium mixing bowl, beat the softened butter until smooth and creamy. Gradually add the powdered sugar, one tablespoon at a time, until fully combined. Stir in the vanilla extract and a pinch of salt.
Add the heavy cream or milk, one tablespoon at a time, to reach a smooth, spreadable consistency. If desired, add a few drops of red food coloring to tint the filling.
Assemble the Macarons:
Once the macaron shells have cooled completely, flip them over. Pipe a small amount of the buttercream onto the flat side of one shell and sandwich it with another macaron shell.
For the best flavor and texture, place the assembled macarons in the refrigerator for at least 24 hours to allow the filling to soften the shells.