Preheat oven to 350°F. Line cupcake pan with paper liners.
In a large bowl, sift together the flour, baking powder and salt.
In a medium bowl, whisk together the milk and egg whites.
In a medium bowl, combine the lemon zest and lime zest with the sugar and mix until fully incorporated.
In the bowl of a stand mixer fitted with the paddle attachment, or in a large bowl with a hand mixer, beat the butter and sugar at medium speed for about 3 minutes, or until the butter and sugar are light and fluffy.
Add in the vanilla extract and one third of the flour mixture, still beating on medium speed.
Beat in half of the milk-egg mixture, and then beat in half of the remaining dry ingredients until well incorporated.
Add the rest of the milk and eggs, beating until the batter fully incorporated and smooth, and then add the last of the dry ingredients.
Once ingredients are thoroughly incorporated, give the batter a good 2-minute beating to make sure it isthoroughly mixed.
Using a large scoop (about 3 tablespoons), distribute the batter between the prepared pans, filling each well 2/3 full.
Bake for 18-24 minutes, or until a toothpick inserted into the centers of the cupcakes comes out clean. Cool on wire rack.
In the bowl of a stand mixer fitted with the paddle attachment, beat the butter on medium-high speed for five minutes.
With the mixer on low speed, slowly add in the powdered sugar, and continue beating until well blended.
Add in vanilla, zest, and lemon and lime juices. Blend on low speed until moistened.
Turn the mixer back up to medium-high speed and beat the buttercream for an additional 5 minutes.
If the buttercream is too thick, add in a bit of milk, one teaspoon at a time until you reach the desired consistency.
Pipe buttercream onto cooled cupcakes. If desired, top each cupcake with a small slice of fresh lemon or lime just before serving.