v3.26.1
Revenue Recognition and Contract Costs - Narrative (Details) - USD ($)
3 Months Ended 6 Months Ended
Jun. 30, 2026
Jun. 30, 2025
Jun. 30, 2026
Jun. 30, 2025
Dec. 31, 2025
Capitalized Contract Cost [Line Items]          
Contract assets, noncurrent $ 0   $ 0   $ 0
Contract liabilities, noncurrent 0   0   0
Revenue recognized 13,400,000 $ 11,300,000 11,500,000 $ 11,100,000  
Revenue from performance obligations satisfied (reversed) in previous periods 300,000 (300,000) 800,000 600,000  
Remaining performance obligations 168,500,000   168,500,000    
Unamortized deferred contract costs 5,000,000.0   5,000,000.0   5,200,000
Unamortized deferred contract costs, current 1,818,000   1,818,000   1,812,000
Unamortized deferred contract costs, noncurrent 3,213,000   3,213,000   3,425,000
Amortization of deferred contract costs $ 300,000 $ 400,000 $ 792,000 $ 746,000  
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction, Start Date [Axis]: 2026-07-01          
Capitalized Contract Cost [Line Items]          
Remaining performance obligation (as a percent) 50.00%   50.00%    
Remaining performance obligations (in months) 12 months   12 months    
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction, Start Date [Axis]: 2027-01-01 | Minimum          
Capitalized Contract Cost [Line Items]          
Remaining performance obligations (in months) 13 months   13 months    
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction, Start Date [Axis]: 2027-01-01 | Maximum          
Capitalized Contract Cost [Line Items]          
Remaining performance obligations (in months) 24 months   24 months    
Balance Sheet Location [Axis]: us-gaap:PrepaidExpenseAndOtherAssetsCurrent          
Capitalized Contract Cost [Line Items]          
Unamortized deferred contract costs, current $ 1,800,000   $ 1,800,000   $ 1,800,000