v3.26.1
Revenue Recognition - Disaggregation of Revenue (Details) - USD ($)
$ in Thousands
3 Months Ended 6 Months Ended
Jun. 30, 2026
Jun. 30, 2025
Jun. 30, 2026
Jun. 30, 2025
Disaggregation of Revenue [Line Items]        
Revenues $ 222,321 $ 238,095 $ 424,598 $ 460,306
Revenue, remaining performance obligation, percentage 100.00% 100.00% 100.00% 100.00%
Revenue recognized over time        
Disaggregation of Revenue [Line Items]        
Revenues $ 24,754 $ 23,086 $ 44,081 $ 43,372
Revenue recognized over time | Service Concentration Risk | Revenue Benchmark        
Disaggregation of Revenue [Line Items]        
Revenue, remaining performance obligation, percentage 11.10% 9.70% 10.40% 9.40%
Revenue recognized at a point in time        
Disaggregation of Revenue [Line Items]        
Revenues $ 197,567 $ 215,009 $ 380,517 $ 416,934
Revenue recognized at a point in time | Product Concentration Risk | Revenue Benchmark        
Disaggregation of Revenue [Line Items]        
Revenue, remaining performance obligation, percentage 88.90% 90.30% 89.60% 90.60%
United States        
Disaggregation of Revenue [Line Items]        
Revenues $ 200,413 $ 214,350 $ 379,045 $ 416,325
Asia        
Disaggregation of Revenue [Line Items]        
Revenues 3,489 4,083 7,705 7,205
Canada        
Disaggregation of Revenue [Line Items]        
Revenues 3,504 4,147 6,638 8,093
Europe        
Disaggregation of Revenue [Line Items]        
Revenues 12,953 11,278 24,560 20,826
Mexico        
Disaggregation of Revenue [Line Items]        
Revenues 824 594 1,625 1,071
Middle East        
Disaggregation of Revenue [Line Items]        
Revenues 813 2,649 4,011 5,115
Other        
Disaggregation of Revenue [Line Items]        
Revenues $ 325 $ 994 $ 1,014 $ 1,671