Я бы сделал как-то так:
codepen.io/Kublyakov/pen/bEKXyE
border добавляется в :before с абсолютным позиционированием, тем самым размеры будут подстраиваться под размеры внешнего круга.
Если нужно, что бы текст внутри выделялся нормально, то для :before добавляется pointer-evens: none;
Ну отступы для текста думаю не нужно объяснять как добавлять)