/* SLPT-R27-B15A1-PULSE-RELIABILITY-20260824
   Browser correction: make the approved login and coach-stat pulses reliably visible
   without scaling the button/card or changing protected dashboard geometry. */

/* Sign-in: pulse a lightweight halo layer, not the button geometry itself. */
#loginView.r27-login-option3 .login-submit{
  position:relative;
  isolation:isolate;
  overflow:visible;
}
#loginView.r27-login-option3 .login-submit::after{
  content:"";
  position:absolute;
  inset:-4px;
  border-radius:15px;
  pointer-events:none;
  border:1px solid rgba(177,47,120,.13);
  box-shadow:0 0 0 3px rgba(177,47,120,.035),0 0 18px rgba(118,81,231,.11);
  opacity:.14;
  animation:r270SignInHaloPulse 3.6s ease-in-out infinite;
}
@keyframes r270SignInHaloPulse{
  0%,100%{opacity:.14}
  50%{opacity:.52}
}

/* Coach dashboard stats: keep the existing 3px colour bar untouched and pulse only
   a compositor-friendly halo beside it. This avoids the later !important opacity/filter
   declarations that previously flattened the visible pulse. */
.v192-dashboard .v192-metric{
  position:relative;
}
.v192-dashboard .v192-metric::after{
  content:"";
  position:absolute;
  left:11px;
  top:15px;
  bottom:15px;
  width:7px;
  border-radius:999px;
  pointer-events:none;
  background:var(--r27-stat-accent);
  filter:blur(4px);
  opacity:.045;
  animation:r270StatBarHaloPulse 4.2s ease-in-out infinite;
}
@keyframes r270StatBarHaloPulse{
  0%,100%{opacity:.045}
  50%{opacity:.19}
}

/* Preserve the user's OS/browser reduced-motion preference. */
@media(prefers-reduced-motion:reduce){
  #loginView.r27-login-option3 .login-submit::after,
  .v192-dashboard .v192-metric::after{
    animation:none!important;
    opacity:.12;
  }
}
