chyba chodzi o to, że masz luzem różne rzeczy i żaden .news-item nie jest ostatnim dzieckiem, więc dając last-child nie łapiesz i tak elementu.
chociaż używając .news-item:nth-last-child(1 of .news-item) { udało mi się osiągnąć coś podobnego: https://jsfiddle.net/pftc8Ld9/ tylko nie wiem, czy będzie ci to działać jak to włożysz w całą stronę (w dodatku to of też nie powinno działać wg tabeli wsparcia https://caniuse.com/?search=%3Anth-last-child() więc nie wiem, czemu działa mi na Chrome. Może tabela wsparcia jest niezaktualizowana?).
Można dalej pokombinować z selektorami CSS, ale to brnięcie dalej w chaos. Ja bym na twoim miejscu posprzątał sobie kod. Np. po co jest .news-item, jak zamykasz tego diva od razu?
Kopiuj
<div class="news-item"></div>
Jeśli w .news-item masz artykuł w <table>, to chyba powinno być tak:
Kopiuj
<div class="news-item">
<table cellspacing="0" cellpadding="0">
.......
</table>
</div>
?
To by miało sens wtedy jakiś, że wszystko, co jest w środku .news-item, dotyczy jednego news-item. Bo teraz to wygląda jakby tutaj było coś albo zepsute albo jakaś ponura hakerka się odbywała. No i widzę layout na tabelkach, nie popieram, ale to na marginesie, może to jakieś legacy. Chociaż jeśli tych tabel nie ma dużo, to może przerobić na flexa, tak jak @Xarviel dał przykład.