/* Kılınç global async button feedback — BF-1.0.3
 * Canonical visual language: same centred 18px / 2px ring used by the accepted
 * mobile sticky add-to-cart button. Instant UI controls are excluded in JS.
 */
.kg-button-feedback {
  position: relative !important;
}

.kg-button-feedback > .kg-button-spinner {
  position: absolute;
  inset: 0;
  z-index: 5;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: inherit;
  color: var(--kg-button-loader-color, currentColor) !important;
  pointer-events: none;
}

.kg-button-feedback > .kg-button-spinner::before {
  content: "";
  width: 18px;
  height: 18px;
  flex: 0 0 18px;
  border: 2px solid rgba(127,127,127,.35);
  border-color: color-mix(in srgb, currentColor 35%, transparent);
  border-top-color: currentColor;
  border-radius: 50%;
  animation: kg-button-spin .8s linear infinite;
}

/* Match sticky add-to-cart: while busy, only the centred spinner remains. */
.kg-button-feedback[aria-busy="true"] {
  color: transparent !important;
  text-shadow: none !important;
}
.kg-button-feedback[aria-busy="true"] > :not(.kg-button-spinner) {
  opacity: 0 !important;
}
.kg-button-feedback[aria-busy="true"] > .kg-button-spinner {
  opacity: 1 !important;
  color: var(--kg-button-loader-color, #111) !important;
}

.kg-button-feedback:active {
  opacity: .8;
}

/* WooCommerce may add its own pseudo loader; never show two spinners. */
.kg-button-feedback.loading::after,
.kg-button-feedback.is-loading::after {
  content: none !important;
}

@keyframes kg-button-spin {
  to { transform: rotate(360deg); }
}

@media (prefers-reduced-motion: reduce) {
  .kg-button-feedback > .kg-button-spinner::before {
    animation: none;
    border-color: color-mix(in srgb, currentColor 35%, transparent);
    border-top-color: currentColor;
    opacity: .72;
  }
}
