XML 66 R51.htm IDEA: XBRL DOCUMENT v3.24.0.1
Revenue - Narrative (Details) - USD ($)
12 Months Ended
Dec. 31, 2023
Dec. 31, 2022
Dec. 31, 2021
Revenue, Initial Application Period Cumulative Effect Transition [Line Items]      
Asset recognized related to incremental costs of obtaining a contract $ 0 $ 0  
Costs in excess of billings 52,035,000 41,732,000 $ 54,437,000
Unearned revenue 3,941,000 4,572,000 3,681,000
Revenue recognized which was in contract liabilities 35,500,000 44,400,000 53,000,000
Billings in excess of costs      
Revenue, Initial Application Period Cumulative Effect Transition [Line Items]      
Unearned revenue $ 44,735,000 $ 35,017,000 $ 46,711,000
Minimum      
Revenue, Initial Application Period Cumulative Effect Transition [Line Items]      
Contract payment terms 30 days    
Maximum      
Revenue, Initial Application Period Cumulative Effect Transition [Line Items]      
Contract payment terms 60 days    
Remaining performance obligation expected timing of satisfaction 1 year