XML 51 R40.htm IDEA: XBRL DOCUMENT v3.25.3
Revenue from Contracts with Customers - Schedule of the Disaggregation of Revenue (Details) - USD ($)
$ in Thousands
3 Months Ended 9 Months Ended
Sep. 30, 2025
Sep. 30, 2024
Sep. 30, 2025
Sep. 30, 2024
Disaggregation of Revenue [Line Items]        
Operating revenues $ 986,820 $ 760,985 $ 2,734,915 $ 2,090,047
Operating segments        
Disaggregation of Revenue [Line Items]        
Operating revenues 990,724 765,399 2,749,950 2,105,555
Eliminations        
Disaggregation of Revenue [Line Items]        
Operating revenues (3,904) (4,414) (15,035) (15,508)
Fixed-price | Operating segments        
Disaggregation of Revenue [Line Items]        
Operating revenues 515,230 433,908 1,452,588 1,248,617
Cost reimbursable | Operating segments        
Disaggregation of Revenue [Line Items]        
Operating revenues 426,792 269,612 1,165,444 689,668
Unit-price | Operating segments        
Disaggregation of Revenue [Line Items]        
Operating revenues 48,702 61,879 131,918 167,270
E&M        
Disaggregation of Revenue [Line Items]        
Operating revenues 765,540 534,741 2,121,145 1,476,151
E&M | Operating segments        
Disaggregation of Revenue [Line Items]        
Operating revenues 767,312 536,895 2,129,139 1,481,778
E&M | Eliminations        
Disaggregation of Revenue [Line Items]        
Operating revenues (1,772) (2,154) (7,994) (5,627)
E&M | Commercial | Operating segments        
Disaggregation of Revenue [Line Items]        
Operating revenues 553,077 327,403 1,480,106 860,088
E&M | Institutional | Operating segments        
Disaggregation of Revenue [Line Items]        
Operating revenues 90,951 93,390 286,612 274,916
E&M | Industrial | Operating segments        
Disaggregation of Revenue [Line Items]        
Operating revenues 70,114 76,493 233,802 236,349
E&M | Service & other | Operating segments        
Disaggregation of Revenue [Line Items]        
Operating revenues 33,699 29,195 85,796 82,874
E&M | Renewables | Operating segments        
Disaggregation of Revenue [Line Items]        
Operating revenues 19,471 10,414 42,823 27,551
E&M | Fixed-price | Operating segments        
Disaggregation of Revenue [Line Items]        
Operating revenues 396,402 326,972 1,126,383 966,035
E&M | Cost reimbursable | Operating segments        
Disaggregation of Revenue [Line Items]        
Operating revenues 362,826 194,892 972,574 466,489
E&M | Unit-price | Operating segments        
Disaggregation of Revenue [Line Items]        
Operating revenues 8,084 15,031 30,182 49,254
T&D        
Disaggregation of Revenue [Line Items]        
Operating revenues 221,280 226,244 613,770 613,896
T&D | Operating segments        
Disaggregation of Revenue [Line Items]        
Operating revenues 223,412 228,504 620,811 623,777
T&D | Eliminations        
Disaggregation of Revenue [Line Items]        
Operating revenues (2,132) (2,260) (7,041) (9,881)
T&D | Utility | Operating segments        
Disaggregation of Revenue [Line Items]        
Operating revenues 196,471 206,669 545,971 559,922
T&D | Transportation | Operating segments        
Disaggregation of Revenue [Line Items]        
Operating revenues 26,941 21,835 74,840 63,855
T&D | Fixed-price | Operating segments        
Disaggregation of Revenue [Line Items]        
Operating revenues 118,828 106,936 326,205 282,582
T&D | Cost reimbursable | Operating segments        
Disaggregation of Revenue [Line Items]        
Operating revenues 63,966 74,720 192,870 223,179
T&D | Unit-price | Operating segments        
Disaggregation of Revenue [Line Items]        
Operating revenues $ 40,618 $ 46,848 $ 101,736 $ 118,016