Я пытаюсь обрезать этот круг с помощью div: чтобы он аккуратно содержался внутри и не было переполнения. Мне сложно найти элегантное решение.
.wrapper{
background: #efefef;
height: 250px;
}
.wrapper::before{
width: 300px;
height: 300px;
border-radius: 500px;
background-image: linear-gradient(to bottom, #F38A00, #EC6E00 100%);
position: absolute;
right: 20%;
content: '';
overflow: hidden;
}<div class = "wrapper"></div>





На обертке нужно указать overflow: hidden и position: relative;.
.wrapper{
position: relative;
background: #efefef;
height: 250px;
overflow: hidden;
}
.wrapper::before{
width: 300px;
height: 300px;
border-radius: 500px;
background-image: linear-gradient(to bottom, #F38A00, #EC6E00 100%);
position: absolute;
right: 20%;
content: '';
}<div class = "wrapper"></div>
Зачем вам использовать контейнер,
position: relative;иoverflow: hidden;в классе.wrapperдолжно быть достаточно.