The value of "Red" "Green" and "Blue" need to be the same letter/number in order to shorthand.
#ffffff is the same as #fff
#336699 is the same as #369 ("Red" = 33 = 3, "Green" = 66 = 6, "Blue" = 99 = 9)
#c0c0c0 can not be shortened, because the value of "Red" (or "Green" or "Blue" for that matter) is c0, and cant be expressed any other way.
Likeway, #c0ffff can not be shortened to #c0ff, because HTML needs either a 3-digit or 6-digit hex code for colors.
It's not a "rule" per se that #ffffff must be written #fff, its just a lot faster and easier to shorthand what you can. I won't mention file weight, because shorthand hex colors won't save you that much space...