def slope_field(f, t_range, x_range, n=20, ax=None, color='steelblue', alpha=0.7):
"""Draw slope field for x' = f(t,x) using normalized quiver arrows."""
if ax is None:
fig, ax = plt.subplots()
T, X = np.meshgrid(np.linspace(*t_range, n), np.linspace(*x_range, n))
dT, dX = np.ones_like(T), f(T, X)
norm = np.sqrt(dT**2 + dX**2); norm[norm == 0] = 1
ax.quiver(T, X, dT/norm, dX/norm, angles='xy', scale=n*0.8,
width=0.003, color=color, alpha=alpha, headlength=3, headwidth=3)
ax.set_xlabel('$t$'); ax.set_ylabel('$x$')
return ax