Мастерская: создаём меню [15/28] 100% вопрос

Во вложенном меню у первого и последнего пункта меню есть дополнительные отступы сверху и снизу (соответственно). Долго думал, как все таки их сделать, пришел к выводу, который отразил ниже. Интересно услышать ваши идеи по этим отступам, может есть вариант намного короче и проще?

html,
body {
margin: 0;
padding: 0;
}

body {
width: 280px;
min-height: 280px;
padding: 10px;
font-family: “Arial”, sans-serif;
font-size: 14px;
line-height: 1.4;
background: #ecf0f1;
}

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

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

.main-menu > .active > a {
background-color: #1abc9c;
}

.main-menu ul {
padding: 0;
margin: 0;
list-style: none;
border-bottom: 2px solid #2c3e50;
}

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

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

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

Результ 100%, но возможно что-то сделал не оптимально. Укажите на ошибки/не рациональное/лишнее.

html,
body {
margin: 0;
padding: 0;
}

body {
width: 280px;
min-height: 280px;
padding: 10px;
font-family: “Arial”, sans-serif;
font-size: 14px;
line-height: 1.4;
background: #ecf0f1;
}

.main-menu {
width: 200px;
margin: 0;
padding: 0;
}
.main-menu > li > a{
display: block;
padding: 10px 15px;
background-color: #2980b9;
text-decoration: none;
color: #ffffff;
border-bottom: 2px solid #2c3e50;
}
.main-menu .active a{
background-color: #1abc9c;
}
.main-menu .active ul a{
display: block;
padding: 10px 10px 0px 15px;
background-color: #ffffff;
color: #2980b9;

}
.main-menu > .active > ul {
list-style: none;
padding: 0;
padding-top: 5px;
padding-bottom: 15px;
margin: 0;
color: #2980b9;
background-color: #ffffff;
border-bottom: 2px solid #2c3e50;
}