/* Online Store 1.26.2 — public interaction-affordance owner layer.
   Loaded after page-specific styles so clickable controls consistently look,
   hover, focus, and press like controls across the public storefront. */

/* Pointer semantics: active controls advertise clickability; disabled controls do not. */
:where(button:not(:disabled),a[href],summary,[role="button"]){cursor:pointer}
:where(button:disabled,[aria-disabled="true"],.is-disabled){cursor:not-allowed}

/* Explicit property transitions only; no broad transition shorthand. */
:where(
  .header-search button,.hero-search button,.catalog-search button,
  .primary-button,.secondary-button,.location-button,.map-link-row button,
  .pdp-v2 .primary-action,.pdp-v2 .secondary-action,.pdp-v2 .wholesale-offer,
  .pdp-v2 .variant-chip,.pdp-v2 .gallery-nav,.pdp-v2 .gallery-zoom,.pdp-v2 .thumb-scroll,
  .pdp-v2 .qty-control button,.cart-quantity button,.cart-remove,.text-button,
  .mobile-cart,.mobile-nav-menu>summary,.cart-toast-close,.address-dialog>header button,
  .area-results button,.map-results button,.review-preview-remove,.review-file-guide,
  .rating-input label,.rate-option,.checkout-payment-option,.external-video-link
){
  transition-property:background-color,border-color,color,box-shadow,transform,filter,opacity;
  transition-duration:150ms;
  transition-timing-function:ease-out;
}

/* Filled primary actions. */
:where(.header-search button,.hero-search button,.catalog-search button,.primary-button,.pdp-v2 .primary-action):not(:disabled):hover{
  background:color-mix(in srgb,var(--brand-primary,var(--green)) 88%,#000);
  border-color:color-mix(in srgb,var(--brand-primary,var(--green)) 88%,#000);
  box-shadow:0 6px 16px color-mix(in srgb,var(--brand-primary,var(--green)) 22%,transparent);
  transform:translateY(-1px);
}
:where(.header-search button,.hero-search button,.catalog-search button,.primary-button,.pdp-v2 .primary-action):not(:disabled):active{
  box-shadow:0 2px 7px color-mix(in srgb,var(--brand-primary,var(--green)) 18%,transparent);
  transform:translateY(0) scale(.985);
}

/* Bordered / secondary actions. */
:where(.secondary-button,.location-button,.map-link-row button,.pdp-v2 .secondary-action):not(:disabled):hover{
  border-color:color-mix(in srgb,var(--brand-primary,var(--green)) 48%,var(--store-line,var(--line)));
  background:var(--brand-primary-soft,var(--green-soft));
  color:var(--brand-primary-dark,var(--green-dark));
  box-shadow:0 4px 12px color-mix(in srgb,var(--brand-primary,var(--green)) 12%,transparent);
  transform:translateY(-1px);
}
:where(.secondary-button,.location-button,.map-link-row button,.pdp-v2 .secondary-action):not(:disabled):active{
  box-shadow:none;
  transform:translateY(0) scale(.985);
}

/* PDP selectable surfaces. */
.pdp-v2 .variant-chip:not(:disabled):hover{
  border-color:var(--brand-primary,var(--green));
  box-shadow:0 4px 12px color-mix(in srgb,var(--brand-primary,var(--green)) 13%,transparent);
  transform:translateY(-1px);
}
.pdp-v2 .variant-chip:not(:disabled):active{transform:translateY(0) scale(.985)}
.pdp-v2 .wholesale-offer:not(:disabled):hover{
  border-color:var(--brand-primary,var(--green));
  background:linear-gradient(135deg,var(--brand-primary-soft,var(--green-soft)),var(--surface,#fff));
  box-shadow:0 4px 12px color-mix(in srgb,var(--brand-primary,var(--green)) 12%,transparent);
  transform:translateY(-1px);
}
.pdp-v2 .wholesale-offer:not(:disabled):active{transform:translateY(0) scale(.99)}

/* Compact icon and quantity controls. */
:where(.pdp-v2 .qty-control button,.cart-quantity button,.pdp-v2 .gallery-nav,.pdp-v2 .gallery-zoom,.pdp-v2 .thumb-scroll,.mobile-cart,.mobile-nav-menu>summary,.address-dialog>header button):not(:disabled):hover{
  border-color:color-mix(in srgb,var(--brand-primary,var(--green)) 45%,var(--store-line,var(--line)));
  background:var(--brand-primary-soft,var(--green-soft));
  color:var(--brand-primary-dark,var(--green-dark));
  box-shadow:0 4px 12px color-mix(in srgb,var(--brand-primary,var(--green)) 12%,transparent);
}
:where(.pdp-v2 .qty-control button,.cart-quantity button,.pdp-v2 .gallery-nav,.pdp-v2 .gallery-zoom,.pdp-v2 .thumb-scroll,.mobile-cart,.mobile-nav-menu>summary,.address-dialog>header button):not(:disabled):active{
  box-shadow:none;
  transform:scale(.96);
}

/* Quiet destructive and text actions still need an obvious interactive response. */
.cart-remove{min-width:44px;min-height:44px;border-radius:9px}
.cart-remove:hover{background:var(--danger-soft,#fff1f0);color:var(--danger,#b42318)}
.cart-remove:active{transform:scale(.97)}
.text-button{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 10px;border-radius:9px}
.text-button:hover{background:var(--brand-primary-soft,var(--green-soft));color:var(--brand-primary-dark,var(--green-dark))}
.text-button:active{transform:scale(.98)}

/* Cart quantity is a control, not plain text. */
.cart-quantity button{width:44px!important;height:44px!important;min-width:44px;min-height:44px}
.cart-quantity input{height:44px!important;min-height:44px}
.address-dialog>header button{width:44px!important;height:44px!important;min-width:44px;min-height:44px}

/* Selectable checkout/review surfaces. */
:where(.rate-option,.checkout-payment-option,.rating-input label,.review-file-guide):hover{
  border-color:color-mix(in srgb,var(--brand-primary,var(--green)) 42%,var(--store-line,var(--line)));
  background:color-mix(in srgb,var(--brand-primary-soft,var(--green-soft)) 55%,var(--surface,#fff));
}
:where(.rate-option,.checkout-payment-option,.rating-input label,.review-file-guide):active{transform:scale(.995)}

/* Button-like links and low-emphasis navigation. */
.pdp-v2 .external-video-link:hover{border-color:color-mix(in srgb,var(--brand-primary,var(--green)) 44%,var(--store-line,var(--line)));background:var(--brand-primary-soft,var(--green-soft));box-shadow:0 4px 12px color-mix(in srgb,var(--brand-primary,var(--green)) 10%,transparent)}
.cart-heading>a:hover,.section-head>a:hover{text-decoration:underline;text-underline-offset:3px}
.footer-shell a[href]:hover{color:#fff}

/* Disabled means visibly and semantically unavailable. */
:where(button:disabled,.pdp-v2 .primary-action.is-disabled,.primary-button:disabled,.secondary-button:disabled){
  transform:none!important;
  box-shadow:none!important;
  filter:none!important;
}

@media(prefers-reduced-motion:reduce){
  :where(button,a[href],summary,[role="button"]){transition-duration:.01ms!important}
}

/* Brand-safe default shadows: remove legacy green affordance remnants. */
.pdp-v2 .primary-action:not(:disabled){
  box-shadow:0 8px 20px color-mix(in srgb,var(--brand-primary,var(--green)) 18%,transparent);
}
.pdp-v2 .wholesale-offer.is-active{
  box-shadow:0 0 0 3px color-mix(in srgb,var(--brand-primary,var(--green)) 12%,transparent);
}
.offline-map-button{
  box-shadow:0 10px 22px color-mix(in srgb,var(--brand-primary,var(--green)) 20%,transparent);
}

/* Button-like anchors must meet the same target geometry as native buttons. */
:where(.primary-button,.secondary-button,.location-button,.map-link-row button){
  min-height:44px;
}
