/* Text commands share left alignment at every viewport size.
   Icon-only controls retain their shared centering, artwork, size and padding. */
html body button:is(
  .tab, .ghost, .primary, [data-i18n], [data-ui-action],
  .client-detail-tab, .client-action-command, .scheduling-view-tab,
  .chat-window-title, .todo-report-chat-button, .demo-exit,
  .report-mention-link, .report-mention-option, #saveSchedulingTechnicians
):not([data-ui-icon-only]):not(:empty):not(:is(
  .app-find-btn, .pagination-btn, .parts-config-close, .parts-entry-close,
  .pdf-preview-close, .settings-secret-toggle,
  .pdf-preview-icon-button, .english-flag-icon-button,
  .estimate-delete-icon-button, .multiply-action-button,
  .scheduling-text-action, .scheduling-report-nav, .scheduling-report-action,
  .scheduling-report-preview-page-btn, .scheduling-report-preview-search-btn,
  .scheduling-calendar-menu-action, .parts-entry-icon-action,
  .parts-offer-action-button, .settings-script-exclude-add, .backup-icon,
  #reloadEstimate, #addLine
)):not(:has(> svg:only-child)):not(:has(> [aria-hidden="true"]:only-child)) {
  text-align: left !important;
  justify-content: flex-start !important;
}

/* These labels have their own historical center rule; keep the specialized
   client/supplier icons, arrows and their original ordering untouched. */
html body button:not([data-ui-icon-only]) .client-action-button-label {
  text-align: left !important;
}
