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