CONDENSED CONSOLIDATED STATEMENTS OF CHANGES IN STOCKHOLDERS' EQUITY - USD ($) $ in Thousands | Total | Common Stock | Treasury Stock | Additional Paid-in Capital | Retained Earnings | Accumulated Other Comprehensive Income (Loss) |
Beginning balance, common (in shares) at Dec. 31, 2022 | | 39,453,236 | | | | |
Beginning balance at Dec. 31, 2022 | $ 149,906 | $ 4 | $ (59,300) | $ 70,210 | $ 139,134 | $ (142) |
Beginning balance, treasury (in shares) at Dec. 31, 2022 | | | (2,822,266) | | | |
Increase (Decrease) in Stockholders' Equity [Roll Forward] | | | | | | |
Net income | 27,184 | | | | 27,184 | |
Issuance of common stock: | | | | | | |
Exercise of stock options (in shares) | | 67,250 | | | | |
Exercise of stock options | 822 | | | 822 | | |
Other stock awards, net of shares withheld for taxes (in shares) | | 48,980 | | | | |
Other stock awards, net of shares withheld for taxes | (872) | | | (872) | | |
Fully vested shares (in shares) | | 1,607 | | | | |
Share-based compensation | 3,943 | | | 3,943 | | |
Adjustment from foreign currency translation, net | $ 357 | | | | | 357 |
Acquisition of treasury stock, at cost (in shares) | (1,232,581) | | (1,232,581) | | | |
Acquisition of treasury stock, at cost | $ (30,515) | | $ (30,515) | | | |
Ending balance, common (in shares) at Jun. 30, 2023 | | 39,571,073 | | | | |
Ending balance at Jun. 30, 2023 | 150,825 | $ 4 | $ (89,815) | 74,103 | 166,318 | 215 |
Ending balance, treasury (in shares) at Jun. 30, 2023 | | | (4,054,847) | | | |
Beginning balance, common (in shares) at Mar. 31, 2023 | | 39,556,217 | | | | |
Beginning balance at Mar. 31, 2023 | 155,853 | $ 4 | $ (66,884) | 71,797 | 150,896 | 40 |
Beginning balance, treasury (in shares) at Mar. 31, 2023 | | | (3,138,725) | | | |
Increase (Decrease) in Stockholders' Equity [Roll Forward] | | | | | | |
Net income | 15,422 | | | | 15,422 | |
Issuance of common stock: | | | | | | |
Exercise of stock options (in shares) | | 10,000 | | | | |
Exercise of stock options | 99 | | | 99 | | |
Other stock awards, net of shares withheld for taxes (in shares) | | 4,075 | | | | |
Other stock awards, net of shares withheld for taxes | (38) | | | (38) | | |
Fully vested shares (in shares) | | 781 | | | | |
Share-based compensation | 2,245 | | | 2,245 | | |
Adjustment from foreign currency translation, net | $ 175 | | | | | 175 |
Acquisition of treasury stock, at cost (in shares) | (916,122) | | (916,122) | | | |
Acquisition of treasury stock, at cost | $ (22,931) | | $ (22,931) | | | |
Ending balance, common (in shares) at Jun. 30, 2023 | | 39,571,073 | | | | |
Ending balance at Jun. 30, 2023 | $ 150,825 | $ 4 | $ (89,815) | 74,103 | 166,318 | 215 |
Ending balance, treasury (in shares) at Jun. 30, 2023 | | | (4,054,847) | | | |
Beginning balance, common (in shares) at Dec. 31, 2023 | 33,823,237 | 39,673,271 | | | | |
Beginning balance at Dec. 31, 2023 | $ 149,037 | $ 4 | $ (125,564) | 75,686 | 198,649 | 262 |
Beginning balance, treasury (in shares) at Dec. 31, 2023 | (5,850,034) | | (5,850,034) | | | |
Increase (Decrease) in Stockholders' Equity [Roll Forward] | | | | | | |
Net income | $ 26,139 | | | | 26,139 | |
Issuance of common stock: | | | | | | |
Exercise of stock options (in shares) | | 123,054 | | | | |
Exercise of stock options | (1,123) | | | (1,123) | | |
Other stock awards, net of shares withheld for taxes (in shares) | | 293,770 | | | | |
Other stock awards, net of shares withheld for taxes | (1,042) | | | (1,042) | | |
Fully vested shares (in shares) | | 911 | | | | |
Share-based compensation | 4,545 | | | 4,545 | | |
Adjustment from foreign currency translation, net | $ (519) | | | | | (519) |
Acquisition of treasury stock, at cost (in shares) | (1,646,127) | | (1,646,127) | | | |
Acquisition of treasury stock, at cost | $ (34,622) | | $ (34,622) | | | |
Ending balance, common (in shares) at Jun. 30, 2024 | 32,594,845 | 40,091,006 | | | | |
Ending balance at Jun. 30, 2024 | $ 142,415 | $ 4 | $ (160,186) | 78,066 | 224,788 | (257) |
Ending balance, treasury (in shares) at Jun. 30, 2024 | (7,496,161) | | (7,496,161) | | | |
Beginning balance, common (in shares) at Mar. 31, 2024 | | 40,010,435 | | | | |
Beginning balance at Mar. 31, 2024 | $ 138,228 | $ 4 | $ (148,987) | 76,339 | 210,755 | 117 |
Beginning balance, treasury (in shares) at Mar. 31, 2024 | | | (6,974,510) | | | |
Increase (Decrease) in Stockholders' Equity [Roll Forward] | | | | | | |
Net income | 14,033 | | | | 14,033 | |
Issuance of common stock: | | | | | | |
Exercise of stock options (in shares) | | 37,020 | | | | |
Exercise of stock options | (507) | | | (507) | | |
Other stock awards, net of shares withheld for taxes (in shares) | | 43,551 | | | | |
Other stock awards, net of shares withheld for taxes | (158) | | | (158) | | |
Share-based compensation | 2,392 | | | 2,392 | | |
Adjustment from foreign currency translation, net | $ (374) | | | | | (374) |
Acquisition of treasury stock, at cost (in shares) | (521,651) | | (521,651) | | | |
Acquisition of treasury stock, at cost | $ (11,199) | | $ (11,199) | | | |
Ending balance, common (in shares) at Jun. 30, 2024 | 32,594,845 | 40,091,006 | | | | |
Ending balance at Jun. 30, 2024 | $ 142,415 | $ 4 | $ (160,186) | $ 78,066 | $ 224,788 | $ (257) |
Ending balance, treasury (in shares) at Jun. 30, 2024 | (7,496,161) | | (7,496,161) | | | |