Revenue from contracts with customers (Details) - USD ($) $ in Thousands | 3 Months Ended |
Mar. 31, 2024 | Mar. 31, 2023 |
Disaggregation of Revenue [Line Items] | | |
Revenue | $ 329,590 | $ 307,900 |
Intersegment eliminations | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | (46,552) | (39,585) |
Aggregates | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | 84,273 | 83,521 |
Ready-mix concrete | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | 99,855 | 96,769 |
Asphalt | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | 16,473 | 13,619 |
Other | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | 39,011 | 30,306 |
Contracting services public-sector | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | 88,411 | 72,072 |
Contracting services private-sector | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | 37,084 | 42,911 |
Liquid Asphalt | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | 11,035 | 8,287 |
Pacific | Intersegment eliminations | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | (13,608) | (10,804) |
Pacific | Aggregates | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | 19,549 | 18,697 |
Pacific | Ready-mix concrete | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | 31,220 | 26,144 |
Pacific | Asphalt | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | 2,347 | 1,316 |
Pacific | Other | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | 25,330 | 23,420 |
Pacific | Contracting services public-sector | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | 5,475 | 3,971 |
Pacific | Contracting services private-sector | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | 8,074 | 2,899 |
Pacific | Liquid Asphalt | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | 0 | 0 |
Northwest | Intersegment eliminations | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | (14,908) | (12,932) |
Northwest | Aggregates | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | 39,398 | 42,573 |
Northwest | Ready-mix concrete | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | 31,776 | 33,905 |
Northwest | Asphalt | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | 8,237 | 6,927 |
Northwest | Other | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | 3,574 | 2,682 |
Northwest | Contracting services public-sector | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | 36,044 | 17,003 |
Northwest | Contracting services private-sector | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | 15,031 | 25,761 |
Northwest | Liquid Asphalt | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | 0 | 0 |
Mountain | Intersegment eliminations | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | (3,962) | (5,914) |
Mountain | Aggregates | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | 9,455 | 9,667 |
Mountain | Ready-mix concrete | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | 13,835 | 14,370 |
Mountain | Asphalt | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | 830 | 810 |
Mountain | Other | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | 5 | 2 |
Mountain | Contracting services public-sector | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | 25,859 | 28,238 |
Mountain | Contracting services private-sector | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | 13,803 | 13,445 |
Mountain | Liquid Asphalt | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | 0 | 0 |
Central | Intersegment eliminations | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | (6,097) | (7,131) |
Central | Aggregates | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | 15,871 | 12,584 |
Central | Ready-mix concrete | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | 23,024 | 22,350 |
Central | Asphalt | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | 5,059 | 4,566 |
Central | Other | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | 1,898 | 1,585 |
Central | Contracting services public-sector | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | 21,033 | 22,860 |
Central | Contracting services private-sector | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | 176 | 806 |
Central | Liquid Asphalt | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | 0 | 0 |
Corporate Services and Eliminations | Intersegment eliminations | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | (4,996) | (582) |
Corporate Services and Eliminations | Aggregates | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | 0 | 0 |
Corporate Services and Eliminations | Ready-mix concrete | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | 0 | 0 |
Corporate Services and Eliminations | Asphalt | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | 0 | 0 |
Corporate Services and Eliminations | Other | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | 5,142 | 426 |
Corporate Services and Eliminations | Contracting services public-sector | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | 0 | 0 |
Corporate Services and Eliminations | Contracting services private-sector | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | 0 | 0 |
Corporate Services and Eliminations | Liquid Asphalt | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | 0 | 0 |
Energy Services | Intersegment eliminations | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | (2,981) | (2,222) |
Energy Services | Aggregates | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | 0 | 0 |
Energy Services | Ready-mix concrete | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | 0 | 0 |
Energy Services | Asphalt | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | 0 | 0 |
Energy Services | Other | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | 3,062 | 2,191 |
Energy Services | Contracting services public-sector | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | 0 | 0 |
Energy Services | Contracting services private-sector | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | 0 | 0 |
Energy Services | Liquid Asphalt | | |
Disaggregation of Revenue [Line Items] | | |
Revenue | $ 11,035 | $ 8,287 |