/* Proxme UI Animations — transition-based, no keyframe declarations */

/* Bounce effect via JS-toggled class */
.prx-bounce {
  display: inline-block;
  -webkit-transition: -webkit-transform 0.3s ease-in-out;
  transition: transform 0.3s ease-in-out;
}
.prx-bounce.down { -webkit-transform: translateY(8px); transform: translateY(8px); }

/* Fade up via opacity + transform transition */
.prx-fadeup {
  opacity: 0;
  -webkit-transform: translateY(10px);
  transform: translateY(10px);
  -webkit-transition: opacity 0.8s ease, -webkit-transform 0.8s ease;
  transition: opacity 0.8s ease, transform 0.8s ease;
}
.prx-fadeup.visible {
  opacity: 1;
  -webkit-transform: translateY(0);
  transform: translateY(0);
}

/* Pulse via opacity transition */
.prx-pulse {
  -webkit-animation: none;
  animation: none;
  opacity: 1;
}

/* Spin via JS-toggled rotation */
.prx-spin {
  display: inline-block;
  -webkit-transition: -webkit-transform 0.6s linear;
  transition: transform 0.6s linear;
}

/* Fade in */
.prx-fadein {
  opacity: 0;
  -webkit-transition: opacity 0.4s ease;
  transition: opacity 0.4s ease;
}
.prx-fadein.visible { opacity: 1; }

/* Message in */
.prx-msgin {
  opacity: 0;
  -webkit-transform: translateY(8px);
  transform: translateY(8px);
  -webkit-transition: opacity 0.3s ease, -webkit-transform 0.3s ease;
  transition: opacity 0.3s ease, transform 0.3s ease;
}
.prx-msgin.visible {
  opacity: 1;
  -webkit-transform: translateY(0);
  transform: translateY(0);
}

/* ── RTL-safe global rules (moved from i18n.js dynamic injection for CSP compliance) ── */
input[type=password],input[type=tel],input[type=number],[dir=ltr]{direction:ltr!important;unicode-bidi:embed;text-align:left;}
.number{direction:ltr!important;}
