Most of these things actually are purely client side. But nothing can prevent the website from sending that information back to the server.
Or they can be inferred from the client behaviour. Like you said from the GPU capabilities you can get to the actual hardware. If a client only downloads the dark mode CSS it knows which mode the user is currently on.