| Summary of Significant Accounting Policies - Accounts Receivable (Details) - USD ($) | 12 Months Ended | ||
|---|---|---|---|
| Dec. 31, 2022 | Dec. 31, 2021 | Dec. 31, 2020 | |
| Accounts Receivable, Allowance for Credit Loss [Roll Forward] | |||
| Allowance for credit loss, beginning of period | $ 2,263,000 | $ 2,266,000 | $ 2,260,000 | 
| (Recoveries of) charges to costs and expenses, net | (382,000) | 187,000 | 282,000 | 
| Account write-offs and other | (970,000) | (190,000) | (276,000) | 
| Allowance for credit loss, end of period | 911,000 | 2,263,000 | $ 2,266,000 | 
| Accounts receivable retainage reserve | $ 0 | $ 0 | |
| Minimum | |||
| Accounts Receivable, Allowance for Credit Loss [Roll Forward] | |||
| Accounts receivable retainage | 5.00% | ||
| Maximum | |||
| Accounts Receivable, Allowance for Credit Loss [Roll Forward] | |||
| Accounts receivable retainage | 10.00% | ||
| X | ||||||||||
| 
- Definition Accounts Receivable Retainage No definition available. 
 | 
| X | ||||||||||
| 
- Definition Contracts Receivable Retainage Allowances and Reserves No definition available. 
 | 
| X | ||||||||||
| 
- Definition Amount of allowance for credit loss on accounts receivable. Reference 1: http://www.xbrl.org/2003/role/disclosureRef 
 | 
| X | ||||||||||
| 
- Definition A roll forward is a reconciliation of a concept from the beginning of a period to the end of a period. No definition available. 
 | 
| X | ||||||||||
| 
- Definition Amount of direct write-downs of accounts receivable charged against the allowance. Reference 1: http://www.xbrl.org/2003/role/disclosureRef 
 | 
| X | ||||||||||
| 
- Definition Amount of expense (reversal of expense) for expected credit loss on accounts receivable. Reference 1: http://www.xbrl.org/2003/role/disclosureRef 
 | 
| X | ||||||||||
| 
- Details 
 | 
| X | ||||||||||
| 
- Details 
 |