/* Scroll-reveal + hover physics. Paired with js/reveal.js. */

[data-reveal] {
  opacity: 0;
  transform: translateY(18px);
  transition: opacity 700ms cubic-bezier(0.16, 1, 0.3, 1), transform 700ms cubic-bezier(0.16, 1, 0.3, 1);
}

[data-reveal].is-visible {
  opacity: 1;
  transform: translateY(0);
}

[data-reveal="stagger"] > * {
  opacity: 0;
  transform: translateY(14px);
  transition: opacity 600ms ease, transform 600ms ease;
}

[data-reveal="stagger"].is-visible > * {
  opacity: 1;
  transform: translateY(0);
}

[data-reveal="stagger"].is-visible > *:nth-child(1) {
  transition-delay: 0ms;
}
[data-reveal="stagger"].is-visible > *:nth-child(2) {
  transition-delay: 90ms;
}
[data-reveal="stagger"].is-visible > *:nth-child(3) {
  transition-delay: 180ms;
}
[data-reveal="stagger"].is-visible > *:nth-child(4) {
  transition-delay: 270ms;
}
[data-reveal="stagger"].is-visible > *:nth-child(5) {
  transition-delay: 360ms;
}

.hover-lift {
  transition: transform 300ms cubic-bezier(0.16, 1, 0.3, 1), box-shadow 300ms ease, border-color 300ms ease;
}

.hover-lift:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-md);
  border-color: var(--color-primary-bright);
}

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

@keyframes draw-line {
  from {
    stroke-dashoffset: var(--dash, 400);
  }
  to {
    stroke-dashoffset: 0;
  }
}

@keyframes bubble-in {
  from {
    opacity: 0;
    transform: translateY(6px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes pulse-dot {
  0%,
  100% {
    opacity: 1;
  }
  50% {
    opacity: 0.35;
  }
}
