Condensed Consolidated Statements of Stockholders' Equity (Unaudited) - USD ($) $ in Thousands | Restricted Stock Units (RSUs) [Member] Common Stock Outstanding [Member] | Restricted Stock Units (RSUs) [Member] Additional Paid-in Capital [Member] | Restricted Stock Units (RSUs) [Member] Retained Earnings [Member] | Restricted Stock Units (RSUs) [Member] AOCI Attributable to Parent [Member] | Restricted Stock Units (RSUs) [Member] | Common Stock Outstanding [Member] | Additional Paid-in Capital [Member] | Retained Earnings [Member] | AOCI Attributable to Parent [Member] | Total |
Balance (in shares) at Dec. 31, 2021 | | | | | | 14,441,000 | | | | |
Balance at Dec. 31, 2021 | | | | | | $ 144 | $ 67,081 | $ 225,578 | $ (5,718) | $ 287,085 |
Issuance of common stock for equity awards (in shares) | | | | | | 1,000 | | | | |
Issuance of common stock for equity awards | | | | | | $ 0 | 15 | 0 | 0 | 15 |
Vesting of restricted stock units (in shares) | 106,000 | | | | | | | | | |
Vesting of restricted stock units | $ 1 | $ (1) | $ 0 | $ 0 | $ 0 | | | | | |
Stock-based compensation expense | | | | | | $ 0 | 2,545 | 0 | 0 | 2,545 |
Retirement of common stock for minimum tax withholdings (in shares) | | | | | | (30,000) | | | | |
Retirement of common stock for minimum tax withholdings | | | | | | $ 0 | (844) | 0 | 0 | (844) |
Net income (loss) | | | | | | 0 | 0 | (2,933) | 0 | (2,933) |
Other comprehensive income (loss) | | | | | | 0 | 0 | 0 | (81) | (81) |
Stock-based compensation expense | | | | | | $ 0 | 2,545 | 0 | 0 | 2,545 |
Balance (in shares) at Mar. 31, 2022 | | | | | | 14,518,000 | | | | |
Balance at Mar. 31, 2022 | | | | | | $ 145 | 68,796 | 222,645 | (5,799) | 285,787 |
Balance (in shares) at Dec. 31, 2021 | | | | | | 14,441,000 | | | | |
Balance at Dec. 31, 2021 | | | | | | $ 144 | 67,081 | 225,578 | (5,718) | 287,085 |
Net income (loss) | | | | | | | | | | (9,951) |
Balance (in shares) at Sep. 30, 2022 | | | | | | 14,607 | | | | |
Balance at Sep. 30, 2022 | | | | | | $ 146 | 76,661 | 215,627 | (7,497) | 284,937 |
Balance (in shares) at Mar. 31, 2022 | | | | | | 14,518,000 | | | | |
Balance at Mar. 31, 2022 | | | | | | $ 145 | 68,796 | 222,645 | (5,799) | 285,787 |
Vesting of restricted stock units (in shares) | 61,000 | | | | | | | | | |
Vesting of restricted stock units | $ 1 | (1) | 0 | 0 | 0 | | | | | |
Stock-based compensation expense | | | | | | $ 0 | 4,081 | 0 | 0 | 4,081 |
Retirement of common stock for minimum tax withholdings (in shares) | | | | | | (1,000) | | | | |
Retirement of common stock for minimum tax withholdings | | | | | | $ 0 | (25) | 0 | 0 | (25) |
Net income (loss) | | | | | | 0 | 0 | (2,843) | 0 | (2,843) |
Other comprehensive income (loss) | | | | | | $ 0 | 0 | 0 | (847) | (847) |
Issuance of ESPP shares (in shares) | | | | | | 20,000 | | | | |
Issuance of ESPP shares | | | | | | $ 0 | 0 | 0 | 0 | 0 |
Stock-based compensation expense | | | | | | $ 0 | 4,081 | 0 | 0 | 4,081 |
Balance (in shares) at Jun. 30, 2022 | | | | | | 14,598,000 | | | | |
Balance at Jun. 30, 2022 | | | | | | $ 146 | 72,851 | 219,802 | (6,646) | 286,153 |
Vesting of restricted stock units (in shares) | | | | | | 11,000 | | | | |
Vesting of restricted stock units | | | | | | $ 0 | 0 | 0 | 0 | 0 |
Stock-based compensation expense | | | | | | $ 0 | 3,876 | 0 | 0 | 3,876 |
Retirement of common stock for minimum tax withholdings (in shares) | | | | | | (2,000) | | | | |
Retirement of common stock for minimum tax withholdings | | | | | | $ 0 | (66) | 0 | 0 | (66) |
Net income (loss) | | | | | | 0 | 0 | (4,175) | 0 | (4,175) |
Other comprehensive income (loss) | | | | | | 0 | 0 | 0 | (851) | (851) |
Stock-based compensation expense | | | | | | $ 0 | 3,876 | 0 | 0 | 3,876 |
Balance (in shares) at Sep. 30, 2022 | | | | | | 14,607 | | | | |
Balance at Sep. 30, 2022 | | | | | | $ 146 | 76,661 | 215,627 | (7,497) | 284,937 |
Balance (in shares) at Dec. 31, 2022 | | | | | | 14,625,000 | | | | |
Balance at Dec. 31, 2022 | | | | | | $ 146 | 81,141 | 210,719 | (6,443) | 285,563 |
Issuance of common stock for equity awards (in shares) | | | | | | 1,000 | | | | |
Issuance of common stock for equity awards | | | | | | $ 0 | 7 | 0 | 0 | 7 |
Vesting of restricted stock units (in shares) | 177,000 | | | | | | | | | |
Vesting of restricted stock units | $ 2 | (2) | 0 | 0 | 0 | | | | | |
Stock-based compensation expense | | | | | | $ 0 | 3,717 | 0 | 0 | 3,717 |
Retirement of common stock for minimum tax withholdings (in shares) | | | | | | (62,000) | | | | |
Retirement of common stock for minimum tax withholdings | | | | | | $ (1) | (1,620) | 0 | 0 | (1,621) |
Net income (loss) | | | | | | 0 | 0 | (10,350) | 0 | (10,350) |
Other comprehensive income (loss) | | | | | | 0 | 0 | 0 | 272 | 272 |
Stock-based compensation expense | | | | | | $ 0 | 3,717 | 0 | 0 | 3,717 |
Balance (in shares) at Mar. 31, 2023 | | | | | | 14,741,000 | | | | |
Balance at Mar. 31, 2023 | | | | | | $ 147 | 83,243 | 200,369 | (6,171) | 277,588 |
Balance (in shares) at Dec. 31, 2022 | | | | | | 14,625,000 | | | | |
Balance at Dec. 31, 2022 | | | | | | $ 146 | 81,141 | 210,719 | (6,443) | 285,563 |
Net income (loss) | | | | | | | | | | (19,667) |
Balance (in shares) at Sep. 30, 2023 | | | | | | 14,637,000 | | | | |
Balance at Sep. 30, 2023 | | | | | | $ 146 | 85,852 | 191,052 | (6,564) | 270,486 |
Balance (in shares) at Mar. 31, 2023 | | | | | | 14,741,000 | | | | |
Balance at Mar. 31, 2023 | | | | | | $ 147 | 83,243 | 200,369 | (6,171) | 277,588 |
Issuance of common stock for equity awards (in shares) | | | | | | 1,000 | | | | |
Issuance of common stock for equity awards | | | | | | $ 0 | 30 | 0 | 0 | 30 |
Vesting of restricted stock units (in shares) | 70,000 | | | | | | | | | |
Vesting of restricted stock units | $ 1 | $ (1) | $ 0 | $ 0 | $ 0 | | | | | |
Stock-based compensation expense | | | | | | $ 0 | 4,150 | 0 | 0 | 4,150 |
Retirement of common stock for minimum tax withholdings (in shares) | | | | | | (16,000) | | | | |
Retirement of common stock for minimum tax withholdings | | | | | | $ 0 | (432) | 0 | 0 | (432) |
Net income (loss) | | | | | | 0 | 0 | (2,741) | 0 | (2,741) |
Other comprehensive income (loss) | | | | | | $ 0 | 0 | 0 | 14 | 14 |
Issuance of ESPP shares (in shares) | | | | | | 20,000 | | | | |
Issuance of ESPP shares | | | | | | $ 0 | 456 | 0 | 0 | 456 |
Stock-based compensation expense | | | | | | $ 0 | 4,150 | 0 | 0 | 4,150 |
Repurchase of common stock (in shares) | | | | | | (159,000) | | | | |
Repurchase of common stock | | | | | | $ (1) | (5,049) | 0 | 0 | (5,050) |
Balance (in shares) at Jun. 30, 2023 | | | | | | 14,657,000 | | | | |
Balance at Jun. 30, 2023 | | | | | | $ 147 | 82,397 | 197,628 | (6,157) | 274,015 |
Vesting of restricted stock units (in shares) | | | | | | 12,000 | | | | |
Vesting of restricted stock units | | | | | | $ 0 | 0 | 0 | 0 | 0 |
Stock-based compensation expense | | | | | | $ 0 | 3,561 | 0 | 0 | 3,561 |
Retirement of common stock for minimum tax withholdings (in shares) | | | | | | (3,000) | | | | |
Retirement of common stock for minimum tax withholdings | | | | | | $ 0 | (107) | 0 | 0 | (107) |
Net income (loss) | | | | | | 0 | 0 | (6,576) | 0 | (6,576) |
Other comprehensive income (loss) | | | | | | 0 | 0 | 0 | (407) | (407) |
Stock-based compensation expense | | | | | | $ 0 | 3,561 | 0 | 0 | 3,561 |
Repurchase of common stock (in shares) | | | | | | (29,000) | | | | |
Repurchase of common stock | | | | | | $ (1) | 1 | 0 | 0 | 0 |
Balance (in shares) at Sep. 30, 2023 | | | | | | 14,637,000 | | | | |
Balance at Sep. 30, 2023 | | | | | | $ 146 | $ 85,852 | $ 191,052 | $ (6,564) | $ 270,486 |