v3.25.2
Stockholders' Equity - Stock Options and Restricted Stock (Details)
3 Months Ended 6 Months Ended 12 Months Ended
Jun. 30, 2025
USD ($)
$ / shares
shares
Jun. 30, 2024
USD ($)
$ / shares
shares
Jun. 30, 2025
USD ($)
item
$ / shares
shares
Jun. 30, 2024
USD ($)
$ / shares
shares
Dec. 31, 2024
USD ($)
$ / shares
shares
Stock-based compensation, general disclosures.          
Stock-based compensation expense | $ $ 1,939,000 $ 1,860,000 $ 4,005,000 $ 3,899,000  
Employee Stock Option          
Stock-based compensation, general disclosures.          
Stock-based compensation expense | $ 0 $ 100,000 0 $ 200,000  
Total unrecognized pre-tax compensation expense related to nonvested stock option awards | $ $ 12,050   $ 12,050    
Weighted-average period over which unrecognized compensation cost is expected to be recognized     4 months 24 days    
Options Outstanding          
Outstanding at beginning of period | shares     394,871    
Exercised | shares     (2,364)    
Cancelled/Expired | shares     (114,429)    
Outstanding at end of period | shares 278,078   278,078   394,871
Weighted Average Exercise Price Per Share          
Outstanding at beginning of period | $ / shares     $ 40.7    
Exercised | $ / shares     4.23    
Cancelled/Expired | $ / shares     42.14    
Outstanding at end of period | $ / shares $ 40.42   $ 40.42   $ 40.7
Other information          
Options exercisable number of shares exercisable | shares 272,690 392,239 272,690 392,239  
Options exercisable, weighted-average exercise price | $ / shares $ 41.45 $ 42.19 $ 41.45 $ 42.19  
Weighted average remaining contractual life (in years)     2 years 6 months   2 years 9 months 18 days
Options exercisable, weighted-average remaining contractual life     2 years 5 months 12 days    
Aggregate Intrinsic Value, Options outstanding | $ $ 49,000   $ 49,000   $ 309,000
Aggregate Intrinsic Value, Exercised | $     22,000    
Aggregate Intrinsic Value, Options exercisable | $ 33,000   $ 33,000    
Employee Stock Option | Minimum          
Stock-based compensation, general disclosures.          
Vesting period (in years)     3 years    
Term (in years)     7 years    
Employee Stock Option | Maximum          
Stock-based compensation, general disclosures.          
Vesting period (in years)     4 years    
Term (in years)     10 years    
2016 Plan | Time-Based Restricted Stock Units          
Stock-based compensation, general disclosures.          
Stock-based compensation expense | $ 1,400,000 $ 1,500,000 $ 2,900,000 $ 2,900,000  
Total unrecognized pre-tax compensation expense related to awards | $ $ 9,100,000   $ 9,100,000    
Weighted-average period over which unrecognized compensation cost is expected to be recognized     2 years    
Units Outstanding          
Restricted stock unit awards outstanding at the beginning of the period (in shares) | shares     728,426    
Granted (in shares) | shares     467,253    
Vested (in shares) | shares     (345,920)    
Cancelled (in shares) | shares     (39,489)    
Restricted stock unit awards outstanding at the end of the period (in shares) | shares 810,270   810,270   728,426
Weighted Average Grant Date Fair Value Per Unit          
Restricted stock unit awards outstanding at the beginning of the period (in dollars per share) | $ / shares     $ 14.33    
Granted (in dollars per share) | $ / shares     13.85    
Vested (in dollars per share) | $ / shares     15.05    
Cancelled (in dollars per share) | $ / shares     14.66    
Restricted stock unit awards outstanding at the end of the period (in dollars per share) | $ / shares $ 13.73   $ 13.73   $ 14.33
Aggregate Intrinsic Value          
Restricted stock unit awards, Average Intrinsic Value | $ $ 8,216,000   $ 8,216,000   $ 12,478,000
2016 Plan | Time-Based Restricted Stock Units | Minimum          
Stock-based compensation, general disclosures.          
Vesting period (in years)     1 year    
2016 Plan | Time-Based Restricted Stock Units | Maximum          
Stock-based compensation, general disclosures.          
Vesting period (in years)     3 years    
2016 Plan | Performance-based stock-settled restricted stock units          
Stock-based compensation, general disclosures.          
Stock-based compensation expense | $ 300,000 $ 200,000 $ 700,000 $ 600,000  
Total unrecognized pre-tax compensation expense related to awards | $ $ 2,500,000   $ 2,500,000    
Weighted-average period over which unrecognized compensation cost is expected to be recognized     2 years 4 months 24 days    
Units Outstanding          
Restricted stock unit awards outstanding at the beginning of the period (in shares) | shares     272,919    
Granted (in shares) | shares     168,722    
Vested (in shares) | shares     (120,436)    
Cancelled (in shares) | shares     (9,033)    
Restricted stock unit awards outstanding at the end of the period (in shares) | shares 312,172   312,172   272,919
Weighted Average Grant Date Fair Value Per Unit          
Restricted stock unit awards outstanding at the beginning of the period (in dollars per share) | $ / shares     $ 15.19    
Granted (in dollars per share) | $ / shares     15.38    
Vested (in dollars per share) | $ / shares     16.67    
Cancelled (in dollars per share) | $ / shares     13.77    
Restricted stock unit awards outstanding at the end of the period (in dollars per share) | $ / shares $ 14.75   $ 14.75   $ 15.19
Aggregate Intrinsic Value          
Restricted stock unit awards, Average Intrinsic Value | $ $ 3,165,000   $ 3,165,000   $ 4,675,000
2016 Plan | 2024 PSUs          
Stock-based compensation, general disclosures.          
Number of performance awards under share-based payment arrangement | item     3    
2016 Plan | 2024 PSUs | Minimum          
Stock-based compensation, general disclosures.          
Performance goals revenue change and adjusted EBITDA margin     25.00%    
2016 Plan | 2024 PSUs | Maximum          
Stock-based compensation, general disclosures.          
Performance goals revenue change and adjusted EBITDA margin     175.00%    
2016 Plan | 2025 PSUs          
Stock-based compensation, general disclosures.          
Number of performance awards under share-based payment arrangement | item     3    
2016 Plan | 2025 PSUs | Minimum          
Stock-based compensation, general disclosures.          
Performance goals revenue change and adjusted EBITDA margin     25.00%    
2016 Plan | 2025 PSUs | Maximum          
Stock-based compensation, general disclosures.          
Performance goals revenue change and adjusted EBITDA margin     175.00%    
2016 Plan | Tranche one | 2024 PSUs          
Stock-based compensation, general disclosures.          
Award vesting percentage     33.33%    
2016 Plan | Tranche one | 2025 PSUs          
Stock-based compensation, general disclosures.          
Award vesting percentage     33.33%    
2016 Plan | Tranche two | 2024 PSUs          
Stock-based compensation, general disclosures.          
Award vesting percentage     33.33%    
2016 Plan | Tranche two | 2025 PSUs          
Stock-based compensation, general disclosures.          
Award vesting percentage     33.33%    
2016 Plan | Tranche three | 2025 PSUs          
Stock-based compensation, general disclosures.          
Award vesting percentage     33.33%