box-sizing é uma propriedade css que define como o tamanho de um elemento é calculado.
por padrão, ele vem como box-sizing: content-box e é o mesmo que initial. ou seja, o tamanho daquele elemento e de seus filhos (que não forem definidos especificamente) será calculado da seguinte maneira:
<aside>
🧮 width/height+ padding + border = real largura/altura do elemento
</aside>
ou seja, quando você define a largura e altura de um elemento, ele ainda vai adicionar o padding e border no cálculo, fazendo o elemento parecer ainda maior.
.patinho {
border-box: content-box;
width: 300px;
height: 200px;
padding: 15px;
border: solid 5px purple;
margin: 30px;
}

como no exemplo acima, mesmo você definindo a largura como 300px e altura como 200px, as outras propriedades ainda vão adicionar tamanho ao elemento.
já o box-sizing: border-box, essas demais propriedades crescem para dentro. ou seja, width e height limitam o tamanho máximo que aquele elemento terá, independente das demais propriedades. propriedades como padding, border e margin crescem para dentro do elemento, tornando a área útil dele menor, mas visualmente mantendo o mesmo tamanho
<aside>
🧮 width/height = real largura/altura do elemento
</aside>
.patinho {
border-box: border-box;
width: 300px;
height: 200px;
padding: 15px;
border: solid 5px purple;
margin: 30px;
}
