In a large mixing bowl, whisk together the all-purpose flour, unsweetened cocoa powder, granulated sugar, and salt until well blended.
In a separate bowl, crack the eggs and beat them lightly. Add the milk and melted unsalted butter to the eggs, whisking until fully incorporated.
Gradually pour the wet ingredients into the dry mixture while continuously whisking to ensure a smooth, lump-free batter forms.
Allow the batter to rest at room temperature for about 30 minutes.
Preheat a non-stick skillet over medium heat, lightly greasing it with some butter. Pour about 1/4 cup of the batter into the skillet, quickly swirling it around to cover the base evenly. Cook for 1-2 minutes or until bubbles appear on the surface, then carefully flip the crepe and cook for an additional minute on the other side.
Continue this process, adding butter as needed, until all the batter is used up. Stack the cooked crepes on a plate, allowing them to cool completely.
In a mixing bowl, use a hand mixer or whisk to beat the heavy cream until soft peaks form.
In another bowl, combine the mascarpone cheese, powdered sugar, and vanilla extract. Mix gently until the mixture is smooth and creamy.
Carefully fold the whipped cream into the mascarpone mixture using a spatula.
Place one crepe on a serving plate. Spread a generous layer of the mascarpone mixture over it. Repeat this layering with the remaining crepes and mascarpone filling, finishing with a crepe on top.
Cover the assembled crepe cake with plastic wrap and refrigerate for at least 2 hours.
Just before serving, adorn the top of the crepe cake with dark chocolate shavings and fresh berries if desired.
Notes
Chill the cake for at least 2 hours to enhance the flavors.