/* ============================================================
   HUMOTIX — Motion system
   Animation is communication. Every keyframe here teaches,
   reassures or rewards. Everything is disabled under
   prefers-reduced-motion at the bottom of this file.
   ============================================================ */

/* The two shared "live" pulses. They were hardcoded mint green (127,224,174)
   and terracotta (217,107,82) from the pre-Lamplight theme — between them they
   haloed 31 elements across the site in colours the palette no longer contains.
   --pulse is theme-scoped, so these read as brass on the page and as lamplight
   on the night hero without needing two sets of keyframes. */
@keyframes ledPulse{0%{box-shadow:0 0 0 0 var(--pulse)}70%{box-shadow:0 0 0 7px transparent}100%{box-shadow:0 0 0 0 transparent}}
@keyframes emberPulse{0%{box-shadow:0 0 0 0 var(--pulse)}70%{box-shadow:0 0 0 8px transparent}100%{box-shadow:0 0 0 0 transparent}}

/* ============================================================
   LIVING ORB — ASORA's presence, alive rather than illustrated.
   Two slow, out-of-sync motions so it never looks like a loop:
   the sphere breathes, while the light inside it drifts. Both
   are long (7s / 11s) and low-amplitude — you notice it's alive
   without noticing the animation.
   ============================================================ */
/* The .orb-live helper and its keyframes used to live here. Removed: it was
   never used in any markup, and its @keyframes orbBreathe DUPLICATED the one
   in sections/services.css. motion.css loads after the section files, so the
   dead copy silently won — editing the real one had no effect. ASORA's orb now
   owns its motion in services.css (orbBreathe / orbDriftA / orbDriftB). */
@keyframes pulse{0%,100%{opacity:.45}50%{opacity:1}}
@keyframes rise{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:none}}
@keyframes riseSm{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@keyframes tp{0%,60%,100%{opacity:.3;transform:translateY(0)}30%{opacity:1;transform:translateY(-4px)}}
@keyframes spinSlow{to{transform:rotate(360deg)}}
@keyframes dashFlow{to{stroke-dashoffset:-24}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes popIn{0%{opacity:0;transform:scale(.92)}60%{opacity:1;transform:scale(1.02)}100%{transform:scale(1)}}
@keyframes flash{0%{background:rgba(217,107,82,.22)}100%{background:transparent}}

/* utility animation hooks */
.anim-pop{animation:popIn .5s var(--ease) both}
.anim-rise{animation:rise .5s var(--ease) both}
.flash-once{animation:flash 1.1s var(--ease)}

@media(prefers-reduced-motion:reduce){
  *{animation:none!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
  .reveal{opacity:1!important;transform:none!important}
}
