/* ================================================================
   EffiQ Theme — Animations
   All @keyframes declarations used across the theme.
   Centralised here so components can reference them freely.
   Loaded on every page.
================================================================ */

@keyframes floatA       { 0%,100% { transform: translateY(0); }  50% { transform: translateY(-12px); } }
@keyframes floatB       { 0%,100% { transform: translateY(0); }  50% { transform: translateY(-7px); } }
@keyframes floatC       { 0%,100% { transform: translateY(0); }  50% { transform: translateY(-16px); } }
@keyframes dashFlow     { to { stroke-dashoffset: -32; } }
@keyframes ringPulse    { 0%   { opacity: .6; transform: scale(.75); }  100% { opacity: 0; transform: scale(2.4); } }
@keyframes barUp        { from { transform: scaleY(0); } to { transform: scaleY(1); } }
@keyframes spinCW       { from { transform: rotate(0deg); }   to { transform: rotate(360deg); } }
@keyframes spinCCW      { from { transform: rotate(0deg); }   to { transform: rotate(-360deg); } }
@keyframes blink2       { 0%,100% { opacity: 1; } 50% { opacity: 0; } }
@keyframes pulseDot     { 0%,100% { opacity: 1; transform: scale(1); }  50% { opacity: .28; transform: scale(.55); } }
@keyframes truckRoll    { 0%   { transform: translateX(-160px); } 100% { transform: translateX(110vw); } }
@keyframes truckRoll2   { 0%   { transform: translateX(-130px); } 100% { transform: translateX(110vw); } }
@keyframes truckRoll3   { 0%   { transform: translateX(-100px); } 100% { transform: translateX(110vw); } }
@keyframes scanBeam     { 0%,100% { transform: translateY(0); }  50% { transform: translateY(80px); } }
@keyframes glowPulse    { 0%,100% { opacity: .5; } 50% { opacity: 1; } }
@keyframes shimmer      { 0%   { background-position: 200% 0; }  100% { background-position: -200% 0; } }
@keyframes fadeUp       { from { opacity: 0; transform: translateY(22px); }  to { opacity: 1; transform: none; } }
@keyframes countUp      { from { opacity: 0; } 100% { opacity: 1; } }
@keyframes meshMove     { 0%   { transform: translate(0,0) rotate(0deg); }  33%  { transform: translate(30px,-20px) rotate(60deg); }  66%  { transform: translate(-20px,30px) rotate(120deg); }  100% { transform: translate(0,0) rotate(0deg); } }
@keyframes gridPan      { from { background-position: 0 0; }  to   { background-position: 28px 28px; } }
@keyframes typewriterBlink { 0%,100% { opacity: 1; } 49% { opacity: 1; } 50% { opacity: 0; } 99% { opacity: 0; } }
@keyframes tickerScroll { from { transform: translateX(0); }  to   { transform: translateX(-50%); } }
