28/28 100%, но нарушено условие "размеры и отступы кратны 5". как этого избежать?

html, 

body {
margin: 0;
padding: 0;
}

body {
width: 380px;
min-height: 280px;
padding: 10px;
font-family: “Arial”, sans-serif;
font-size: 14px;
line-height: 1.4;
background: #ecf0f1;
}
ul {
padding: 0;
margin: 0;
list-style: none;
display: block;
}
.main-menu > li {
background-color: #2980b9;
width: 170px;
padding: 10px 15px;
border-bottom: solid 2px #2c3e50;
}
.main-menu a {
text-decoration: none;
color: #ffffff
}
.sub-menu > li {
background-color: #1abc9c;
width: 170px;
padding: 10px 15px;
border-bottom: solid 2px #2ecc71;
display: block;
}
ul.sub-menu {
position: absolute;
left: 190px;
/ВОТ ЗДЕСЬ условие нарушено/
top: 51px;
}
li.opened {
background-color: #1abc9c;
}

Потому что у вас есть “position: absolute”, а “position: relative” ответствует. “Top = 51px” отпадёт.

Вот так?

ul.sub-menu {
position: absolute;
left: 190px;
top: 0px;

}
li.opened {
background-color: #1abc9c;
position: relative;
}

Да. У меня, кстати, left: 180px. Видимо у вас в submenu ещё отступы есть.