Через CSS это сделать невозможно при однородной структуре, только безумным хаком (column-reverse + селектор тильда + обратный порядок элементов). И другие способы, привязанные к последовательности блоков — это так себе.
Только уж тогда вместо querySelectorAll использовать querySelector - он то сразу выберет первый элемент
const first = document.querySelector('.grid > .grid-item.is-1'); // выбираем первый элемент с нужным классом
first.classList.add('is-selected'); // добавляем к нему класс
Гы-гы, там ещё вариант, о котором я писал, что можно их в разметке держать в обратном порядке (3, 2, 1), а потом через flex-flow: column/row-reverse визуально приводить в нормальный вид (1, 2, 3). Тогда можно будет выбрать нужный первый элемент (который на самом деле последний в потоке) через li ~ li.
Словом, костыли так и летят, если опираться только на CSS в этом деле :))