@keyframes spin-slow {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

@keyframes fade-in-up {
    0% {
        opacity: 0;
        transform: translateY(20px);
    }
    100% {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes fade-in-down {
    0% {
        opacity: 0;
        transform: translateY(-20px);
    }
    100% {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes bounce-slow {
    0%, 100% {
        transform: translateY(0);
    }
    50% {
        transform: translateY(-5px);
    }
}

.animate-spin-slow {
    animation: spin-slow 8s linear infinite;
}

.animate-fade-in-up {
    animation: fade-in-up 1s ease-out forwards;
}

.animate-fade-in-down {
    animation: fade-in-down 0.5s ease-out forwards;
}

.animate-bounce-slow {
    animation: bounce-slow 2s ease-in-out infinite;
}

.animate-fade-in-up.delay-150 {
    animation-delay: 0.15s;
}

.animate-fade-in-up.delay-300 {
    animation-delay: 0.3s;
}

.animate-bounce-slow.delay-100 {
    animation-delay: 0.1s;
}

.animate-bounce-slow.delay-200 {
    animation-delay: 0.2s;
}

.animate-bounce-slow.delay-300 {
    animation-delay: 0.3s;
}

.animate-bounce-slow.delay-400 {
    animation-delay: 0.4s;
}

.prose h1, .prose h2, .prose h3, .prose h4, .prose h5, .prose h6 {
    color: #1a202c;
}

.prose p, .prose li {
    color: #4a5568;
    line-height: 1.75;
}

.prose a {
    color: #2dd4bf;
    text-decoration: none;
}

.prose a:hover {
    text-decoration: underline;
}