/**
 * Novoshop — حالت یکسان «در حال انجام» برای دکمه‌ها
 * Unified in-button processing state (spinner + a11y-friendly)
 */
:root {
    --novoshop-btn-proc-size: 1.125rem;
    --novoshop-btn-proc-border: 2px;
    --novoshop-btn-proc-speed: 0.75s;
}

@keyframes novoshop-btn-spin {
    to {
        transform: rotate(360deg);
    }
}

/* -------------------------------------------------------------------------
   Shared: pointer feedback (همه دکمه‌ها / لینک‌های دکمه‌ای با .loading)
   ------------------------------------------------------------------------- */
button.loading,
input[type="submit"].loading,
input[type="button"].loading,
a.button.loading,
a.btn.loading,
.button.loading,
.btn.loading,
.add-to-cart-btn.loading,
.ajax_add_to_cart.loading,
.add_to_cart_button.loading,
.novoshop-add-to-cart.loading,
.add-to-cart-ajax.loading,
.single_add_to_cart_button.loading,
.quick-view-add-to-cart.loading,
.wishlist-clear-all-btn.loading,
.wishlist-remove-btn.loading,
.track-orders-btn.loading,
.apply-coupon-btn.loading,
.update-cart-btn.loading,
.woocommerce-checkout-payment .place-order .button.loading,
.elementor-button.loading,
.prod-opts li.loading,
.wishlist-toggle.loading,
.wishlist-trigger.loading,
.wishlist-btn.loading,
.quick-view-btn.loading,
.action-btn.loading {
    pointer-events: none;
    cursor: wait;
    position: relative;
}

/* متن دکمه‌های پررنگ موقع لودینگ مخفی می‌شود؛ اسپینر وسط دیده می‌شود */
.single_add_to_cart_button.loading,
.add-to-cart-btn.loading:not(.view-product):not(.out-of-stock-btn),
.ajax_add_to_cart.loading,
.add_to_cart_button.loading,
.novoshop-add-to-cart.loading,
.add-to-cart-ajax.loading,
.quick-view-add-to-cart.loading,
.woocommerce-checkout-payment .place-order .button.loading,
.elementor-button.loading,
.track-orders-btn.loading,
.wishlist-clear-all-btn.loading,
.apply-coupon-btn.loading,
.update-cart-btn.loading,
body.woocommerce a.button.alt.loading,
body.woocommerce-page a.button.alt.loading,
body.woocommerce button.button.alt.loading,
body.woocommerce-page button.button.alt.loading {
    color: transparent !important;
    text-shadow: none !important;
}

.single_add_to_cart_button.loading .woocommerce-Price-amount,
.add-to-cart-btn.loading .woocommerce-Price-amount {
    opacity: 0;
}

/* -------------------------------------------------------------------------
   اسپینر روشن روی پس‌زمینه تیره / پرایمری (filled)
   ------------------------------------------------------------------------- */
.single_add_to_cart_button.loading::after,
.add-to-cart-btn.loading:not(.view-product):not(.out-of-stock-btn)::after,
.ajax_add_to_cart.loading::after,
.add_to_cart_button.loading::after,
.quick-view-add-to-cart.loading::after,
.woocommerce-checkout-payment .place-order .button.loading::after,
.elementor-button.loading::after,
body.woocommerce a.button.alt.loading::after,
body.woocommerce-page a.button.alt.loading::after,
body.woocommerce button.button.alt.loading::after,
body.woocommerce-page button.button.alt.loading::after {
    content: "";
    position: absolute;
    top: 50%;
    left: 50%;
    width: var(--novoshop-btn-proc-size);
    height: var(--novoshop-btn-proc-size);
    margin: calc(var(--novoshop-btn-proc-size) / -2) 0 0 calc(var(--novoshop-btn-proc-size) / -2);
    box-sizing: border-box;
    border: var(--novoshop-btn-proc-border) solid rgba(255, 255, 255, 0.35);
    border-top-color: #fff;
    border-radius: 50%;
    animation: novoshop-btn-spin var(--novoshop-btn-proc-speed) linear infinite;
    z-index: 2;
}

/* -------------------------------------------------------------------------
   اسپینر تیره روی سطح روشن (آیکن، لینک هدر، اکشن کارت)
   ------------------------------------------------------------------------- */
.wishlist-remove-btn.loading::after,
.prod-opts li.loading::after,
.wishlist-toggle.loading::after,
.wishlist-trigger.loading::after,
.wishlist-btn.loading::after,
.quick-view-btn.loading::after,
.wishlist-clear-all-btn.loading::after,
.action-btn.loading::after,
.track-orders-btn.loading::after,
.apply-coupon-btn.loading::after,
.update-cart-btn.loading::after {
    content: "";
    position: absolute;
    top: 50%;
    left: 50%;
    width: var(--novoshop-btn-proc-size);
    height: var(--novoshop-btn-proc-size);
    margin: calc(var(--novoshop-btn-proc-size) / -2) 0 0 calc(var(--novoshop-btn-proc-size) / -2);
    box-sizing: border-box;
    border: var(--novoshop-btn-proc-border) solid rgba(15, 23, 42, 0.12);
    border-top-color: var(--primary-color, #ff6600);
    border-radius: 50%;
    animation: novoshop-btn-spin var(--novoshop-btn-proc-speed) linear infinite;
    z-index: 2;
}

/* دکمه‌های آیکن‌محور: محتوا موقع پردازش دیده نشود */
.wishlist-remove-btn.loading svg,
.wishlist-remove-btn.loading i,
.prod-opts li.loading i,
.wishlist-toggle.loading svg,
.wishlist-trigger.loading i,
.wishlist-trigger.loading svg,
.wishlist-btn.loading svg,
.quick-view-btn.loading svg,
.action-btn.loading i,
.action-btn.loading svg {
    opacity: 0 !important;
    animation: none !important;
}

.prod-opts li.loading,
.wishlist-remove-btn.loading,
.wishlist-toggle.loading,
.wishlist-trigger.loading,
.wishlist-btn.loading,
.quick-view-btn.loading,
.action-btn.loading,
.track-orders-btn.loading {
    position: relative;
}

/* دکمه حذف لیست علاقه‌مندی — اسپینر کمی کوچک‌تر */
.wishlist-remove-btn.loading::after {
    width: calc(var(--novoshop-btn-proc-size) * 0.85);
    height: calc(var(--novoshop-btn-proc-size) * 0.85);
    margin: calc(var(--novoshop-btn-proc-size) * -0.425) 0 0 calc(var(--novoshop-btn-proc-size) * -0.425);
}

/* -------------------------------------------------------------------------
   Inline spinner (.btn-spinner) همان ظاهر پررنگ
   ------------------------------------------------------------------------- */
.btn-spinner {
    display: inline-block;
    width: var(--novoshop-btn-proc-size);
    height: var(--novoshop-btn-proc-size);
    box-sizing: border-box;
    border: var(--novoshop-btn-proc-border) solid rgba(255, 255, 255, 0.35);
    border-top-color: #fff;
    border-radius: 50%;
    animation: novoshop-btn-spin var(--novoshop-btn-proc-speed) linear infinite;
    vertical-align: middle;
}

@supports selector(:has(*)) {
    button.loading:has(.btn-spinner)::after,
    a.loading:has(.btn-spinner)::after,
    button.novoshop-add-to-cart.loading:has(.btn-spinner)::after,
    a.add-to-cart-ajax.loading:has(.btn-spinner)::after {
        content: none !important;
        display: none !important;
    }
}
