Marinate the Chicken:
Mix all marinade ingredients in a bowl. Add chicken and coat well. Cover and marinate in the fridge for at least 1 hour or overnight.
Cook the Rice:
In a large pot, boil water with salt and whole spices. Add soaked rice and cook until 70–80% done. Drain and set aside.
Sear the Chicken:
In a large, heavy-bottomed pan or Dutch oven, heat ghee/oil. Add sliced onions and sauté until golden brown. Remove half for layering. Add marinated chicken and cook for 8–10 minutes, turning occasionally until partially cooked.
Layer the Biryani:
Reduce heat to low. Spread half the rice over the chicken, top with half the reserved onions, herbs, and a drizzle of saffron milk. Repeat with the remaining rice, onions, herbs, and saffron.
Dum Cooking (Steam Finish):
Cover the pot with a tight lid (or seal with foil) and cook on low heat for 20–25 minutes. Turn off heat and let it rest for 10 minutes before serving.
Serve:
Gently fluff the biryani with a fork. Serve hot with raita, salad, or boiled eggs.