Потому что вы их не задали. Внутренние отступы сверху и слева, где необходимо. Учтите, что отступы увеличивают размер блока, придется подправить высоту и ширину.
Хороший у вас код. Единственное замечание по поводу оформления CSS - отсутствие пробелов. Нечитабельно. Поэтому так долго разбираться.
Теперь что касается ошибок.
У вас в каждом блоке есть вложенный элемент - абзац, также есть список еще. Каждый элемент имеет свои отступы по умолчанию, которые нигде не прописаны, но в браузере видны.
Их необходимо обнулить, иначе картинка не сойдется с образцом.
Вот ваш код. Выделено то, что исправлено.
html, body{
margin:0;
padding:0;
}
body {
width:450px;
height:335px;
font-family:‘Arial’, sans-serif;
font-size:10px;
color:white;
}
p {
padding-top:5px;
padding-left:5px;
}
.header ,.promo ,.footer {
background-color:#34495e;
}
.header { height:50px;
padding-top:5px;
}
.head_t {
width:350px;
height:35px;
background-color:#c0392b; margin: 5px auto;
} .head_t p { margin: 0;}
.menu {
height:35px;
background-color:#3498DB;
}
.menu p {
padding-left: 55px;
margin-top: 0px;
}
.promo { height:75px; padding-top: 5px;
}
.promo p {
padding-left: 5px; margin: 0;
} .promo ul { margin: 0; }
.promo ul li {
width:170px;
height:60px;
list-style:none;
background-color:#c0392b; margin-top: 5px;
}
.promo ul li:nth-child(1) {
float:left;
margin-left:10px;
}
.promo ul li:nth-child(2) {
float:right;
margin-right:50px;
}
.center {
height:130px;
width:450px;
}
.center p {
padding-left: 5px; margin: 0;
}
.left ,.right ,.main {margin:10px auto;}
.left ,.right {
width:70px;
height:110px;
background-color:#3498DB;
float:left;
}
Сейчас объясню. Ширина контейнера, в котором находятся два блока promo - 340px. Ширина одного блока promo 160px, плюс отступ в 10px справа у первого. Вместе получается 330px.
Но. У вас есть внутренние отступы по 5px с каждой стороны. Отступы справа и слева у каждого блока - а это значит 5px * 4 = 20px - и в итоге перебор.
В этом случае очень удобно пользоваться консолью. Там показываются все размеры и отступы.
Вот посмотрите.
Сереневым цветом показаны внутренние отступы, желтым - внешний справа.
Чтобы избавиться от такого эффекта, пользуются свойством box-sizing. Если для него задать значение border-box, то внутренние отступы не будут увеличивать размеры блока.
Подробнее о свойстве: https://webref.ru/css/box-sizing
Вместо height лучше писать min-height.
Центровщик у вас не сработал для menu и footer, раз отступ в 55px пришлось использовать.
От !important в данном фрагменте можно избавиться, усилив селектор:
.right {
margin-right: 0 !important;
}