Revenue - Narrative (Details) $ in Thousands |
3 Months Ended | 6 Months Ended | |||
|---|---|---|---|---|---|
|
Jun. 30, 2026
USD ($)
|
Jun. 30, 2025
USD ($)
|
Jun. 30, 2026
USD ($)
performance_obligation
|
Jun. 30, 2025
USD ($)
|
Dec. 31, 2025
USD ($)
|
|
| Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction [Line Items] | |||||
| Number of revenue recognition performance obligations | performance_obligation | 2 | ||||
| Revenue recognition for software updates, period | 5 years | ||||
| Variable consideration related to previously recognized sales | $ 0 | $ 0 | $ 0 | $ 0 | |
| Refund asset | 219 | 219 | $ 298 | ||
| Refund liability | 247 | 247 | 326 | ||
| Contract liability, current | 367 | 367 | 662 | ||
| Contract liability, non-current | 388 | 388 | $ 410 | ||
| Contract liability, revenue recognized | $ 133 | $ 31 | $ 280 | $ 61 | |
| Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction, Start Date [Axis]: 2026-07-01 | |||||
| Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction [Line Items] | |||||
| Revenue recognized over remaining contract term | 5 years | 5 years | |||