Bloom the gelatin. Sprinkle the gelatin evenly over 3 tablespoons of cold water in a small bowl.
Let it sit undisturbed for 5 to 10 minutes. It will swell and look spongy—this is normal.
Warm the dairy. In a medium saucepan, add the heavy cream, almond milk, powdered sweetener, and a pinch of salt. Warm over medium heat, stirring occasionally, until the mixture is hot and steaming but not boiling.
Aim for small bubbles around the edges.
Dissolve the gelatin. Remove the pan from heat. Add the bloomed gelatin and whisk until completely dissolved. If you see any granules, return to low heat for 30 to 60 seconds, whisking constantly, but do not let it boil.
Flavor it. Whisk in vanilla extract.
If using zest or a cinnamon stick, let the mixture steep for 10 minutes, then strain it to keep the texture ultra-smooth.
Taste and adjust. Carefully taste a spoonful. Add a little more sweetener if needed, and a tiny pinch more salt to make the flavors pop. If you add more sweetener, whisk until fully dissolved.
Strain for silkiness. For the smoothest panna cotta, pour the mixture through a fine-mesh sieve into a large measuring cup with a spout.
This catches any undissolved bits.
Portion and chill. Divide the mixture into 6 small ramekins, glasses, or silicone molds. Cool on the counter for 15 to 20 minutes, then cover and refrigerate for at least 4 hours, preferably overnight, until set.
Unmold (optional). If you want a plated dessert, run a thin knife around the edges and dip the ramekin bottoms into warm water for 5 to 10 seconds. Invert onto a plate and gently wiggle until it releases.
Finish with toppings. Add a few berries, a spoonful of sugar-free compote, toasted nuts, or a drizzle of chocolate sauce.
Keep it light to stay within your carb goals.