/* Keyframe Animations — Sekhoz 2.0 */

@keyframes sk-rise {
  from { opacity: 0; transform: translateY(12px); }
  to   { opacity: 1; transform: none; }
}

@keyframes sk-fade {
  from { opacity: 0; }
  to   { opacity: 1; }
}

@keyframes sk-caret {
  0%, 45%  { opacity: 1; }
  50%, 95% { opacity: 0; }
  100%     { opacity: 1; }
}

@keyframes sk-sweep {
  0%   { transform: translateX(-120%) skew(-16deg); }
  100% { transform: translateX(320%) skew(-16deg); }
}

@keyframes sk-draw {
  to { stroke-dashoffset: 0; }
}

/* Scroll reveal */
.rv {
  opacity: 0;
  transform: translateY(14px);
  transition:
    opacity  0.55s cubic-bezier(0.22, 1, 0.36, 1),
    transform 0.55s cubic-bezier(0.22, 1, 0.36, 1);
  transition-delay: var(--d, 0ms);
  will-change: opacity, transform;
}

.rv.in {
  opacity: 1;
  transform: none;
  will-change: auto;
}

.anim-caret {
  animation: 1s step-end infinite sk-caret;
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    transition-duration: 0.001ms !important;
    animation-duration:  0.001ms !important;
  }
  .rv { opacity: 1 !important; transform: none !important; }
}
