Preheat oven to 350°F. Grease a 9x9-inch pan and set aside.
Whisk together flour, baking powder, baking soda, and salt in a medium bowl.
In another bowl, rub sugar with orange zest, then cream with butter until fluffy. Add eggs one at a time, then mix in yogurt and vanilla.
Gradually add dry ingredients, mixing until just combined. Gently fold in cranberries.
For streusel, combine flour, brown sugar, and cinnamon, then work in butter with fingers until crumbly.
Layer half the batter in the pan, add half the streusel, then top with remaining batter and streusel.
Bake for 40-45 minutes or until a toothpick comes out clean. Cool and serve.