Implementing CRYSTALS-Kyber (post-quantum cryptography) from scratch in Python

I wanted to understand post-quantum cryptography beyond high-level explanations, so I implemented CRYSTALS-Kyber from scratch in Python. This is a small series that walks through the math step by step and builds a working implementation. It focuses on clarity rather than performance (no NTT yet), and all