.request-loading[hidden] { display:none !important; }
.request-loading {
    position:fixed; left:50%; bottom:max(24px,env(safe-area-inset-bottom));
    transform:translateX(-50%); z-index:2147483647; display:flex; align-items:center; gap:14px;
    width:max-content; max-width:calc(100vw - 32px); padding:16px 22px;
    color:#164e49; background:#fff; border:1px solid #cce5df; border-radius:18px;
    box-shadow:0 8px 36px #123f4b26; pointer-events:none;
}
.request-loading strong { display:block; font-size:.94rem; margin-bottom:3px; }
.request-loading span { font-size:.8rem; color:#526b68; }
.request-loading-image { flex:none; animation:request-loading-spin 1.2s linear infinite; }
.request-loading-still { display:none; }
.request-loading-image-failed { display:none; }
.request-loading-image-failed + .request-loading-still {
    display:block; width:28px; height:28px; flex:none; font-size:0;
    border:3px solid #cce5df; border-top-color:#168577; border-radius:50%;
    animation:request-loading-spin .8s linear infinite;
}
@keyframes request-loading-spin { to { transform:rotate(360deg); } }
.request-loading-submit { opacity:.75; cursor:wait !important; pointer-events:none; }
.request-loading-submit::after {
    content:""; display:inline-block; width:18px; height:18px; margin-inline-start:8px;
    vertical-align:middle; background:url('../images/loading.gif?v=2') center/contain no-repeat;
    animation:request-loading-spin 1.2s linear infinite;
}
