To start, put the almond flour and powdered sugar in a food processor and blend thoroughly. Sift into a bowl to ensure there are no lumps.
In the bowl of a stand mixer (make sure it's clean and dry), beat the egg whites until foamy.
Slowly add the sugar, about 2 tbsp at a time, beating on a medium speed.
Once the sugar has dissolved, increase speed to medium high and beat until a thick glossy meringue forms. Add in the food colouring, if using, and beat to combine.
The mixture should form stiff peaks and you should be able to tip the bowl over your head with none of the mixture coming out.
With a large, flat rubber spatula, gently fold 1/3 of almond flour/powdered sugar mixture into egg whites until combined.
Repeat until all of the almond mixture has been added. Fold to combine until you see no streaks of almond flour in the batter.
The batter should be pretty fluid, a lot of people describe as a lava-like consistency. It should run smoothly off the spatula when you pull it out. This part comes with practice. Once you know the consistency, you'll just be able to feel when it's ready.
Pipe the batter into circles onto parchment or silicone lined baking sheets.
Bang the tray a few times on a table to remove air bubbles and allow to sit for about 30 minutes before baking.
To see if they're ready for baking, touch your finger to them. If you get batter on your finger, they need to rest longer.
While resting, preheat your oven to 300°F with a rack placed in the lower third of the oven.
Bake, one sheet at a time, for 15-18 minutes (this depends on your oven, my old one was fine at 15 minutes, this one needs 17-18).
The shells should cool completely before you remove them from the parchment/silicone.
Using a handheld beater, cream the butter. Add cocoa powder and vanilla extract, beating to combine.
Add sifted powdered sugar, 1 cup at a time, scraping down the sides and bottom of bowl to incorporate all of it. Add heavy cream and combine.
Combine sugar and egg whites in a bowl. Place bowl over a pot of gently simmering water and whisk constantly until mixture reaches 160°F.
Transfer to a standing mixer with whisk attachment and beat on medium-high speed (8) for 10-12 minutes, until it has doubled in volume and stiff peaks have formed.
Pair up macaron shells of the same size.
On one half of each pair, pipe a ring of dark chocolate buttercream.
Pipe some of the marshmallow frosting in the middle of the ring, sprinkle graham cracker crumbs on top and sandwich together.
Store in airtight container in refrigerator for 3-4 days. Bring to room temperature before eating.