@keyframes fadeUp {
  from {
    opacity: 0;
    transform: translateY(14px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes float {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-4px); }
}

@keyframes pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.5; }
}

.fade-up {
  animation: fadeUp 540ms ease-out both;
}

.float {
  animation: float 2s ease-in-out infinite;
}

.fade-up-1 { animation-delay: 60ms; }
.fade-up-2 { animation-delay: 120ms; }
.fade-up-3 { animation-delay: 180ms; }
.fade-up-4 { animation-delay: 240ms; }
.fade-up-5 { animation-delay: 300ms; }

/* Tracing beams */
.tracing-beams {
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 0;
  overflow: hidden;
}

.tracing-beams svg {
  width: 100%;
  height: 100%;
}

.beam {
  fill: none;
  stroke: #ee8625;
  stroke-width: 1.5;
  stroke-linecap: round;
  stroke-dasharray: 80 600;
  stroke-dashoffset: 680;
  opacity: 0.3;
  filter: url(#beam-glow);
}

@keyframes trace {
  0% { stroke-dashoffset: 680; }
  100% { stroke-dashoffset: -680; }
}

.beam-1  { animation: trace 24s linear infinite; }
.beam-2  { animation: trace 24s linear infinite 2.2s; }
.beam-3  { animation: trace 24s linear infinite 4.4s; }
.beam-4  { animation: trace 24s linear infinite 6.6s; }
.beam-5  { animation: trace 24s linear infinite 8.8s; }
.beam-6  { animation: trace 24s linear infinite 11s; }
.beam-7  { animation: trace 24s linear infinite 13.2s; }
.beam-8  { animation: trace 24s linear infinite 15.4s; }
.beam-9  { animation: trace 24s linear infinite 17.6s; }
.beam-10 { animation: trace 24s linear infinite 19.8s; }
.beam-11 { animation: trace 24s linear infinite 22s; }
