NP-complete problems are both in NP (a solution can be verified in polynomial time) and NP-hard. NP-hard means “at least as hard as NP problems” but it might not be in NP (e.g., optimization versions). If any NP-complete problem has a polynomial-time algorithm, then P = NP.