XML 60 R52.htm IDEA: XBRL DOCUMENT
v3.26.1

Revenue - Schedule of Contract Assets (Details) - USD ($) $ in Thousands | Mar. 31, 2026 | Dec. 31, 2025
--- | --- | ---
Statement of Financial Position [Abstract] |  |
Unbilled receivables | $ 23,262 | $ 16,117
Retainage | 855 | 879
Total contract assets | $ 24,117 | $ 16,996

X
- Definition Carrying amount as of the balance sheet date of the asset arising from commodity contracts such as futures contracts tied to the movement of a particular commodity, which are expected to be converted into cash or otherwise disposed of within a year or the normal operating cycle, if longer. + References Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef -Topic 210 -SubTopic 10 -Name Accounting Standards Codification -Section S99 -Paragraph 1 -Subparagraph (SX 210.5-02(8)) -Publisher FASB -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1 + Details
Name: | us-gaap_CommodityContractAssetCurrent
Namespace Prefix: | us-gaap_
Data Type: | xbrli:monetaryItemType
Balance Type: | debit
Period Type: | instant

X
- Definition The carrying amount of deferred costs. + References No definition available. + Details
Name: | us-gaap_DeferredCostsCurrentAndNoncurrent
Namespace Prefix: | us-gaap_
Data Type: | xbrli:monetaryItemType
Balance Type: | debit
Period Type: | instant

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

X
- Definition Amount received for services rendered and products shipped, but not yet billed, for non-contractual agreements due within one year or the normal operating cycle, if longer. + References No definition available. + Details
Name: | us-gaap_UnbilledReceivablesCurrent
Namespace Prefix: | us-gaap_
Data Type: | xbrli:monetaryItemType
Balance Type: | debit
Period Type: | instant