v3.26.1
Revenue Recognition - Narrative (Details) - USD ($)
3 Months Ended
Mar. 31, 2026
Mar. 31, 2025
Dec. 31, 2025
Disaggregation of Revenue [Line Items]      
Impairment charges related to contract assets $ 0 $ 0  
Short-Term Unbilled Receivables      
Disaggregation of Revenue [Line Items]      
Unbilled receivables, not billable 900,000   $ 1,500,000
Long-Term Unbilled Receivables      
Disaggregation of Revenue [Line Items]      
Unbilled receivables, not billable $ 400,000   $ 300,000