Preheat your oven to 350°F (175°C). Line a cupcake pan with cupcake liners and set aside.
In a medium bowl, whisk together the all-purpose flour, baking powder, and salt. Set aside.
In a large mixing bowl, cream the softened unsalted butter and granulated sugar together using an electric mixer until the mixture is light and fluffy.
Add the eggs one at a time, mixing well after each addition. Then, stir in the vanilla extract until fully combined.
Gradually add the dry ingredients to the butter mixture, alternating with the buttermilk. Begin and end with the flour mixture, mixing just until combined.
Divide the batter into three bowls. Leave one bowl plain, and gradually add food coloring to the other two bowls to create different shades. Start with a small amount and mix until you reach your desired color.
Spoon the batter into the prepared cupcake liners, layering the different colors for the ombre effect. Start with the darkest shade on the bottom, then the medium shade, and finish with the lightest on top.
Bake in the preheated oven for 18-20 minutes, or until a toothpick inserted in the center comes out clean. Allow them to cool in the pan for a few minutes before transferring to a wire rack to cool completely.
In a mixing bowl, beat together the softened butter and granulated sugar until creamy. Gradually add the whole milk and 1 teaspoon of vanilla extract. Mix until the frosting is light and fluffy. For a thicker frosting, you can add the additional 3 tablespoons of flour while mixing.
Once the cupcakes have cooled completely, use a piping bag to swirl the whipped vanilla buttercream on top. You can create a beautiful ombre effect by using the same method of layering colors in the frosting, if desired.