/* Pereche cu motion.js, care pune clasa `mo` pe <html> doar când mișcarea e permisă.
   Doar opacitate și transform, sub 1,3 s; „backwards” = după animație nu rămâne nimic pe element. */

html.mo .view.mo-in > :not([class*="glow"]):not([class*="grain"]):not(script):not(style):not(.modal):not(.oa-modal){
  animation:moIn .42s cubic-bezier(.2,.8,.2,1) backwards}
html.mo .view.mo-in > :nth-child(2){animation-delay:.05s}
html.mo .view.mo-in > :nth-child(3){animation-delay:.1s}
html.mo .view.mo-in > :nth-child(4){animation-delay:.15s}
html.mo .view.mo-in > :nth-child(5){animation-delay:.2s}
html.mo .view.mo-in > :nth-child(n+6){animation-delay:.25s}
@keyframes moIn{from{opacity:0;transform:translateY(16px) scale(.99)}}

html.mo .mo-ind{position:absolute!important;left:0;top:0;z-index:0;pointer-events:none;box-sizing:border-box;display:block!important;margin:0!important;padding:0!important;min-width:0!important;
  transition:transform .45s cubic-bezier(.34,1.32,.5,1),width .45s cubic-bezier(.34,1.32,.5,1),height .45s cubic-bezier(.34,1.32,.5,1),opacity .15s ease}
html.mo .mo-ind.mo-now{transition:none}

html.mo #dashV2.mo-draw .dv2-bar{transform-origin:50% 100%;animation:moBar .85s cubic-bezier(.2,.8,.2,1) backwards}
html.mo #dashV2.mo-draw .dv2-gauge .dv2-fill{animation:moDash 1.3s cubic-bezier(.2,.8,.2,1) .1s backwards}
@keyframes moBar{from{transform:scaleY(0)}}
@keyframes moDash{from{stroke-dashoffset:277}}

html.mo #obWizard.obv2 .obv2-node.mo-check .dot svg path{stroke-dasharray:24;animation:moCheck .45s cubic-bezier(.3,.8,.3,1) calc(.35s + var(--mo-t,0s)) backwards}
@keyframes moCheck{from{stroke-dashoffset:24}}
html.mo #obWizard.obv2 .obv2-node.mo-pulse .dot{animation:moPulse 1s cubic-bezier(.2,.8,.2,1) calc(.25s + var(--mo-t,0s))}
@keyframes moPulse{0%{box-shadow:0 10px 26px rgba(21,19,28,.28),0 0 0 0 rgba(21,19,28,.22)}100%{box-shadow:0 10px 26px rgba(21,19,28,.28),0 0 0 18px rgba(21,19,28,0)}}
html.mo #obWizard.obv2 .ob-pill.mo-tap{position:relative;overflow:hidden;animation:moTap .34s cubic-bezier(.3,1.5,.5,1)}
@keyframes moTap{0%{transform:scale(.94)}100%{transform:scale(1)}}
html.mo #obWizard.obv2 .ob-pill.mo-tap::after{content:"";position:absolute;left:var(--mx,50%);top:var(--my,50%);width:10px;height:10px;margin:-5px 0 0 -5px;
  border-radius:50%;background:currentColor;pointer-events:none;opacity:0;animation:moRipple .6s ease-out}
@keyframes moRipple{0%{opacity:.3;transform:scale(0)}100%{opacity:0;transform:scale(30)}}
html.mo #obWizard.obv2 .mo-spark{position:absolute;width:6px;height:6px;margin:-3px 0 0 -3px;border-radius:50%;pointer-events:none;z-index:3;
  background:#7fcfae;box-shadow:0 0 6px rgba(127,207,174,.8);animation:moSpark .75s cubic-bezier(.2,.8,.3,1) backwards}
html.mo #obWizard.obv2 .mo-spark.b{background:#a98be0;box-shadow:0 0 6px rgba(169,139,224,.8);width:5px;height:5px}
@keyframes moSpark{0%{opacity:0;transform:translate(0,0) scale(.4)}25%{opacity:1}100%{opacity:0;transform:translate(var(--dx),var(--dy)) scale(1)}}
html.mo #obWizard.obv2 .obv2-earned.mo-gift > svg:first-child{animation:moGift .55s cubic-bezier(.3,1.5,.5,1)}
@keyframes moGift{0%{transform:rotate(0) scale(1)}30%{transform:rotate(-14deg) scale(1.18)}60%{transform:rotate(9deg) scale(1.05)}100%{transform:rotate(0) scale(1)}}
html.mo #obWizard.obv2.mo-out{animation:moObOut .28s ease forwards}
@keyframes moObOut{to{opacity:0;transform:scale(1.015)}}

/* Rândurile: doar opacitate, ca celulele lipite (sticky) să rămână lipite. */
html.mo #campaignsTable tr.mo-row{animation:moRow .36s ease backwards}
@keyframes moRow{from{opacity:0}}
html.mo #campaignsTable .mo-card{animation:moIn .42s cubic-bezier(.2,.8,.2,1) backwards}
html.mo #campV2 .cv2-lvl[data-mo-ul] .lvl-tab.active{border-bottom-color:transparent!important}
html.mo #campV2 .mo-uline{position:absolute;left:0;top:0;height:2px;border-radius:2px;background:var(--dv2-lav,#c9a8e8);pointer-events:none;
  transition:transform .42s cubic-bezier(.34,1.25,.5,1),width .42s cubic-bezier(.34,1.25,.5,1)}
html.mo #campV2 .mo-uline.mo-now{transition:none}

@media (prefers-reduced-motion:reduce){
  html.mo .view.mo-in > *,html.mo #dashV2.mo-draw *,html.mo #obWizard.obv2 .mo-check .dot svg path,html.mo #obWizard.obv2 .mo-pulse .dot,
  html.mo #obWizard.obv2 .mo-tap,html.mo #obWizard.obv2 .mo-tap::after,html.mo #obWizard.obv2 .mo-spark,html.mo #obWizard.obv2 .mo-gift > svg,
  html.mo #obWizard.obv2.mo-out,html.mo #campaignsTable tr.mo-row,html.mo #campaignsTable .mo-card{animation:none!important}
  html.mo #campV2 .mo-uline{transition:none!important}
  html.mo .mo-ind{transition:none!important}
}

/* Intrarea și scânteia de la clic sunt în motion.js (fyEnter / fyListen). */
html.mo #aiHome .mo-fy{position:relative;display:block;width:46px;height:46px;margin:0 auto}
html.mo #aiHome .mo-fy>img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;margin:0;display:block}
html.mo #aiHome .mo-fy-l{clip-path:inset(0 50% 0 0);animation:moFyL 12s ease-in-out infinite}
html.mo #aiHome .mo-fy-r{clip-path:inset(0 0 0 50%);animation:moFyR 12s ease-in-out infinite}
html.mo #aiHome .mo-fy-h{transition:translate .5s cubic-bezier(.2,.8,.2,1)}
html.mo #aiHome .mo-fy-halo{filter:blur(10px) saturate(1.35);opacity:.22;pointer-events:none;animation:moFyHalo 12s ease-in-out infinite;transition:scale .6s ease}
html.mo #aiHome .mo-fy:hover .mo-fy-l{translate:-1.4px 0}
html.mo #aiHome .mo-fy:hover .mo-fy-r{translate:1.4px 0}
html.mo #aiHome .mo-fy:hover .mo-fy-halo{scale:1.12}
html.mo #aiHome .mo-fy-s{position:absolute;left:50%;top:48.5%;width:12px;height:12px;fill:#fff;pointer-events:none;opacity:0;
  transform:translate(-50%,-50%) scale(.2);filter:drop-shadow(0 0 3px rgba(255,255,255,.85)) drop-shadow(0 0 7px rgba(201,168,232,.75))}
html.mo #aiHome .mo-fy-idle{animation:moFySpark 12s ease-in-out infinite}
@keyframes moFyL{0%,8%,42%,58%,92%,100%{transform:translateX(0)}25%{transform:translateX(-.8px)}75%{transform:translateX(-1.3px)}}
@keyframes moFyR{0%,8%,42%,58%,92%,100%{transform:translateX(0)}25%{transform:translateX(.8px)}75%{transform:translateX(1.3px)}}
@keyframes moFyHalo{0%,100%{opacity:.22;transform:scale(1)}25%{opacity:.34;transform:scale(1.07)}50%{opacity:.24;transform:scale(1.02)}75%{opacity:.46;transform:scale(1.13)}}
@keyframes moFySpark{0%,68%{opacity:0;transform:translate(-50%,-50%) scale(.2) rotate(0deg)}75%{opacity:1;transform:translate(-50%,-50%) scale(1) rotate(45deg)}84%,100%{opacity:0;transform:translate(-50%,-50%) scale(.3) rotate(90deg)}}
