/* ===== Animations ===== */
.fade-in {
    animation: fadeIn 1s ease-in;
}

.fade-in-delayed {
    animation: fadeIn 1s ease-in 0.3s both;
}

@keyframes fadeIn {
    from {
        opacity: 0;
        transform: translateY(20px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes bounce {
    0%, 20%, 50%, 80%, 100% {
        transform: translateY(0);
    }
    40% {
        transform: translateY(-10px);
    }
    60% {
        transform: translateY(-5px);
    }
}

/* Typewriter Effect */
.typewriter {
  overflow: hidden;
  border-right: 0.15em solid var(--color-text-primary);
  white-space: nowrap;
  animation: typing 3.5s steps(30, end), blink-caret 0.75s step-end infinite;
  display: inline-block;
}

@keyframes typing {
  from {
    width: 0;
  }
  to {
    width: 100%;
  }
}

@keyframes blink-caret {
  from,
  to {
    border-color: transparent;
  }
  50% {
    border-color: var(--color-text-primary);
  }
}