CONDENSED CONSOLIDATED STATEMENTS OF MEZZANINE AND STOCKHOLDERS' EQUITY - USD ($) $ in Thousands | Total | Common Stock Outstanding | Additional Paid-in Capital | Retained Earnings | Non-controlling Interest | Non-controlling Interest Mezzanine |
Temporary equity, carrying amount, beginning balance at Dec. 31, 2022 | | | | | | $ 14,237 |
Increase (Decrease) in Temporary Equity [Roll Forward] | | | | | | |
Net income | | | | | | (1,729) |
Temporary Equity, Transfer Of Common Control Entities | | | | | | 1,769 |
Temporary equity, carrying amount, ending balance at Mar. 31, 2023 | | | | | | 14,277 |
Equity, beginning balance (in shares) at Dec. 31, 2022 | | 46,575,699 | | | | |
Equity, beginning balance at Dec. 31, 2022 | $ 544,310 | $ 47 | $ 360,097 | $ 182,417 | $ 1,749 | |
Increase (Decrease) in Stockholders' Equity [Roll Forward] | | | | | | |
Net income | 14,217 | | | 13,132 | 1,085 | |
Shares issued for vesting of restricted stock awards (in shares) | | 57,825 | | | | |
Shares issued for vesting of restricted stock awards | (109) | | (109) | | | |
Shares issued for cash and exercise of options and warrants (in shares) | | 125,000 | | | | |
Shares issued for cash and exercise of options and warrants | 1,250 | | 1,250 | | | |
Purchase of treasury shares (in shares) | | (270,081) | | | | |
Purchase of treasury shares | (9,539) | | (9,539) | | | |
Share-based compensation | 3,445 | | 3,445 | | | |
Dividends | (120) | | | | (120) | |
Transfer of common control entities | (2,447) | | (2,447) | | | |
Equity, ending balance (in shares) at Mar. 31, 2023 | | 46,488,443 | | | | |
Equity, ending balance at Mar. 31, 2023 | 551,007 | $ 47 | 352,697 | 195,549 | 2,714 | |
Temporary equity, carrying amount, beginning balance at Dec. 31, 2022 | | | | | | 14,237 |
Temporary equity, carrying amount, ending balance at Sep. 30, 2023 | | | | | | 17,931 |
Equity, beginning balance (in shares) at Dec. 31, 2022 | | 46,575,699 | | | | |
Equity, beginning balance at Dec. 31, 2022 | $ 544,310 | $ 47 | 360,097 | 182,417 | 1,749 | |
Increase (Decrease) in Stockholders' Equity [Roll Forward] | | | | | | |
Shares issued for cash and exercise of options (in shares) | 125,000 | | | | | |
Equity, ending balance (in shares) at Sep. 30, 2023 | | 46,607,356 | | | | |
Equity, ending balance at Sep. 30, 2023 | $ 597,709 | $ 47 | 362,889 | 230,778 | 3,995 | |
Temporary equity, carrying amount, beginning balance at Dec. 31, 2022 | | | | | | 14,237 |
Temporary equity, carrying amount, ending balance at Dec. 31, 2023 | | | | | | (205,883) |
Equity, beginning balance (in shares) at Dec. 31, 2022 | | 46,575,699 | | | | |
Equity, beginning balance at Dec. 31, 2022 | $ 544,310 | $ 47 | 360,097 | 182,417 | 1,749 | |
Increase (Decrease) in Stockholders' Equity [Roll Forward] | | | | | | |
Purchase of treasury shares (in shares) | (3,451,642) | | | | | |
Equity, ending balance (in shares) at Dec. 31, 2023 | 46,843,743 | 46,843,743 | | | | |
Equity, ending balance at Dec. 31, 2023 | $ 616,651 | $ 47 | 371,037 | 243,134 | 2,433 | |
Temporary equity, carrying amount, beginning balance at Mar. 31, 2023 | | | | | | 14,277 |
Increase (Decrease) in Temporary Equity [Roll Forward] | | | | | | |
Net income | | | | | | 3,245 |
Temporary Equity, Dividends | | | | | | (601) |
Temporary equity, Tax impact from dividends | | | | | | (3,076) |
Temporary equity, carrying amount, ending balance at Jun. 30, 2023 | | | | | | 13,845 |
Equity, beginning balance (in shares) at Mar. 31, 2023 | | 46,488,443 | | | | |
Equity, beginning balance at Mar. 31, 2023 | 551,007 | $ 47 | 352,697 | 195,549 | 2,714 | |
Increase (Decrease) in Stockholders' Equity [Roll Forward] | | | | | | |
Net income | 14,237 | | | 13,170 | 1,067 | |
Purchase of non-controlling interest | (50) | | | | (50) | |
Sale of non-controlling interest | 106 | | | | 106 | |
Shares issued for vesting of restricted stock awards (in shares) | | 42,734 | | | | |
Shares issued for vesting of restricted stock awards | (464) | | (464) | | | |
Share-based compensation | 4,213 | | 4,213 | | | |
Issuance of shares for business acquisition (in shares) | | 22,340 | | | | |
Issuance of shares for business acquisition | 800 | | 800 | | | |
Dividends | (96) | | | | (96) | |
Equity, ending balance (in shares) at Jun. 30, 2023 | | 46,553,517 | | | | |
Equity, ending balance at Jun. 30, 2023 | 569,753 | $ 47 | 357,246 | 208,719 | 3,741 | |
Increase (Decrease) in Temporary Equity [Roll Forward] | | | | | | |
Net income | | | | | | 4,236 |
Temporary Equity, Purchase of treasury shares | | | | | | (150) |
Temporary equity, carrying amount, ending balance at Sep. 30, 2023 | | | | | | 17,931 |
Increase (Decrease) in Stockholders' Equity [Roll Forward] | | | | | | |
Net income | 23,737 | | | 22,059 | 1,678 | |
Shares issued for vesting of restricted stock awards (in shares) | | 53,839 | | | | |
Shares issued for vesting of restricted stock awards | (63) | | (63) | | | |
Share-based compensation | 5,706 | | 5,706 | | | |
Dividends | (1,424) | | | | (1,424) | |
Equity, ending balance (in shares) at Sep. 30, 2023 | | 46,607,356 | | | | |
Equity, ending balance at Sep. 30, 2023 | $ 597,709 | $ 47 | 362,889 | 230,778 | 3,995 | |
Temporary equity, carrying amount, beginning balance at Dec. 31, 2023 | | | | | | (205,883) |
Increase (Decrease) in Temporary Equity [Roll Forward] | | | | | | |
Net income | | | | | | 326 |
Temporary equity, carrying amount, ending balance at Mar. 31, 2024 | | | | | | (205,557) |
Equity, beginning balance (in shares) at Dec. 31, 2023 | 46,843,743 | 46,843,743 | | | | |
Equity, beginning balance at Dec. 31, 2023 | $ 616,651 | $ 47 | 371,037 | 243,134 | 2,433 | |
Increase (Decrease) in Stockholders' Equity [Roll Forward] | | | | | | |
Net income | 16,536 | | | 14,835 | 1,701 | |
Purchase of non-controlling interest | (25) | | | | (25) | |
Sale of non-controlling interest | 150 | | | | 150 | |
Shares issued for vesting of restricted stock awards (in shares) | | 5,149 | | | | |
Shares issued for vesting of restricted stock awards | (2,407) | | (2,407) | | | |
Share-based compensation | 5,748 | | 5,748 | | | |
Issuance of shares for business acquisition (in shares) | | 631,712 | | | | |
Issuance of shares for business acquisition | 21,952 | $ 1 | 21,951 | | | |
Acquisition of non-controlling interest (in shares) | | (22,340) | | | | |
Acquisition of non-controlling interest | (535) | | (856) | | 321 | |
Dividends | (95) | | | | (95) | |
Equity, ending balance (in shares) at Mar. 31, 2024 | | 47,458,264 | | | | |
Equity, ending balance at Mar. 31, 2024 | $ 657,975 | $ 48 | 395,473 | 257,969 | 4,485 | |
Temporary equity, carrying amount, beginning balance at Dec. 31, 2023 | | | | | | (205,883) |
Temporary equity, carrying amount, ending balance at Sep. 30, 2024 | | | | | | (202,512) |
Equity, beginning balance (in shares) at Dec. 31, 2023 | 46,843,743 | 46,843,743 | | | | |
Equity, beginning balance at Dec. 31, 2023 | $ 616,651 | $ 47 | 371,037 | 243,134 | 2,433 | |
Increase (Decrease) in Stockholders' Equity [Roll Forward] | | | | | | |
Shares issued for cash and exercise of options (in shares) | 75,455 | | | | | |
Purchase of treasury shares (in shares) | (3,466,051) | | | | | |
Issuance of shares for Employee Stock Purchase Plan ("ESPP") (in shares) | 7,789 | | | | | |
Equity, ending balance (in shares) at Sep. 30, 2024 | 47,780,523 | 47,780,523 | | | | |
Equity, ending balance at Sep. 30, 2024 | $ 709,619 | $ 48 | 411,334 | 293,234 | 5,003 | |
Temporary equity, carrying amount, beginning balance at Mar. 31, 2024 | | | | | | (205,557) |
Increase (Decrease) in Temporary Equity [Roll Forward] | | | | | | |
Net income | | | | | | 1,245 |
Temporary equity, carrying amount, ending balance at Jun. 30, 2024 | | | | | | (204,312) |
Equity, beginning balance (in shares) at Mar. 31, 2024 | | 47,458,264 | | | | |
Equity, beginning balance at Mar. 31, 2024 | 657,975 | $ 48 | 395,473 | 257,969 | 4,485 | |
Increase (Decrease) in Stockholders' Equity [Roll Forward] | | | | | | |
Net income | 20,621 | | | 19,171 | 1,450 | |
Shares issued for vesting of restricted stock awards (in shares) | | 83,285 | | | | |
Shares issued for vesting of restricted stock awards | (1,177) | | (1,177) | | | |
Share-based compensation | 7,390 | | 7,390 | | | |
Dividends | (1,801) | | | | (1,801) | |
Equity, ending balance (in shares) at Jun. 30, 2024 | | 47,541,549 | | | | |
Equity, ending balance at Jun. 30, 2024 | 683,008 | $ 48 | 401,686 | 277,140 | 4,134 | |
Increase (Decrease) in Temporary Equity [Roll Forward] | | | | | | |
Net income | | | | | | 1,800 |
Temporary equity, carrying amount, ending balance at Sep. 30, 2024 | | | | | | $ (202,512) |
Increase (Decrease) in Stockholders' Equity [Roll Forward] | | | | | | |
Net income | 17,181 | | | 16,094 | 1,087 | |
Shares issued for vesting of restricted stock awards (in shares) | | 34,735 | | | | |
Shares issued for vesting of restricted stock awards | $ (391) | | (391) | | | |
Shares issued for cash and exercise of options (in shares) | 75,455 | 53,800 | | | | |
Shares issued for cash and exercise of options | $ 232 | | 232 | | | |
Purchase of treasury shares (in shares) | | (14,409) | | | | |
Purchase of treasury shares | (717) | | (717) | | | |
Share-based compensation | 6,230 | | 6,230 | | | |
Issuance of shares for Employee Stock Purchase Plan ("ESPP") (in shares) | | 7,789 | | | | |
Issuance of shares for Employee Stock Purchase Plan ("ESPP") | 271 | | 271 | | | |
Stock Contingent Consideration (in shares) | | 157,059 | | | | |
Stock Contingent Consideration | 4,023 | | 4,023 | | | |
Dividends | $ (218) | | | | (218) | |
Equity, ending balance (in shares) at Sep. 30, 2024 | 47,780,523 | 47,780,523 | | | | |
Equity, ending balance at Sep. 30, 2024 | $ 709,619 | $ 48 | $ 411,334 | $ 293,234 | $ 5,003 | |