Thank you, Sean.
It was my mistake, I tried Assuming[ci >0 and also Assuming[ci <0 and I didn't noticed, that this implicitly means, that ci is real, but ci != 0 doesnt mean, that ci should be real.
Assuming[{ci != 0 && ci \[Element] Reals}, Sign[ci]^2 == 1 // FullSimplify]
works as expected.