/* ==========================================================================
   Buttons V2 — Phase 19.0 Global CTA System
   Single shared interaction pattern for every reusable primary / secondary CTA.
   ========================================================================== */

/* --- Shared transition --- */

:is(
  .hero-v2__cta.hero-v2__cta--primary,
  .hero-v2__cta.hero-v2__cta--secondary,
  .about-v2__cta.about-v2__cta--primary,
  .why-choose-v2__cta.why-choose-v2__cta--primary,
  .blog-v2__cta.blog-v2__cta--primary,
  .contact-v2__submit,
  .contact-v2__btn.contact-v2__btn--primary,
  .contact-v2__btn.contact-v2__btn--secondary,
  .drawer-v2__cta,
  .cookie-consent-v2__button,
  .cookie-consent-v2__link,
  .products-v2 .products-v2__cta.products-v2__cta--primary,
  .industry-button.industry-button--primary,
  .industry-button.industry-button--secondary,
  .app-button.app-button--primary,
  .app-button.app-button--secondary,
  .article-v2 a.article-cta-v2__button.article-cta-v2__button--primary,
  .article-v2 a.article-cta-v2__button.article-cta-v2__button--secondary,
  .range-hero__cta.range-hero__cta--primary,
  .range-hero__cta.range-hero__cta--secondary,
  .range-card__cta,
  .pdp-hero__cta.pdp-hero__cta--primary,
  .pdp-hero__cta.pdp-hero__cta--secondary,
  .pdp-oem__cta,
  .kc-contact__button,
  .kc-archive__empty-btn,
  .kc-archive__empty-link,
  .contact-location-v2__button,
  .legal-rail-v2__button,
  .legal-support-v2__button
) {
  transition: var(--btn-transition);
}

/* --- Primary — default --- */

:is(
  .hero-v2__cta.hero-v2__cta--primary,
  .about-v2__cta.about-v2__cta--primary,
  .why-choose-v2__cta.why-choose-v2__cta--primary,
  .blog-v2__cta.blog-v2__cta--primary,
  .contact-v2__submit,
  .contact-v2__btn.contact-v2__btn--primary,
  .drawer-v2__cta,
  .cookie-consent-v2__button,
  .products-v2 .products-v2__cta.products-v2__cta--primary,
  .industry-button.industry-button--primary,
  .app-button.app-button--primary,
  .article-v2 a.article-cta-v2__button.article-cta-v2__button--primary,
  .range-hero__cta.range-hero__cta--primary,
  .range-card__cta,
  .pdp-hero__cta.pdp-hero__cta--primary,
  .pdp-oem__cta,
  .kc-contact__button,
  .kc-archive__empty-btn,
  .contact-location-v2__button,
  .legal-rail-v2__button,
  .legal-support-v2__button
):is(:link, :visited, button, [type="submit"]) {
  background-color: var(--btn-primary-bg);
  color: var(--btn-primary-text);
  border-color: var(--btn-primary-border);
}

/* --- Primary — hover & focus --- */

:is(
  .hero-v2__cta.hero-v2__cta--primary,
  .about-v2__cta.about-v2__cta--primary,
  .why-choose-v2__cta.why-choose-v2__cta--primary,
  .blog-v2__cta.blog-v2__cta--primary,
  .contact-v2__submit:not(:disabled),
  .contact-v2__btn.contact-v2__btn--primary,
  .drawer-v2__cta,
  .cookie-consent-v2__button,
  .products-v2 .products-v2__cta.products-v2__cta--primary,
  .industry-button.industry-button--primary,
  .app-button.app-button--primary,
  .article-v2 a.article-cta-v2__button.article-cta-v2__button--primary,
  .range-hero__cta.range-hero__cta--primary,
  .range-card__cta,
  .pdp-hero__cta.pdp-hero__cta--primary,
  .pdp-oem__cta,
  .kc-contact__button,
  .kc-archive__empty-btn,
  .contact-location-v2__button,
  .legal-rail-v2__button,
  .legal-support-v2__button
):is(:hover, :focus-visible) {
  background-color: var(--btn-primary-hover-bg);
  color: var(--btn-primary-text);
  border-color: var(--btn-primary-hover-border);
  transform: translateY(-2px);
  box-shadow: var(--btn-primary-hover-shadow);
}

/* --- Primary — active (pressed) --- */

:is(
  .hero-v2__cta.hero-v2__cta--primary,
  .about-v2__cta.about-v2__cta--primary,
  .why-choose-v2__cta.why-choose-v2__cta--primary,
  .blog-v2__cta.blog-v2__cta--primary,
  .contact-v2__submit:not(:disabled),
  .contact-v2__btn.contact-v2__btn--primary,
  .drawer-v2__cta,
  .cookie-consent-v2__button,
  .products-v2 .products-v2__cta.products-v2__cta--primary,
  .industry-button.industry-button--primary,
  .app-button.app-button--primary,
  .article-v2 a.article-cta-v2__button.article-cta-v2__button--primary,
  .range-hero__cta.range-hero__cta--primary,
  .range-card__cta,
  .pdp-hero__cta.pdp-hero__cta--primary,
  .pdp-oem__cta,
  .kc-contact__button,
  .kc-archive__empty-btn,
  .contact-location-v2__button,
  .legal-rail-v2__button,
  .legal-support-v2__button
):active {
  background-color: var(--btn-primary-active-bg);
  color: var(--btn-primary-text);
  border-color: var(--btn-primary-active-border);
  transform: translateY(0);
  box-shadow: var(--btn-primary-shadow);
}

/* --- Primary — keyboard focus ring --- */

:is(
  .hero-v2__cta.hero-v2__cta--primary,
  .about-v2__cta.about-v2__cta--primary,
  .why-choose-v2__cta.why-choose-v2__cta--primary,
  .blog-v2__cta.blog-v2__cta--primary,
  .contact-v2__submit:not(:disabled),
  .contact-v2__btn.contact-v2__btn--primary,
  .drawer-v2__cta,
  .cookie-consent-v2__button,
  .products-v2 .products-v2__cta.products-v2__cta--primary,
  .industry-button.industry-button--primary,
  .app-button.app-button--primary,
  .article-v2 a.article-cta-v2__button.article-cta-v2__button--primary,
  .range-hero__cta.range-hero__cta--primary,
  .range-card__cta,
  .pdp-hero__cta.pdp-hero__cta--primary,
  .pdp-oem__cta,
  .kc-contact__button,
  .kc-archive__empty-btn,
  .contact-location-v2__button,
  .legal-rail-v2__button,
  .legal-support-v2__button
):focus-visible {
  outline: 2px solid #F37F0C;
  outline-offset: 3px;
}

/* Legal buttons carry !important on colour — preserve primary hover fill */
.legal-rail-v2__button:is(:hover, :focus-visible, :active),
.legal-support-v2__button:is(:hover, :focus-visible, :active) {
  color: var(--btn-primary-text) !important;
  background-color: var(--btn-primary-hover-bg) !important;
  border-color: var(--btn-primary-hover-border) !important;
}

/* --- Secondary — default --- */

:is(
  .hero-v2__cta.hero-v2__cta--secondary,
  .contact-v2__btn.contact-v2__btn--secondary,
  .cookie-consent-v2__link,
  .industry-button.industry-button--secondary,
  .app-button.app-button--secondary,
  .article-v2 a.article-cta-v2__button.article-cta-v2__button--secondary,
  .range-hero__cta.range-hero__cta--secondary,
  .pdp-hero__cta.pdp-hero__cta--secondary,
  .kc-archive__empty-link
):is(:link, :visited, button) {
  background-color: var(--btn-secondary-bg);
  color: var(--btn-secondary-text);
  border-color: var(--btn-secondary-border);
}

/* --- Secondary — hover & focus --- */

:is(
  .hero-v2__cta.hero-v2__cta--secondary,
  .contact-v2__btn.contact-v2__btn--secondary,
  .cookie-consent-v2__link,
  .industry-button.industry-button--secondary,
  .app-button.app-button--secondary,
  .article-v2 a.article-cta-v2__button.article-cta-v2__button--secondary,
  .range-hero__cta.range-hero__cta--secondary,
  .pdp-hero__cta.pdp-hero__cta--secondary,
  .kc-archive__empty-link
):is(:hover, :focus-visible) {
  background-color: var(--btn-secondary-hover-bg);
  color: var(--btn-secondary-hover-text);
  border-color: var(--btn-secondary-hover-border);
  transform: none;
  box-shadow: none;
}

/* --- Secondary — active (pressed) --- */

:is(
  .hero-v2__cta.hero-v2__cta--secondary,
  .contact-v2__btn.contact-v2__btn--secondary,
  .cookie-consent-v2__link,
  .industry-button.industry-button--secondary,
  .app-button.app-button--secondary,
  .article-v2 a.article-cta-v2__button.article-cta-v2__button--secondary,
  .range-hero__cta.range-hero__cta--secondary,
  .pdp-hero__cta.pdp-hero__cta--secondary,
  .kc-archive__empty-link
):active {
  background-color: var(--btn-secondary-hover-bg);
  color: var(--btn-secondary-hover-text);
  border-color: var(--btn-secondary-hover-border);
  transform: scale(0.98);
}

/* --- Secondary — keyboard focus ring --- */

:is(
  .hero-v2__cta.hero-v2__cta--secondary,
  .contact-v2__btn.contact-v2__btn--secondary,
  .cookie-consent-v2__link,
  .industry-button.industry-button--secondary,
  .app-button.app-button--secondary,
  .article-v2 a.article-cta-v2__button.article-cta-v2__button--secondary,
  .range-hero__cta.range-hero__cta--secondary,
  .pdp-hero__cta.pdp-hero__cta--secondary,
  .kc-archive__empty-link
):focus-visible {
  outline: 2px solid #174B71;
  outline-offset: 3px;
}

/* --- Reduced motion --- */

@media (prefers-reduced-motion: reduce) {
  :is(
    .hero-v2__cta.hero-v2__cta--primary,
    .hero-v2__cta.hero-v2__cta--secondary,
    .about-v2__cta.about-v2__cta--primary,
    .why-choose-v2__cta.why-choose-v2__cta--primary,
    .blog-v2__cta.blog-v2__cta--primary,
    .contact-v2__submit,
    .contact-v2__btn.contact-v2__btn--primary,
    .contact-v2__btn.contact-v2__btn--secondary,
    .drawer-v2__cta,
    .cookie-consent-v2__button,
    .cookie-consent-v2__link,
    .products-v2 .products-v2__cta.products-v2__cta--primary,
    .industry-button.industry-button--primary,
    .industry-button.industry-button--secondary,
    .app-button.app-button--primary,
    .app-button.app-button--secondary,
    .article-v2 a.article-cta-v2__button.article-cta-v2__button--primary,
    .article-v2 a.article-cta-v2__button.article-cta-v2__button--secondary,
    .range-hero__cta.range-hero__cta--primary,
    .range-hero__cta.range-hero__cta--secondary,
    .range-card__cta,
    .pdp-hero__cta.pdp-hero__cta--primary,
    .pdp-hero__cta.pdp-hero__cta--secondary,
    .pdp-oem__cta,
    .kc-contact__button,
    .kc-archive__empty-btn,
    .kc-archive__empty-link,
    .contact-location-v2__button,
    .legal-rail-v2__button,
    .legal-support-v2__button
  ):is(:hover, :focus-visible, :active) {
    transform: none;
  }
}
