/* Shared local CTA shimmer, matching the existing cart / .btn sweep.
   Only the highlight moves; layout, colours, icons and click targets stay intact. */
.avm-action-shimmer {
    position: relative;
    isolation: isolate;
    overflow: hidden;
}
.avm-action-shimmer::after {
    content: '';
    position: absolute;
    pointer-events: none;
    top: -50%;
    left: -60%;
    width: 40%;
    height: 200%;
    background: linear-gradient(90deg, transparent, rgba(255, 255, 255, .2), transparent);
    transform: translateX(0) skewX(-20deg);
}
@keyframes avm-action-sweep {
    from { transform: translateX(0) skewX(-20deg); }
    to { transform: translateX(450%) skewX(-20deg); }
}
/* No persistent touch-hover state and no repeated / idle animation. */
@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
    .avm-action-shimmer:not(:disabled):not([aria-disabled="true"]):hover::after {
        animation: avm-action-sweep .6s ease 1 both;
    }
}
@media (prefers-reduced-motion: no-preference) {
    .avm-action-shimmer:not(:disabled):not([aria-disabled="true"]):focus-visible::after {
        animation: avm-action-sweep .6s ease 1 both;
    }
}
@media (hover: none) and (prefers-reduced-motion: no-preference) {
    .avm-action-shimmer:not(:disabled):not([aria-disabled="true"]):active::after {
        animation: avm-action-sweep .45s ease 1 both;
    }
}
@media (prefers-reduced-motion: reduce) {
    .avm-action-shimmer::after { display: none; animation: none; }
}
