redirect to a dedicated sign in page

this line did the task perfectly

add_filter( 'login_url', function(){return /* the custom URL */;});

here is the explanation:(valid for wordpress 5.4.1)
by the time admin_init fires, it’s too late already.
once url/wp-admin is visited, index.php launches first
then requires admin.php (line 10)
then the file will execute 94. auth_redirect();
before 170. do_action( 'admin_init' );

auth_redirect() core function uses wp_login_url()
which in its turn uses login_url, as indicated in the wordpress documentation plage. we can apply a filter to it with any URL we like.