/* One alignment rule for action buttons in LTR and RTL. Do not override
   visibility: inline display:none and framework hidden utilities must work. */
body :is(.btn, button, .commonBtn, .fee-checkout a):not(:where([hidden], .hidden, .d-none, .dropdown-item, .accordion-button, [role="tab"], [role="option"], [role="menuitem"], .select2-selection__clear, .select2-selection__choice__remove)) {
    display: inline-flex;
    align-items: center !important;
    justify-content: center !important;
    text-align: center !important;
    vertical-align: middle;
    gap: .45em;
    box-sizing: border-box;
}
/* Replaced input controls do not have flex children. Keep their own text
   centered without changing their width, height, or disabled appearance. */
body input:is([type="submit"], [type="reset"], [type="button"]) {
    text-align: center !important;
    vertical-align: middle;
    box-sizing: border-box;
    padding-block: .5rem !important;
    line-height: normal !important;
}
body input.btn-sm:is([type="submit"], [type="reset"], [type="button"]) { padding-block: .375rem !important; }
body input.btn-lg:is([type="submit"], [type="reset"], [type="button"]) { padding-block: .75rem !important; }
/* Use the button gap instead of one-sided legacy icon margins. */
body :is(.btn, .commonBtn, button[type="submit"], button[type="reset"], .file-upload-browse) > :is(i, svg):not(.spinner-border) {
    margin-inline: 0 !important;
    margin-block: 0 !important;
    flex-shrink: 0;
    vertical-align: middle;
}
body .btn > i { line-height: 1; }
