sort posts inside a query

Hello,
What's the best way to sort posts inside a query? I have little programming knowledge so I have no clue what to do.

This is the code I'm using:

<?php $args = array('tax_query' => array(array('taxonomy' => 'post-status','field' => 'slug','terms' => array ('post-status-published')))); $query = new WP_Query( $args );?>
    <?php if ( $query->have_posts() ) : $duplicates = []; while ( $query->have_posts() ) : $query->the_post(); ?>

<?php endwhile; wp_reset_postdata(); endif; ?>

What I would like is if posts are in a category called 'Major' to be at the top. For example, if my posts are like this:
- Post
- Post
- Post (major)
- Post (major)
- Post
- Post (major)

I would like it be like the following:
- Post (major)
- Post (major)
- Post (major)
- Post
- Post
- Post

I would also like to surround posts in the group with a div like:
<div>
- Post (major)
- Post (major)
- Post (major)
</div>

I've tried so many things that I can't provide examples because it will go on. I guess what I think needs to be done is to put everything inside the group and use "foreach" to style everything else, not before the query because there are going to be posts not using that group.

Thanks