/* ════════════════════════════════════════════════════════════════════════════
 * ANIMATIONS
 * @keyframes definitions
 * ════════════════════════════════════════════════════════════════════════════
 */

/* ──────────────────────────  ANIMATIONS  ────────────────────────── */
@keyframes wave-shift{
  0%   {background-position: 0% 50%, 100% 50%, 50% 0%;}
  25%  {background-position: 60% 20%, 40% 80%, 20% 40%;}
  50%  {background-position: 100% 50%, 0% 50%, 50% 100%;}
  75%  {background-position: 40% 80%, 60% 20%, 80% 60%;}
  100% {background-position: 0% 50%, 100% 50%, 50% 0%;}
}
@keyframes wave-rot{
  0%   {transform:translate3d(0,0,0) rotate(0deg) scale(1);}
  33%  {transform:translate3d(-3%,2%,0) rotate(8deg) scale(1.06);}
  66%  {transform:translate3d(2%,-3%,0) rotate(-6deg) scale(1.04);}
  100% {transform:translate3d(0,0,0) rotate(0deg) scale(1);}
}
@keyframes hue-cycle{
  0%   {filter:hue-rotate(0deg) saturate(1);}
  50%  {filter:hue-rotate(20deg) saturate(1.15);}
  100% {filter:hue-rotate(0deg) saturate(1);}
}
@keyframes drift{0%,100%{transform:translate(0,0) scale(1)}33%{transform:translate(15%,-10%) scale(1.1)}66%{transform:translate(-10%,15%) scale(.9)}}
@keyframes pulse-dot{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(1.3)}}
@keyframes ticker-anim{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@keyframes fade-up{from{opacity:0;transform:translateY(28px)}to{opacity:1;transform:none}}
@keyframes fade-up-soft{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
@keyframes fade-in{from{opacity:0}to{opacity:1}}
@keyframes word-reveal{from{opacity:0;transform:translateY(40px) skewY(2deg);filter:blur(8px)}to{opacity:1;transform:none;filter:blur(0)}}
@keyframes shimmer{0%,100%{background-position:0% 50%}50%{background-position:100% 50%}}
@keyframes slow-zoom{from{transform:scale(1.0)}to{transform:scale(1.06)}}
@keyframes color-wash{0%{transform:translateX(-30%) translateY(-10%)}50%{transform:translateX(30%) translateY(10%)}100%{transform:translateX(-30%) translateY(-10%)}}
@keyframes grain-anim{0%,100%{transform:translate(0,0)}10%{transform:translate(-2%,-3%)}20%{transform:translate(-4%,2%)}30%{transform:translate(2%,-4%)}40%{transform:translate(-3%,3%)}50%{transform:translate(3%,-2%)}60%{transform:translate(-2%,4%)}70%{transform:translate(4%,-1%)}80%{transform:translate(-3%,-3%)}90%{transform:translate(3%,3%)}}
@keyframes sweep{from{transform:translateX(-100%) skewX(-12deg)}to{transform:translateX(220%) skewX(-12deg)}}
@keyframes vignette-pulse{0%,100%{opacity:.7}50%{opacity:.45}}
@keyframes count-up{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes ring-orbit{from{transform:rotate(0)}to{transform:rotate(360deg)}}
@keyframes reveal-clip{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}
@keyframes reveal-up-blur{from{opacity:0;transform:translateY(60px);filter:blur(10px)}to{opacity:1;transform:none;filter:blur(0)}}
@keyframes reveal-up{from{opacity:0;transform:translateY(40px)}to{opacity:1;transform:none}}
@keyframes reveal-slide{from{opacity:0;transform:translateX(-20px)}to{opacity:1;transform:none}}
@keyframes underline-draw{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes section-glow{from{box-shadow:0 0 0 rgba(124,58,237,0)}to{box-shadow:0 24px 64px rgba(124,58,237,.18)}}

/* Periodic flash sweep across section titles — fires once per 15s cycle */
@keyframes title-sweep{
  0%, 92%   {transform:translateX(-220%) skewX(-14deg); opacity:0;}
  92.5%     {opacity:1;}
  98%       {transform:translateX(900%) skewX(-14deg); opacity:1;}
  100%      {transform:translateX(900%) skewX(-14deg); opacity:0;}
}
/* Tiny title jitter accompanying the sweep — 4 frames of subpixel shake */
@keyframes title-jitter{
  0%, 92%, 100%   {transform:none; filter:none;}
  93%             {transform:translate(-1.5px, 1px); filter:brightness(1.08);}
  94%             {transform:translate(2px, -1.5px); filter:brightness(1.18);}
  95%             {transform:translate(-2px, 0.5px); filter:brightness(1.12);}
  96%             {transform:translate(1px, 1.5px); filter:brightness(1.06);}
  97%             {transform:translate(-0.5px, -0.5px); filter:none;}
}
