/* ── Nav scan line ─────────────────────────────── */
@keyframes navScan {
  0%   { background-position: -100% 0; }
  100% { background-position: 200% 0; }
}

/* ── Hero ──────────────────────────────────────── */
@keyframes scrollPulse {
  0%, 100% { transform: scaleY(1); opacity: 1; }
  50%       { transform: scaleY(0.4); opacity: 0.4; }
}
@keyframes pulse {
  0%, 100% { opacity: 1; transform: scale(1); }
  50%       { opacity: 0.5; transform: scale(1.4); }
}

/* ── Glitch ────────────────────────────────────── */
@keyframes glitch-main {
  0%, 88%, 100% { clip-path: none; transform: none; }
  89% { clip-path: polygon(0 8%, 100% 8%, 100% 38%, 0 38%); transform: translate(-4px, 0); }
  91% { clip-path: polygon(0 55%, 100% 55%, 100% 78%, 0 78%); transform: translate(4px, 0); }
  93% { clip-path: polygon(0 22%, 100% 22%, 100% 48%, 0 48%); transform: translate(-2px, 0); color: var(--purple); }
  95% { clip-path: none; transform: none; }
}
@keyframes glitch-before {
  0%, 87%, 100% { opacity: 0; }
  88% { opacity: 1; clip-path: polygon(0 0%, 100% 0%, 100% 32%, 0 32%); transform: translate(5px, -2px); color: var(--cyan); }
  90% { clip-path: polygon(0 58%, 100% 58%, 100% 100%, 0 100%); transform: translate(-5px, 2px); color: var(--purple); }
  92% { opacity: 0; }
}
@keyframes glitch-after {
  0%, 89%, 100% { opacity: 0; }
  90% { opacity: 1; clip-path: polygon(0 40%, 100% 40%, 100% 70%, 0 70%); transform: translate(-3px, 3px); color: var(--green); }
  92% { opacity: 0; }
}

.glitch {
  position: relative;
  animation: glitch-main 7s steps(1) infinite;
}
.glitch::before,
.glitch::after {
  content: attr(data-text);
  position: absolute;
  inset: 0;
  -webkit-text-fill-color: initial;
}
.glitch::before {
  animation: glitch-before 7s steps(1) infinite;
}
.glitch::after {
  animation: glitch-after 7s steps(1) infinite;
  animation-delay: 0.18s;
}

/* ── Vision rings ──────────────────────────────── */
@keyframes ringRotate {
  to { transform: rotate(360deg); }
}

/* ── AI pulse ──────────────────────────────────── */
@keyframes aiPulse {
  0%, 100% { opacity: 1; transform: scale(1); }
  50%       { opacity: 0.5; transform: scale(1.6); }
}

/* ── Blink cursor ──────────────────────────────── */
@keyframes blink {
  0%, 100% { opacity: 1; }
  50%       { opacity: 0; }
}

/* ── Random card glitch flash ──────────────────── */
@keyframes glitchFlash {
  0%   { filter: none; }
  25%  { filter: hue-rotate(120deg) brightness(1.8) saturate(2); transform: translateX(2px); }
  50%  { filter: hue-rotate(240deg) brightness(1.6); transform: translateX(-2px); }
  75%  { filter: hue-rotate(30deg) brightness(2); transform: translateX(1px); }
  100% { filter: none; transform: none; }
}
.glitch-flash { animation: glitchFlash 0.18s steps(1) forwards; }

/* ── Fade-in for page load ─────────────────────── */
@keyframes fadeUp {
  from { opacity: 0; transform: translateY(20px); }
  to   { opacity: 1; transform: translateY(0); }
}
.hero__eyebrow  { animation: fadeUp 0.8s ease 0.1s both; }
.hero__title    { animation: fadeUp 0.9s ease 0.25s both; }
.hero__subtitle { animation: fadeUp 0.8s ease 0.45s both; }
.hero__actions  { animation: fadeUp 0.8s ease 0.6s both; }

/* ── Showcase shimmer sweep ─────────────────────── */
@keyframes shimmerSlide {
  0%   { background-position: -100% 0; opacity: 1; }
  100% { background-position: 200%  0; opacity: 0; }
}
.hero__stats    { animation: fadeUp 0.8s ease 0.75s both; }
