button.is-loading, a.is-loading { position: relative; color: transparent !important; cursor: wait; }
button.is-loading > *, a.is-loading > * { visibility: hidden; }
button.is-loading::after, a.is-loading::after { content: ''; position: absolute; left: 50%; top: 50%; width: 16px; height: 16px; margin: -8px 0 0 -8px; border: 2px solid var(--ylp-loading-ink, #442c41); border-right-color: transparent; border-radius: 50%; animation: ylp-ui-spin .65s linear infinite; }
@keyframes ylp-ui-spin { to { transform: rotate(360deg); } }

.ylp-skeleton { display: block; border-radius: 4px; background: linear-gradient(100deg, var(--ylp-skeleton-base, #eee9e2) 20%, var(--ylp-skeleton-light, #f8f5f0) 45%, var(--ylp-skeleton-base, #eee9e2) 70%); background-size: 220% 100%; animation: ylp-ui-shimmer 1.5s ease-in-out infinite; }
@keyframes ylp-ui-shimmer { from { background-position: 100% 0; } to { background-position: -100% 0; } }
[data-skeleton-media] { position: relative; }
[data-skeleton-media].is-media-loading::before { content: ''; position: absolute; inset: 0; z-index: 0; border-radius: inherit; background: linear-gradient(100deg, var(--ylp-skeleton-base, #eee9e2) 20%, var(--ylp-skeleton-light, #f8f5f0) 45%, var(--ylp-skeleton-base, #eee9e2) 70%); background-size: 220% 100%; animation: ylp-ui-shimmer 1.5s ease-in-out infinite; }
[data-skeleton-media].is-media-loading img { opacity: 0; }
.is-content-loading { position: relative; display: inline-block; min-width: 4.5em; min-height: 1em; color: transparent !important; }
.is-content-loading::after { content: ''; position: absolute; inset: 0; border-radius: 3px; background: linear-gradient(100deg, var(--ylp-skeleton-base, #eee9e2) 20%, var(--ylp-skeleton-light, #f8f5f0) 45%, var(--ylp-skeleton-base, #eee9e2) 70%); background-size: 220% 100%; animation: ylp-ui-shimmer 1.5s ease-in-out infinite; }

[data-cart-link] { overflow: visible; }
[data-cart-link].is-cart-added > svg { transform-origin: 50% 85%; animation: ylp-cart-added .95s ease-out both; }
[data-cart-link].is-cart-added [data-cart-count] { animation: ylp-cart-count .5s ease-out; }
@keyframes ylp-cart-added { 0% { transform: scale(1) rotate(0); } 25% { transform: scale(1.45) rotate(0); } 42% { transform: scale(1.15) rotate(-15deg); } 56% { transform: scale(1.08) rotate(12deg); } 70% { transform: scale(1.04) rotate(-8deg); } 82% { transform: scale(1.02) rotate(5deg); } 100% { transform: scale(1) rotate(0); } }
@keyframes ylp-cart-count { 0%, 100% { transform: scale(1); } 45% { transform: scale(1.3); } }
@media (prefers-reduced-motion: reduce) {
  button.is-loading::after, a.is-loading::after, .ylp-skeleton, [data-skeleton-media].is-media-loading::before, .is-content-loading::after,
  [data-cart-link].is-cart-added > svg, [data-cart-link].is-cart-added [data-cart-count] { animation: none; }
}
