/* ==========================================================================
   THE DUST PENALTY — animations.css   (Layer 3/3)
   Topic-driven motion only (sun halo, scroll cue, energy flow). The heavy
   canvas work (hero dust, Entry-5 soiling sim) lives in animations.js.
   Scroll-reveal lives in components.css. Reduced-motion is enforced here too.
   ========================================================================== */

/* sun corona breathing (hero) */
@keyframes halo{0%,100%{transform:scale(1);opacity:.5}50%{transform:scale(1.08);opacity:.85}}

/* scroll-cue chevron bob (hero) */
@keyframes bob{0%,100%{transform:translateY(0)}50%{transform:translateY(5px)}}

/* SDG-7 mark glow on the nav dot */
@keyframes dot-glow{0%,100%{box-shadow:0 0 0 0 rgba(253,183,20,0)}50%{box-shadow:0 0 0 4px rgba(253,183,20,.18)}}
.bar__dot{animation:dot-glow 5s ease-in-out infinite}

/* energy-flow accent (used on dark feature rules) */
@keyframes energy-flow{0%{background-position:0 0}100%{background-position:200px 0}}
.anim-flow{background-image:repeating-linear-gradient(90deg,transparent,transparent 16px,rgba(253,183,20,.35) 16px,rgba(253,183,20,.35) 18px);
  animation:energy-flow 3s linear infinite}

/* live indicator pulse (e.g. efficiency dropping in the soiling sim) */
@keyframes soft-pulse{0%,100%{opacity:1}50%{opacity:.45}}
.anim-pulse{animation:soft-pulse 1.8s ease-in-out infinite}

/* HARD reduced-motion contract */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
  .anim-flow,.anim-pulse,.bar__dot,.sun::after,.hero__cue .chev{animation:none!important}
}
