/* ==== Keyframes ==== */

@keyframes marquee {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}
@keyframes floatY {
  0%,100% { transform: translateX(-50%) translateY(0); }
  50%     { transform: translateX(-50%) translateY(9px); }
}
@keyframes spinCube {
  from { transform: rotateX(-22deg) rotateY(0deg); }
  to   { transform: rotateX(-22deg) rotateY(360deg); }
}
@keyframes blobBob {
  0%,100% { transform: translateY(0) rotate(0deg); }
  50%     { transform: translateY(-5px) rotate(-1.5deg); }
}
@keyframes blink {
  0%,90%,100% { transform: scaleY(1); }
  95%          { transform: scaleY(0.08); }
}
@keyframes kineticCycle {
  0%        { opacity:0; transform:translateY(22px); }
  8%,30%    { opacity:1; transform:translateY(0); }
  38%,100%  { opacity:0; transform:translateY(-22px); }
}
@keyframes drawLine {
  0%   { stroke-dashoffset:200; }
  45%  { stroke-dashoffset:0; }
  55%  { stroke-dashoffset:0; }
  100% { stroke-dashoffset:-200; }
}
@keyframes dotMove {
  0%,100% { transform:translateX(-42px); }
  50%     { transform:translateX(42px); }
}
@keyframes scrollUp {
  0%   { transform:translateY(0); }
  100% { transform:translateY(-52%); }
}
@keyframes brandCycle {
  0%,18%   { opacity:0; transform:translateY(10px); }
  4%,14%   { opacity:1; transform:translateY(0); }
  22%,100% { opacity:0; transform:translateY(-10px); }
}
@keyframes grain {
  0%        { transform: translate(0,0); }
  10%       { transform: translate(-3%,-2%); }
  20%       { transform: translate(3%,2%); }
  30%       { transform: translate(-2%,3%); }
  40%       { transform: translate(2%,-3%); }
  50%       { transform: translate(-3%,3%); }
  60%       { transform: translate(3%,-2%); }
  70%       { transform: translate(-2%,2%); }
  80%       { transform: translate(2%,3%); }
  90%       { transform: translate(-3%,-2%); }
  100%      { transform: translate(0,0); }
}
@keyframes pulse {
  0%,100% { box-shadow: 0 0 0 0 rgba(200,255,0,0.6); }
  50%     { box-shadow: 0 0 0 6px rgba(200,255,0,0); }
}
@keyframes filmRoll {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}
@keyframes lightPulse {
  0%,100% { opacity:0.7; transform:scale(1); }
  50%     { opacity:1; transform:scale(1.3); }
}

/* ==== Reduced motion ==== */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
    scroll-behavior: auto !important;
  }
  .ticker__track, .grain { animation: none !important; }
  .intro-mask { display: none !important; }
}
