CONSOLIDATED STATEMENTS OF STOCKHOLDERS' EQUITY - USD ($) shares in Thousands, $ in Thousands | Total | Common Stock | Additional Paid-in Capital | Treasury Stock | Accumulated Other Comprehensive Income (Loss) | Retained Earnings |
Beginning balance (in shares) at Dec. 31, 2022 | | 107,835 | | | | |
Beginning balance at Dec. 31, 2022 | $ 501,842 | $ 131 | $ 662,342 | $ (456,148) | $ (869) | $ 296,386 |
Increase (Decrease) in Stockholders' Equity [Roll Forward] | | | | | | |
Issuance of common stock under incentive award plan (in shares) | | 618 | | | | |
Issuance of common stock under incentive award plan | 6,540 | | 6,540 | | | |
Shares tendered to satisfy cost and statutory withholding requirements for net settlement of cashless option exercises and vesting of restricted stock (in shares) | | (297) | | | | |
Shares tendered to satisfy cost and statutory withholding requirements for net settlement of cashless option exercises and vesting of restricted stock | (6,359) | | | (6,359) | | |
Stock-based compensation | 10,966 | | 10,966 | | | |
Other comprehensive income (loss), net of tax | 716 | | | | 716 | |
Net income | 15,879 | | | | | 15,879 |
Ending balance (in shares) at Mar. 31, 2023 | | 108,156 | | | | |
Ending balance at Mar. 31, 2023 | 529,584 | $ 131 | 679,848 | (462,507) | (153) | 312,265 |
Beginning balance (in shares) at Dec. 31, 2022 | | 107,835 | | | | |
Beginning balance at Dec. 31, 2022 | 501,842 | $ 131 | 662,342 | (456,148) | (869) | 296,386 |
Increase (Decrease) in Stockholders' Equity [Roll Forward] | | | | | | |
Net income | 74,785 | | | | | |
Ending balance (in shares) at Sep. 30, 2023 | | 102,996 | | | | |
Ending balance at Sep. 30, 2023 | 461,679 | $ 133 | 722,397 | (631,788) | (234) | 371,171 |
Beginning balance (in shares) at Mar. 31, 2023 | | 108,156 | | | | |
Beginning balance at Mar. 31, 2023 | 529,584 | $ 131 | 679,848 | (462,507) | (153) | 312,265 |
Increase (Decrease) in Stockholders' Equity [Roll Forward] | | | | | | |
Issuance of common stock under incentive award plan (in shares) | | 1,168 | | | | |
Issuance of common stock under incentive award plan | 4,497 | $ 1 | 4,496 | | | |
Shares tendered to satisfy cost and statutory withholding requirements for net settlement of cashless option exercises and vesting of restricted stock (in shares) | | (202) | | | | |
Shares tendered to satisfy cost and statutory withholding requirements for net settlement of cashless option exercises and vesting of restricted stock | (4,823) | | | (4,823) | | |
Repurchase of common stock in connection with Stock Repurchase Program (in shares) | | (6,610) | | | | |
Repurchase of common stock in connection with Stock Repurchase Program | (145,428) | | | (145,428) | | |
Excise tax related to net share repurchases | (1,316) | | | (1,316) | | |
Stock-based compensation | 11,374 | | 11,374 | | | |
Other comprehensive income (loss), net of tax | 198 | | | | 198 | |
Net income | 27,528 | | | | | 27,528 |
Ending balance (in shares) at Jun. 30, 2023 | | 102,512 | | | | |
Ending balance at Jun. 30, 2023 | 421,614 | $ 132 | 695,718 | (614,074) | 45 | 339,793 |
Increase (Decrease) in Stockholders' Equity [Roll Forward] | | | | | | |
Issuance of common stock under incentive award plan (in shares) | | 1,068 | | | | |
Issuance of common stock under incentive award plan | 13,950 | $ 1 | 13,949 | | | |
Shares tendered to satisfy cost and statutory withholding requirements for net settlement of cashless option exercises and vesting of restricted stock (in shares) | | (584) | | | | |
Shares tendered to satisfy cost and statutory withholding requirements for net settlement of cashless option exercises and vesting of restricted stock | (17,866) | | | (17,866) | | |
Excise tax related to net share repurchases | 152 | | | 152 | | |
Stock-based compensation | 11,660 | | 11,660 | | | |
Vesting of RSAs in connection with ESPP | 1,070 | | 1,070 | | | |
Other comprehensive income (loss), net of tax | (279) | | | | (279) | |
Net income | 31,378 | | | | | 31,378 |
Ending balance (in shares) at Sep. 30, 2023 | | 102,996 | | | | |
Ending balance at Sep. 30, 2023 | 461,679 | $ 133 | 722,397 | (631,788) | (234) | 371,171 |
Beginning balance (in shares) at Dec. 31, 2023 | | 103,405 | | | | |
Beginning balance at Dec. 31, 2023 | 506,705 | $ 133 | 738,515 | (635,078) | 609 | 402,526 |
Increase (Decrease) in Stockholders' Equity [Roll Forward] | | | | | | |
Issuance of common stock under incentive award plan (in shares) | | 786 | | | | |
Issuance of common stock under incentive award plan | 3,485 | | 3,485 | | | |
Shares tendered to satisfy cost and statutory withholding requirements for net settlement of cashless option exercises and vesting of restricted stock (in shares) | | (143) | | | | |
Shares tendered to satisfy cost and statutory withholding requirements for net settlement of cashless option exercises and vesting of restricted stock | (3,554) | | 2,032 | (5,586) | | |
Repurchase of common stock in connection with Stock Repurchase Program (in shares) | | (20) | | | | |
Repurchase of common stock in connection with Stock Repurchase Program | (476) | | | (476) | | |
Excise tax related to net share repurchases | 81 | | | 81 | | |
Stock-based compensation | 12,929 | | 12,929 | | | |
Vesting of RSAs in connection with ESPP | 1,283 | | 1,283 | | | |
Other comprehensive income (loss), net of tax | (351) | | | | (351) | |
Net income | 27,762 | | | | | 27,762 |
Ending balance (in shares) at Mar. 31, 2024 | | 104,028 | | | | |
Ending balance at Mar. 31, 2024 | 547,864 | $ 133 | 758,244 | (641,059) | 258 | 430,288 |
Beginning balance (in shares) at Dec. 31, 2023 | | 103,405 | | | | |
Beginning balance at Dec. 31, 2023 | 506,705 | $ 133 | 738,515 | (635,078) | 609 | 402,526 |
Increase (Decrease) in Stockholders' Equity [Roll Forward] | | | | | | |
Net income | 110,463 | | | | | |
Ending balance (in shares) at Sep. 30, 2024 | | 104,703 | | | | |
Ending balance at Sep. 30, 2024 | 638,835 | $ 135 | 806,317 | (682,177) | 1,571 | 512,989 |
Beginning balance (in shares) at Mar. 31, 2024 | | 104,028 | | | | |
Beginning balance at Mar. 31, 2024 | 547,864 | $ 133 | 758,244 | (641,059) | 258 | 430,288 |
Increase (Decrease) in Stockholders' Equity [Roll Forward] | | | | | | |
Issuance of common stock under incentive award plan (in shares) | | 700 | | | | |
Issuance of common stock under incentive award plan | 7,574 | $ 1 | 7,573 | | | |
Shares tendered to satisfy cost and statutory withholding requirements for net settlement of cashless option exercises and vesting of restricted stock (in shares) | | (208) | | | | |
Shares tendered to satisfy cost and statutory withholding requirements for net settlement of cashless option exercises and vesting of restricted stock | (6,242) | | | (6,242) | | |
Repurchase of common stock in connection with Stock Repurchase Program (in shares) | | (122) | | | | |
Repurchase of common stock in connection with Stock Repurchase Program | (3,478) | | | (3,478) | | |
Excise tax related to net share repurchases | 16 | | | 16 | | |
Stock-based compensation | 13,881 | | 13,881 | | | |
Vesting of RSAs in connection with ESPP | 1,314 | | 1,314 | | | |
Other comprehensive income (loss), net of tax | (174) | | | | (174) | |
Net income | 35,488 | | | | | 35,488 |
Ending balance (in shares) at Jun. 30, 2024 | | 104,398 | | | | |
Ending balance at Jun. 30, 2024 | 596,243 | $ 134 | 781,012 | (650,763) | 84 | 465,776 |
Increase (Decrease) in Stockholders' Equity [Roll Forward] | | | | | | |
Issuance of common stock under incentive award plan (in shares) | | 1,175 | | | | |
Issuance of common stock under incentive award plan | 10,322 | $ 1 | 10,321 | | | |
Shares tendered to satisfy cost and statutory withholding requirements for net settlement of cashless option exercises and vesting of restricted stock (in shares) | | (526) | | | | |
Shares tendered to satisfy cost and statutory withholding requirements for net settlement of cashless option exercises and vesting of restricted stock | (19,704) | | | (19,704) | | |
Repurchase of common stock in connection with Stock Repurchase Program (in shares) | | (344) | | | | |
Repurchase of common stock in connection with Stock Repurchase Program | (11,710) | | | (11,710) | | |
Stock-based compensation | 14,286 | | 14,286 | | | |
Vesting of RSAs in connection with ESPP | 698 | | 698 | | | |
Other comprehensive income (loss), net of tax | 1,487 | | | | 1,487 | |
Net income | 47,213 | | | | | 47,213 |
Ending balance (in shares) at Sep. 30, 2024 | | 104,703 | | | | |
Ending balance at Sep. 30, 2024 | $ 638,835 | $ 135 | $ 806,317 | $ (682,177) | $ 1,571 | $ 512,989 |