WordPress nested loop not working

Have you checked slug of ‘graphic-design’ CPT?. Maybe there are conflicts between page slug and CPT slug?

You can’t really do what you are trying to do in the way you would
like to do it.

/graphic-design/ is registered with the custom post type as the custom post
type permalink associated with that custom post type.

when you give a page the same permalink that is associated with the
custom post type permalink, you create a conflict. WordPress knows how
to display pages based on the requested URL and what are called the
rewrite rules. This is a sequential list of all the possible rules of
URL’s that your site can display. It goes down the list one by one
looking for a rule that matches. Custom Post Type rules are ahead of
page rules in the sequence. So when WordPress sees site.com/portfolio/
it knows that as the custom post type archive page, and that is what
its going to display. It doesn’t even reach the part of its rules that
are aware of site.com/graphic-design/ as a page because it has already
taken action on the first match it found, which is the custom post
type archive page. You have a URL clash – two types of content trying
to display at the same URL. That won’t work.

Answer from WordPress forum read more