/* ============================================================
   ReimburseOS — Motion Engine (ros-motion)
   GPU-only (transform/opacity/filter). Respects reduced-motion.
   Reusable across home / billing / pricing / app. Namespace: ros-*  / data-reveal
   ============================================================ */

/* ---- Scroll reveal ---- */
[data-reveal]{
  opacity:0;
  transform:translate3d(0,0,0);
  will-change:opacity, transform;
  transition:opacity .9s cubic-bezier(.16,1,.3,1), transform .9s cubic-bezier(.16,1,.3,1), filter .9s cubic-bezier(.16,1,.3,1);
}
[data-reveal="up"]    { transform:translate3d(0,38px,0); }
[data-reveal="down"]  { transform:translate3d(0,-38px,0); }
[data-reveal="left"]  { transform:translate3d(48px,0,0); }
[data-reveal="right"] { transform:translate3d(-48px,0,0); }
[data-reveal="scale"] { transform:scale(.92); }
[data-reveal="blur"]  { filter:blur(14px); transform:translate3d(0,24px,0); }
[data-reveal].is-in{ opacity:1; transform:none; filter:none; }

/* ---- Aurora / animated gradient mesh background ---- */
.ros-aurora{ position:relative; isolation:isolate; }
.ros-aurora__layer{
  position:absolute; inset:0; z-index:-1; pointer-events:none; overflow:hidden;
  filter:blur(70px) saturate(135%); opacity:.55;
}
.ros-aurora__blob{
  position:absolute; width:48vw; height:48vw; max-width:760px; max-height:760px;
  border-radius:50%; mix-blend-mode:screen;
  animation:ros-drift 22s ease-in-out infinite alternate;
}
.ros-aurora__blob--a{ top:-8%;  left:-6%;  background:radial-gradient(circle at 30% 30%, rgba(0,212,255,.55), transparent 62%); animation-delay:0s; }
.ros-aurora__blob--b{ top:6%;   right:-10%; background:radial-gradient(circle at 70% 30%, rgba(94,234,212,.40), transparent 60%); animation-delay:-7s; }
.ros-aurora__blob--c{ bottom:-18%; left:30%; background:radial-gradient(circle at 50% 60%, rgba(129,140,248,.38), transparent 62%); animation-delay:-13s; }
@keyframes ros-drift{
  0%   { transform:translate3d(0,0,0) scale(1); }
  50%  { transform:translate3d(4vw,3vw,0) scale(1.12); }
  100% { transform:translate3d(-3vw,-2vw,0) scale(.95); }
}

/* ---- Scroll progress bar ---- */
.ros-scrollbar{
  position:fixed; top:0; left:0; height:2.5px; width:100%; transform:scaleX(0); transform-origin:0 50%;
  background:linear-gradient(90deg,#00D4FF,#5EEAD4,#818CF8); z-index:1000; pointer-events:none;
  box-shadow:0 0 12px rgba(0,212,255,.6);
}

/* ---- Gradient shimmer text ---- */
.ros-shimmer{
  background:linear-gradient(100deg,#fff 20%, #00D4FF 40%, #5EEAD4 55%, #fff 75%);
  background-size:200% auto; -webkit-background-clip:text; background-clip:text;
  -webkit-text-fill-color:transparent; color:transparent;
  animation:ros-shimmer 5.5s linear infinite;
}
@keyframes ros-shimmer{ to{ background-position:200% center; } }

/* ---- Float ---- */
.ros-float{ animation:ros-float 6s ease-in-out infinite; }
.ros-float--slow{ animation-duration:9s; }
@keyframes ros-float{ 0%,100%{ transform:translateY(0); } 50%{ transform:translateY(-12px); } }

/* ---- Tilt (3D) wrapper — JS drives --rx/--ry ---- */
[data-tilt]{
  transform:perspective(1100px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg)) translateZ(0);
  transition:transform .25s cubic-bezier(.16,1,.3,1);
  transform-style:preserve-3d; will-change:transform;
}

/* ---- Magnetic buttons + glow ---- */
[data-magnetic]{ transition:transform .25s cubic-bezier(.16,1,.3,1), box-shadow .25s ease; will-change:transform; }

/* ---- Glow pulse ---- */
.ros-pulse{ animation:ros-pulse 2.8s ease-in-out infinite; }
@keyframes ros-pulse{
  0%,100%{ box-shadow:0 0 0 0 rgba(0,212,255,.0); }
  50%{ box-shadow:0 0 34px -6px rgba(0,212,255,.55); }
}

/* ---- Live dot ---- */
.ros-livedot{ position:relative; }
.ros-livedot::after{
  content:""; position:absolute; inset:0; border-radius:50%;
  box-shadow:0 0 0 0 rgba(16,185,129,.6); animation:ros-ring 2s ease-out infinite;
}
@keyframes ros-ring{ to{ box-shadow:0 0 0 10px rgba(16,185,129,0); } }

/* ---- Parallax (JS sets --py) ---- */
[data-parallax]{ transform:translate3d(0,var(--py,0px),0); will-change:transform; }

/* ---- Reduced motion: disable everything ---- */
@media (prefers-reduced-motion: reduce){
  [data-reveal]{ opacity:1 !important; transform:none !important; filter:none !important; transition:none !important; }
  .ros-aurora__blob,.ros-shimmer,.ros-float,.ros-pulse,.ros-livedot::after{ animation:none !important; }
  [data-tilt],[data-magnetic],[data-parallax]{ transform:none !important; }
  .ros-scrollbar{ display:none; }
}
