AnaCP: Toward Upper-Bound Continual Learning via Analytic Contrastive Projection