It basically being a remainder does not mean it actually is, it just means the concept is the same, but not with traditional numbers and in decimal, but in Galois Field for base-2 numbers. But there is a simpler explanation too.
Calculating a CRC value is not simply about feeding in data, there are other specifications as well.
The value is initially preset to some pre-defined seed value. Usually this value is not zero, and very typically the initial value is all bits set to one. CRC-CCITT does not actually define this, and various implementations use different seed values. In terms of calculating CRC, it can also be thought of same as starting with a seed value of 0, but feeding two initial data bytes in to make the seed value correct.
After processing the data bytes, there is usually a final step to XOR the CRC value with a pre-defined final XOR value. It also varies between different implementations.
Other specifications differ as well, such as whether data is fed into CRC algorithm MSB or LSB first.
So here is how the algorithm works on the CRC calculator. Verified with pen-and-paper method.
0x31 is the only data byte fed in.
0x0000 is the initial CRC value.
Therefore, as this version of the algorithm runs MSB first, the CRC data must be fed in to the CRC register so that the MSB of the data is immediately processed, and the CRC bit shifts are performed to the left. Therefore, DATA xor CRC is:
0x3100 CRC register xored with data, no shift rounds yet
0x6200 After round 1
0xC400 After round 2
0x9821 After round 3
0x2063 After round 4
0x40C6 After round 5
0x818C After round 6
0x1339 After round 7
0x2672 After round 8
So the result of doing the algorithm with polynomial of 0x1021, with initial value of 0x0000, final xor of 0x0000, and processing the input data MSB first, the CRC value really is 0x2672.