/* HYPagotchi — production motion classes, adapted from the Motion Library volumes.
   Source pieces credited per class. Loaded site-wide by partials.js. */

/* from m142 · CTA sheen sweep (primary mint button) */
.mo-sheen{ position:relative; overflow:hidden; }
.mo-sheen::after{ content:""; position:absolute; top:0; left:-60%; width:40%; height:100%;
  background:linear-gradient(100deg,transparent,rgba(255,255,255,.5),transparent);
  animation:moSheen 2.6s linear infinite; pointer-events:none; }
@keyframes moSheen{ to{ left:120%; } }

/* from m141 · gentle attention pulse (secondary CTA) */
.mo-pulse{ animation:moPulse 2.2s ease-in-out infinite; }
@keyframes moPulse{ 0%,100%{ transform:scale(1);} 50%{ transform:scale(1.04);} }

/* from m146 · glow ring (wallet / connect) — coral-tuned */
.mo-glow{ animation:moGlow 2.2s ease-in-out infinite; }
@keyframes moGlow{ 0%,100%{ box-shadow:0 0 0 rgba(255,107,107,0);} 50%{ box-shadow:0 0 18px rgba(255,107,107,.65);} }

/* from m154 · LIVE dot badge (countdown / mint-live bar) */
.mo-livedot{ display:inline-block; width:8px; height:8px; border-radius:50%; background:var(--hyper);
  margin-right:6px; vertical-align:middle; animation:moLive 1.4s steps(3) infinite; }
@keyframes moLive{ 0%,100%{ box-shadow:0 0 0 0 rgba(5,196,138,.6);} 70%{ box-shadow:0 0 0 7px rgba(5,196,138,0);} }

/* from m174 · hero scroll cue */
.mo-scrollcue{ display:flex; flex-direction:column; align-items:center; gap:4px;
  font-family:var(--font-pixel-tiny,monospace); font-size:8px; color:rgba(255,255,255,.75); letter-spacing:.08em; }
.mo-scrollcue .ar{ font-size:18px; animation:moCue 1.6s ease-in-out infinite; }
@keyframes moCue{ 0%,100%{ transform:translateY(0); opacity:1;} 50%{ transform:translateY(8px); opacity:.4;} }

/* from m186 · scroll progress bar (JS-driven width) */
#moProgress{ position:fixed; top:0; left:0; height:4px; width:0; z-index:9999;
  background:linear-gradient(90deg,var(--coral),var(--fc-yellow),var(--teal)); pointer-events:none;
  transition:width .08s linear; }

/* from m187 · back-to-top float */
#moTop{ position:fixed; right:18px; bottom:18px; width:44px; height:44px; z-index:9998;
  background:var(--ink); color:var(--bg); border:2px solid var(--ink); border-radius:50%;
  display:flex; align-items:center; justify-content:center; font-size:18px; cursor:pointer;
  box-shadow:3px 3px 0 rgba(26,32,44,.3); opacity:0; pointer-events:none; transition:opacity .25s;
  animation:moTopBob 2s ease-in-out infinite; }
#moTop.on{ opacity:1; pointer-events:auto; }
@keyframes moTopBob{ 0%,100%{ transform:translateY(0);} 50%{ transform:translateY(-5px);} }

/* from m178 · hero float (creatures/eggs) */
.mo-float{ animation:moFloat 4s ease-in-out infinite; }
@keyframes moFloat{ 0%,100%{ transform:translateY(4px);} 50%{ transform:translateY(-8px);} }

/* from m93 · press-start blink (mini games) */
.mo-blink{ animation:moBlink 1.3s steps(2) infinite; }
@keyframes moBlink{ 50%{ opacity:0; } }

/* from m162 · card hover-lift (real :hover, not looped) */
.mo-lift{ transition:transform .18s cubic-bezier(.34,1.56,.64,1), box-shadow .18s; }
.mo-lift:hover{ transform:translate(-3px,-5px); box-shadow:8px 10px 0 var(--ink) !important; }

@media (prefers-reduced-motion: reduce){
  .mo-sheen::after,.mo-pulse,.mo-glow,.mo-livedot,.mo-scrollcue .ar,#moTop,.mo-float,.mo-blink{ animation:none !important; }
}
