v3.25.1
Fair Value Measurements - Carrying Values of the Company's Contingent Earnout Payment Obligations (Details) - USD ($)
$ in Thousands
Mar. 31, 2025
Dec. 31, 2024
Fair Value Measurement Inputs and Valuation Techniques [Line Items]    
Second Consolidated Mechanical Earnout Period $ 10,618 $ 13,190
Level 1    
Fair Value Measurement Inputs and Valuation Techniques [Line Items]    
Second Consolidated Mechanical Earnout Period 0 0
Level 2    
Fair Value Measurement Inputs and Valuation Techniques [Line Items]    
Second Consolidated Mechanical Earnout Period 0 0
Level 3    
Fair Value Measurement Inputs and Valuation Techniques [Line Items]    
Second Consolidated Mechanical Earnout Period 10,618 13,190
First Kent Island Earnout Period    
Fair Value Measurement Inputs and Valuation Techniques [Line Items]    
Contingent consideration, liability 2,365 2,297
First Kent Island Earnout Period | Level 1    
Fair Value Measurement Inputs and Valuation Techniques [Line Items]    
Contingent consideration, liability 0 0
First Kent Island Earnout Period | Level 2    
Fair Value Measurement Inputs and Valuation Techniques [Line Items]    
Contingent consideration, liability 0 0
First Kent Island Earnout Period | Level 3    
Fair Value Measurement Inputs and Valuation Techniques [Line Items]    
Contingent consideration, liability 2,365 2,297
First Consolidated Mechanical Earnout Period    
Fair Value Measurement Inputs and Valuation Techniques [Line Items]    
Contingent consideration, liability 402 402
First Consolidated Mechanical Earnout Period | Level 1    
Fair Value Measurement Inputs and Valuation Techniques [Line Items]    
Contingent consideration, liability 0 0
First Consolidated Mechanical Earnout Period | Level 2    
Fair Value Measurement Inputs and Valuation Techniques [Line Items]    
Contingent consideration, liability 0 0
First Consolidated Mechanical Earnout Period | Level 3    
Fair Value Measurement Inputs and Valuation Techniques [Line Items]    
Contingent consideration, liability 402 402
Second ACME Earnout Period    
Fair Value Measurement Inputs and Valuation Techniques [Line Items]    
Contingent consideration, liability 1,857 1,713
Second ACME Earnout Period | Level 1    
Fair Value Measurement Inputs and Valuation Techniques [Line Items]    
Contingent consideration, liability 0 0
Second ACME Earnout Period | Level 2    
Fair Value Measurement Inputs and Valuation Techniques [Line Items]    
Contingent consideration, liability 0 0
Second ACME Earnout Period | Level 3    
Fair Value Measurement Inputs and Valuation Techniques [Line Items]    
Contingent consideration, liability 1,857 1,713
Second IA Earnout Period    
Fair Value Measurement Inputs and Valuation Techniques [Line Items]    
Contingent consideration, liability 3,314 3,222
Second IA Earnout Period | Level 1    
Fair Value Measurement Inputs and Valuation Techniques [Line Items]    
Contingent consideration, liability 0 0
Second IA Earnout Period | Level 2    
Fair Value Measurement Inputs and Valuation Techniques [Line Items]    
Contingent consideration, liability 0 0
Second IA Earnout Period | Level 3    
Fair Value Measurement Inputs and Valuation Techniques [Line Items]    
Contingent consideration, liability 3,314 3,222
Second Kent Island Earnout Period    
Fair Value Measurement Inputs and Valuation Techniques [Line Items]    
Contingent consideration, liability 2,244 2,201
Second Kent Island Earnout Period | Level 1    
Fair Value Measurement Inputs and Valuation Techniques [Line Items]    
Contingent consideration, liability 0 0
Second Kent Island Earnout Period | Level 2    
Fair Value Measurement Inputs and Valuation Techniques [Line Items]    
Contingent consideration, liability 0 0
Second Kent Island Earnout Period | Level 3    
Fair Value Measurement Inputs and Valuation Techniques [Line Items]    
Contingent consideration, liability 2,244 2,201
Second Consolidated Mechanical Earnout Period    
Fair Value Measurement Inputs and Valuation Techniques [Line Items]    
Contingent consideration, liability 436 355
Second Consolidated Mechanical Earnout Period | Level 1    
Fair Value Measurement Inputs and Valuation Techniques [Line Items]    
Contingent consideration, liability 0 0
Second Consolidated Mechanical Earnout Period | Level 2    
Fair Value Measurement Inputs and Valuation Techniques [Line Items]    
Contingent consideration, liability 0 0
Second Consolidated Mechanical Earnout Period | Level 3    
Fair Value Measurement Inputs and Valuation Techniques [Line Items]    
Contingent consideration, liability $ 436 355
First IA Earnout Period    
Fair Value Measurement Inputs and Valuation Techniques [Line Items]    
Contingent consideration, liability   3,000
First IA Earnout Period | Level 1    
Fair Value Measurement Inputs and Valuation Techniques [Line Items]    
Contingent consideration, liability   0
First IA Earnout Period | Level 2    
Fair Value Measurement Inputs and Valuation Techniques [Line Items]    
Contingent consideration, liability   0
First IA Earnout Period | Level 3    
Fair Value Measurement Inputs and Valuation Techniques [Line Items]    
Contingent consideration, liability   $ 3,000