v3.26.1
Operating Segments - Schedule of Condensed Consolidated Segment Information (Details) - USD ($)
$ in Thousands
3 Months Ended
Mar. 31, 2026
Mar. 31, 2025
Segment Reporting Information [Line Items]    
Revenue $ 138,859 $ 133,108
Total gross profit 31,170 36,719
Selling, general and administrative 28,114 26,518
Acquisition-related retention expense and contingent consideration 149 427
Amortization of intangibles 1,774 1,863
Operating income 1,133 7,911
Interest expense (701) (526)
Interest income 15 370
Gain on disposition of property and equipment 238 333
Gain (loss) on change in fair value of interest rate swap 38 (97)
Total other (expenses) income (410) 80
Income before income taxes 723 7,991
Operating Segments | ODR    
Segment Reporting Information [Line Items]    
Revenue 99,811 90,393
Total gross profit 22,984 26,161
Operating Segments | GCR    
Segment Reporting Information [Line Items]    
Revenue 39,048 42,715
Total gross profit 8,186 10,558
Corporate    
Segment Reporting Information [Line Items]    
Selling, general and administrative $ 1,900 $ 1,600