.animator-loading{min-height:100svh;display:grid;place-content:center;justify-items:center;gap:22px;background:#faf8f1;color:#302b22;font:12px Arial,sans-serif;letter-spacing:.06em}
.loading-ball{position:relative;width:80px;height:100px}
.loading-ball:after{content:'';position:absolute;bottom:0;left:27px;width:26px;height:3px;border-radius:50%;background:#8b651a;animation:ball-shadow 800ms linear infinite}
.loading-ball-rise{position:absolute;bottom:3px;left:30px;width:20px;height:20px;animation:ball-flight 800ms linear infinite;will-change:transform}
.loading-ball-rise i{display:block;width:100%;height:100%;border-radius:50%;background:#e8ad32;transform-origin:50% 100%;animation:ball-impact 800ms linear infinite}
.animator-loading small{color:#827663}.animator-loading button{font:inherit;border:1px solid #c9bfa9;padding:10px 18px;background:transparent;color:inherit;cursor:pointer}.animator-loading.is-route{min-height:45vh}
/* 758.3ms parabolic flight + 41.7ms contact, straddling the loop boundary.
   Constant-acceleration curves slow only at the apex; impact never eases in.
   Deformation is independent of travel; reciprocal scales preserve visible area. */
@keyframes ball-flight{
 0%,2.604167%{transform:translateY(0);animation-timing-function:cubic-bezier(.333333,.666667,.666667,1)}
 50%{transform:translateY(-68px);animation-timing-function:cubic-bezier(.333333,0,.666667,.333333)}
 97.395833%,100%{transform:translateY(0)}
}
@keyframes ball-impact{
 0%,100%{transform:scale(1.28,.78125)}
 2.604167%{transform:scale(.86,1.162791)}
 7.8125%,89.583333%{transform:scale(1)}
 94.791667%,97.395833%{transform:scale(.86,1.162791)}
}
@keyframes ball-shadow{
 0%,2.604167%,97.395833%,100%{opacity:.17;transform:scaleX(1);animation-timing-function:cubic-bezier(.333333,.666667,.666667,1)}
 50%{opacity:.045;transform:scaleX(.55);animation-timing-function:cubic-bezier(.333333,0,.666667,.333333)}
}
@media(prefers-reduced-motion:reduce){.loading-ball-rise,.loading-ball-rise i,.loading-ball:after{animation:none}.loading-ball:after{opacity:.12}}
