:root {
    --press-feedback-shadow: 0 8px 18px var(--shadow-card);
    --press-feedback-curve: cubic-bezier(0.2, 0, 0, 1);
    /* Spring easing for smooth M3-style shape morphing */
    --press-feedback-shape-spring: linear(
        0, 0.006, 0.025 2.8%, 0.101 6.1%, 0.539 18.9%, 0.721 25.3%,
        0.849 31.5%, 0.937 38.1%, 0.968 41.8%, 0.991 45.7%,
        1.003 50.1%, 1.007 53.7%, 1.007 60.1%, 1.001 68.2%, 1 100%
    );
    /* Press spring: aggressive start so radius moves with the scale, not after */
    --press-feedback-shape-spring-press: linear(
        0, 0.072 3%, 0.272 8%, 0.571 16%, 0.789 24%,
        0.908 31%, 0.963 38%, 0.988 45%,
        1.002 53%, 1.004 60%, 1.001 72%, 1 100%
    );
    --press-feedback-motion-curve-release: cubic-bezier(0.22, 0.95, 0.32, 1.2);
    --press-feedback-motion-curve-press: cubic-bezier(0.2, 0.7, 0.25, 1);
    --press-feedback-active-scale: 0.96;
    --press-feedback-will-change: border-radius, box-shadow, transform;
    --press-feedback-release-transition:
        border-radius 380ms var(--press-feedback-shape-spring),
        box-shadow 150ms var(--press-feedback-curve),
        background-color 150ms ease-out,
        transform 155ms var(--press-feedback-motion-curve-release);
    --press-feedback-press-transition:
        border-radius 220ms var(--press-feedback-shape-spring-press),
        box-shadow 110ms var(--press-feedback-curve),
        background-color 110ms ease-out,
        transform 220ms var(--press-feedback-shape-spring-press);
    --press-feedback-release-transition-no-transform:
        border-radius 380ms var(--press-feedback-shape-spring),
        box-shadow 150ms var(--press-feedback-curve),
        background-color 150ms ease-out;
    --press-feedback-press-transition-no-transform:
        border-radius 220ms var(--press-feedback-shape-spring-press),
        box-shadow 110ms var(--press-feedback-curve),
        background-color 110ms ease-out;

    --press-feedback-active-transform: scale(var(--press-feedback-active-scale));
    --press-feedback-transition: var(--press-feedback-release-transition);
}

:is(
    .btn,
    .dropdown-item,
    .pill-btn,
    .settings-nav-link,
    .pill-action-btn,
    .pill-toggle-btn,
    .floating-toggle-btn,
    .mobile-control-btn,
    .mobile-control-btn-back,
    .mobile-bulk-action-btn,
    .mobile-pledge-action-button,
    .mobile-pledge-actions-btn,
    .data-grid-mobile-action-btn,
    .data-grid-mobile-pill-actions-btn,
    .pill-save-btn,
    .app-modal-btn-primary,
    .app-modal-btn-secondary,
    .app-modal-btn-danger,
    .app-modal-btn-danger-outline,
    .settings-btn-primary,
    .settings-btn-secondary,
    .settings-comm-history-btn,
    .settings-upload-btn,
    .settings-remove-btn,
    .toolbar-btn,
    .toolbar-btn-icon,
    .light_button_nomargin,
    .dark_button,
    .dark_button_hundred,
    .dark_button_not_hundred,
    .white_button_not_hundred,
    .red_button,
    .campaign_copy_button,
    .recent-pledges-view-all,
    .help-button,
    .help-prev-step-btn,
    .zoom-btn,
    .zoom-toggle-btn,
    .action-btn,
    .data-grid-paginate-btn,
    .sliding-filter-btn,
    .sidebar-action-btn,
    .sidebar-toggle-btn-inline,
    .column-layout-save-btn,
    .campaign-icon-picker-btn,
    .bottom-bar-reload-btn,
    .seating_buttons,
    .seating_buttons_small,
    .seating_buttons_danger,
    .seating_group_button,
    .log_button_manager,
    .button_flip_mgr_mbr,
    .payment_button,
    .main_page_button,
    .mass_comm_active,
    .send_invoice_active,
    .pay_save_button,
    .process_cc_button
):not(:disabled):not(.disabled),
.press-feedback {
    transition: var(--press-feedback-transition);
    will-change: var(--press-feedback-will-change);

    &:focus,
    &:focus-visible {
        outline: none !important;
        box-shadow: none !important;
    }

    &:not(.no-press-feedback):active {
        transition: var(--press-feedback-press-transition);
        box-shadow: var(--press-feedback-active-shadow, var(--press-feedback-shadow));
        border-radius: var(--press-feedback-active-radius, var(--press-feedback-radius-pressed, 10px));
        transform: var(--press-feedback-active-transform);
    }
}

:is(
    .data-grid-row,
    .data-grid-mobile-action-btn,
    .data-grid-mobile-pill-actions-btn,
    .data-grid-mobile-pill
).press-feedback {
    --press-feedback-will-change: border-radius, box-shadow;
    --press-feedback-release-transition: var(--press-feedback-release-transition-no-transform);
    --press-feedback-press-transition: var(--press-feedback-press-transition-no-transform);
    --press-feedback-active-transform: none;
}

.press-feedback-square {
    --press-feedback-radius-rest: 16px;
    --press-feedback-radius-pressed: 30px;
    border-radius: var(--press-feedback-radius-rest);
}

.press-feedback-round {
    --press-feedback-radius-rest: 500px;
    --press-feedback-radius-pressed: 10px;
    border-radius: var(--press-feedback-radius-rest);
}

.table-grid-page-host .btn-group .pill-btn.press-feedback.dropdown-toggle:not(.dropdown-toggle-split):active,
.pledges-content-container .btn-group .pill-btn.press-feedback.dropdown-toggle:not(.dropdown-toggle-split):active,
.members-manager-page .btn-group .pill-btn.press-feedback.dropdown-toggle:not(.dropdown-toggle-split):active,
.page-header-card .btn-group .pill-btn.press-feedback.dropdown-toggle:not(.dropdown-toggle-split):active,
.page-header-card-mobile .btn-group .pill-btn.press-feedback.dropdown-toggle:not(.dropdown-toggle-split):active,
.topBar .btn-group .pill-btn.press-feedback.dropdown-toggle:not(.dropdown-toggle-split):active {
    border-radius: var(--press-feedback-active-radius, var(--press-feedback-radius-pressed, 10px));
}

@media (prefers-reduced-motion: reduce) {
    :root {
        --press-feedback-release-transition: none;
        --press-feedback-press-transition: none;
        --press-feedback-transition: none;
    }
}

