Benzene and nitrate ion are given in my textbook as examples for the delocalization of π-electrons. Benzene, due to symmetry of its resonating structures, is simple enough. We assume that σ-electrons are localized and π-electrons are delocalized in the ring.
Each carbon atom promotes one electron from its $\mathrm{s}$ orbital to the empty $\mathrm{2p}$ orbital. It hybridizes two $\mathrm{p}$ orbitals with the $\mathrm{s}$ to form three $\mathrm{sp^2}$ orbitals which it then uses to form three σ-bonds, two with other carbons and one with a hydrogen.
The remaining unhybridized $\mathrm{p}$ orbital then sticks out above and below the plane of the ring. The electrons from all the six unhybridized $\mathrm{p}$ orbitals of the six carbons are then delocalized above and below the plane of the ring.
However, when I try to apply a similar reasoning to the nitrate anion, problems arise. The resonance Lewis structures of nitrate ion are:
Now, assuming again that only the π-electrons are delocalized, we would expect that only two electrons are delocalized (since there is only one double bond). But my textbook claims that each atom is $\mathrm{sp^2}$-hybridized, and as in benzene, one unhybridized $\mathrm{p}$ orbital per atom sticks out above and below the plane of the molecule.
Assuming this to be true, I presumed that two electrons would be localized and tried to arrange the remaining 22 electrons into a Lewis structure with $\mathrm{sp^2}$ hybridized atoms. I couldn't find any viable structures with only three lone pairs around each atom.
What is the exact mechanism for delocalization of electrons in nitrate? Is there a general scheme to this mechanism that applies to all such similar molecules such as $\ce{CO3^2-}?$