XML 69 R51.htm IDEA: XBRL DOCUMENT v3.25.0.1
Revenue from Contracts with Customers - Schedule of the Disaggregation of Revenue (Details) - USD ($)
$ in Thousands
12 Months Ended
Dec. 31, 2024
Dec. 31, 2023
Dec. 31, 2022
Disaggregation of Revenue [Line Items]      
Operating revenue $ 2,849,685 $ 2,854,390 $ 2,699,250
Operating segments      
Disaggregation of Revenue [Line Items]      
Operating revenue 2,868,593 2,869,444 2,715,233
Eliminations      
Disaggregation of Revenue [Line Items]      
Operating revenue (18,908) (15,054) (15,983)
Fixed-price | Operating segments      
Disaggregation of Revenue [Line Items]      
Operating revenue 1,684,927 1,403,462 1,310,647
Unit-price | Operating segments      
Disaggregation of Revenue [Line Items]      
Operating revenue 217,563 176,580 208,396
Cost reimbursable | Operating segments      
Disaggregation of Revenue [Line Items]      
Operating revenue 966,103 1,289,402 1,196,190
Electrical & Mechanical      
Disaggregation of Revenue [Line Items]      
Operating revenue 2,023,911 2,125,543 1,988,729
Electrical & Mechanical | Operating segments      
Disaggregation of Revenue [Line Items]      
Operating revenue 2,031,447 2,134,867 1,997,840
Electrical & Mechanical | Eliminations      
Disaggregation of Revenue [Line Items]      
Operating revenue (7,536) (9,324) (9,111)
Electrical & Mechanical | Commercial | Operating segments      
Disaggregation of Revenue [Line Items]      
Operating revenue 1,197,760 1,204,016 1,082,456
Electrical & Mechanical | Industrial | Operating segments      
Disaggregation of Revenue [Line Items]      
Operating revenue 322,661 473,339 405,730
Electrical & Mechanical | Institutional | Operating segments      
Disaggregation of Revenue [Line Items]      
Operating revenue 364,611 262,344 215,509
Electrical & Mechanical | Renewables | Operating segments      
Disaggregation of Revenue [Line Items]      
Operating revenue 36,975 55,402 151,100
Electrical & Mechanical | Service & other | Operating segments      
Disaggregation of Revenue [Line Items]      
Operating revenue 109,440 139,766 143,045
Electrical & Mechanical | Fixed-price | Operating segments      
Disaggregation of Revenue [Line Items]      
Operating revenue 1,299,059 1,049,626 1,002,117
Electrical & Mechanical | Unit-price | Operating segments      
Disaggregation of Revenue [Line Items]      
Operating revenue 61,964 81,786 91,565
Electrical & Mechanical | Cost reimbursable | Operating segments      
Disaggregation of Revenue [Line Items]      
Operating revenue 670,424 1,003,455 904,158
Transmission & Distribution      
Disaggregation of Revenue [Line Items]      
Operating revenue 825,774 728,847 710,521
Transmission & Distribution | Operating segments      
Disaggregation of Revenue [Line Items]      
Operating revenue 837,146 734,577 717,393
Transmission & Distribution | Eliminations      
Disaggregation of Revenue [Line Items]      
Operating revenue (11,372) (5,730) (6,872)
Transmission & Distribution | Utility | Operating segments      
Disaggregation of Revenue [Line Items]      
Operating revenue 753,725 677,434 645,077
Transmission & Distribution | Transportation | Operating segments      
Disaggregation of Revenue [Line Items]      
Operating revenue 83,421 57,143 72,316
Transmission & Distribution | Fixed-price | Operating segments      
Disaggregation of Revenue [Line Items]      
Operating revenue 385,868 353,836 308,530
Transmission & Distribution | Unit-price | Operating segments      
Disaggregation of Revenue [Line Items]      
Operating revenue 155,599 94,794 116,831
Transmission & Distribution | Cost reimbursable | Operating segments      
Disaggregation of Revenue [Line Items]      
Operating revenue $ 295,679 $ 285,947 $ 292,032