.qrf-pwa-save-wrap,
.qrf-pwa-save-wrap * {
    box-sizing: border-box;
}

.qrf-pwa-save-wrap {
    width: 100%;
    margin: 0;
    padding: 0;
    border: 0;
    background: transparent;
    text-align: center;
    font-family: inherit;
}

.qrf-pwa-save-wrap-auto {
    margin: 12px 0;
}

.qrf-pwa-save-btn {
    appearance: none;
    -webkit-appearance: none;
    position: relative;
    overflow: hidden;
    isolation: isolate;
    width: 100%;
    max-width: 100%;
    height: 52px;
    min-height: 52px;
    max-height: 52px;
    border: 0;
    border-radius: 999px;
    padding: 0 16px;
    margin: 0;
    background: var(--qrf-pwa-button-bg, linear-gradient(135deg, #d2a328 0%, #dfb337 48%, #bd8d18 100%));
    color: var(--qrf-pwa-button-color, #050505);
    font-family: inherit;
    font-weight: 900;
    font-size: clamp(13px, 3.6vw, 16px);
    line-height: 1;
    letter-spacing: .01em;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    text-decoration: none;
    -webkit-tap-highlight-color: transparent;
    box-shadow: var(--qrf-pwa-button-shadow, 0 7px 18px rgba(0,0,0,.18), inset 0 1px 0 rgba(255,255,255,.22));
    white-space: nowrap;
    filter: drop-shadow(0 0 0 rgba(214,168,63,0));
    animation: qrfPwaButtonLure 4.2s ease-in-out infinite;
    will-change: filter;
}

.qrf-pwa-save-btn::before {
    content: "";
    position: absolute;
    z-index: 2;
    top: -90%;
    left: -50%;
    width: 42%;
    height: 280%;
    background: linear-gradient(90deg, rgba(255,255,255,0), rgba(255,255,255,.86), rgba(255,255,255,0));
    transform: rotate(24deg) translateX(-220%);
    animation: qrfPwaButtonShine 3.9s ease-in-out infinite;
    will-change: transform, opacity;
    pointer-events: none;
}


.qrf-pwa-save-btn::after {
    content: "";
    position: absolute;
    z-index: 0;
    inset: 1px;
    border-radius: inherit;
    pointer-events: none;
    background:
        radial-gradient(circle at 50% 50%, rgba(255,255,255,.30), rgba(255,255,255,0) 58%),
        linear-gradient(135deg, rgba(255,255,255,.18), rgba(255,255,255,0) 44%);
    opacity: 0;
    animation: qrfPwaButtonSoftGlow 4.2s ease-in-out infinite;
    will-change: transform, opacity;
}

@keyframes qrfPwaButtonShine {
    0%, 46% { transform: rotate(24deg) translateX(-230%); opacity: 0; }
    52% { opacity: .95; }
    66% { transform: rotate(24deg) translateX(560%); opacity: .18; }
    72%, 100% { transform: rotate(24deg) translateX(620%); opacity: 0; }
}

@keyframes qrfPwaButtonLure {
    0%, 44%, 100% {
        filter: drop-shadow(0 0 0 rgba(214,168,63,0));
    }
    56% {
        filter: drop-shadow(0 0 10px rgba(214,168,63,.48));
    }
    66% {
        filter: drop-shadow(0 0 16px rgba(214,168,63,.34));
    }
}

@keyframes qrfPwaButtonOuterGlow {
    0%, 60%, 100% {
        box-shadow: var(--qrf-pwa-button-shadow, 0 7px 18px rgba(0,0,0,.18), inset 0 1px 0 rgba(255,255,255,.22));
    }
    70% {
        box-shadow: var(--qrf-pwa-button-shadow, 0 7px 18px rgba(0,0,0,.18), inset 0 1px 0 rgba(255,255,255,.22)), 0 0 0 3px rgba(214,168,63,.14), 0 0 18px rgba(214,168,63,.24);
    }
}

@keyframes qrfPwaButtonSoftGlow {
    0%, 48%, 100% { opacity: 0; transform: scale(.96); }
    58% { opacity: .46; transform: scale(1.01); }
    68% { opacity: .20; transform: scale(1.03); }
}

.qrf-pwa-save-btn:focus {
    outline: none;
}

.qrf-pwa-save-btn:focus-visible {
    outline: 2px solid rgba(214,168,63,.55);
    outline-offset: 2px;
}

.qrf-pwa-save-btn:active {
    transform: translateY(1px);
}

.qrf-pwa-save-btn[disabled] {
    opacity: .94;
    cursor: wait;
}

.qrf-pwa-save-btn-working {
    cursor: default;
}

.qrf-pwa-save-ico,
.qrf-pwa-save-label {
    position: relative;
    z-index: 3;
}

.qrf-pwa-save-ico {
    font-size: 13px;
    line-height: 1;
    flex: 0 0 auto;
    transform-origin: center;
    animation: qrfPwaSaveIconWink 4.2s ease-in-out infinite;
}

@keyframes qrfPwaSaveIconWink {
    0%, 49%, 100% { transform: rotate(0deg) scale(1); }
    55% { transform: rotate(-9deg) scale(1.16); }
    61% { transform: rotate(7deg) scale(1.12); }
    68% { transform: rotate(0deg) scale(1); }
}

.qrf-pwa-save-label {
    display: inline-block;
    max-width: calc(100% - 24px);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.qrf-pwa-save-hint {
    margin-top: 6px;
    font-family: inherit;
    font-size: 11.5px;
    line-height: 1.3;
    color: rgba(0,0,0,.62);
}

.qrf-pwa-save-wrap.qrf-pwa-compact .qrf-pwa-save-hint {
    display: none;
}

.qrf-pwa-ios-sheet {
    position: fixed;
    left: 14px;
    right: 14px;
    bottom: 14px;
    z-index: 999999;
    background: #111;
    color: #fff;
    border: 1px solid rgba(214,168,63,.45);
    box-shadow: 0 20px 80px rgba(0,0,0,.38);
    border-radius: 22px;
    padding: 18px;
    text-align: center;
    font-family: inherit;
}

.qrf-pwa-ios-sheet strong {
    display: block;
    color: #d6a83f;
    font-size: 16px;
    line-height: 1.25;
}

.qrf-pwa-ios-sheet p {
    margin: 8px 0 14px;
    font-size: 14px;
    line-height: 1.45;
}

.qrf-pwa-ios-actions {
    display: flex;
    gap: 8px;
    justify-content: center;
    flex-wrap: wrap;
}

.qrf-pwa-ios-sheet button {
    appearance: none;
    -webkit-appearance: none;
    border: 0;
    border-radius: 999px;
    padding: 11px 16px;
    margin: 0;
    background: #d6a83f;
    color: #000;
    font-family: inherit;
    font-weight: 800;
    font-size: 13px;
    line-height: 1.2;
    cursor: pointer;
}

.qrf-pwa-ios-sheet .qrf-pwa-ios-close {
    background: rgba(255,255,255,.14);
    color: #fff;
}

.qrf-pwa-status-panel {
    --qrf-pwa-panel-duration: 5200ms;
    position: fixed;
    left: 14px;
    right: 14px;
    bottom: max(18px, env(safe-area-inset-bottom));
    z-index: 999999;
    max-width: 540px;
    margin: 0 auto;
    display: grid;
    grid-template-columns: 44px minmax(0, 1fr);
    align-items: center;
    gap: 13px;
    overflow: hidden;
    background: radial-gradient(circle at 22% 0%, rgba(245,217,116,.20), rgba(245,217,116,0) 36%), linear-gradient(135deg, rgba(17,14,6,.98), rgba(52,39,12,.98) 54%, rgba(12,10,5,.98));
    color: #fff;
    border: 1px solid rgba(214,168,63,.78);
    border-radius: 22px;
    padding: 15px 16px 18px;
    text-align: left;
    box-shadow: 0 22px 70px rgba(0,0,0,.48), inset 0 1px 0 rgba(255,255,255,.14), 0 0 0 1px rgba(245,217,116,.08);
    font-family: inherit;
    transform: translateY(0) scale(1);
    opacity: 1;
    animation: qrfPwaPanelIn .50s cubic-bezier(.16,1.08,.22,1.12) both, qrfPwaPanelGlow 2.2s ease-in-out .15s both;
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
}

.qrf-pwa-status-panel::before {
    content: "";
    position: absolute;
    top: -80%;
    left: -35%;
    width: 32%;
    height: 260%;
    background: linear-gradient(90deg, rgba(255,255,255,0), rgba(255,255,255,.20), rgba(255,255,255,0));
    transform: rotate(24deg) translateX(-160%);
    animation: qrfPwaPanelShine 1.75s ease-out .18s both, qrfPwaPanelShine 1.15s ease-out 3.65s both;
    pointer-events: none;
}

.qrf-pwa-status-panel::after {
    content: "";
    position: absolute;
    inset: -1px;
    border-radius: inherit;
    pointer-events: none;
    background: radial-gradient(circle at 18% 22%, rgba(245,217,116,.30), rgba(245,217,116,0) 28%), radial-gradient(circle at 92% 18%, rgba(255,255,255,.16), rgba(255,255,255,0) 24%), linear-gradient(90deg, rgba(255,255,255,.035), rgba(255,255,255,0) 42%);
    opacity: .94;
    animation: qrfPwaAura 2.35s ease-out both;
}

.qrf-pwa-status-sparks {
    position: absolute;
    inset: 0;
    overflow: hidden;
    pointer-events: none;
    z-index: 0;
}

.qrf-pwa-status-sparks i {
    position: absolute;
    width: 4px;
    height: 4px;
    border-radius: 999px;
    background: #f5d974;
    box-shadow: 0 0 16px rgba(245,217,116,.88), 0 0 28px rgba(214,168,63,.48);
    opacity: 0;
    animation: qrfPwaSpark 1.65s ease-out both;
}

.qrf-pwa-status-sparks i:nth-child(1) { left: 23%; top: 16%; animation-delay: .22s; }
.qrf-pwa-status-sparks i:nth-child(2) { left: 76%; top: 26%; animation-delay: .38s; }
.qrf-pwa-status-sparks i:nth-child(3) { left: 64%; top: 68%; animation-delay: .56s; }
.qrf-pwa-status-sparks i:nth-child(4) { left: 37%; top: 78%; animation-delay: .74s; }

.qrf-pwa-status-icon {
    position: relative;
    z-index: 2;
    width: 44px;
    height: 44px;
    flex: 0 0 44px;
    border-radius: 999px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(135deg, #f3d36c, #d6a83f 58%, #b98513);
    color: #090909;
    font-weight: 950;
    box-shadow: 0 9px 24px rgba(0,0,0,.30), 0 0 0 1px rgba(255,255,255,.18) inset;
}

.qrf-pwa-status-pulse {
    position: absolute;
    inset: -7px;
    border-radius: inherit;
    border: 1px solid rgba(245,217,116,.58);
    animation: qrfPwaIconPulse 1.35s ease-out infinite;
}

.qrf-pwa-status-icon-core {
    position: relative;
    z-index: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    font-size: 18px;
    line-height: 1;
    transform: scale(.92);
    animation: qrfPwaIconPop .54s cubic-bezier(.16,1.18,.22,1.22) .10s both;
}

.qrf-pwa-status-body {
    position: relative;
    z-index: 2;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 4px;
    padding-right: 2px;
}

.qrf-pwa-status-title {
    display: block;
    color: #f5d974;
    font-size: 14px;
    line-height: 1.15;
    font-weight: 950;
    letter-spacing: .01em;
    animation: qrfPwaTitleSnap .42s cubic-bezier(.16,1.08,.22,1.12) .10s both;
}

.qrf-pwa-status-text {
    display: block;
    color: #fff;
    font-size: 14.5px;
    line-height: 1.35;
    font-weight: 720;
    min-height: 2.62em;
}

.qrf-pwa-status-text-typing::after {
    content: "";
    display: inline-block;
    width: 2px;
    height: 1.05em;
    margin-left: 3px;
    vertical-align: -2px;
    border-radius: 999px;
    background: #f5d974;
    box-shadow: 0 0 10px rgba(245,217,116,.74);
    animation: qrfPwaTypingCaret .62s steps(2, start) infinite;
}

.qrf-pwa-status-text-complete {
    animation: qrfPwaTextSettle .28s ease-out both;
}

.qrf-pwa-status-progress {
    position: absolute;
    z-index: 2;
    left: 16px;
    right: 16px;
    bottom: 9px;
    height: 3px;
    border-radius: 999px;
    overflow: hidden;
    background: rgba(255,255,255,.10);
    box-shadow: 0 0 0 1px rgba(255,255,255,.035) inset;
}

.qrf-pwa-status-progress::before {
    content: "";
    display: block;
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg, #b98513, #f5d974 48%, #fff2a8 58%, #d6a83f);
    transform-origin: left center;
    transform: scaleX(1);
}

.qrf-pwa-status-panel.qrf-pwa-status-running .qrf-pwa-status-progress::before {
    animation: qrfPwaPanelTimer var(--qrf-pwa-panel-duration) linear both !important;
}

.qrf-pwa-status-hide {
    opacity: 0;
    transform: translateY(12px) scale(.985);
    transition: opacity .24s ease, transform .24s ease;
}

@keyframes qrfPwaPanelIn {
    0% { opacity: 0; transform: translateY(28px) scale(.92); filter: blur(3px); }
    58% { opacity: 1; transform: translateY(-4px) scale(1.018); filter: blur(0); }
    78% { transform: translateY(1px) scale(.996); }
    100% { opacity: 1; transform: translateY(0) scale(1); filter: blur(0); }
}

@keyframes qrfPwaTitleSnap {
    0% { opacity: 0; transform: translateY(4px) scale(.96); filter: blur(2px); }
    100% { opacity: 1; transform: translateY(0) scale(1); filter: blur(0); }
}

@keyframes qrfPwaTypingCaret {
    0%, 48% { opacity: 1; }
    49%, 100% { opacity: 0; }
}

@keyframes qrfPwaTextSettle {
    0% { opacity: .86; }
    100% { opacity: 1; }
}

@keyframes qrfPwaPanelGlow {
    0% { box-shadow: 0 22px 70px rgba(0,0,0,.48), inset 0 1px 0 rgba(255,255,255,.14), 0 0 0 1px rgba(245,217,116,.08); }
    34% { box-shadow: 0 26px 82px rgba(0,0,0,.54), inset 0 1px 0 rgba(255,255,255,.18), 0 0 0 1px rgba(245,217,116,.18), 0 0 38px rgba(214,168,63,.24); }
    100% { box-shadow: 0 22px 70px rgba(0,0,0,.48), inset 0 1px 0 rgba(255,255,255,.14), 0 0 0 1px rgba(245,217,116,.08); }
}

@keyframes qrfPwaAura {
    0% { opacity: 0; transform: scale(.96); }
    25% { opacity: .95; transform: scale(1); }
    100% { opacity: .30; transform: scale(1.015); }
}

@keyframes qrfPwaSpark {
    0% { opacity: 0; transform: translateY(10px) scale(.2); }
    18% { opacity: 1; transform: translateY(0) scale(1); }
    100% { opacity: 0; transform: translateY(-32px) scale(.25); }
}

@keyframes qrfPwaPanelShine {
    0% { transform: rotate(24deg) translateX(-180%); opacity: 0; }
    24% { opacity: .95; }
    100% { transform: rotate(24deg) translateX(560%); opacity: 0; }
}

@keyframes qrfPwaIconPulse {
    0% { transform: scale(.78); opacity: .68; }
    100% { transform: scale(1.32); opacity: 0; }
}

@keyframes qrfPwaIconPop {
    from { transform: scale(.48) rotate(-10deg); opacity: 0; }
    to { transform: scale(1) rotate(0); opacity: 1; }
}

@keyframes qrfPwaPanelTimer {
    from { transform: scaleX(1); }
    to { transform: scaleX(0); }
}

/* v1.4.3: do not disable the branded save-panel animation on Android. */

.qrf-pwa-save-wrap.qrf-pwa-auto-placed {
    width: 100%;
    margin: 12px 0;
}

.qrf-pwa-save-wrap.qrf-pwa-auto-placed .qrf-pwa-save-btn {
    min-height: 54px;
    height: 54px;
    max-height: 54px;
}


/* v1.3.3: force QRFOOD gold button. Avoid catalogue/theme rules turning the save button black. */
.qrf-pwa-save-wrap .qrf-pwa-save-btn,
button.qrf-pwa-save-btn,
a.qrf-pwa-save-btn {
    background: linear-gradient(135deg, #d2a328 0%, #dfb337 48%, #bd8d18 100%) !important;
    color: #050505 !important;
    border-color: rgba(214,168,63,.60) !important;
    box-shadow: 0 7px 18px rgba(0,0,0,.18), inset 0 1px 0 rgba(255,255,255,.22) !important;
}


@media (prefers-reduced-motion: reduce) {
    .qrf-pwa-save-btn,
    .qrf-pwa-save-btn::before,
    .qrf-pwa-save-btn::after,
    .qrf-pwa-save-ico {
        animation: none !important;
    }
}

@media (max-width: 520px) {
    .qrf-pwa-save-btn {
        height: 50px;
        min-height: 50px;
        max-height: 50px;
        padding-left: 12px;
        padding-right: 12px;
    }
}

@media (prefers-color-scheme: dark) {
    .qrf-pwa-save-wrap {
        background: rgba(255,255,255,.055);
        border-color: rgba(255,255,255,.1);
    }

    .qrf-pwa-save-hint {
        color: rgba(255,255,255,.72);
    }
}

/* v1.2.6 legacy-state guard: this plugin's own save control must never stay hidden
   because of old browser state, old PWA helper CSS, or cached class names. */
.qrf-pwa-save-wrap {
    display: block !important;
    visibility: visible !important;
    opacity: 1 !important;
}

.qrf-pwa-save-btn {
    display: inline-flex !important;
    visibility: visible !important;
    opacity: 1 !important;
}

.qrf-pwa-status-panel {
    padding: 16px 17px;
    border-radius: 20px;
}

.qrf-pwa-status-title {
    font-size: 14px;
}

.qrf-pwa-status-text {
    font-size: 15px;
}

/* v1.2.7 debug panel: shown only with ?qrf_pwa_debug=1 */
.qrf-pwa-debug-panel {
    position: fixed;
    left: 10px;
    right: 10px;
    top: 10px;
    z-index: 1000000;
    max-width: 560px;
    margin: 0 auto;
    padding: 12px 13px;
    border-radius: 16px;
    background: rgba(0,0,0,.92);
    color: #fff;
    border: 1px solid rgba(214,168,63,.75);
    box-shadow: 0 12px 38px rgba(0,0,0,.35);
    font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    font-size: 12px;
    line-height: 1.35;
    text-align: left;
}

.qrf-pwa-debug-panel > strong {
    display: block;
    color: #f5d974;
    font-size: 13px;
    margin-bottom: 6px;
}

.qrf-pwa-debug-row {
    display: grid;
    grid-template-columns: 128px 1fr;
    gap: 8px;
    padding: 2px 0;
    border-top: 1px solid rgba(255,255,255,.08);
}

.qrf-pwa-debug-row:first-of-type {
    border-top: 0;
}

.qrf-pwa-debug-row b {
    color: #f5d974;
    font-weight: 800;
}

.qrf-pwa-debug-row span {
    min-width: 0;
    overflow-wrap: anywhere;
}

.qrf-pwa-debug-panel p {
    margin: 8px 0 0;
    color: #fff;
    opacity: .9;
}

/* v1.2.9: selectable URL shown only when clipboard copy is refused */
.qrf-pwa-status-url {
    display: block;
    width: 100%;
    margin-top: 8px;
    padding: 8px 10px;
    border: 1px solid rgba(255,255,255,.28);
    border-radius: 10px;
    background: rgba(0,0,0,.25);
    color: #fff;
    font-size: 13px;
    line-height: 1.2;
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
}

/* v1.5.1: stronger, clearly visible, scoped CTA animation only for the PWA save/keep-menu button. */
.qrf-pwa-save-wrap .qrf-pwa-save-btn {
    position: relative !important;
    overflow: hidden !important;
    isolation: isolate !important;
    transform: translateZ(0) scale(1) !important;
    background: linear-gradient(135deg, #b98516 0%, #d9a62a 22%, #ffdf77 45%, #d4a021 63%, #f1c755 78%, #b68113 100%) !important;
    background-size: 260% 100% !important;
    box-shadow:
        var(--qrf-pwa-button-shadow, 0 7px 18px rgba(0,0,0,.18), inset 0 1px 0 rgba(255,255,255,.22)),
        0 0 0 0 rgba(255, 214, 88, 0),
        0 0 0 rgba(255, 214, 88, 0) !important;
    animation:
        qrfPwaKeepMenuBreath151 3.55s cubic-bezier(.22, .9, .25, 1) infinite,
        qrfPwaKeepMenuGoldMove151 7.2s ease-in-out infinite !important;
    will-change: transform, box-shadow, filter, background-position;
}

.qrf-pwa-save-wrap .qrf-pwa-save-btn::before {
    content: "" !important;
    position: absolute !important;
    z-index: 2 !important;
    top: -115% !important;
    left: -72% !important;
    width: 34% !important;
    height: 330% !important;
    border-radius: 999px !important;
    background: linear-gradient(90deg,
        rgba(255,255,255,0) 0%,
        rgba(255,255,255,.16) 20%,
        rgba(255,255,255,.96) 50%,
        rgba(255,255,255,.20) 78%,
        rgba(255,255,255,0) 100%) !important;
    transform: rotate(24deg) translateX(-260%) !important;
    opacity: 0 !important;
    mix-blend-mode: screen;
    animation: qrfPwaKeepMenuShine151 3.55s cubic-bezier(.2,.75,.25,1) infinite !important;
    pointer-events: none !important;
    will-change: transform, opacity;
}

.qrf-pwa-save-wrap .qrf-pwa-save-btn::after {
    content: "" !important;
    position: absolute !important;
    z-index: 0 !important;
    inset: 1px !important;
    border-radius: inherit !important;
    pointer-events: none !important;
    background:
        radial-gradient(circle at 16% 18%, rgba(255,255,255,.46), rgba(255,255,255,0) 29%),
        radial-gradient(circle at 82% 72%, rgba(255,234,145,.40), rgba(255,234,145,0) 36%),
        linear-gradient(135deg, rgba(255,255,255,.20), rgba(255,255,255,0) 55%) !important;
    opacity: 0 !important;
    animation: qrfPwaKeepMenuInnerSpark151 3.55s ease-in-out infinite !important;
    will-change: opacity, transform;
}

.qrf-pwa-save-wrap .qrf-pwa-save-btn .qrf-pwa-save-ico {
    transform-origin: 50% 85% !important;
    animation: qrfPwaKeepMenuIconPin151 3.55s cubic-bezier(.2,.9,.25,1) infinite !important;
    will-change: transform;
}

.qrf-pwa-save-wrap .qrf-pwa-save-btn .qrf-pwa-save-label {
    text-shadow: 0 0 0 rgba(255,255,255,0);
    animation: qrfPwaKeepMenuLabel151 3.55s ease-in-out infinite !important;
    will-change: text-shadow;
}

@keyframes qrfPwaKeepMenuBreath151 {
    0%, 24%, 100% {
        transform: translateZ(0) scale(1);
        filter: saturate(1) brightness(1);
        box-shadow:
            var(--qrf-pwa-button-shadow, 0 7px 18px rgba(0,0,0,.18), inset 0 1px 0 rgba(255,255,255,.22)),
            0 0 0 0 rgba(255, 214, 88, 0),
            0 0 0 rgba(255, 214, 88, 0);
    }
    35% {
        transform: translateZ(0) scale(1.012);
        filter: saturate(1.12) brightness(1.08);
        box-shadow:
            var(--qrf-pwa-button-shadow, 0 7px 18px rgba(0,0,0,.18), inset 0 1px 0 rgba(255,255,255,.22)),
            0 0 0 4px rgba(255, 214, 88, .22),
            0 0 22px rgba(255, 208, 72, .56);
    }
    48% {
        transform: translateZ(0) scale(1.004);
        filter: saturate(1.06) brightness(1.03);
        box-shadow:
            var(--qrf-pwa-button-shadow, 0 7px 18px rgba(0,0,0,.18), inset 0 1px 0 rgba(255,255,255,.22)),
            0 0 0 7px rgba(255, 214, 88, .08),
            0 0 16px rgba(255, 208, 72, .28);
    }
}

@keyframes qrfPwaKeepMenuGoldMove151 {
    0%, 100% { background-position: 0% 50%; }
    50% { background-position: 100% 50%; }
}

@keyframes qrfPwaKeepMenuShine151 {
    0%, 18% { transform: rotate(24deg) translateX(-260%); opacity: 0; }
    30% { opacity: .18; }
    38% { opacity: 1; }
    52% { transform: rotate(24deg) translateX(680%); opacity: .10; }
    60%, 100% { transform: rotate(24deg) translateX(760%); opacity: 0; }
}

@keyframes qrfPwaKeepMenuInnerSpark151 {
    0%, 24%, 100% { opacity: 0; transform: scale(.985); }
    36% { opacity: .54; transform: scale(1.018); }
    50% { opacity: .16; transform: scale(1.035); }
}

@keyframes qrfPwaKeepMenuIconPin151 {
    0%, 25%, 100% { transform: translateY(0) rotate(0deg) scale(1); }
    33% { transform: translateY(-2px) rotate(-10deg) scale(1.20); }
    41% { transform: translateY(0) rotate(8deg) scale(1.12); }
    50% { transform: translateY(0) rotate(0deg) scale(1); }
}

@keyframes qrfPwaKeepMenuLabel151 {
    0%, 25%, 100% { text-shadow: 0 0 0 rgba(255,255,255,0); }
    36% { text-shadow: 0 1px 0 rgba(255,255,255,.22), 0 0 10px rgba(255,255,255,.28); }
    50% { text-shadow: 0 0 4px rgba(255,255,255,.12); }
}

@media (prefers-reduced-motion: reduce) {
    .qrf-pwa-save-wrap .qrf-pwa-save-btn,
    .qrf-pwa-save-wrap .qrf-pwa-save-btn::before,
    .qrf-pwa-save-wrap .qrf-pwa-save-btn::after,
    .qrf-pwa-save-wrap .qrf-pwa-save-btn .qrf-pwa-save-ico,
    .qrf-pwa-save-wrap .qrf-pwa-save-btn .qrf-pwa-save-label {
        animation: none !important;
    }

    .qrf-pwa-save-wrap .qrf-pwa-save-btn {
        box-shadow:
            var(--qrf-pwa-button-shadow, 0 7px 18px rgba(0,0,0,.18), inset 0 1px 0 rgba(255,255,255,.22)),
            0 0 14px rgba(255, 208, 72, .28) !important;
    }
}


/* v1.5.2: final visible CTA animation for the PWA save button only.
   This is intentionally stronger than the previous subtle glow: the shine is
   built into the button background itself, so it stays visible even if pseudo
   elements are affected by theme/container stacking. It targets only the
   QRF/FQR PWA save button and no catalogue/delivery buttons. */
.qrf-pwa-save-wrap .qrf-pwa-save-btn,
.qrf-pwa-save-wrap > button.qrf-pwa-save-btn,
.qrf-pwa-save-wrap-auto .qrf-pwa-save-btn,
button.qrf-pwa-save-btn {
    position: relative !important;
    isolation: isolate !important;
    overflow: hidden !important;
    transform: translate3d(0,0,0) scale(1) !important;
    transform-origin: center center !important;
    background-color: #d6a83f !important;
    background-image:
        linear-gradient(115deg,
            rgba(255,255,255,0) 0%,
            rgba(255,255,255,0) 34%,
            rgba(255,255,255,.18) 40%,
            rgba(255,255,255,1) 47%,
            rgba(255,246,184,.92) 50%,
            rgba(255,255,255,.22) 57%,
            rgba(255,255,255,0) 66%,
            rgba(255,255,255,0) 100%),
        linear-gradient(135deg,
            #a97910 0%,
            #cf9820 19%,
            #ffd96c 43%,
            #e2ac2b 58%,
            #f7cd57 75%,
            #ae7b12 100%) !important;
    background-size: 320% 100%, 100% 100% !important;
    background-position: -220% 0, 0 0 !important;
    box-shadow:
        0 8px 20px rgba(0,0,0,.22),
        inset 0 1px 0 rgba(255,255,255,.38),
        0 0 0 0 rgba(255,213,75,0),
        0 0 0 rgba(255,213,75,0) !important;
    animation:
        qrfPwaKeepMenuVisibleShine152 3.1s cubic-bezier(.22,.86,.25,1) infinite,
        qrfPwaKeepMenuVisiblePulse152 3.1s ease-in-out infinite !important;
    will-change: background-position, transform, box-shadow, filter !important;
}

.qrf-pwa-save-wrap .qrf-pwa-save-btn::before,
.qrf-pwa-save-wrap > button.qrf-pwa-save-btn::before,
.qrf-pwa-save-wrap-auto .qrf-pwa-save-btn::before,
button.qrf-pwa-save-btn::before {
    content: "" !important;
    position: absolute !important;
    z-index: 2 !important;
    inset: -2px !important;
    border-radius: inherit !important;
    pointer-events: none !important;
    background:
        radial-gradient(circle at 50% 50%, rgba(255,255,255,.34), rgba(255,255,255,0) 54%),
        linear-gradient(135deg, rgba(255,255,255,.16), rgba(255,255,255,0) 48%) !important;
    opacity: 0 !important;
    transform: scale(.98) !important;
    animation: qrfPwaKeepMenuVisibleBloom152 3.1s ease-in-out infinite !important;
    mix-blend-mode: normal !important;
}

.qrf-pwa-save-wrap .qrf-pwa-save-btn::after,
.qrf-pwa-save-wrap > button.qrf-pwa-save-btn::after,
.qrf-pwa-save-wrap-auto .qrf-pwa-save-btn::after,
button.qrf-pwa-save-btn::after {
    content: "" !important;
    position: absolute !important;
    z-index: 1 !important;
    top: -120% !important;
    left: -58% !important;
    width: 30% !important;
    height: 340% !important;
    border-radius: 999px !important;
    pointer-events: none !important;
    background: linear-gradient(90deg,
        rgba(255,255,255,0) 0%,
        rgba(255,255,255,.34) 26%,
        rgba(255,255,255,1) 50%,
        rgba(255,244,180,.44) 74%,
        rgba(255,255,255,0) 100%) !important;
    opacity: 0 !important;
    transform: rotate(24deg) translateX(-260%) !important;
    animation: qrfPwaKeepMenuVisibleBeam152 3.1s cubic-bezier(.2,.72,.25,1) infinite !important;
}

.qrf-pwa-save-wrap .qrf-pwa-save-btn .qrf-pwa-save-ico,
.qrf-pwa-save-wrap > button.qrf-pwa-save-btn .qrf-pwa-save-ico,
button.qrf-pwa-save-btn .qrf-pwa-save-ico {
    position: relative !important;
    z-index: 4 !important;
    display: inline-block !important;
    transform-origin: 50% 82% !important;
    animation: qrfPwaKeepMenuVisibleIcon152 3.1s cubic-bezier(.2,.9,.24,1) infinite !important;
    will-change: transform !important;
}

.qrf-pwa-save-wrap .qrf-pwa-save-btn .qrf-pwa-save-label,
.qrf-pwa-save-wrap > button.qrf-pwa-save-btn .qrf-pwa-save-label,
button.qrf-pwa-save-btn .qrf-pwa-save-label {
    position: relative !important;
    z-index: 4 !important;
    animation: qrfPwaKeepMenuVisibleText152 3.1s ease-in-out infinite !important;
    will-change: text-shadow, filter !important;
}

@keyframes qrfPwaKeepMenuVisibleShine152 {
    0%, 24% { background-position: -230% 0, 0 0; }
    48% { background-position: 210% 0, 0 0; }
    100% { background-position: 210% 0, 0 0; }
}

@keyframes qrfPwaKeepMenuVisiblePulse152 {
    0%, 24%, 100% {
        transform: translate3d(0,0,0) scale(1);
        filter: brightness(1) saturate(1);
        box-shadow:
            0 8px 20px rgba(0,0,0,.22),
            inset 0 1px 0 rgba(255,255,255,.38),
            0 0 0 0 rgba(255,213,75,0),
            0 0 0 rgba(255,213,75,0);
    }
    37% {
        transform: translate3d(0,0,0) scale(1.026);
        filter: brightness(1.13) saturate(1.18);
        box-shadow:
            0 10px 24px rgba(0,0,0,.24),
            inset 0 1px 0 rgba(255,255,255,.48),
            0 0 0 5px rgba(255,213,75,.26),
            0 0 28px rgba(255,213,75,.62);
    }
    52% {
        transform: translate3d(0,0,0) scale(1.008);
        filter: brightness(1.05) saturate(1.08);
        box-shadow:
            0 8px 20px rgba(0,0,0,.22),
            inset 0 1px 0 rgba(255,255,255,.38),
            0 0 0 8px rgba(255,213,75,.08),
            0 0 18px rgba(255,213,75,.34);
    }
}

@keyframes qrfPwaKeepMenuVisibleBloom152 {
    0%, 24%, 100% { opacity: 0; transform: scale(.98); }
    36% { opacity: .46; transform: scale(1.02); }
    50% { opacity: .18; transform: scale(1.045); }
}

@keyframes qrfPwaKeepMenuVisibleBeam152 {
    0%, 20% { transform: rotate(24deg) translateX(-260%); opacity: 0; }
    30% { opacity: .32; }
    39% { opacity: 1; }
    50% { transform: rotate(24deg) translateX(690%); opacity: .18; }
    58%, 100% { transform: rotate(24deg) translateX(780%); opacity: 0; }
}

@keyframes qrfPwaKeepMenuVisibleIcon152 {
    0%, 25%, 100% { transform: translateY(0) rotate(0deg) scale(1); }
    34% { transform: translateY(-3px) rotate(-12deg) scale(1.25); }
    43% { transform: translateY(0) rotate(8deg) scale(1.12); }
    53% { transform: translateY(0) rotate(0deg) scale(1); }
}

@keyframes qrfPwaKeepMenuVisibleText152 {
    0%, 25%, 100% { text-shadow: 0 0 0 rgba(255,255,255,0); filter: brightness(1); }
    37% { text-shadow: 0 1px 0 rgba(255,255,255,.42), 0 0 12px rgba(255,255,255,.42); filter: brightness(1.04); }
    52% { text-shadow: 0 0 4px rgba(255,255,255,.18); filter: brightness(1.02); }
}
