Dá pra resolver usando uma borda com conic-gradient
.
Dá uma olhada nesse artigo: https://web.dev/articles/conic-gradient-border?hl=pt-br
É só questão de ajustar o gradiente para que haja uma transição rapida entre o preto e o cinza, e o angulo dessa transição deve ser proporcional ao percentual