15/28. Возможные варианты решения

Сложности вызвали отступы подменю. Пришлось использовать псевдоклассы для первого и последнего элементов списка, чтобы сделать отступ сверху и снизу. Без этого можно было бы обойтись или это нормальное решение?

.main-menu {
    margin: 0;
    padding: 0;
    width: 200px;
    list-style: none;
}

.main-menu > li { border-bottom: 2px solid #2c3e50; }

.main-menu a {
    display: block;
    background: #2980b9;
    color: #ffffff;
    text-decoration: none;
    padding: 10px 15px;
}

.main-menu > .active > a {
    background: #1abc9c;
    border-bottom: 2px solid #2c3e50;
}

.main-menu ul {
    list-style: none;
    padding: 0;
}

.main-menu li li a {
    background: #ffffff;
    color: #2980b9;
    text-decoration: underline;
    padding: 5px 15px;
}

.main-menu li li:first-child a { padding-top: 15px; }

.main-menu li li:last-child a { padding-bottom: 15px; }

Можно обойтись, если задавать отступы отдельно общие для ссылок, и отдельно для ul подменю.