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