.typing::after {
  content: "|";
  color: var(--accent);
  animation: caret 900ms step-end infinite;
}

.parallax-soft {
  transform: translateY(var(--parallax-y, 0));
  will-change: transform;
}

.pulse-ring {
  position: relative;
}

.pulse-ring::after {
  content: "";
  position: absolute;
  inset: -8px;
  border: 1px solid rgba(6, 182, 212, 0.35);
  border-radius: inherit;
  animation: pulse 1.9s ease-out infinite;
}

@keyframes caret {
  50% { opacity: 0; }
}

@keyframes pulse {
  from { transform: scale(0.96); opacity: 0.9; }
  to { transform: scale(1.16); opacity: 0; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    scroll-behavior: auto !important;
    transition-duration: 0.01ms !important;
  }
}
