You have defined x to be a function of Pn only, but in fact, it is dependent on several other parameters and you are not passing those values into the function. So, they are global. But inside Manipulate, they are local control variables. One way to address this is to make sure all of your functions pass in all of the parameter values:
x[Pn_, h_, d_] := (h (d/Pn)^d)^(1/(1 - d));
nx[Pn_, h_, d_] := d/Pn x[Pn, h, d];
Bx[Pn_, h_, d_] := (1 - d)*x[Pn, h, d];
f[z_] := -0.0003*z^3 + 0.006*z^2 - 0.1*z + 1;
n[Pn_, k_, h_, d_] := k f[x[Pn, h, d]];
Bn[Pn_, k_, h_, d_] := Pn n[Pn, k, h, d];
r[Pn_, k_, h_, d_] := Bx[Pn, h, d] + Bn[Pn, k, h, d];
xc[Pn_, a_, k_, h_, d_] := a r[Pn, k, h, d];
nc[Pn_, a_, k_, h_, d_] := (1 - a)/Pn r[Pn, k, h, d];
eq[Pn_, k_, a_, h_, d_] :=
n[Pn, k, h, d] - nc[Pn, a, k, h, d] - nx[Pn, h, d];
Manipulate[
FindRoot[eq[Pn, k, a, h, d] == 0, {Pn, 0.5966337871664869`}], {h, 4,
5}, {d, 0.3, 2}, {a, 0.5, 1}, {k, 20, 100}]