.sync-ok {
    padding: 13px 15px;
    border-radius: 14px;
    background: #e4f5ec;
    color: #116740;
    font-size: 13px;
}

.install-prompt {
    position: fixed;
    z-index: 40;
    left: 50%;
    bottom: calc(92px + env(safe-area-inset-bottom));
    transform: translateX(-50%);
    width: min(440px, calc(100% - 28px));
    display: grid;
    grid-template-columns: 52px 1fr;
    gap: 12px;
    padding: 16px;
    border: 1px solid #cfe0da;
    border-radius: 20px;
    background: rgba(255, 255, 255, .98);
    box-shadow: 0 20px 60px rgba(20, 42, 35, .22);
}
.install-prompt[hidden] { display: none; }
.install-icon { width: 52px; height: 52px; border-radius: 15px; overflow: hidden; background: #1e1e1e; }
.install-icon img { width: 100%; height: 100%; object-fit: cover; }
.install-copy strong { font: 700 16px Sora, Arial, sans-serif; }
.install-copy p { margin: 5px 0 0; color: var(--muted); font-size: 12px; line-height: 1.45; }
.install-copy small { display: block; margin-top: 8px; color: #805400; line-height: 1.45; }
.install-actions { grid-column: 1 / -1; display: grid; grid-template-columns: 1fr 1fr; gap: 9px; }
.install-actions button { padding: 11px 13px; }

.global-loader {
    position: fixed;
    z-index: 100;
    inset: 0;
    display: grid;
    place-content: center;
    justify-items: center;
    gap: 13px;
    background: rgba(243, 247, 245, .78);
    backdrop-filter: blur(5px);
    color: var(--graphite);
}
.global-loader[hidden] { display: none; }
.global-loader strong { font: 700 14px Sora, Arial, sans-serif; }
.loader-mark { position: relative; width: 72px; height: 72px; display: grid; place-items: center; border-radius: 22px; background: #fff; box-shadow: 0 14px 42px rgba(20, 42, 35, .18); }
.loader-mark img { width: 34px; height: 34px; object-fit: contain; }
.loader-mark span { position: absolute; inset: -5px; border: 4px solid rgba(0, 191, 193, .18); border-top-color: var(--turquoise); border-right-color: var(--copper); border-radius: 50%; animation: ick-loader-spin .8s linear infinite; }
.action-pending { opacity: .55 !important; pointer-events: none !important; cursor: wait !important; filter: grayscale(.25); }
button.action-pending { color: var(--muted); }
.action-pending::after { content: ""; display: inline-block; width: 13px; height: 13px; margin-left: 8px; vertical-align: -2px; border: 2px solid currentColor; border-top-color: transparent; border-radius: 50%; animation: ick-loader-spin .65s linear infinite; }
body.is-busy { overflow: hidden; cursor: wait; }
@keyframes ick-loader-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .loader-mark span, .action-pending::after { animation-duration: 1.8s; } }
