body {
    margin: 0;
    padding: 0;
}

.figure {
    height: 100vh;
    width: 100vw;
    display: flex;
    flex-direction: column;
}

.table {
    width: 100%;
    flex-grow: 1;
    display: grid;
    grid-template-columns: repeat(6, 1fr);
    grid-template-areas:
        "sem1 sem2 sem3 sem4 sem5 sem6"
}

.table,
.table .sem {
    grid-gap: 3mm;
}

.table .cell {
    font-family: Arial, Helvetica, sans-serif;
    font-size: 16pt;
    color: #fff;
    word-wrap: break-word;
    padding: 10px;
}

.table .sem {
    display: grid;
    grid-template-columns: 5fr 1fr;
    grid-template-rows: 1fr repeat(5, 2fr);
    grid-template-areas:
    "header header"
    "cell1 pra"
    "cell2 pra"
    "cell3 pra"
    "cell4 pra"
    "cell5 pra";
}

.table .sem .sem1 {
    grid-area: sem1
}
.table .sem .sem2 {
    grid-area: sem2
}
.table .sem .sem3 {
    grid-area: sem3
}
.table .sem .sem4 {
    grid-area: sem4
}
.table .sem .sem5 {
    grid-area: sem5
}
.table .sem .sem6 {
    grid-area: sem6
}

.table .sem6 {
    grid-template-columns: repeat(2, 1fr);
    grid-template-rows: 1fr repeat(5, 2fr);
    grid-template-areas:
        "header header"
        "pra1 pra2"
        "pra1 pra2"
        "pra1 pra2"
        "pra1 pra2"
        "pra1 pra2";
}

.table .sem6 .pra1 {
    grid-area: pra1;
}

.table .sem6 .pra2 {
    grid-area: pra2;
}

.table .sem .cell.header {
    grid-area: header;
}

.table .sem .cell.cell1 {
    grid-area: cell1;
}
.table .sem .cell.cell2 {
    grid-area: cell2;
}
.table .sem .cell.cell3 {
    grid-area: cell3;
}
.table .sem .cell.cell4 {
    grid-area: cell4;
}
.table .sem .cell.cell5 {
    grid-area: cell5;
}
.table .sem .cell.cell6 {
    grid-area: cell6;
}
.table .sem .cell.cell-pra {
    grid-area: pra;
}
.table .sem .cell > .text-vertical {
    writing-mode: vertical-rl;
    text-orientation: sideways;
    transform: scale(-1);
}

body {
    --col-passed: #2e9635;
    --col-failed-once: #a6a620;
    --col-failed-twice: #b43825;
    --col-pending: #6725b8;
    --col-upcoming: #2c6cd4;
    --col-not-listed: #8b8b8b;
}

.table .cell.header {
    background-color: #333;
}
.table .cell.passed {
    background-color: var(--col-passed);
}
.table .cell.failed-once {
    background-color: var(--col-failed-once);
}
.table .cell.failed-twice {
    background-color: var(--col-failed-twice);
}
.table .cell.pending {
    background-color: var(--col-pending);
}
.table .cell.upcoming {
    background-color: var(--col-upcoming);
}
.table .cell.not-listed {
    background-color: var(--col-not-listed);
}

.legend {
    font-family: Arial, Helvetica, sans-serif;
    font-size: 16pt;
    padding: 0.5em;
    padding-left: 0;
}

.legend > span {
    text-decoration: underline;
}

.legend .passed {
    color: var(--col-passed);
}
.legend .failed-once {
    color: var(--col-failed-once);
}
.legend .failed-twice {
    color: var(--col-failed-twice);
}
.legend .pending {
    color: var(--col-pending);
}
.legend .upcoming {
    color: var(--col-upcoming);
}
.legend .not-listed {
    color: var(--col-not-listed);
}

