v3.25.1
Fair Value Measurements - Narrative (Details)
$ in Thousands
1 Months Ended 3 Months Ended
Dec. 02, 2024
USD ($)
payment
Sep. 03, 2024
USD ($)
payment
Feb. 28, 2025
USD ($)
Mar. 31, 2025
USD ($)
payment
Mar. 31, 2024
USD ($)
Nov. 30, 2023
USD ($)
Jul. 31, 2023
USD ($)
Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]              
Interest income       $ 370 $ 562    
Change in fair value of contingent consideration       427 623    
Interest Rate Swap              
Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]              
(Loss) gain on change in fair value of interest rate swap       (100) 100    
Other Noncurrent Assets              
Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]              
Fair value of the interest rate swap       100      
Jake Marshall Transaction              
Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]              
Change in fair value of contingent consideration       400 600    
ACME Industrial piping LLC              
Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]              
Contingent consideration, liability       2,500     $ 1,500
Payment to former owners       500      
ACME Industrial piping LLC | Earn Out Payment Two              
Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]              
Contingent consideration, liability       $ 2,000      
Earnout period       12 months      
ACME Industrial piping LLC | Earn Out Payment Two | Maximum              
Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]              
Gross profits from acquired companies       $ 2,500      
ACME Industrial piping LLC | Earn Out Payment One              
Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]              
Contingent consideration, liability       $ 500      
Number of earnout tranches | payment       2      
Earnout period       12 months      
ACME Industrial piping LLC | Earn Out Payment One | Maximum              
Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]              
Gross profits from acquired companies       $ 2,000      
Industrial Air Transaction              
Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]              
Contingent consideration, liability       6,500   $ 3,200  
Payment to former owners     $ 3,000        
Industrial Air Transaction | Earn Out Payment Two              
Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]              
Contingent consideration, liability       $ 3,500      
Earnout period       12 months      
Industrial Air Transaction | Earn Out Payment Two | Maximum              
Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]              
Gross profits from acquired companies       $ 8,800      
Industrial Air Transaction | Earn Out Payment One              
Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]              
Contingent consideration, liability       $ 3,000      
Number of earnout tranches | payment       2      
Earnout period       12 months      
Industrial Air Transaction | Earn Out Payment One | Maximum              
Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]              
Gross profits from acquired companies       $ 7,600      
Kent Island Mechanical, Inc.              
Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]              
Contingent consideration, liability   $ 4,400          
Number of earnout tranches | payment   2          
Earnout provision   $ 4,381   4,381      
Kent Island Mechanical, Inc. | Maximum              
Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]              
Contingent consideration, liability   5,000          
Kent Island Mechanical, Inc. | Earn Out Payment Two              
Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]              
Contingent consideration, liability   $ 2,500          
Earnout period   12 months          
Kent Island Mechanical, Inc. | Earn Out Payment Two | Maximum              
Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]              
Gross profits from acquired companies   $ 200          
Kent Island Mechanical, Inc. | Earn Out Payment One              
Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]              
Contingent consideration, liability   $ 2,500          
Earnout period   12 months          
Kent Island Mechanical, Inc. | Earn Out Payment One | Maximum              
Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]              
Gross profits from acquired companies   $ 3,300          
Consolidated Mechanical              
Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]              
Contingent consideration, liability $ 2,000            
Number of earnout tranches | payment 2            
Earnout provision $ 757     757      
Consolidated Mechanical | Earn Out Payment Two              
Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]              
Contingent consideration, liability $ 1,000            
Earnout period 12 months            
Consolidated Mechanical | Earn Out Payment Two | Maximum              
Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]              
Gross profits from acquired companies $ 6,800            
Consolidated Mechanical | Earn Out Payment One              
Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]              
Contingent consideration, liability $ 1,000            
Level 1              
Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]              
Interest income       $ 400 $ 600    
Level 3 | Kent Island Mechanical, Inc. | Contingent Consideration Liability | Measurement Input, Discount Rate              
Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]              
Earnout payments, measurement input       0.149      
Level 3 | Consolidated Mechanical | Contingent Consideration Liability | Measurement Input, Discount Rate              
Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]              
Earnout payments, measurement input       0.104      
Level 3 | A&R Wintrust Term Loan - term loan payable in quarterly installments of principal, plus interest through February 2026              
Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]              
Fair value of debt       $ 10,000