/* Loading indicator - matches Flutter LoadingIndicator */
.loader {
    display: inline-block;
    position: absolute;
    top: 50%;
    left: 50%;
    margin-top: -32px;
    margin-left: -32px;
    width: 64px;
    height: 64px;
}

.loader div {
    position: absolute;
    width: 10px;
    height: 10px;
    background: #F04D4C;
    border-radius: 50%;
    animation: loader 1.2s ease-in-out infinite;
}

/* 8 dots positioned in a circle (every 45 degrees, starting from top) */
/* Container: 64px, Dot: 10px, Radius: 27px, Center: 32px */
.loader div:nth-child(1) {
    top: 5px;
    left: 27px;
    animation-delay: 0s;
}

.loader div:nth-child(2) {
    top: 7.9px;
    left: 46.1px;
    animation-delay: -0.15s;
}

.loader div:nth-child(3) {
    top: 27px;
    left: 54px;
    animation-delay: -0.3s;
}

.loader div:nth-child(4) {
    top: 46.1px;
    left: 46.1px;
    animation-delay: -0.45s;
}

.loader div:nth-child(5) {
    top: 54px;
    left: 27px;
    animation-delay: -0.6s;
}

.loader div:nth-child(6) {
    top: 46.1px;
    left: 7.9px;
    animation-delay: -0.75s;
}

.loader div:nth-child(7) {
    top: 27px;
    left: 0px;
    animation-delay: -0.9s;
}

.loader div:nth-child(8) {
    top: 7.9px;
    left: 7.9px;
    animation-delay: -1.05s;
}

@keyframes loader {
    0%, 100% {
        transform: scale(0.4);
        opacity: 0.3;
    }
    50% {
        transform: scale(1);
        opacity: 1;
    }
}
