| Summary of Significant Accounting Policies - Accounts Receivable (Details) - USD ($) | 12 Months Ended | ||
|---|---|---|---|
| Dec. 31, 2020 | Dec. 31, 2019 | Dec. 31, 2018 | |
| Accounts Receivable, Allowance for Credit Loss [Roll Forward] | |||
| Allowance for credit loss, beginning of period | $ 2,260,000 | $ 2,765,000 | $ 3,315,000 | 
| Charges to (recoveries of) costs and expenses, net | 282,000 | (216,000) | 610,000 | 
| Account write-offs and other | (276,000) | (289,000) | (1,160,000) | 
| Allowance for credit loss, end of period | 2,266,000 | 2,260,000 | $ 2,765,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 
 |