Design a CNN for MNIST digit classification. Specify each layer: Conv2D(filters, kernel, stride, padding), BatchNorm, ReLU, MaxPool, Flatten, Dense, Dropout, Softmax. Calculate output shapes after each layer. Explain: why Conv over Dense for images, what pooling does, why dropout helps. Implement in PyTorch or TensorFlow.