Step 1: Marinate the Chicken : In a large bowl, combine yogurt, ginger-garlic paste, red chili powder, turmeric, garam masala, salt, lemon juice, and oil. Add chicken pieces and coat well in the marinade. Cover and refrigerate for at least 1 hour (or overnight for deeper flavor).
Step 2: Cook the Rice : In a large pot, bring water to a boil. Add salt, bay leaf, cardamom, cloves, and cinnamon stick. Add soaked rice and cook until 70% done (the grains should still be firm). Drain the rice and set aside.
Step 3: Cook the Chicken : In a heavy-bottomed pot or Dutch oven, heat ghee and oil over medium heat. Add sliced onions and fry until golden brown and caramelized. Remove half and set aside for layering. Add marinated chicken to the remaining onions and cook for 8–10 minutes until the chicken is browned and half cooked. Turn off the heat.
Step 4: Layer the Biryani ; In the same pot with chicken, start layering: First layer: Half of the cooked rice.
Sprinkle half of the saffron milk, mint, coriander, and fried onions. Second layer: Remaining rice and toppings. Drizzle the remaining saffron milk over the top.
Step 5: Steam (Dum) the Biryani : Cover the pot tightly with foil and place the lid on top. Cook on low heat for 20–25 minutes (the steam will finish cooking the chicken and rice). Remove from heat and let rest for 10 minutes before serving.