Revenue Recognition - Roll-Forward of Netted Contract Assets and Contract Liabilities (Details) - USD ($) $ in Thousands |
3 Months Ended | |
|---|---|---|
Mar. 31, 2026 |
Mar. 31, 2025 |
|
| Change in Contract with Customer, Asset and Liability [Roll Forward] | ||
| Balance at beginning of period | $ (16,067) | $ (6,076) |
| Revenues recognized that were included in gross contract liabilities | 13,297 | 8,683 |
| Contract assets reclassified to accounts receivable | (6,755) | (2,242) |
| Cash received in advance and remained in net contract liabilities | (319) | (557) |
| Contract terminations | 90 | |
| Contract modifications and terminations | 50 | |
| Other | (251) | |
| Balance at end of period | $ (10,005) | $ (142) |