/* ==========================================================================
   MICRO-ANIMATIONS
   ========================================================================== */

@keyframes fadeInUp{
  from{ opacity:0; transform:translateY(24px); }
  to{ opacity:1; transform:translateY(0); }
}
@keyframes spinSlow{
  from{ transform:rotate(0deg); }
  to{ transform:rotate(360deg); }
}
@keyframes pulseSoft{
  0%,100%{ opacity:.6; }
  50%{ opacity:1; }
}

.pulse-dot{ animation:pulseSoft 2s ease-in-out infinite; }

/* Typed cursor tweak */
.typed-cursor{ color:var(--cyan); }

/* Hover tilt for cards handled via JS setting --mx/--my custom props */
.krd-card, .tech-pill{ will-change:transform; }

/* Swiper pagination / nav re-skin */
.swiper-pagination-bullet{ background:#ffffff44; opacity:1; }
.swiper-pagination-bullet-active{ background:var(--cyan); }
.swiper-button-next, .swiper-button-prev{
  color:var(--text-hi) !important;
  background:#ffffff10;
  width:44px !important; height:44px !important;
  border-radius:50%;
  border:1px solid var(--border);
}
.swiper-button-next::after, .swiper-button-prev::after{ font-size:1rem !important; }

/* Loading fade-in for AOS fallback (no-js safety) */
[data-aos]{ transition-property:transform, opacity; }
