XML 69 R57.htm IDEA: XBRL DOCUMENT v3.26.1
Operating Segments - Schedule of Condensed Consolidated Segment Information (Details) - USD ($)
$ in Thousands
3 Months Ended 6 Months Ended
Jun. 30, 2026
Jun. 30, 2025
Jun. 30, 2026
Jun. 30, 2025
Segment Reporting [Line Items]        
Revenue $ 173,457 $ 142,241 $ 312,316 $ 275,349
Cost of revenue 136,164 102,415 243,853 198,804
Total gross profit 37,293 39,826 68,463 76,545
Selling, general and administrative 28,116 26,632 56,230 53,150
Acquisition-related retention expense and contingent consideration 230 795 379 1,222
Amortization of intangibles 1,695 1,757 3,469 3,620
Operating income 7,252 10,642 8,385 18,553
Interest expense (773) (563) (1,474) (1,089)
Interest income 1 334 16 704
Gain on disposition of property and equipment 81 407 319 740
Gain (loss) on change in fair value of interest rate swap 22 (56) 60 (153)
Total other (expenses) income (669) 122 (1,079) 202
Income before income taxes 6,583 10,764 7,306 18,755
Operating Segments | ODR        
Segment Reporting [Line Items]        
Revenue 128,414 108,948 228,225 199,341
Cost of revenue 97,654 77,359 174,481 141,591
Total gross profit 30,760 31,589 53,744 57,750
Operating Segments | GCR        
Segment Reporting [Line Items]        
Revenue 45,043 33,293 84,091 76,008
Cost of revenue 38,510 25,056 69,372 57,213
Total gross profit 6,533 8,237 14,719 18,795
Corporate        
Segment Reporting [Line Items]        
Selling, general and administrative $ 2,100 $ 1,600 $ 3,900 $ 3,200