XML 37 R31.htm IDEA: XBRL DOCUMENT v3.24.3
Revenue Recognition - Disaggregation of Revenue (Details) - USD ($)
$ in Thousands
3 Months Ended 9 Months Ended
Sep. 30, 2024
Sep. 30, 2023
Sep. 30, 2024
Sep. 30, 2023
Disaggregation of Revenue [Line Items]        
Revenues $ 208,438 $ 186,193 $ 621,376 $ 521,152
Revenue, remaining performance obligation, percentage 100.00% 100.00% 100.00% 100.00%
Revenue recognized over time        
Disaggregation of Revenue [Line Items]        
Revenues $ 15,846 $ 11,227 $ 42,924 $ 31,896
Revenue recognized over time | Service Concentration Risk | Revenue Benchmark        
Disaggregation of Revenue [Line Items]        
Revenue, remaining performance obligation, percentage 7.60% 6.00% 6.90% 6.10%
Revenue recognized at a point in time        
Disaggregation of Revenue [Line Items]        
Revenues $ 192,592 $ 174,966 $ 578,452 $ 489,256
Revenue recognized at a point in time | Product Concentration Risk | Revenue Benchmark        
Disaggregation of Revenue [Line Items]        
Revenue, remaining performance obligation, percentage 92.40% 94.00% 93.10% 93.90%
United States        
Disaggregation of Revenue [Line Items]        
Revenues $ 188,130 $ 165,897 $ 559,283 $ 459,976
Asia        
Disaggregation of Revenue [Line Items]        
Revenues 3,197 3,598 8,845 10,159
Canada        
Disaggregation of Revenue [Line Items]        
Revenues 3,047 3,476 8,240 9,982
Europe        
Disaggregation of Revenue [Line Items]        
Revenues 9,653 9,743 28,472 30,257
Mexico        
Disaggregation of Revenue [Line Items]        
Revenues 478 643 2,530 2,130
Middle East        
Disaggregation of Revenue [Line Items]        
Revenues 3,437 2,217 12,511 6,917
Other        
Disaggregation of Revenue [Line Items]        
Revenues $ 496 $ 619 $ 1,495 $ 1,731