v3.25.2
Stock-Based Compensation and Stockholders' Equity - Narrative (Details) - USD ($)
3 Months Ended 6 Months Ended
Jun. 30, 2024
Jun. 30, 2025
Jun. 30, 2024
Dec. 31, 2024
Apr. 30, 2024
Share-based Compensation Arrangement by Share-based Payment Award [Line Items]          
Number of shares entitled per RSU (in shares)   1      
Stock options granted during period (in shares)   286,695 566,811    
Stock repurchase program, authorized amount         $ 40,000,000
Purchase of treasury stock $ 499,000 $ 500,000 $ 499,000    
Purchase of treasury stock (in shares)   26,495      
Share repurchase program, remaining amount   $ 39,500,000      
RSUs          
Share-based Compensation Arrangement by Share-based Payment Award [Line Items]          
Unrecognized stock based compensation expense   $ 19,000,000      
Share-based payment arrangement, period for recognition (in years)   1 year 11 months 26 days      
ESPP shares issued during period (in shares)   522,724      
Nonvested balance (in shares)   1,481,665   1,187,426  
PSUs          
Share-based Compensation Arrangement by Share-based Payment Award [Line Items]          
Requisite service period (in years)   3 years      
Unrecognized stock based compensation expense   $ 14,900,000      
Share-based payment arrangement, period for recognition (in years)   1 year 7 months 20 days      
ESPP shares issued during period (in shares)   165,455      
Shares of entitled common stock (in shares)   1.5      
Award vesting period (in years)   3 years      
Nonvested balance (in shares)   1,486,566   1,350,358  
PSUs | Performance Conditions          
Share-based Compensation Arrangement by Share-based Payment Award [Line Items]          
Nonvested balance (in shares)   594,634      
PSUs | Market Conditions          
Share-based Compensation Arrangement by Share-based Payment Award [Line Items]          
Nonvested balance (in shares)   891,932      
ESPP          
Share-based Compensation Arrangement by Share-based Payment Award [Line Items]          
ESPP shares issued during period (in shares)   171,561 149,983    
Minimum          
Share-based Compensation Arrangement by Share-based Payment Award [Line Items]          
Weighted average exercise price of options exercised during period (in dollars per share)   $ 3.68 $ 3.68    
Minimum | RSUs          
Share-based Compensation Arrangement by Share-based Payment Award [Line Items]          
Requisite service period (in years)   1 year      
Maximum          
Share-based Compensation Arrangement by Share-based Payment Award [Line Items]          
Weighted average exercise price of options exercised during period (in dollars per share)   $ 13.82 $ 13.82    
Maximum | RSUs          
Share-based Compensation Arrangement by Share-based Payment Award [Line Items]          
Requisite service period (in years)   3 years