Почему медиа-запрос работает только тогда, когда последний размещен в моем CSS?

Я изучаю CSS, и я наткнулся на пример, который имеет следующий код:

<body>
   <a href="#" class="CardLink CardLink_Hearts">Hearts</a>
   <a href="#" class="CardLink CardLink_Clubs">Clubs</a>
   <a href="#" class="CardLink CardLink_Spades">Spades</a>
   <a href="#" class="CardLink CardLink_Diamonds">Diamonds</a>
</body>

и CSS:

.CardLink {
    display: block;
    color: #666;
    text-shadow: 0 2px 0 #efefef;
    text-decoration: none;
    height: 2.75rem;
    line-height: 2.75rem;
    border-bottom: 1px solid #bbb;
    position: relative;
}

@media (min-width: 300px) {
    .CardLink {
        padding-left: 1.8rem;
        font-size: 1.6rem;
    }

    .CardLink:before {
        display: block;
    }
}

.CardLink:before {
    display: none;
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    left: 0;
}

.CardLink_Hearts:before {
    content: "❤";
}

.CardLink_Clubs:before {
    content: "♣";
}

.CardLink_Spades:before {
    content: "♠";
}

.CardLink_Diamonds:before {
    content: "♦";
}

/*@media (min-width: 300px) {
    .CardLink:before {
        display: block;
    }
}*/

Идея заключается в том, что когда размер области просмотра меньше 300 пикселей, значки карт не отображаются, в противном случае они отображаются.

Я играл с кодом, и я не могу понять, почему мы должны определить@media (min-width: 300px) дважды, чтобы код работал как положено.

Почему мы не можем просто поместить код в последнем абзаце CSS в раздел, где указан размер экрана мультимедиа (хорошее повторное использование кода вместо объявления этого снова)?

Если я сделаю это, значки не будут отображаться (это код ниже).

Кто-нибудь может объяснить? Проверьте поршень, это работает как ожидалось:https://plnkr.co/edit/MJAPdkgUegpUlJnkcQHg?p=preview

Ответы на вопрос(2)

Ваш ответ на вопрос