Soak the saffron strands in the hot water (or milk) for at least 10 minutes or till the liquid has changed to a bright yellow.
Heat ghee in a wide based pan/kadhai and toss in the cashew nuts and fry them on a low heat till they then turn light golden. Remove. Next, fry the raisins till they just puff up, remove immediately before they burn.
In the same ghee add the semolina and roast on a low heat for 2- 3 minutes taking care to see that it doesn't burn. If you fry the semolina on a low heat it will get partially cooked and help fluff up quickly. While the semolina is frying, bring the water & milk to a boil.
When the semolina has roasted and gives out a nice aroma add the water (or water & milk mixture) to it. Be careful as the mixture can splutter! Mix quickly till it is smooth & lump free.
Add the sugar and pinch of salt and stir till the sugar gets absorbed. Next, add the saffron mixture.
On a low heat keep stirring the mixture so that it doesn't stick to the bottom of the pan and slowly the mixture comes together in a lump
Add the ghee and stir till it gets absorbed
The sheera/kesari is almost done. Add the roasted nuts and raisins, mango pulp or pieces and give it a good mix till the whole mixture comes together in a mushy lump. Add the cardamom powder or mango essence if using. Cover the pan and turn down the heat to very low. Allow to cook for 1-2 minutes. Remove from heat.
If you wish, serve the sheera in a bowl. Lightly grease it with ghee and then put the sheera in it, invert the contents onto a plate. Serve hot.