Испытание. Дуэль. [18/18]

Доброго времени суток! Пришлось повозиться, с этой “дуэлью”. Задание выполнил, но что-то мне подсказывает что есть более лаконичное решение. Очень хочется увидеть идеальный вариант. Особенно смущают три последних правила, которые запрещают отображение элемента, нетронутые мною.

Мой код:

body {
width: 280px;
margin: 0;
padding: 0;

}

.shooter-1 {
padding: 55px 0 55px 0;
border-bottom: 1px dashed #cccccc;
background: #fcf8e3;

}

.shooter-2 {
padding: 55px 0 55px 0;
background: #d9edf7;

}

ul {
width: 200px;
height: 25px;
margin: 0 auto;
padding: 10px 15px 10px 15px;
border-radius: 2px;
background: white;
box-shadow: 0 0 3px rgba(0, 0, 0, 0.5);
overflow: hidden;
list-style: none;

}

li {
position: relative;
float: left;
width: 22px;
height: 22px;
margin-right: 20px;
border: 1px solid black;
border-radius: 50%;
background: #333333;
font-size: 0;

}

.target li:nth-child(5) {
margin-right: 0;

}

.miss .hitbox, 
.shooter-2 li:nth-child(1) .hitbox,
.shooter-2 li:nth-child(4) .hitbox,
.shooter-2 li:nth-child(5) .hitbox {
width: 10px;
height: 10px;
margin: 6px auto;
border-radius: 50%;
background: #999999;

}

 .shooter-1 li:nth-child(3n+1) .lever, 
 .shooter-2 li:nth-child(2) .lever,
 .shooter-2 li:nth-child(3) .lever {
position: absolute;
top: -2px;
left: -2px;
width: 26px;
height: 26px;
border-radius: 50%;
background: #f5f5f5;
box-shadow: 0 0 2px rgba(0, 0, 0, 0.5);

}

span {
position: absolute;
top: 12px;
left: 11px;
width: 5px;
height: 25px;
background: #f5f5f5;
box-shadow:
    -1px 15px 2px rgba(0, 0,0 , 0.3),
    1px 15px 2px rgba(0, 0, 0, 0.3);

}

.shooter-1 li:nth-child(2) .lever,
.shooter-1 li:nth-child(3) .lever,
.shooter-1 li:nth-child(5) .lever,
.shooter-2 li:nth-child(1) .lever,
.shooter-2 li:nth-child(4) .lever,
.shooter-2 li:nth-child(5) .lever {
display: none;

}

selector {
display: none;

}

selector {
display: none;

}

selector {
display: none;

}

И ещё, хотел накидать второй вариант кода, но не работает селектор, вернее работает, но не так как хотелось бы:

li {
position: relative;
float: left;
width: 22px;
height: 22px;
margin-right: 20px;
border: 1px solid black;
border-radius: 50%;
background: #333333;
font-size: 0;

}
/чёрные кружки/

.shooter-1 li:nth-child(3n+1) {
display: none;

}

/Селектор не выбирает заданные элементы/

Может засыпаю конечно уже, но вроде всё правильно написал.

или

.shooter-1 li:nth-child(1),
.shooter-1 li:nth-child(4) {
display: none;

}

Вообщем, где я накосячил?)

На второй вопрос сам нашёл ответ - список становится короче, когда убираю отображение элемента.

Доброй ночи!
В селекторе .target li:nth-child(5) указывать класс списка необязательно, достаточно просто li:last-child (ну или li:nth-child(5)).
Вместо селекторов
.miss .hitbox, .shooter-2 li:nth-child(1) .hitbox, .shooter-2 li:nth-child(4) .hitbox, .shooter-2 li:nth-child(5) .hitbox
и
.shooter-1 li:nth-child(3n+1) .lever, .shooter-2 li:nth-child(2) .lever, .shooter-2 li:nth-child(3) .lever
достаточно написать просто .hitbox и .lever соответственно, т.е. рисуем все 10 мишеней и закрываем их.
А затем остается лишь убрать _lever_ы там, где они не нужны:
li.miss .lever, .shooter-2 li:first-child .lever, .shooter-2 li:nth-child(n+4) .lever {display: none;}
Последний селектор можно записать по-разному, но это, видимо, самый краткий вариант.

Спасибо! Действительно куда короче и читается намного удобнее.