В Safari столкнулся с неаккуратным рендерингом элемента, если ему задан border-radius и фоновый цвет. Увидеть проблему и её решение можно на тестовой странице.
Фоновый цвет у блока убрать
Внутрь блока добавить обертку
Обертке задать фоновый цвет
Обёртке задать border-radius, меньше на толщину бордера, чем у внешнего блока
<div class="button"><div class="button-inner">Кнопка</div></div>
.button
{
border: 5px solid #000;
border-radius: 30px;
-moz-border-radius: 30px;
-webkit-border-radius: 30px;
-khtml-border-radius: 30px;
}
.button-inner
{
border-radius: 25px;
-moz-border-radius: 25px;
-webkit-border-radius: 25px;
-khtml-border-radius: 25px;
background: #fff;
}
Между фоном и бордером появляются дырки, если border-radius у обоих блоков одинаковый и:
Внутреннему блоку задана большая высота (height)
Его содержимое имеет большой font-size
Его содержимое представлено многострочным текстовым узлом
Внутреннему блоку нужно задавать border-radius с меньшим значением, чем у внешнего блока, потому что при border-radius:30px внешняя сторона бордера (толщина которого равна 5px) скруглена с радиусом 30px, а внутренняя сторона скруглена с радиусом 25px, меньше на толщину бордера.
Спасибо Александру Ермолаеву за багрепорт, а Степану Резникову за допиливание решения и объяснение про кривизну бордера.