html {
  scroll-behavior: smooth;
}

body {
  font-family: "Segoe UI", "Helvetica Neue", Arial, sans-serif;
}

.page-shell {
  background:
    radial-gradient(circle at top left, rgba(191, 219, 254, 0.46), transparent 30%),
    linear-gradient(180deg, #ffffff 0%, #f8fafc 54%, #eef2f7 100%);
}

.hero-glow {
  position: absolute;
  border-radius: 9999px;
  filter: blur(80px);
  opacity: 0.5;
}

.hero-glow-top {
  top: -6rem;
  right: 8%;
  height: 14rem;
  width: 14rem;
  background: rgba(191, 219, 254, 0.8);
  animation: drift 12s ease-in-out infinite;
}

.hero-glow-bottom {
  bottom: -8rem;
  left: 10%;
  height: 18rem;
  width: 18rem;
  background: rgba(226, 232, 240, 0.8);
  animation: drift 14s ease-in-out infinite reverse;
}

.grid-fade {
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(rgba(148, 163, 184, 0.08) 1px, transparent 1px),
    linear-gradient(90deg, rgba(148, 163, 184, 0.08) 1px, transparent 1px);
  background-position: center center;
  background-size: 48px 48px;
  mask-image: linear-gradient(180deg, rgba(15, 23, 42, 0.3), transparent 70%);
}

.panel {
  animation: float-in 0.9s ease-out both;
}

.reveal {
  animation: reveal-up 0.85s ease-out both;
}

.reveal-delay {
  animation-delay: 0.18s;
}

.pulse-dot {
  animation: pulse-soft 2.4s ease-in-out infinite;
}

@keyframes reveal-up {
  from {
    opacity: 0;
    transform: translateY(18px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes float-in {
  from {
    opacity: 0;
    transform: translateY(24px) scale(0.985);
  }

  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

@keyframes drift {
  0%,
  100% {
    transform: translate3d(0, 0, 0);
  }

  50% {
    transform: translate3d(0, 14px, 0);
  }
}

@keyframes pulse-soft {
  0%,
  100% {
    opacity: 1;
    transform: scale(1);
  }

  50% {
    opacity: 0.55;
    transform: scale(0.88);
  }
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation: none !important;
    transition: none !important;
    scroll-behavior: auto !important;
  }
}
