Mix the spice rub: In a small bowl, stir together chili powder, cumin, smoked paprika, garlic powder, salt, and black pepper. Zest one lime over the mixture and rub with your fingers to release the oils.
Season the fish: Pat fish dry.
Drizzle with 1 tablespoon olive oil and half the lime juice. Sprinkle the spice rub evenly on both sides. Let it sit 10 minutes while you prep the salad.
Make the dressing: Whisk yogurt, mayonnaise, remaining lime juice, honey, garlic, and a pinch of salt.
Add a splash of water until pourable. Stir in 2 tablespoons chopped cilantro. Adjust salt and sweetness to taste.
Assemble the base: In a large bowl, combine romaine, shredded cabbage (if using), red onion, cherry tomatoes, and corn.
Add 2 tablespoons olive oil, a pinch of salt, and half of the remaining chopped cilantro. Toss lightly.
Cook the fish: Heat a large nonstick skillet over medium-high with a thin film of oil. Add fish and cook 2–4 minutes per side, depending on thickness, until it flakes easily and is opaque.
Squeeze a little lime over the top. Remove to a plate and let rest 2 minutes, then flake into large pieces.
Dress the salad: Drizzle some dressing over the greens and toss gently to coat. You want it lightly dressed—save the rest for serving.
Build the bowls: Divide salad among bowls.
Top with warm flaked fish, avocado, jalapeño (if using), pickled onions, and cotija. Sprinkle with tortilla chips for crunch and the remaining cilantro.
Finish and serve: Add an extra squeeze of lime and a final spoonful of dressing. Serve right away while the fish is still warm.