/* Navigation feedback stays outside the page layout and never blocks controls. */
.omo-page-loader {
    position: fixed;
    inset: auto 0 0;
    height: 112px;
    z-index: 2147483000;
    pointer-events: none;
    opacity: 1;
    transition: opacity 180ms ease;
    --loader-yellow: #ffd447;
}
.omo-page-loader[hidden] { display: none; }
.omo-page-loader.is-finished { opacity: 0; }
.omo-page-loader__track {
    position: absolute;
    inset: auto 0 0;
    height: calc(4px + env(safe-area-inset-bottom, 0px));
    background: #ffd44720;
}
.omo-page-loader__bar {
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg, #e9aa23, var(--loader-yellow), #ffeaa1);
    box-shadow: 0 -1px 14px #ffc92855;
    transform: scaleX(.08);
    transform-origin: left;
    animation: omo-loading-progress 8s cubic-bezier(.1,.75,.2,1) forwards;
}
.omo-page-loader.is-complete .omo-page-loader__bar {
    animation: none;
    transform: scaleX(1);
    transition: transform 180ms ease;
}
.omo-page-loader__mascot {
    position: absolute;
    right: max(24px, env(safe-area-inset-right, 0px));
    bottom: calc(16px + env(safe-area-inset-bottom, 0px));
    width: 64px;
    height: 78px;
}
.omo-page-loader__drop {
    width: 100%;
    height: 100%;
    overflow: visible;
    filter: drop-shadow(0 5px 8px #4d350025);
    transform-origin: 50% 85%;
    animation: omo-drop-hop 1.25s ease-in-out infinite;
}
.omo-page-loader__eye {
    transform-box: fill-box;
    transform-origin: center;
    animation: omo-drop-wink 1.8s ease-in-out infinite;
}
.omo-page-loader__wink { animation: omo-wink-line 1.8s ease-in-out infinite; }
.omo-page-loader__shadow {
    position: absolute;
    bottom: -2px;
    left: 15px;
    width: 36px;
    height: 5px;
    border-radius: 50%;
    background: #b987252b;
    animation: omo-drop-shadow 1.25s ease-in-out infinite;
}
@keyframes omo-loading-progress { to { transform: scaleX(.92); } }
@keyframes omo-drop-hop {
    0%, 100% { transform: translateY(0) rotate(-5deg); }
    45% { transform: translateY(-8px) rotate(5deg); }
    75% { transform: translateY(1px) scale(1.04,.97) rotate(-3deg); }
}
@keyframes omo-drop-wink {
    0%, 12%, 34%, 100% { transform: scaleY(1); opacity: 1; }
    19%, 27% { transform: scaleY(.08); opacity: 0; }
}
@keyframes omo-wink-line {
    0%, 12%, 34%, 100% { opacity: 0; }
    19%, 27% { opacity: 1; }
}
@keyframes omo-drop-shadow {
    0%, 100% { transform: scaleX(1); opacity: .8; }
    45% { transform: scaleX(.7); opacity: .35; }
}
@media (max-width: 720px) {
    .omo-page-loader__mascot { right: 16px; width: 52px; height: 64px; }
}
@media (prefers-reduced-motion: reduce) {
    .omo-page-loader, .omo-page-loader * { animation: none !important; transition: none !important; }
    .omo-page-loader__wink { opacity: 0; }
    .omo-page-loader__bar { transform: scaleX(.7); }
}
