If using saffron, stir the threads into the warm vegetable stock and set aside to infuse. 2.
Place a large, deep skillet with a lid over medium-high heat.
Add the butter or oil.
Once hot, reduce the heat to medium.
Add the cardamom, cloves, cinnamon, bay leaves, and turmeric (if using).
Cook, stirring frequently, for about 2 minutes until the spices are very fragrant. 3.
Add the chopped onion, minced garlic, and ginger to the skillet, along with a generous pinch of salt and pepper.
Sauté for about 5 minutes, stirring occasionally, until the onion has softened. 4.
Add the rice to the pan and stir continuously for 2 to 3 minutes, ensuring every grain is coated in the spiced oil and looks glossy. 5.
Reduce the heat to low.
Pour in the yogurt and the saffron-infused stock.
Stir to combine, then gently fold in the tofu cubes, if using. 6.
Adjust the heat so the liquid is at a bare simmer.
Cover the skillet tightly and cook for 15 to 20 minutes. 7.
Check the rice. If it is tender and all the liquid has been absorbed, it's done. If not, cover and cook for another 2 to 3 minutes. 8.
Remove the pan from the heat.
Discard the cinnamon stick and bay leaves (the cardamom pods can be eaten). Fluff the biryani gently with a fork, taste, and adjust seasoning if needed.
Garnish generously with fresh cilantro and serve immediately.