/*
 * Stable button hit areas. Deliberately enumerate CTA controls, not all links,
 * navigation, cards, reveal containers or their decorative descendants.
 * The sticky ID in :is gives this policy sufficient specificity to beat legacy
 * template !important rules, including the header and final-CTA cascade.
 * Only interaction transforms are reset: unrelated entrance animations survive.
 */
html body :is(
    #sticky-schedule-btn,
    .btn, .btn-outline, .btn-white, .btn-outline-white, .btn-primary-lg,
    .btn-pulse, .btn-large, .all-pests-btn,
    .hp-cta-primary, .hp-cta-schedule, .hp-cta-secondary,
    .hp-area-cta, .hp-offers-cta, .hp-truck-cta, .wby-fallback-btn,
    .sc-btn, .btn-self-schedule, .btn-ss-call, .btn-header-cta, .btn-portal, .header-search-btn,
    .sticky-btn, .sticky-call-btn, .sticky-book-btn, .footer-social-btn,
    .btn-sid-call, .btn-sid-schedule, .atco-icta-btn, .atco-faq-cta-btn,
    .hero-cta, .coupon-btn, .form-submit, .cta-phone, .cta-btn, .dyk-cta,
    .btn-schedule, .btn-continue, .scheduler-pass-btn, .scheduler-popup-close,
    .wby-picker-btn, .wby-cf-submit, .hpcm-submit, .svc-btn-next, .svc-btn-submit,
    .svc-pest-popup-btn, .suc-btn-primary,
    .btn-phone-hero, .btn-pricing-primary, .btn-offer, .btn-cities, .city-specials-btn,
    .psc-btn--primary, .psc-btn--secondary, .sp-cta-btn-primary, .sp-cta-btn-secondary,
    .potm-btn-primary, .potm-cta-phone, .cp-login-btn, .cp-cta-primary, .cp-cta-secondary,
    .promo-link-btn, .social-btn, .submit-btn, .ucanr-strip-btn, .sponsor-cta,
    .golf-form-submit, .golf-popup-submit, .ch-btn-primary, .capply-submit,
    .bh-btn-primary, .bh-btn-secondary, .areas-ph-btn, .btn-hero-primary, .btn-hero-phone,
    .btn-submit, .cta-btn-white, .cta-btn-outline, .cert-verify-btn,
    .cert-cta-btn-primary, .cert-cta-btn-secondary, .rp-btn-main,
    .dirt-diagram-btn-open, .dirt-cta-btn, .mob-close-btn, .mob-appear-btn,
    .rp-ob-btn-main, .popup-btn, .ag-btn-primary, .cta-btn-primary, .btn-cta,
    .wby-bc-btn-primary, .rcl-promo-btn, .btn-login, .btn-call, .btn-schedule-trigger,
    .arachnophobia-btn, .card-back-cta, .cta-button
):is(:hover, :active) {
    transform: none !important;
}

/* A button also moves when its coupon parent lifts/floats. These two coupon
 * shells carry the affected actions, so keep their geometry still too.
 * Other cards and popup entrance motion are deliberately unchanged. */
html body .offers-page .coupons-grid .coupon-card,
html body .offer-popup .coupon-card {
    transform: none !important;
    animation: none !important;
}

/* These are the shared controls without a guaranteed existing focus treatment.
 * The outer blue + inner yellow ring stays distinguishable on light/dark/green. */
html body :is(
    #sticky-schedule-btn, .btn, .btn-outline, .btn-pulse, .hp-cta-primary,
    .hp-cta-secondary, .hp-area-cta, .hp-offers-cta, .btn-header-cta, .btn-portal, .header-search-btn,
    .footer-social-btn, .atco-icta-btn, .hero-cta, .coupon-btn, .form-submit,
    .cta-phone, .btn-phone-hero, .sp-cta-btn-primary, .sp-cta-btn-secondary
):focus-visible {
    outline: 3px solid #FFC72C;
    outline-offset: 3px;
    box-shadow: 0 0 0 6px #0057A8 !important;
}

/* Stable pressed feedback replaces the previous shrinking target. Disabled
 * controls retain their own state and cannot receive new hover feedback here. */
html body :is(
    #sticky-schedule-btn, .btn, .btn-outline, .btn-self-schedule, .hp-cta-primary,
    .btn-header-cta, .coupon-btn, .form-submit, .wby-picker-btn, .sticky-btn
):active:not(:disabled):not([aria-disabled="true"]) {
    filter: brightness(.9);
}

/* Decorative shimmer/icons can animate without extending the clickable region. */
.btn-self-schedule::before,
.hp-cta-shimmer,
.btn-header-cta .cta-arrow {
    pointer-events: none;
}

@media (prefers-reduced-motion: reduce) {
    html body :is(
        #sticky-schedule-btn, .btn, .btn-outline, .btn-self-schedule, .btn-ss-call,
        .hp-cta-primary, .hp-cta-secondary, .btn-header-cta, .btn-portal,
        .footer-social-btn, .atco-icta-btn, .hero-cta, .coupon-btn, .form-submit,
        .cta-phone, .btn-pulse, .btn-phone-hero, .sp-cta-btn-primary
    ) {
        animation: none !important;
        transition: none !important;
    }
    .hp-cta-shimmer, .btn-self-schedule::before, .btn::before,
    .btn-header-cta .cta-arrow {
        animation: none !important;
        transition: none !important;
    }
}