/* ================================================
   ANIMATIONS
   ================================================ */

/* ---- Blur Fade (entry animations) ---- */
@keyframes blurFadeIn {
  from {
    opacity: 0;
    filter: blur(6px);
    transform: translateY(-6px);
  }
  to {
    opacity: 1;
    filter: blur(0px);
    transform: translateY(0);
  }
}

@keyframes blurFadeInUp {
  from {
    opacity: 0;
    filter: blur(8px);
    transform: translateY(8px);
  }
  to {
    opacity: 1;
    filter: blur(0px);
    transform: translateY(0);
  }
}

/* ---- Accordion slide ---- */
@keyframes slideDown {
  from {
    opacity: 0;
    transform: translateY(-8px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes slideUp {
  from {
    opacity: 1;
    transform: translateY(0);
  }
  to {
    opacity: 0;
    transform: translateY(-8px);
  }
}

/* ---- Flickering grid squares ---- */
@keyframes flicker {
  0%, 100% { opacity: 0.1; }
  50% { opacity: 0.3; }
}

/* ---- Theme toggle rotation ---- */
@keyframes spinIn {
  from { transform: rotate(-90deg) scale(0.5); opacity: 0; }
  to { transform: rotate(0deg) scale(1); opacity: 1; }
}

/* ---- Dock icon hover scale ---- */
.dock-icon {
  transition: transform 0.15s cubic-bezier(0.34, 1.56, 0.64, 1),
              color 0.15s ease,
              background 0.15s ease;
}

/* ---- Card hover ring ---- */
.project-card {
  transition: outline 0.2s ease, box-shadow 0.2s ease;
}

/* ---- Arrow hover transitions ---- */
.edu-arrow {
  transition: opacity 0.2s ease, transform 0.2s ease;
}

.chevron-right,
.chevron-down {
  transition: all 0.2s ease-out;
}

/* ---- Scroll-triggered fade-in ---- */
.blur-fade {
  transition:
    opacity 0.4s ease-out,
    filter 0.4s ease-out,
    transform 0.4s ease-out;
  will-change: opacity, filter, transform;
}

/* Staggered delays for hero elements */
.blur-fade-delay-1 { transition-delay: 0.04s; }
.blur-fade-delay-2 { transition-delay: 0.08s; }
.blur-fade-delay-3 { transition-delay: 0.12s; }
.blur-fade-delay-4 { transition-delay: 0.16s; }
.blur-fade-delay-5 { transition-delay: 0.20s; }
.blur-fade-delay-6 { transition-delay: 0.24s; }
.blur-fade-delay-7 { transition-delay: 0.28s; }
.blur-fade-delay-8 { transition-delay: 0.32s; }
.blur-fade-delay-9 { transition-delay: 0.36s; }
.blur-fade-delay-10 { transition-delay: 0.40s; }
.blur-fade-delay-11 { transition-delay: 0.44s; }
.blur-fade-delay-12 { transition-delay: 0.48s; }
.blur-fade-delay-13 { transition-delay: 0.52s; }
.blur-fade-delay-14 { transition-delay: 0.56s; }
.blur-fade-delay-15 { transition-delay: 0.60s; }
.blur-fade-delay-16 { transition-delay: 0.64s; }
