.loader {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 3px;
}
  
.loader span {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background-color: gray;
    display: inline-block;
    animation: bounce 1.5s infinite ease-in-out;
}
  
.loader span:nth-child(1) {
    animation-delay: 0s;
}
.loader span:nth-child(2) {
    animation-delay: 0.2s;
}
.loader span:nth-child(3) {
    animation-delay: 0.4s;
}
  
@keyframes bounce {
    0%, 100% {
      transform: translateY(0);
      opacity: 0.3;
    }
    50% {
      transform: translateY(-3px);
      opacity: 1;
    }
}
  
@keyframes blink {
    0%, 100% { opacity: 1; }
    50% { opacity: 0; }
}
  
.typing-cursor {
    display: inline-block;
    margin-left: 2px;
    animation: blink 1s step-end infinite;
}
  