/* ==========================================================================
   PIUROPRINT button contract
   --------------------------------------------------------------------------
   Single source of truth for ACTION BUTTON appearance and interaction states.

   Page/component CSS may control only composition (width, grid-area, flex,
   margins, alignment). It must not redefine palette, border, radius,
   typography or interaction states of a button covered by this contract.

   Canonical API for new markup:
     .pp-button
     .pp-button--primary | --outline | --ghost | --on-dark | --inverse | --danger
     .pp-button--sm | --md | --lg | --block

   Legacy selectors below are compatibility adapters. They deliberately map
   old page-specific class names and native WooCommerce actions onto the same
   contract without changing their business logic or DOM hooks.
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. Base action primitive + compatibility aliases
   -------------------------------------------------------------------------- */
body.pp-body :where(
  .pp-button,
  .pp-btn-primary,
  .pp-btn-outline-dark,
  .pp-btn-outline-white,
  .pp-btn-outline,
  .pp-btn-outline-light,
  .wp-block-button__link,
  .vz-write-form input[type="submit"],
  .vz-write-form .wpcf7-submit,
  #nbdq-form-popup .pp-quote-submit,
  .vz-btn,
  .vz-button,
  .vz-contact-cta__btn,
  .pp-404__btn,
  .pp-op__btn,
  .pp-raq-btn,
  .pp-raq-alert__cta,
  .pp-ma-btn,
  .pp-tg-btn,
  .pp-tg-card__btn,
  .pp-ai-card__btn,
  .pp-sp-cta__button,
  .pp-dz-btn-danger,
  .pp-404-search button,
  .pp-cat-hero__search button,
  .pp-tg-hero__search-btn,
  .cr-show-more-reviews-prd,
  .cr-show-more-button,
  .pp-sp-mobile-order button,
  .pp-sp-page #useTemplate,
  .pp-sp-review-summary > button,
  .pp-sp-info-section--cr_qna .cr-review-form-submit,
  .pp-sp-info-section--cr_qna .cr-qna-ask-button,
  .pp-sp-info-section--cr_qna .cr-qna-ask-question,
  .pp-sp-info-section--reviews .cr-review-form-continue,
  .pp-sp-info-section--reviews .cr-review-form-submit,
  .pp-sp-info-section--reviews .cr-ajax-reviews-add-review,
  .pp-sp-info-section--reviews .cr-review-form-cancel,
  .pp-cart-item__design .nbd-edit-design.button,
  .pp-cart-item__design .nbd-upload-design.button,
  .pp-cart-item__design .nbo-edit-option-cart,
  .pp-cart__summary .shipping-calculator-form button[name="calc_shipping"],
  .pp-co-mobile button,
  .pp-checkout .blpaczka-point-modal-btn,
  .pp-single-product .nbdq-add-a-quote-button.button,
  .pp-sp-page #triggerDesign,
  .pp-sp-page #startDesign,
  .pp-sp-page #startUpload,
  .pp-sp-page .nbdesign-button,
  .pp-order-actions__primary,
  .pp-order-actions__secondary,
  .woocommerce a.button,
  .woocommerce button.button,
  .woocommerce input.button,
  .woocommerce #respond input#submit,
  .woocommerce .woocommerce-button,
  .woocommerce .single_add_to_cart_button,
  .woocommerce .added_to_cart,
  .woocommerce-cart .checkout-button,
  .woocommerce-checkout #place_order,
  .woocommerce-account .woocommerce-Button
) {
  --pp-btn-height: var(--pp-button-height-md);
  --pp-btn-padding-inline: var(--pp-button-padding-md);
  --pp-btn-radius: var(--pp-button-radius);
  --pp-btn-font-size: var(--pp-button-font-size);
  --pp-btn-font-weight: 800;
  --pp-btn-bg: var(--pp-orange);
  --pp-btn-color: #fff;
  --pp-btn-border: var(--pp-orange);
  --pp-btn-hover-bg: var(--pp-orange-hover);
  --pp-btn-hover-color: #fff;
  --pp-btn-hover-border: var(--pp-orange-hover);

  appearance: none;
  -webkit-appearance: none;
  display: inline-flex;
  min-height: var(--pp-btn-height, var(--pp-button-height-md));
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding-block: 0;
  padding-inline: var(--pp-btn-padding-inline);
  border: 1px solid var(--pp-btn-border);
  border-radius: var(--pp-btn-radius, var(--pp-button-radius));
  background: var(--pp-btn-bg);
  color: var(--pp-btn-color);
  box-shadow: none;
  font-family: var(--pp-font);
  font-size: var(--pp-btn-font-size, var(--pp-button-font-size));
  font-weight: var(--pp-btn-font-weight);
  line-height: 1.1;
  letter-spacing: 0;
  text-align: center;
  text-decoration: none;
  text-transform: none;
  cursor: pointer;
  transition:
    background-color var(--pp-ui-transition),
    border-color var(--pp-ui-transition),
    color var(--pp-ui-transition),
    box-shadow var(--pp-ui-transition),
    transform var(--pp-ui-transition);
}

body.pp-body :where(
  .pp-button,
  .pp-btn-primary,
  .pp-btn-outline-dark,
  .pp-btn-outline-white,
  .pp-btn-outline,
  .pp-btn-outline-light,
  .wp-block-button__link,
  .vz-write-form input[type="submit"],
  .vz-write-form .wpcf7-submit,
  #nbdq-form-popup .pp-quote-submit,
  .vz-btn,
  .vz-button,
  .vz-contact-cta__btn,
  .pp-404__btn,
  .pp-op__btn,
  .pp-raq-btn,
  .pp-raq-alert__cta,
  .pp-ma-btn,
  .pp-tg-btn,
  .pp-tg-card__btn,
  .pp-ai-card__btn,
  .pp-sp-cta__button,
  .pp-dz-btn-danger,
  .pp-404-search button,
  .pp-cat-hero__search button,
  .pp-tg-hero__search-btn,
  .cr-show-more-reviews-prd,
  .cr-show-more-button,
  .pp-sp-mobile-order button,
  .pp-sp-page #useTemplate,
  .pp-sp-review-summary > button,
  .pp-sp-info-section--cr_qna .cr-review-form-submit,
  .pp-sp-info-section--cr_qna .cr-qna-ask-button,
  .pp-sp-info-section--cr_qna .cr-qna-ask-question,
  .pp-sp-info-section--reviews .cr-review-form-continue,
  .pp-sp-info-section--reviews .cr-review-form-submit,
  .pp-sp-info-section--reviews .cr-ajax-reviews-add-review,
  .pp-sp-info-section--reviews .cr-review-form-cancel,
  .pp-cart-item__design .nbd-edit-design.button,
  .pp-cart-item__design .nbd-upload-design.button,
  .pp-cart-item__design .nbo-edit-option-cart,
  .pp-cart__summary .shipping-calculator-form button[name="calc_shipping"],
  .pp-co-mobile button,
  .pp-checkout .blpaczka-point-modal-btn,
  .pp-single-product .nbdq-add-a-quote-button.button,
  .pp-sp-page #triggerDesign,
  .pp-sp-page #startDesign,
  .pp-sp-page #startUpload,
  .pp-sp-page .nbdesign-button,
  .pp-order-actions__primary,
  .pp-order-actions__secondary,
  .woocommerce a.button,
  .woocommerce button.button,
  .woocommerce input.button,
  .woocommerce #respond input#submit,
  .woocommerce .woocommerce-button,
  .woocommerce .single_add_to_cart_button,
  .woocommerce .added_to_cart,
  .woocommerce-cart .checkout-button,
  .woocommerce-checkout #place_order,
  .woocommerce-account .woocommerce-Button
):hover {
  border-color: var(--pp-btn-hover-border);
  background: var(--pp-btn-hover-bg);
  color: var(--pp-btn-hover-color);
  box-shadow: none;
  text-decoration: none;
}

/* Keyboard state is part of the contract, not a page-specific afterthought. */
body.pp-body :where(
  .pp-button,
  .pp-btn-primary,
  .pp-btn-outline-dark,
  .pp-btn-outline-white,
  .pp-btn-outline,
  .pp-btn-outline-light,
  .wp-block-button__link,
  .vz-write-form input[type="submit"],
  .vz-write-form .wpcf7-submit,
  #nbdq-form-popup .pp-quote-submit,
  .vz-btn,
  .vz-button,
  .vz-contact-cta__btn,
  .pp-404__btn,
  .pp-op__btn,
  .pp-raq-btn,
  .pp-raq-alert__cta,
  .pp-ma-btn,
  .pp-tg-btn,
  .pp-tg-card__btn,
  .pp-ai-card__btn,
  .pp-sp-cta__button,
  .pp-dz-btn-danger,
  .pp-404-search button,
  .pp-cat-hero__search button,
  .pp-tg-hero__search-btn,
  .cr-show-more-reviews-prd,
  .cr-show-more-button,
  .pp-sp-mobile-order button,
  .pp-sp-page #useTemplate,
  .pp-sp-review-summary > button,
  .pp-sp-info-section--cr_qna .cr-review-form-submit,
  .pp-sp-info-section--cr_qna .cr-qna-ask-button,
  .pp-sp-info-section--cr_qna .cr-qna-ask-question,
  .pp-sp-info-section--reviews .cr-review-form-continue,
  .pp-sp-info-section--reviews .cr-review-form-submit,
  .pp-sp-info-section--reviews .cr-ajax-reviews-add-review,
  .pp-sp-info-section--reviews .cr-review-form-cancel,
  .pp-cart-item__design .nbd-edit-design.button,
  .pp-cart-item__design .nbd-upload-design.button,
  .pp-cart-item__design .nbo-edit-option-cart,
  .pp-cart__summary .shipping-calculator-form button[name="calc_shipping"],
  .pp-co-mobile button,
  .pp-checkout .blpaczka-point-modal-btn,
  .pp-single-product .nbdq-add-a-quote-button.button,
  .pp-sp-page #triggerDesign,
  .pp-sp-page #startDesign,
  .pp-sp-page #startUpload,
  .pp-sp-page .nbdesign-button,
  .pp-order-actions__primary,
  .pp-order-actions__secondary,
  .woocommerce a.button,
  .woocommerce button.button,
  .woocommerce input.button,
  .woocommerce #respond input#submit,
  .woocommerce .woocommerce-button,
  .woocommerce .single_add_to_cart_button,
  .woocommerce .added_to_cart,
  .woocommerce-cart .checkout-button,
  .woocommerce-checkout #place_order,
  .woocommerce-account .woocommerce-Button
):focus-visible {
  outline: 0;
  box-shadow: var(--pp-ui-focus);
}

body.pp-body :where(
  .pp-button,
  .pp-btn-primary,
  .pp-btn-outline-dark,
  .pp-btn-outline-white,
  .pp-btn-outline,
  .pp-btn-outline-light,
  .wp-block-button__link,
  .vz-write-form input[type="submit"],
  .vz-write-form .wpcf7-submit,
  #nbdq-form-popup .pp-quote-submit,
  .vz-btn,
  .vz-button,
  .vz-contact-cta__btn,
  .pp-404__btn,
  .pp-op__btn,
  .pp-raq-btn,
  .pp-raq-alert__cta,
  .pp-ma-btn,
  .pp-tg-btn,
  .pp-tg-card__btn,
  .pp-ai-card__btn,
  .pp-sp-cta__button,
  .pp-dz-btn-danger,
  .pp-404-search button,
  .pp-cat-hero__search button,
  .pp-tg-hero__search-btn,
  .cr-show-more-reviews-prd,
  .cr-show-more-button,
  .pp-sp-mobile-order button,
  .pp-sp-page #useTemplate,
  .pp-sp-review-summary > button,
  .pp-sp-info-section--cr_qna .cr-review-form-submit,
  .pp-sp-info-section--cr_qna .cr-qna-ask-button,
  .pp-sp-info-section--cr_qna .cr-qna-ask-question,
  .pp-sp-info-section--reviews .cr-review-form-continue,
  .pp-sp-info-section--reviews .cr-review-form-submit,
  .pp-sp-info-section--reviews .cr-ajax-reviews-add-review,
  .pp-sp-info-section--reviews .cr-review-form-cancel,
  .pp-cart-item__design .nbd-edit-design.button,
  .pp-cart-item__design .nbd-upload-design.button,
  .pp-cart-item__design .nbo-edit-option-cart,
  .pp-cart__summary .shipping-calculator-form button[name="calc_shipping"],
  .pp-co-mobile button,
  .pp-checkout .blpaczka-point-modal-btn,
  .pp-single-product .nbdq-add-a-quote-button.button,
  .pp-sp-page #triggerDesign,
  .pp-sp-page #startDesign,
  .pp-sp-page #startUpload,
  .pp-sp-page .nbdesign-button,
  .pp-order-actions__primary,
  .pp-order-actions__secondary,
  .woocommerce a.button,
  .woocommerce button.button,
  .woocommerce input.button,
  .woocommerce #respond input#submit,
  .woocommerce .woocommerce-button,
  .woocommerce .single_add_to_cart_button,
  .woocommerce .added_to_cart,
  .woocommerce-cart .checkout-button,
  .woocommerce-checkout #place_order,
  .woocommerce-account .woocommerce-Button
):active {
  transform: translateY(1px);
}

body.pp-body :where(
  .pp-button,
  .pp-btn-primary,
  .pp-btn-outline-dark,
  .pp-btn-outline-white,
  .pp-btn-outline,
  .pp-btn-outline-light,
  .wp-block-button__link,
  .vz-write-form input[type="submit"],
  .vz-write-form .wpcf7-submit,
  #nbdq-form-popup .pp-quote-submit,
  .vz-btn,
  .vz-button,
  .vz-contact-cta__btn,
  .pp-404__btn,
  .pp-op__btn,
  .pp-raq-btn,
  .pp-raq-alert__cta,
  .pp-ma-btn,
  .pp-tg-btn,
  .pp-tg-card__btn,
  .pp-ai-card__btn,
  .pp-sp-cta__button,
  .pp-dz-btn-danger,
  .pp-404-search button,
  .pp-cat-hero__search button,
  .pp-tg-hero__search-btn,
  .cr-show-more-reviews-prd,
  .cr-show-more-button,
  .pp-sp-mobile-order button,
  .pp-sp-page #useTemplate,
  .pp-sp-review-summary > button,
  .pp-sp-info-section--cr_qna .cr-review-form-submit,
  .pp-sp-info-section--cr_qna .cr-qna-ask-button,
  .pp-sp-info-section--cr_qna .cr-qna-ask-question,
  .pp-sp-info-section--reviews .cr-review-form-continue,
  .pp-sp-info-section--reviews .cr-review-form-submit,
  .pp-sp-info-section--reviews .cr-ajax-reviews-add-review,
  .pp-sp-info-section--reviews .cr-review-form-cancel,
  .pp-cart-item__design .nbd-edit-design.button,
  .pp-cart-item__design .nbd-upload-design.button,
  .pp-cart-item__design .nbo-edit-option-cart,
  .pp-cart__summary .shipping-calculator-form button[name="calc_shipping"],
  .pp-co-mobile button,
  .pp-checkout .blpaczka-point-modal-btn,
  .pp-single-product .nbdq-add-a-quote-button.button,
  .pp-sp-page #triggerDesign,
  .pp-sp-page #startDesign,
  .pp-sp-page #startUpload,
  .pp-sp-page .nbdesign-button,
  .pp-order-actions__primary,
  .pp-order-actions__secondary,
  .woocommerce a.button,
  .woocommerce button.button,
  .woocommerce input.button,
  .woocommerce #respond input#submit,
  .woocommerce .woocommerce-button,
  .woocommerce .single_add_to_cart_button,
  .woocommerce .added_to_cart,
  .woocommerce-cart .checkout-button,
  .woocommerce-checkout #place_order,
  .woocommerce-account .woocommerce-Button
):is(:disabled, [disabled], [aria-disabled="true"], .disabled, .is-disabled, .nbo-disabled, .nbdesigner_disable) {
  pointer-events: none;
  cursor: not-allowed;
  opacity: .55;
  transform: none;
  box-shadow: none;
}

body.pp-body :where(
  .pp-button,
  .pp-btn-primary,
  .pp-btn-outline-dark,
  .pp-btn-outline-white,
  .pp-btn-outline,
  .pp-btn-outline-light,
  .wp-block-button__link,
  .vz-write-form input[type="submit"],
  .vz-write-form .wpcf7-submit,
  #nbdq-form-popup .pp-quote-submit,
  .vz-btn,
  .vz-button,
  .vz-contact-cta__btn,
  .pp-404__btn,
  .pp-op__btn,
  .pp-raq-btn,
  .pp-raq-alert__cta,
  .pp-ma-btn,
  .pp-tg-btn,
  .pp-tg-card__btn,
  .pp-ai-card__btn,
  .pp-sp-cta__button,
  .pp-dz-btn-danger,
  .pp-404-search button,
  .pp-cat-hero__search button,
  .pp-tg-hero__search-btn,
  .cr-show-more-reviews-prd,
  .cr-show-more-button,
  .pp-sp-mobile-order button,
  .pp-sp-page #useTemplate,
  .pp-sp-review-summary > button,
  .pp-sp-info-section--cr_qna .cr-review-form-submit,
  .pp-sp-info-section--cr_qna .cr-qna-ask-button,
  .pp-sp-info-section--cr_qna .cr-qna-ask-question,
  .pp-sp-info-section--reviews .cr-review-form-continue,
  .pp-sp-info-section--reviews .cr-review-form-submit,
  .pp-sp-info-section--reviews .cr-ajax-reviews-add-review,
  .pp-sp-info-section--reviews .cr-review-form-cancel,
  .pp-cart-item__design .nbd-edit-design.button,
  .pp-cart-item__design .nbd-upload-design.button,
  .pp-cart-item__design .nbo-edit-option-cart,
  .pp-cart__summary .shipping-calculator-form button[name="calc_shipping"],
  .pp-co-mobile button,
  .pp-checkout .blpaczka-point-modal-btn,
  .pp-single-product .nbdq-add-a-quote-button.button,
  .pp-sp-page #triggerDesign,
  .pp-sp-page #startDesign,
  .pp-sp-page #startUpload,
  .pp-sp-page .nbdesign-button,
  .pp-order-actions__primary,
  .pp-order-actions__secondary,
  .woocommerce a.button,
  .woocommerce button.button,
  .woocommerce .woocommerce-button,
  .woocommerce .single_add_to_cart_button,
  .woocommerce .added_to_cart,
  .woocommerce-cart .checkout-button,
  .woocommerce-checkout #place_order
) :is(svg, .pp-calc__cta-arrow) {
  flex: 0 0 auto;
}

body.pp-body :where(
  .pp-button,
  .pp-btn-primary,
  .pp-btn-outline-dark,
  .pp-btn-outline-white,
  .pp-btn-outline,
  .pp-btn-outline-light,
  .wp-block-button__link,
  .vz-write-form input[type="submit"],
  .vz-write-form .wpcf7-submit,
  #nbdq-form-popup .pp-quote-submit,
  .vz-btn,
  .vz-button,
  .vz-contact-cta__btn,
  .pp-404__btn,
  .pp-op__btn,
  .pp-raq-btn,
  .pp-raq-alert__cta,
  .pp-ma-btn,
  .pp-tg-btn,
  .pp-tg-card__btn,
  .pp-ai-card__btn,
  .pp-sp-cta__button,
  .pp-dz-btn-danger,
  .pp-404-search button,
  .pp-cat-hero__search button,
  .pp-tg-hero__search-btn,
  .cr-show-more-reviews-prd,
  .cr-show-more-button,
  .pp-sp-mobile-order button,
  .pp-sp-page #useTemplate,
  .pp-sp-review-summary > button,
  .pp-sp-info-section--cr_qna .cr-review-form-submit,
  .pp-sp-info-section--cr_qna .cr-qna-ask-button,
  .pp-sp-info-section--cr_qna .cr-qna-ask-question,
  .pp-sp-info-section--reviews .cr-review-form-continue,
  .pp-sp-info-section--reviews .cr-review-form-submit,
  .pp-sp-info-section--reviews .cr-ajax-reviews-add-review,
  .pp-sp-info-section--reviews .cr-review-form-cancel,
  .pp-cart-item__design .nbd-edit-design.button,
  .pp-cart-item__design .nbd-upload-design.button,
  .pp-cart-item__design .nbo-edit-option-cart,
  .pp-cart__summary .shipping-calculator-form button[name="calc_shipping"],
  .pp-co-mobile button,
  .pp-checkout .blpaczka-point-modal-btn,
  .pp-single-product .nbdq-add-a-quote-button.button,
  .pp-sp-page #triggerDesign,
  .pp-sp-page #startDesign,
  .pp-sp-page #startUpload,
  .pp-sp-page .nbdesign-button,
  .pp-order-actions__primary,
  .pp-order-actions__secondary
) > svg {
  width: 18px;
  height: 18px;
}

/* --------------------------------------------------------------------------
   2. Variants
   -------------------------------------------------------------------------- */
body.pp-body :where(
  .pp-button--outline,
  .wp-block-button.is-style-outline .wp-block-button__link,
  .pp-btn-outline-dark,
  .pp-btn-outline,
  .vz-btn--outline,
  .pp-404__btn--outline,
  .pp-raq-btn--outline,
  .pp-raq-alert__cta,
  .pp-tg-btn--outline,
  .vz-order-method--outline .vz-btn,
  .pp-single-product .nbdq-add-a-quote-button.button,
  .pp-sp-review-summary > button,
  .pp-sp-info-section--reviews .cr-review-form-cancel,
  .pp-order-actions__secondary,
  .woocommerce .button.wc-backward,
  .woocommerce-cart .actions .button[name="update_cart"]
) {
  --pp-btn-bg: transparent;
  --pp-btn-color: var(--pp-orange);
  --pp-btn-border: var(--pp-orange);
  --pp-btn-hover-bg: var(--pp-orange-light);
  --pp-btn-hover-color: var(--pp-orange-hover);
  --pp-btn-hover-border: var(--pp-orange);
}

body.pp-body :where(
  .pp-button--ghost,
  .pp-op__btn--ghost,
  .pp-raq-btn--ghost,
  .pp-tg-card__btn--ghost
) {
  --pp-btn-bg: #fff;
  --pp-btn-color: var(--pp-text);
  --pp-btn-border: var(--pp-border);
  --pp-btn-hover-bg: var(--pp-orange-light);
  --pp-btn-hover-color: var(--pp-orange-hover);
  --pp-btn-hover-border: #fdba74;
}

body.pp-body :where(
  .pp-button--on-dark,
  .pp-btn-outline-white,
  .pp-btn-outline-light,
  .pp-tg-btn--ghost-light,
  .pp-op__btn--on-dark
) {
  --pp-btn-bg: transparent;
  --pp-btn-color: #fff;
  --pp-btn-border: rgba(255,255,255,.35);
  --pp-btn-hover-bg: rgba(255,255,255,.10);
  --pp-btn-hover-color: #fff;
  --pp-btn-hover-border: rgba(255,255,255,.55);
}

/* White CTA on an orange/dark promotional surface. */
body.pp-body :where(.pp-button--inverse) {
  --pp-btn-bg: #fff;
  --pp-btn-color: var(--pp-orange);
  --pp-btn-border: #fff;
  --pp-btn-hover-bg: var(--pp-dark);
  --pp-btn-hover-color: #fff;
  --pp-btn-hover-border: var(--pp-dark);
}

body.pp-body :where(.pp-button--danger, .pp-raq-btn--danger, .pp-dz-btn-danger) {
  --pp-btn-bg: #d92d20;
  --pp-btn-color: #fff;
  --pp-btn-border: #d92d20;
  --pp-btn-hover-bg: #b42318;
  --pp-btn-hover-color: #fff;
  --pp-btn-hover-border: #b42318;
}

/* --------------------------------------------------------------------------
   3. Sizes
   -------------------------------------------------------------------------- */
body.pp-body :where(
  .pp-button--sm,
  .pp-tg-card__btn,
  .pp-ai-card__btn,
  .pp-newsletter__btn,
  .pp-footer__contact-btn,
  .pp-footer__contact-btn-outline,
  .woocommerce-message .pp-cart-toast__btn,
  .pp-cart-item__design .nbd-edit-design.button,
  .pp-cart-item__design .nbd-upload-design.button,
  .pp-cart-item__design .nbo-edit-option-cart,
  .pp-cart__summary .shipping-calculator-form button[name="calc_shipping"],
  .pp-checkout .blpaczka-point-modal-btn,
  .pp-account-shell .shop_table td .button,
  .pp-account-shell .nbd-order-upload-file .button,
  .woocommerce-message .button,
  .woocommerce-cart .actions .button,
  .woocommerce-cart .coupon .button,
  .pp-catalog .astra-shop-summary-wrap > .button,
  .pp-catalog .astra-shop-summary-wrap > .added_to_cart,
  .pp-single-product .upsells.products .astra-shop-summary-wrap > .button,
  .pp-single-product .upsells.products .astra-shop-summary-wrap > .added_to_cart
) {
  --pp-btn-height: var(--pp-button-height-sm);
  --pp-btn-padding-inline: var(--pp-button-padding-sm);
  --pp-btn-radius: var(--pp-button-radius-sm);
  --pp-btn-font-size: var(--pp-fs-sm, 13px);
}

body.pp-body :where(.pp-button--md) {
  --pp-btn-height: var(--pp-button-height-md);
  --pp-btn-padding-inline: var(--pp-button-padding-md);
}

body.pp-body :where(
  .pp-button--lg,
  .pp-calc__cta,
  .pp-cta-bottom__btn,
  .woocommerce-cart .wc-proceed-to-checkout .checkout-button,
  .woocommerce-checkout #place_order,
  .pp-sp-cta__button,
  .pp-sp-page #triggerDesign,
  .pp-sp-page #startDesign,
  .pp-sp-page #startUpload,
  .pp-sp-page #useTemplate,
  .pp-sp-page .nbdesign-button,
  .pp-single-product .nbdq-add-a-quote-button.button,
  .pp-sp-order-actions .single_add_to_cart_button,
  .pp-order-actions__primary
) {
  --pp-btn-height: var(--pp-button-height-lg);
  --pp-btn-padding-inline: var(--pp-button-padding-lg);
  --pp-btn-font-size: var(--pp-fs-xl, 16px);
}

body.pp-body :where(.pp-button--block) { width: 100%; }

/* Calculator CTA is a large action, but its layout belongs to the calculator. */
body.pp-body .pp-calc__cta {
  justify-content: space-between;
}

/* Gallery card actions remain compact and can share a row equally. */
body.pp-body .pp-tg-card__btn {
  flex: 1 1 0;
  white-space: nowrap;
}


/* --------------------------------------------------------------------------
   3b. Compatibility enforcement
   --------------------------------------------------------------------------
   Native Woo / third-party plugins ship selectors that are intentionally more
   specific than a generic theme class. These adapters still consume the SAME
   button variables; they only raise selector strength at the integration edge.
   -------------------------------------------------------------------------- */
body.pp-body .woocommerce :where(
  a.button,
  button.button,
  input.button,
  #respond input#submit,
  .woocommerce-button,
  .single_add_to_cart_button,
  .added_to_cart
),
body.pp-body.woocommerce-cart :where(.checkout-button, .actions .button, .coupon .button),
body.pp-body.woocommerce-checkout #place_order,
body.pp-body.woocommerce-account :where(.woocommerce-Button, .woocommerce .button),
body.pp-body.pp-single-product .pp-sp-page #triggerDesign,
body.pp-body.pp-single-product .pp-sp-page #startDesign,
body.pp-body.pp-single-product .pp-sp-page #startUpload,
body.pp-body.pp-single-product .pp-sp-page #useTemplate,
body.pp-body.pp-single-product .pp-sp-page .nbdesign-button,
body.pp-body.pp-single-product .pp-sp-page .nbdq-add-a-quote-button.button,
body.pp-body.woocommerce-checkout .pp-checkout .blpaczka-point-modal-btn {
  min-height: var(--pp-btn-height);
  padding-block: 0;
  padding-inline: var(--pp-btn-padding-inline);
  border: 1px solid var(--pp-btn-border);
  border-radius: var(--pp-btn-radius);
  background: var(--pp-btn-bg);
  color: var(--pp-btn-color);
  box-shadow: none;
  font-family: var(--pp-font);
  font-size: var(--pp-btn-font-size);
  font-weight: var(--pp-btn-font-weight);
  line-height: 1.1;
  letter-spacing: 0;
  text-transform: none;
  text-decoration: none;
}
body.pp-body .woocommerce :where(
  a.button, button.button, input.button, #respond input#submit, .woocommerce-button,
  .single_add_to_cart_button, .added_to_cart
):hover,
body.pp-body.woocommerce-cart :where(.checkout-button, .actions .button, .coupon .button):hover,
body.pp-body.woocommerce-checkout #place_order:hover,
body.pp-body.woocommerce-account :where(.woocommerce-Button, .woocommerce .button):hover,
body.pp-body.pp-single-product .pp-sp-page :where(#triggerDesign, #startDesign, #startUpload, #useTemplate, .nbdesign-button, .nbdq-add-a-quote-button.button):hover,
body.pp-body.woocommerce-checkout .pp-checkout .blpaczka-point-modal-btn:hover {
  border-color: var(--pp-btn-hover-border);
  background: var(--pp-btn-hover-bg);
  color: var(--pp-btn-hover-color);
}

/* CusRev's frontend stylesheet uses !important on the AJAX "show more" action.
   Keep the exception at the adapter boundary, not scattered through page CSS. */
body.pp-body :where(.cr-show-more-reviews-prd, .cr-show-more-button) {
  background: var(--pp-btn-bg) !important;
  color: var(--pp-btn-color) !important;
  border: 1px solid var(--pp-btn-border) !important;
  border-radius: var(--pp-btn-radius) !important;
  box-shadow: none !important;
}
body.pp-body :where(.cr-show-more-reviews-prd, .cr-show-more-button):hover {
  background: var(--pp-btn-hover-bg) !important;
  color: var(--pp-btn-hover-color) !important;
  border-color: var(--pp-btn-hover-border) !important;
}

/* CusRev product Q&A/review actions: plugin semantics stay intact; the theme owns
   appearance through the same variables as every other storefront action. */
body.pp-body :where(.pp-sp-info-section--cr_qna, .pp-sp-info-section--reviews) :where(
  .cr-review-form-submit, .cr-qna-ask-button, .cr-qna-ask-question,
  .cr-review-form-continue, .cr-ajax-reviews-add-review, .cr-review-form-cancel
) {
  min-height: var(--pp-btn-height);
  padding-inline: var(--pp-btn-padding-inline);
  border: 1px solid var(--pp-btn-border);
  border-radius: var(--pp-btn-radius);
  background: var(--pp-btn-bg);
  color: var(--pp-btn-color);
  font-family: var(--pp-font);
  font-size: var(--pp-btn-font-size);
  font-weight: var(--pp-btn-font-weight);
}

/* --------------------------------------------------------------------------
   4. Native Woo semantic adapters
   -------------------------------------------------------------------------- */
body.pp-body .woocommerce-cart .coupon .button {
  --pp-btn-bg: var(--pp-orange);
  --pp-btn-color: #fff;
  --pp-btn-border: var(--pp-orange);
}

/* Main purchase CTAs use the large size; utility buttons stay compact/normal. */
body.pp-body :where(
  .pp-checkout #place_order,
  .pp-cart__summary .checkout-button,
  .pp-sp-order-actions .single_add_to_cart_button
) {
  width: 100%;
}

/* Product page order CTA no longer has a separate 23px/850 local typography
   system. It is the same large action token used by checkout/calculator. */
body.pp-body .pp-sp-order-actions .single_add_to_cart_button {
  font-size: var(--pp-fs-xl, 16px);
  font-weight: 800;
  letter-spacing: 0;
  text-transform: none;
}

@media (prefers-reduced-motion: reduce) {
  body.pp-body :where(
    .pp-button,
    .pp-btn-primary,
    .pp-btn-outline-dark,
    .pp-btn-outline-white,
    .pp-btn-outline,
    .pp-btn-outline-light,
    .wp-block-button__link,
  .vz-write-form input[type="submit"],
  .vz-write-form .wpcf7-submit,
  #nbdq-form-popup .pp-quote-submit,
  .vz-btn,
    .vz-button,
    .vz-contact-cta__btn,
    .pp-404__btn,
    .pp-op__btn,
    .pp-raq-btn,
    .pp-ma-btn,
    .pp-tg-btn,
    .pp-tg-card__btn,
    .pp-ai-card__btn,
    .pp-sp-cta__button,
    .pp-dz-btn-danger,
    .pp-404-search button,
    .pp-cat-hero__search button,
    .pp-tg-hero__search-btn,
    .cr-show-more-reviews-prd,
    .cr-show-more-button,
    .pp-sp-mobile-order button,
    .pp-sp-page #useTemplate,
    .pp-sp-review-summary > button,
    .pp-sp-info-section--cr_qna .cr-review-form-submit,
    .pp-sp-info-section--cr_qna .cr-qna-ask-button,
    .pp-sp-info-section--cr_qna .cr-qna-ask-question,
    .pp-sp-info-section--reviews .cr-review-form-continue,
    .pp-sp-info-section--reviews .cr-review-form-submit,
    .pp-sp-info-section--reviews .cr-ajax-reviews-add-review,
    .pp-sp-info-section--reviews .cr-review-form-cancel,
    .pp-cart-item__design .nbd-edit-design.button,
    .pp-cart-item__design .nbd-upload-design.button,
    .pp-cart-item__design .nbo-edit-option-cart,
    .pp-cart__summary .shipping-calculator-form button[name="calc_shipping"],
    .pp-co-mobile button,
    .pp-checkout .blpaczka-point-modal-btn,
    .pp-single-product .nbdq-add-a-quote-button.button,
    .pp-order-actions__primary,
    .pp-order-actions__secondary,
    .woocommerce a.button,
    .woocommerce button.button,
    .woocommerce input.button,
    .woocommerce .single_add_to_cart_button,
    .woocommerce-cart .checkout-button,
    .woocommerce-checkout #place_order
  ) {
    transition: none;
  }
}

/* Attached coupon group: composition-specific corners, still using the shared size/palette. */
body.pp-body .pp-cart__actions .coupon .button {
  border-radius: 0 var(--pp-button-radius-sm) var(--pp-button-radius-sm) 0;
}

/* --------------------------------------------------------------------------
   5. Typography baseline + WooCommerce commerce-edge hardening
   --------------------------------------------------------------------------
   `pp-body` is the canonical storefront shell. Native form controls do not
   consistently inherit the body font across browsers/themes/plugins, so lock
   only the font family here without changing the appearance of micro-controls.
   Full action-button appearance continues to be owned by the contract above.
   -------------------------------------------------------------------------- */
body.pp-body :where(
  button,
  input[type="button"],
  input[type="submit"],
  input[type="reset"],
  a.button
) {
  font-family: var(--pp-font);
}

/* Third-party buttons sometimes put their own font on a nested span/strong.
   The integration edge must not be able to create a second typography system. */
body.pp-body :where(
  .pp-button,
  .pp-btn-primary,
  .pp-btn-outline-dark,
  .pp-btn-outline-white,
  .pp-btn-outline,
  .pp-btn-outline-light,
  .wp-block-button__link,
  .vz-write-form input[type="submit"],
  .vz-write-form .wpcf7-submit,
  #nbdq-form-popup .pp-quote-submit,
  .vz-btn,
  .vz-button,
  .pp-calc__cta,
  .pp-co-mobile button,
  .woocommerce a.button,
  .woocommerce button.button,
  .woocommerce input.button,
  .woocommerce .woocommerce-button,
  .woocommerce .single_add_to_cart_button,
  .woocommerce .added_to_cart,
  .woocommerce-cart .checkout-button,
  .woocommerce-checkout #place_order
) :where(span, strong, b, small) {
  font-family: inherit !important;
}

/* WooCommerce/plugin styles intentionally use high-specificity `.button.alt`,
   disabled and checkout selectors. At this adapter boundary `!important` is
   deliberate: variables still come from the same button contract; only foreign
   presentation is prevented from winning by specificity. */
body.pp-body.woocommerce-cart .woocommerce :where(
  a.button,
  button.button,
  input.button
),
body.pp-body.woocommerce-checkout .woocommerce :where(
  a.button,
  button.button,
  input.button,
  .woocommerce-button
),
body.pp-body.woocommerce-checkout .pp-checkout .blpaczka-point-modal-btn,
body.pp-body.woocommerce-checkout .pp-co-mobile button {
  font-family: var(--pp-font) !important;
  font-weight: var(--pp-btn-font-weight, 800) !important;
  letter-spacing: 0 !important;
  text-transform: none !important;
}

/* Primary commerce actions: one PIUROPRINT orange palette regardless of Woo's
   `.alt`, payment/shipping plugin skins or disabled-state background rules. */
body.pp-body.woocommerce-cart .woocommerce :where(
  .wc-proceed-to-checkout .checkout-button,
  .coupon button.button[name="apply_coupon"]
),
body.pp-body.woocommerce-checkout .woocommerce :where(
  #place_order,
  form.checkout_coupon button.button,
  form.woocommerce-form-login button.button,
  .woocommerce-form-coupon button.button,
  .woocommerce-form-login__submit
),
body.pp-body.woocommerce-checkout .pp-checkout .blpaczka-point-modal-btn,
body.pp-body.woocommerce-checkout .pp-co-mobile button {
  --pp-btn-bg: var(--pp-orange);
  --pp-btn-color: #fff;
  --pp-btn-border: var(--pp-orange);
  --pp-btn-hover-bg: var(--pp-orange-hover);
  --pp-btn-hover-color: #fff;
  --pp-btn-hover-border: var(--pp-orange-hover);
  background: var(--pp-btn-bg) !important;
  color: var(--pp-btn-color) !important;
  border-color: var(--pp-btn-border) !important;
}

body.pp-body.woocommerce-cart .woocommerce :where(
  .wc-proceed-to-checkout .checkout-button,
  .coupon button.button[name="apply_coupon"]
):hover,
body.pp-body.woocommerce-checkout .woocommerce :where(
  #place_order,
  form.checkout_coupon button.button,
  form.woocommerce-form-login button.button,
  .woocommerce-form-coupon button.button,
  .woocommerce-form-login__submit
):hover,
body.pp-body.woocommerce-checkout .pp-checkout .blpaczka-point-modal-btn:hover,
body.pp-body.woocommerce-checkout .pp-co-mobile button:hover {
  background: var(--pp-btn-hover-bg) !important;
  color: var(--pp-btn-hover-color) !important;
  border-color: var(--pp-btn-hover-border) !important;
}

/* Utility commerce actions are the same orange design system, but use the
   official outline variant instead of random grey/blue plugin palettes. */
body.pp-body.woocommerce-cart .woocommerce :where(
  .actions button.button[name="update_cart"],
  .shipping-calculator-form button.button[name="calc_shipping"],
  .shipping-calculator-form button[name="calc_shipping"]
) {
  --pp-btn-bg: transparent;
  --pp-btn-color: var(--pp-orange);
  --pp-btn-border: var(--pp-orange);
  --pp-btn-hover-bg: var(--pp-orange-light);
  --pp-btn-hover-color: var(--pp-orange-hover);
  --pp-btn-hover-border: var(--pp-orange-hover);
  background: var(--pp-btn-bg) !important;
  color: var(--pp-btn-color) !important;
  border-color: var(--pp-btn-border) !important;
}

body.pp-body.woocommerce-cart .woocommerce :where(
  .actions button.button[name="update_cart"],
  .shipping-calculator-form button.button[name="calc_shipping"],
  .shipping-calculator-form button[name="calc_shipping"]
):hover:not(:disabled):not([disabled]) {
  background: var(--pp-btn-hover-bg) !important;
  color: var(--pp-btn-hover-color) !important;
  border-color: var(--pp-btn-hover-border) !important;
}

/* Disabled remains the same semantic variant, only visibly disabled. This
   prevents WooCommerce from switching it back to its stock grey button skin. */
body.pp-body.woocommerce-cart .woocommerce :where(
  button.button,
  input.button,
  .checkout-button
):is(:disabled, [disabled], .disabled),
body.pp-body.woocommerce-checkout .woocommerce :where(
  button.button,
  input.button,
  #place_order
):is(:disabled, [disabled], .disabled),
body.pp-body.woocommerce-checkout .pp-checkout .blpaczka-point-modal-btn:is(:disabled, [disabled], .disabled),
body.pp-body.woocommerce-checkout .pp-co-mobile button:is(:disabled, [disabled], .disabled) {
  opacity: .55 !important;
  filter: none !important;
  box-shadow: none !important;
}

/* --------------------------------------------------------------------------
   5b. Woo proceed-to-checkout anchor — exact semantic contract
   --------------------------------------------------------------------------
   The customized cart renders Woo's proceed-to-checkout template in multiple
   places (priority strip, summary and mobile bar). Some of those calls are not
   wrapped by the stock `.woocommerce` / `.wc-proceed-to-checkout` structure.
   Therefore the machine-stable Woo class contract itself is the integration
   boundary: `a.checkout-button.button.alt.wc-forward`.
   -------------------------------------------------------------------------- */
body.pp-body.woocommerce-cart a.checkout-button.button.alt.wc-forward {
  --pp-btn-height: var(--pp-button-height-lg);
  --pp-btn-padding-inline: var(--pp-button-padding-lg);
  --pp-btn-radius: var(--pp-button-radius);
  --pp-btn-font-size: var(--pp-fs-xl, 16px);
  --pp-btn-font-weight: 800;
  --pp-btn-bg: var(--pp-orange);
  --pp-btn-color: #fff;
  --pp-btn-border: var(--pp-orange);
  --pp-btn-hover-bg: var(--pp-orange-hover);
  --pp-btn-hover-color: #fff;
  --pp-btn-hover-border: var(--pp-orange-hover);

  appearance: none !important;
  -webkit-appearance: none !important;
  display: inline-flex !important;
  min-height: var(--pp-btn-height) !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 8px !important;
  padding: 0 var(--pp-btn-padding-inline) !important;
  border: 1px solid var(--pp-btn-border) !important;
  border-radius: var(--pp-btn-radius) !important;
  background: var(--pp-btn-bg) !important;
  color: var(--pp-btn-color) !important;
  box-shadow: none !important;
  font-family: var(--pp-font) !important;
  font-size: var(--pp-btn-font-size) !important;
  font-weight: var(--pp-btn-font-weight) !important;
  line-height: 1.1 !important;
  letter-spacing: 0 !important;
  text-align: center !important;
  text-decoration: none !important;
  text-transform: none !important;
}

body.pp-body.woocommerce-cart a.checkout-button.button.alt.wc-forward:hover {
  border-color: var(--pp-btn-hover-border) !important;
  background: var(--pp-btn-hover-bg) !important;
  color: var(--pp-btn-hover-color) !important;
  box-shadow: none !important;
  text-decoration: none !important;
}

body.pp-body.woocommerce-cart a.checkout-button.button.alt.wc-forward:focus-visible {
  outline: 0 !important;
  box-shadow: var(--pp-ui-focus) !important;
}

body.pp-body.woocommerce-cart a.checkout-button.button.alt.wc-forward[aria-disabled="true"] {
  pointer-events: none !important;
  opacity: .55 !important;
}

/* ==========================================================================
   Canonical semantic button API
   --------------------------------------------------------------------------
   Every theme-owned action declares `.pp-button` + an explicit semantic
   variant. This block is intentionally NOT `:where()`: semantic classes are
   the authoritative owner of appearance inside the child theme. Page CSS may
   still control composition (width/grid/margin), but cannot accidentally beat
   the design contract by having one extra wrapper class.

   No !important is needed here because buttons.css is loaded last. Important
   declarations remain only in explicit Woo/plugin integration adapters below.
   ========================================================================== */
body.pp-body .pp-button.pp-button {
  /* Size tokens intentionally use property fallbacks below. This lets legacy
     compatibility adapters set a compact/large size without having to beat
     the semantic selector. Explicit pp-button--sm/md/lg remains authoritative. */
  --pp-btn-font-weight: 800;
  --pp-btn-bg: var(--pp-orange);
  --pp-btn-color: #fff;
  --pp-btn-border: var(--pp-orange);
  --pp-btn-hover-bg: var(--pp-orange-hover);
  --pp-btn-hover-color: #fff;
  --pp-btn-hover-border: var(--pp-orange-hover);

  appearance: none;
  -webkit-appearance: none;
  display: inline-flex;
  min-height: var(--pp-btn-height, var(--pp-button-height-md));
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 0 var(--pp-btn-padding-inline, var(--pp-button-padding-md));
  border: 1px solid var(--pp-btn-border);
  border-radius: var(--pp-btn-radius, var(--pp-button-radius));
  background: var(--pp-btn-bg);
  color: var(--pp-btn-color);
  box-shadow: none;
  font-family: var(--pp-font);
  font-size: var(--pp-btn-font-size, var(--pp-button-font-size));
  font-weight: var(--pp-btn-font-weight);
  line-height: 1.1;
  letter-spacing: 0;
  text-align: center;
  text-decoration: none;
  text-transform: none;
  cursor: pointer;
}
body.pp-body .pp-button.pp-button--primary {
  --pp-btn-bg: var(--pp-orange);
  --pp-btn-color: #fff;
  --pp-btn-border: var(--pp-orange);
  --pp-btn-hover-bg: var(--pp-orange-hover);
  --pp-btn-hover-color: #fff;
  --pp-btn-hover-border: var(--pp-orange-hover);
}
body.pp-body .pp-button.pp-button--outline {
  --pp-btn-bg: transparent;
  --pp-btn-color: var(--pp-orange);
  --pp-btn-border: var(--pp-orange);
  --pp-btn-hover-bg: var(--pp-orange-light);
  --pp-btn-hover-color: var(--pp-orange-hover);
  --pp-btn-hover-border: var(--pp-orange);
}
body.pp-body .pp-button.pp-button--ghost {
  --pp-btn-bg: #fff;
  --pp-btn-color: var(--pp-text);
  --pp-btn-border: var(--pp-border);
  --pp-btn-hover-bg: var(--pp-orange-light);
  --pp-btn-hover-color: var(--pp-orange-hover);
  --pp-btn-hover-border: #fdba74;
}
body.pp-body .pp-button.pp-button--on-dark {
  --pp-btn-bg: transparent;
  --pp-btn-color: #fff;
  --pp-btn-border: rgba(255,255,255,.35);
  --pp-btn-hover-bg: rgba(255,255,255,.10);
  --pp-btn-hover-color: #fff;
  --pp-btn-hover-border: rgba(255,255,255,.55);
}
body.pp-body .pp-button.pp-button--inverse {
  --pp-btn-bg: #fff;
  --pp-btn-color: var(--pp-orange);
  --pp-btn-border: #fff;
  --pp-btn-hover-bg: var(--pp-dark);
  --pp-btn-hover-color: #fff;
  --pp-btn-hover-border: var(--pp-dark);
}
body.pp-body .pp-button.pp-button--danger {
  --pp-btn-bg: #d92d20;
  --pp-btn-color: #fff;
  --pp-btn-border: #d92d20;
  --pp-btn-hover-bg: #b42318;
  --pp-btn-hover-color: #fff;
  --pp-btn-hover-border: #b42318;
}
body.pp-body .pp-button.pp-button--text {
  --pp-btn-height: 32px;
  --pp-btn-padding-inline: 0px;
  --pp-btn-radius: 0px;
  --pp-btn-font-size: var(--pp-fs-xs, 12px);
  --pp-btn-bg: transparent;
  --pp-btn-color: var(--pp-text-muted, #64748b);
  --pp-btn-border: transparent;
  --pp-btn-hover-bg: transparent;
  --pp-btn-hover-color: var(--pp-orange);
  --pp-btn-hover-border: transparent;
}
body.pp-body .pp-button.pp-button--text:hover { text-decoration: none; }
body.pp-body .pp-button.pp-button--text > svg { width: 12px; height: 12px; }
body.pp-body .pp-button.pp-button--sm {
  --pp-btn-height: var(--pp-button-height-sm);
  --pp-btn-padding-inline: var(--pp-button-padding-sm);
  --pp-btn-radius: var(--pp-button-radius-sm);
  --pp-btn-font-size: var(--pp-fs-sm, 13px);
}
body.pp-body .pp-button.pp-button--md {
  --pp-btn-height: var(--pp-button-height-md);
  --pp-btn-padding-inline: var(--pp-button-padding-md);
}
body.pp-body .pp-button.pp-button--lg {
  --pp-btn-height: var(--pp-button-height-lg);
  --pp-btn-padding-inline: var(--pp-button-padding-lg);
  --pp-btn-font-size: var(--pp-fs-xl, 16px);
}
body.pp-body .pp-button.pp-button--block { width: 100%; }
body.pp-body .pp-button.pp-button:hover {
  border-color: var(--pp-btn-hover-border);
  background: var(--pp-btn-hover-bg);
  color: var(--pp-btn-hover-color);
  box-shadow: none;
  text-decoration: none;
}
body.pp-body .pp-button.pp-button:focus-visible {
  outline: 0;
  box-shadow: var(--pp-ui-focus);
}
body.pp-body .pp-button.pp-button:active { transform: translateY(1px); }
body.pp-body .pp-button.pp-button:is(:disabled, [disabled], [aria-disabled="true"], .disabled, .is-disabled, .nbo-disabled, .nbdesigner_disable) {
  pointer-events: none;
  cursor: not-allowed;
  opacity: .55;
  transform: none;
}
body.pp-body .pp-button.pp-button > svg {
  width: 18px;
  height: 18px;
  flex: 0 0 auto;
}

/* Theme/content integrations that cannot receive semantic classes directly. */
body.pp-body .wp-block-button .wp-block-button__link,
body.pp-body .vz-write-form input[type="submit"],
body.pp-body .vz-write-form .wpcf7-submit,
body.pp-body #nbdq-form-popup .pp-quote-submit {
  --pp-btn-height: var(--pp-button-height-md);
  --pp-btn-padding-inline: var(--pp-button-padding-md);
  --pp-btn-radius: var(--pp-button-radius);
  --pp-btn-font-size: var(--pp-button-font-size);
  --pp-btn-font-weight: 800;
  --pp-btn-bg: var(--pp-orange);
  --pp-btn-color: #fff;
  --pp-btn-border: var(--pp-orange);
  --pp-btn-hover-bg: var(--pp-orange-hover);
  --pp-btn-hover-color: #fff;
  --pp-btn-hover-border: var(--pp-orange-hover);
  display: inline-flex;
  min-height: var(--pp-btn-height);
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 0 var(--pp-btn-padding-inline);
  border: 1px solid var(--pp-btn-border);
  border-radius: var(--pp-btn-radius);
  background: var(--pp-btn-bg);
  color: var(--pp-btn-color);
  box-shadow: none;
  font-family: var(--pp-font);
  font-size: var(--pp-btn-font-size);
  font-weight: var(--pp-btn-font-weight);
  line-height: 1.1;
  letter-spacing: 0;
  text-decoration: none;
  text-transform: none;
}
body.pp-body .wp-block-button.is-style-outline .wp-block-button__link {
  --pp-btn-bg: transparent;
  --pp-btn-color: var(--pp-orange);
  --pp-btn-border: var(--pp-orange);
  --pp-btn-hover-bg: var(--pp-orange-light);
  --pp-btn-hover-color: var(--pp-orange-hover);
  --pp-btn-hover-border: var(--pp-orange);
}
body.pp-body .wp-block-button .wp-block-button__link:hover,
body.pp-body .vz-write-form input[type="submit"]:hover,
body.pp-body .vz-write-form .wpcf7-submit:hover,
body.pp-body #nbdq-form-popup .pp-quote-submit:hover {
  border-color: var(--pp-btn-hover-border);
  background: var(--pp-btn-hover-bg);
  color: var(--pp-btn-hover-color);
}

/* Product purchase actions: exact Woo/Printcart bridge.
   Both controls have the same geometry/typography; only the semantic variant
   differs. PrintConstructor no longer injects its optional hide-cart skin on
   this storefront; the remaining strength here is only the Woo .button bridge. */
body.pp-body.pp-single-product .pp-sp-page .pp-sp-order-actions > button.single_add_to_cart_button.button.pp-button--primary,
body.pp-body.pp-single-product .pp-sp-page .pp-sp-order-actions > .nbdq-add-a-quote > .nbdq-add-a-quote-button.button.pp-button--outline {
  display: inline-flex !important;
  width: 100% !important;
  min-width: 0 !important;
  min-height: var(--pp-button-height-lg) !important;
  height: var(--pp-button-height-lg) !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 10px !important;
  margin: 0 !important;
  padding: 0 var(--pp-button-padding-lg) !important;
  border-width: 1px !important;
  border-style: solid !important;
  border-radius: var(--pp-button-radius) !important;
  font-family: var(--pp-font) !important;
  font-size: var(--pp-fs-xl, 16px) !important;
  font-weight: 800 !important;
  line-height: 1.1 !important;
  letter-spacing: 0 !important;
  text-transform: none !important;
  float: none !important;
  box-sizing: border-box !important;
}
body.pp-body.pp-single-product .pp-sp-page .pp-sp-order-actions > button.single_add_to_cart_button.button.pp-button--primary {
  border-color: var(--pp-orange) !important;
  background: var(--pp-orange) !important;
  background-color: var(--pp-orange) !important;
  color: #fff !important;
}
body.pp-body.pp-single-product .pp-sp-page .pp-sp-order-actions > button.single_add_to_cart_button.button.pp-button--primary:hover {
  border-color: var(--pp-orange-hover) !important;
  background: var(--pp-orange-hover) !important;
  background-color: var(--pp-orange-hover) !important;
  color: #fff !important;
}
body.pp-body.pp-single-product .pp-sp-page .pp-sp-order-actions > .nbdq-add-a-quote > .nbdq-add-a-quote-button.button.pp-button--outline {
  border-color: var(--pp-orange) !important;
  background: transparent !important;
  background-color: transparent !important;
  color: var(--pp-orange) !important;
}
body.pp-body.pp-single-product .pp-sp-page .pp-sp-order-actions > .nbdq-add-a-quote > .nbdq-add-a-quote-button.button.pp-button--outline:hover {
  border-color: var(--pp-orange) !important;
  background: var(--pp-orange-light) !important;
  background-color: var(--pp-orange-light) !important;
  color: var(--pp-orange-hover) !important;
}
body.pp-body.pp-single-product .pp-sp-page .pp-sp-order-actions :is(
  button.single_add_to_cart_button.button.pp-button--primary,
  .nbdq-add-a-quote-button.button.pp-button--outline
) > span {
  display: grid !important;
  width: 22px !important;
  height: 22px !important;
  flex: 0 0 22px !important;
  place-items: center !important;
  margin: 0 !important;
  padding: 0 !important;
  line-height: 0 !important;
}
body.pp-body.pp-single-product .pp-sp-page .pp-sp-order-actions :is(
  button.single_add_to_cart_button.button.pp-button--primary,
  .nbdq-add-a-quote-button.button.pp-button--outline
) > span > svg {
  display: block !important;
  width: 18px !important;
  height: 18px !important;
  margin: 0 !important;
}
body.pp-body.pp-single-product .pp-sp-page .pp-sp-order-actions :is(
  button.single_add_to_cart_button.button.pp-button--primary,
  .nbdq-add-a-quote-button.button.pp-button--outline
) > b {
  min-width: 0 !important;
  margin: 0 !important;
  color: inherit !important;
  font: inherit !important;
  line-height: 1.1 !important;
}


/* --------------------------------------------------------------------------
   8. PrintCart controls rendered inside Woo cart items
   --------------------------------------------------------------------------
   These anchors come from PrintCart hooks and cannot receive pp-button classes
   from the theme template. Keep the bridge exact: never style every anchor in
   `.pp-cart-item__design`, because the plugin also renders a local `.remove`
   control and preview links there. */
body.pp-body.woocommerce-cart .pp-cart-item__design .nbd-edit-design.button,
body.pp-body.woocommerce-cart .pp-cart-item__design .nbd-upload-design.button,
body.pp-body.woocommerce-cart .pp-cart-item__design .nbo-edit-option-cart {
  --pp-btn-height: var(--pp-button-height-sm);
  --pp-btn-padding-inline: var(--pp-button-padding-sm);
  --pp-btn-radius: var(--pp-button-radius-sm);
  --pp-btn-font-size: var(--pp-fs-sm, 13px);
  --pp-btn-font-weight: 800;
  display: inline-flex;
  box-sizing: border-box;
  height: var(--pp-btn-height);
  min-height: var(--pp-btn-height);
  align-items: center;
  justify-content: center;
  gap: 7px;
  margin: 0;
  padding: 0 var(--pp-btn-padding-inline) !important;
  border: 1px solid var(--pp-btn-border);
  border-radius: var(--pp-btn-radius);
  background: var(--pp-btn-bg);
  color: var(--pp-btn-color);
  font-family: var(--pp-font);
  font-size: var(--pp-btn-font-size);
  font-weight: var(--pp-btn-font-weight);
  line-height: 1.1;
  letter-spacing: 0;
  text-decoration: none;
  text-transform: none;
  box-shadow: none;
}
/* PrintCart places the primary action inside its own design block. Keep that
   nested link on the same fixed control height as its sibling actions. */
body.pp-body.woocommerce-cart .pp-cart-item__design .nbd-custom-dsign > .nbd-edit-design.button {
  height: var(--pp-btn-height);
  min-height: var(--pp-btn-height);
}
body.pp-body.woocommerce-cart .pp-cart-item__design .nbd-edit-design.button {
  --pp-btn-bg: var(--pp-orange);
  --pp-btn-color: #fff;
  --pp-btn-border: var(--pp-orange);
  --pp-btn-hover-bg: var(--pp-orange-hover);
  --pp-btn-hover-color: #fff;
  --pp-btn-hover-border: var(--pp-orange-hover);
}
body.pp-body.woocommerce-cart .pp-cart-item__design .nbd-upload-design.button {
  --pp-btn-bg: #fff;
  --pp-btn-color: var(--pp-orange);
  --pp-btn-border: var(--pp-orange);
  --pp-btn-hover-bg: var(--pp-orange-light);
  --pp-btn-hover-color: var(--pp-orange-hover);
  --pp-btn-hover-border: var(--pp-orange);
}
body.pp-body.woocommerce-cart .pp-cart-item__design .nbo-edit-option-cart {
  --pp-btn-bg: transparent;
  --pp-btn-color: var(--pp-text-2);
  --pp-btn-border: var(--pp-border);
  --pp-btn-hover-bg: var(--pp-product-card-bg, #f4f5f7);
  --pp-btn-hover-color: var(--pp-orange);
  --pp-btn-hover-border: #fdba74;
}
body.pp-body.woocommerce-cart .pp-cart-item__design :is(
  .nbd-edit-design.button,
  .nbd-upload-design.button,
  .nbo-edit-option-cart
):hover {
  border-color: var(--pp-btn-hover-border);
  background: var(--pp-btn-hover-bg);
  color: var(--pp-btn-hover-color);
  text-decoration: none;
}
body.pp-body.woocommerce-cart .pp-cart-item__design :is(
  .nbd-edit-design.button,
  .nbd-upload-design.button,
  .nbo-edit-option-cart
):focus-visible {
  outline: 0;
  box-shadow: var(--pp-ui-focus);
}
