/* ============================================================
   Animations — global motion: floating, hero element drifts,
   tab indicator, quantum window flicker, etc.
   ============================================================ */

/* floating hero badge drift */
.hero-badge {
  animation: floatUp 3s ease-in-out infinite;
}
@keyframes floatUp {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-3px); }
}

/* dashboard terminal cursor blink */
.qc-title { position: relative; }
.qc-title::after {
  content: "";
  position: absolute;
  right: -6px;
  top: 50%;
  transform: translateY(-50%);
  width: 8px;
  height: 14px;
  background: var(--green-bright);
  animation: cursorBlink 1.4s steps(2) infinite;
}
@keyframes cursorBlink {
  0%, 50% { opacity: 1; }
  51%, 100% { opacity: 0; }
}

/* quantum window screen flicker (subtle) */
@keyframes qcFlicker {
  0%, 97%, 100% { opacity: 1; }
  98% { opacity: 0.92; }
}
.qc-body {
  animation: qcFlicker 6s ease-in-out infinite;
}

/* stats counter number odometer flip feel */
.count { display: inline-block; }

/* solution card image parallax on hover handled in JS (transform) */

/* tab strip indicator — border handled in sections.css */

/* brand mark subtle pulse on load */
.brand-mark svg { animation: brandIn 1s ease-out .3s; }
@keyframes brandIn {
  0% { opacity: 0; transform: scale(0.8); }
  100% { opacity: 1; transform: scale(1); }
}

/* footer brand fade */
.footer-brand .brand-mark svg { animation: brandIn .6s ease-out .5s; }

/* reveal sequence orchestration */
.reveal-rise {
  opacity: 0;
  transform: translateY(26px);
  transition: opacity .9s var(--ease-out) var(--d, 0s), transform .9s var(--ease-out) var(--d, 0s);
}
.reveal-rise.in-view { opacity: 1; transform: none; }

/* prefers-reduced-motion safety override */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.001s !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001s !important;
  }
}
