/* Only the root login form uses this submit animation. */
body.login-v2 .login-form .login-submit-frame {
  display: flex; justify-content: center; height: 46px; margin-top: 18px;
}
body.login-v2 .login-form .login-submit-centered {
  position: relative; justify-content: center; text-align: center;
  width: 100%; height: 46px; min-height: 46px; margin: 0; padding: 0;
  overflow: hidden; opacity: 1;
  transition: width 300ms ease, border-radius 300ms ease, background-color 180ms ease, border-color 180ms ease;
}
body.login-v2 .login-submit-centered .login-submit-label {
  font: inherit; transition: opacity 140ms ease;
}
body.login-v2 .login-submit-centered .login-submit-spinner,
body.login-v2 .login-submit-centered .login-submit-check {
  position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
  opacity: 0; pointer-events: none;
}
body.login-v2 .login-submit-centered svg { display: block; width: 25px; height: 25px; fill: none; stroke: currentColor; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
body.login-v2 .login-submit-centered.is-loading,
body.login-v2 .login-submit-centered.is-success { width: 46px; border-radius: 50%; }
body.login-v2 .login-submit-centered.is-loading .login-submit-label,
body.login-v2 .login-submit-centered.is-success .login-submit-label { opacity: 0; }
body.login-v2 .login-submit-centered.is-loading .login-submit-spinner { opacity: 1; transition: opacity 100ms 150ms; }
body.login-v2 .login-submit-centered.is-loading .login-submit-spinner svg { stroke-dasharray: 42 18; animation: login-submit-spin 800ms linear infinite; }
body.login-v2 .login-submit-centered.is-success { background: #16a36a !important; border-color: #16a36a !important; }
body.login-v2 .login-submit-centered.is-success .login-submit-check { opacity: 1; }
body.login-v2 .login-submit-centered.is-success .login-submit-check path { stroke-dasharray: 25; stroke-dashoffset: 25; animation: login-submit-draw 380ms ease forwards; }
body.login-v2 .login-error[hidden] { display: none; }
body.login-v2 .login-submit-status { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
@keyframes login-submit-spin { to { transform: rotate(360deg); } }
@keyframes login-submit-draw { to { stroke-dashoffset: 0; } }
@media (prefers-reduced-motion: reduce) {
  body.login-v2 .login-submit-centered,
  body.login-v2 .login-submit-centered .login-submit-label,
  body.login-v2 .login-submit-centered .login-submit-spinner { transition: none; }
  body.login-v2 .login-submit-centered.is-loading .login-submit-spinner svg { animation: none; }
  body.login-v2 .login-submit-centered.is-success .login-submit-check path { animation: none; stroke-dashoffset: 0; }
}
