XML 52 R38.htm IDEA: XBRL DOCUMENT
v3.25.4

Operating Segments (Tables) | 12 Months Ended
--- | ---
Dec. 31, 2025
Segment Reporting [Abstract] |
Schedule of Segment Information | Consolidated segment information for the periods presented is as follows:
| For the Years Ended December 31,
(in thousands) | 2025 |  | 2024 |  | 2023
Statement of Operations Data: |  |  |  |  |
Revenue: |  |  |  |  |
ODR | $ | 485,690 |  |  | $ | 345,500 |  |  | $ | 261,958 |
GCR | 161,114 |  |  | 173,281 |  |  | 254,392 |
Total revenue | 646,804 |  |  | 518,781 |  |  | 516,350 |
Gross profit: |  |  |  |  |
ODR | 129,876 |  |  | 107,775 |  |  | 76,090 |
GCR | 39,438 |  |  | 36,506 |  |  | 43,200 |
Total gross profit | 169,314 |  |  | 144,281 |  |  | 119,290 |
Selling, general and administrative (1) | 109,518 |  |  | 97,199 |  |  | 87,397 |
Acquisition-related retention expense and contingent consideration | 1,985 |  |  | 3,770 |  |  | 729 |
Amortization of intangibles | 8,357 |  |  | 4,688 |  |  | 1,880 |
Operating income | $ | 49,454 |  |  | $ | 38,624 |  |  | $ | 29,284 |
Other (expenses) income |  |  |  |  |
Interest expense | (3,133) |  |  | (1,869) |  |  | (2,046) |
Interest income | 815 |  |  | 2,227 |  |  | 1,217 |
Loss on early debt extinguishment | — |  |  | — |  |  | (311) |
(Loss) gain on change in fair value of interest rate swap | (191) |  |  | 34 |  |  | (124) |
Gain on disposition of property and equipment | 1,684 |  |  | 950 |  |  | 80 |
Total unallocated amounts | (825) |  |  | 1,342 |  |  | (1,184) |
Total consolidated income before income taxes | $ | 48,629 |  |  | $ | 39,966 |  |  | $ | 28,100 |
(1) Included within selling, general and administrative expenses was $7.0 million, $5.8 million and $4.9 million of non-cash stock-based compensation expense for the years ended December 31, 2025, 2024 and 2023, respectively.

X
- Definition Tabular disclosure of the profit or loss and total assets for each reportable segment. An entity discloses certain information on each reportable segment if the amounts (a) are included in the measure of segment profit or loss reviewed by the chief operating decision maker or (b) are otherwise regularly provided to the chief operating decision maker, even if not included in that measure of segment profit or loss. + References Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef -Name Accounting Standards Codification -Topic 280 -SubTopic 10 -Section 50 -Paragraph 25 -Publisher FASB -URI https://asc.fasb.org/1943274/2147482810/280-10-50-25 Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef -Name Accounting Standards Codification -Topic 280 -SubTopic 10 -Section 50 -Paragraph 22 -Publisher FASB -URI https://asc.fasb.org/1943274/2147482810/280-10-50-22 Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef -Name Accounting Standards Codification -Topic 280 -SubTopic 10 -Section 50 -Paragraph 30 -Publisher FASB -URI https://asc.fasb.org/1943274/2147482810/280-10-50-30 + Details
Name: | us-gaap_ScheduleOfSegmentReportingInformationBySegmentTextBlock
Namespace Prefix: | us-gaap_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- References No definition available. + Details
Name: | us-gaap_SegmentReportingAbstract
Namespace Prefix: | us-gaap_
Data Type: | xbrli:stringItemType
Balance Type: | na
Period Type: | duration