/* Available before WebAssembly starts; matches the native iOS AuthLoadingView. */
.buli-loader {
    --loader-size: 82px;
    --loader-ball: 54px;
    --loader-lift: -30px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 22px;
    color: var(--neutral-foreground-rest, #172033);
    font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}
.buli-loader--screen {
    min-height: 100vh;
    min-height: 100dvh;
    box-sizing: border-box;
    padding: 64px 24px;
    background: radial-gradient(circle at 50% 12%, rgba(20,184,166,.26), transparent 320px), var(--neutral-layer-1, #f8fafc);
}
.buli-loader--section {
    --loader-size: 58px;
    --loader-ball: 38px;
    --loader-lift: -20px;
    min-height: 180px;
    padding: 40px 16px;
    box-sizing: border-box;
    width: 100%;
}
.buli-loader__stage { position: relative; display: block; width: var(--loader-size); height: var(--loader-size); }
.buli-loader__ball {
    position: relative;
    z-index: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100%;
    font-size: var(--loader-ball);
    line-height: 1;
    border-radius: 34%;
    background: linear-gradient(135deg, rgba(255,255,255,.96), rgba(238,242,247,.86));
    box-shadow: 0 12px 18px rgba(15,23,42,.16);
    animation: buli-football-bounce .5s ease-in-out infinite alternate;
}
.buli-loader__shadow {
    position: absolute;
    inset: auto 15% -10px;
    height: 8px;
    border-radius: 50%;
    background: rgba(15,23,42,.14);
    filter: blur(3px);
    animation: buli-football-shadow .5s ease-in-out infinite alternate;
}
.buli-loader__title { font-size: 14px; font-weight: 600; text-align: center; }
.buli-loader--screen .buli-loader__title { font-size: 19px; font-weight: 900; }
.buli-loader--inline {
    --loader-size: 20px;
    --loader-ball: 17px;
    --loader-lift: -5px;
    display: inline-flex;
    vertical-align: middle;
    margin: 4px 7px 0 0;
    gap: 0;
}
.buli-loader--inline .buli-loader__ball { background: none; box-shadow: none; }
.buli-loader--inline .buli-loader__shadow { bottom: -2px; height: 3px; filter: blur(1px); }
@keyframes buli-football-bounce { to { transform: translateY(var(--loader-lift)); } }
@keyframes buli-football-shadow { to { transform: scale(.65); opacity: .4; } }
@media (prefers-color-scheme: dark) {
    .buli-loader--screen { color: var(--neutral-foreground-rest, #f1f5f9); background-color: var(--neutral-layer-1, #101827); }
}
@media (prefers-reduced-motion: reduce) {
    .buli-loader__ball, .buli-loader__shadow { animation: none; }
}
