100% [20/20] жду критики, чтобы лучше понять задание)

html,
body {
margin: 0;
padding: 0;
font-family: “Arial”, sans-serif;
}

body {
min-width: 550px;
min-height: 250px;
padding: 10px;
}

.cards {
position: relative;
width: 380px;
text-align: left;
}

.cards li {
width: 37px;
height: 55px;
}

.cards li::before {
font-family: “Courier”, monospace;
}

.cards li:not(:first-of-type) {
margin-left: -20px;
}

ul::after {
content: “”;
position: absolute;
right: 0;
top: 0;
display: block;
width: 37px;
height: 55px;
border: 1px dashed #33bb33;
border-radius: 5px;
}

.cards li:nth-of-type(4n+1)

{background-color: #ffcc33;}

.cards:not(:first-of-type) li:nth-of-type(4n+2)

{background-color: #0099ff;}

.cards:not(:first-of-type):not(:nth-child(4)) li:nth-of-type(4n)

{background-color: #ff3300;}

.cards:nth-of-type(3) li:nth-of-type(3n+8)

{background-color: #339933;}

.cards:first-of-type li:nth-of-type(2n+2)

{background-color: #996666;}

Да, все хорошо.
Я последнее сделал с ключевыми словами:

li:nth-child(4n+1) {
    background-color: #ffcc33;
}

.cards:not(:first-of-type) li:nth-child(4n+2) {
    background-color: #0099ff;
}

.cards:nth-of-type(even) li:nth-child(4n+4) {
    background-color: #ff3300;
}

.cards:nth-of-type(3) li:nth-of-type(3n+8) {
    background-color: #339933;
}

.cards:first-of-type li:nth-child(even) {
    background-color: #996666;
}

.ace.spade ~ .heart {
background-color: #339933;
}

А в остальном все как у oxojeck