/* Shared brand background (same artwork as the public website). */
.bg-app-pattern {
    background-color: #fbf9ff;
    background-image: url('../images/app-background.png');
    background-repeat: no-repeat;
    background-position: top center;
    background-size: 100% auto;
}

@media (max-width: 640px) {
    .bg-app-pattern {
        background-size: cover;
        background-attachment: fixed;
    }
}

/* Any div with class="loader" spins until JS fills it in; see custom-global.js loadIntoLoader(). */
.loader {
    position: relative;
    min-height: 2.5rem;
}
.loader::after {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    width: 1.5rem;
    height: 1.5rem;
    margin: -0.75rem;
    border: 3px solid #e5e7eb;
    border-top-color: #4f46e5;
    border-radius: 50%;
    animation: loader-spin 0.6s linear infinite;
}
@keyframes loader-spin {
    to { transform: rotate(360deg); }
}
