v3.22.1

Revenue - Contract Balances (Details) | Dec. 31, 2021 USD ($)
--- | ---
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction [Line Items] |
Contract assets | $ 1,090,601
Contract liabilities | 113,691
Net contract assets | 976,910
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction, Start Date [Axis]: 2021-01-01 |
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction [Line Items] |
Contract assets | 490,987
Net contract assets | 490,987
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction, Start Date [Axis]: 2022-01-01 |
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction [Line Items] |
Contract assets | 1,581,588
Contract liabilities | 113,691
Net contract assets | $ 1,467,897

X
- Definition Amount, before allowance for credit loss, of right to consideration in exchange for good or service transferred to customer when right is conditioned on something other than passage of time, classified as current. + References Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef -Publisher FASB -Name Accounting Standards Codification -Topic 606 -SubTopic 10 -Section 45 -Paragraph 1 -URI http://asc.fasb.org/extlink&oid=123360276&loc=SL49130531-203044 Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef -Publisher FASB -Name Accounting Standards Codification -Topic 606 -SubTopic 10 -Section 45 -Paragraph 3 -URI http://asc.fasb.org/extlink&oid=123360276&loc=SL49130533-203044 + Details
Name: | us-gaap_ContractWithCustomerAssetGrossCurrent
Namespace Prefix: | us-gaap_
Data Type: | xbrli:monetaryItemType
Balance Type: | debit
Period Type: | instant

X
- Definition Amount, after allowance for credit loss, of right to consideration in exchange for good or service transferred to customer when right is conditioned on something other than passage of time, classified as current. + References Reference 1: http://www.xbrl.org/2003/role/disclosureRef -Publisher FASB -Name Accounting Standards Codification -Topic 606 -SubTopic 10 -Section 45 -Paragraph 1 -URI http://asc.fasb.org/extlink&oid=123360276&loc=SL49130531-203044 Reference 2: http://www.xbrl.org/2003/role/disclosureRef -Publisher FASB -Name Accounting Standards Codification -Topic 606 -SubTopic 10 -Section 45 -Paragraph 3 -URI http://asc.fasb.org/extlink&oid=123360276&loc=SL49130533-203044 Reference 3: http://www.xbrl.org/2003/role/disclosureRef -Publisher FASB -Name Accounting Standards Codification -Topic 606 -SubTopic 10 -Section 50 -Paragraph 8 -Subparagraph (a) -URI http://asc.fasb.org/extlink&oid=123351226&loc=SL49130549-203045 + Details
Name: | us-gaap_ContractWithCustomerAssetNetCurrent
Namespace Prefix: | us-gaap_
Data Type: | xbrli:monetaryItemType
Balance Type: | debit
Period Type: | instant

X
- Definition Amount of obligation to transfer good or service to customer for which consideration has been received or is receivable, classified as current. + References Reference 1: http://www.xbrl.org/2003/role/disclosureRef -Publisher FASB -Name Accounting Standards Codification -Topic 606 -SubTopic 10 -Section 45 -Paragraph 1 -URI http://asc.fasb.org/extlink&oid=123360276&loc=SL49130531-203044 Reference 2: http://www.xbrl.org/2003/role/disclosureRef -Publisher FASB -Name Accounting Standards Codification -Topic 606 -SubTopic 10 -Section 45 -Paragraph 2 -URI http://asc.fasb.org/extlink&oid=123360276&loc=SL49130532-203044 Reference 3: http://www.xbrl.org/2003/role/disclosureRef -Publisher FASB -Name Accounting Standards Codification -Topic 606 -SubTopic 10 -Section 50 -Paragraph 8 -Subparagraph (a) -URI http://asc.fasb.org/extlink&oid=123351226&loc=SL49130549-203045 + Details
Name: | us-gaap_ContractWithCustomerLiabilityCurrent
Namespace Prefix: | us-gaap_
Data Type: | xbrli:monetaryItemType
Balance Type: | credit
Period Type: | instant

X
- Definition Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table. + References No definition available. + Details
Name: | us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionLineItems
Namespace Prefix: | us-gaap_
Data Type: | xbrli:stringItemType
Balance Type: | na
Period Type: | duration

X
- Details
Name: | us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis=2021-01-01
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis=2022-01-01
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |