v3.26.3
Revenue Recognition - Disaggregation of Revenue (Details) - USD ($)
$ in Thousands
3 Months Ended 9 Months Ended
Sep. 30, 2026
Sep. 30, 2025
Sep. 30, 2026
Sep. 30, 2025
Disaggregation of Revenue [Line Items]        
Revenues $ 235,938 $ 235,651 $ 660,536 $ 695,957
Revenue, remaining performance obligation, percentage 100.00% 100.00% 100.00% 100.00%
Revenue recognized over time        
Disaggregation of Revenue [Line Items]        
Revenues $ 26,032 $ 24,187 $ 75,489 $ 67,559
Revenue recognized over time | Service Concentration Risk | Revenue Benchmark        
Disaggregation of Revenue [Line Items]        
Revenue, remaining performance obligation, percentage 11.00% 10.30% 11.40% 9.70%
Revenue recognized at a point in time        
Disaggregation of Revenue [Line Items]        
Revenues $ 209,906 $ 211,464 $ 585,047 $ 628,398
Revenue recognized at a point in time | Product Concentration Risk | Revenue Benchmark        
Disaggregation of Revenue [Line Items]        
Revenue, remaining performance obligation, percentage 89.00% 89.70% 88.60% 90.30%
United States        
Disaggregation of Revenue [Line Items]        
Revenues $ 210,148 $ 210,714 $ 589,193 $ 627,039
Asia        
Disaggregation of Revenue [Line Items]        
Revenues 2,478 3,835 10,183 11,040
Canada        
Disaggregation of Revenue [Line Items]        
Revenues 3,407 4,542 10,045 12,635
Europe        
Disaggregation of Revenue [Line Items]        
Revenues 16,369 11,550 40,929 32,376
Mexico        
Disaggregation of Revenue [Line Items]        
Revenues 1,027 679 2,652 1,750
Middle East        
Disaggregation of Revenue [Line Items]        
Revenues 1,940 3,361 5,951 8,476
Other        
Disaggregation of Revenue [Line Items]        
Revenues $ 569 $ 970 $ 1,583 $ 2,641