Displaying 3 Category Posts differently

Possible you’ve forgotten to reset post with wp_reset_postdata function.

You can use get_posts instead of new WP_Query:

<?php foreach(get_posts($args) as $post) : ?>
    <div class="post">
        <a class="post-link" href="https://wordpress.stackexchange.com/questions/277736/<?= get_permalink($post->ID) ?>" target="_blank"><?= $post->post_title; ?></a>
    </div>
<?php endforeach; ?>