XML 45 R34.htm IDEA: XBRL DOCUMENT
v3.24.1.u1

Fair Value Measurements (Details) $ in Thousands | 3 Months Ended | 12 Months Ended
--- | --- | ---
Mar. 31, 2024 USD ($) employee | Dec. 31, 2023 USD ($)
Fair Value Measurements |  |
Number of employees covered under life insurance policies | employee | 127 |
Combined face value of life insurance policies | $ 86,700 |
Minimum |  |
Fair Value Measurements |  |
Weighted average cost of capital | 15.00% |
Maximum |  |
Fair Value Measurements |  |
Weighted average cost of capital | 19.00% |
Contingent earn-out obligations |  |
Fair Value Measurements |  |
Contingent earn-out obligations | $ 71,296 | $ 44,222
Reconciliation of the fair value of contingent earn-out obligations that use significant unobservable inputs (Level 3) |  |
Balance at beginning of period | 44,222 | 32,317
Issuances | 51,784 | 4,315
Settlements | (37,201) | (16,017)
Adjustments to fair value | 12,491 | 23,607
Balance at end of period | 71,296 | 44,222
Recurring basis | Total |  |
Fair Value Measurements |  |
Cash and cash equivalents | 100,792 | 205,150
Life insurance-cash surrender value | 7,721 | 7,473
Contingent earn-out obligations | 71,296 | 44,222
Reconciliation of the fair value of contingent earn-out obligations that use significant unobservable inputs (Level 3) |  |
Balance at beginning of period | 44,222 |
Balance at end of period | 71,296 | 44,222
Recurring basis | Quoted Market Prices In Active Markets for Identical Assets (Level 1) |  |
Fair Value Measurements |  |
Cash and cash equivalents | 100,792 | 205,150
Recurring basis | Significant Other Observable Inputs (Level 2) |  |
Fair Value Measurements |  |
Life insurance-cash surrender value | 7,721 | 7,473
Recurring basis | Significant Unobservable Inputs (Level 3) |  |
Fair Value Measurements |  |
Contingent earn-out obligations | 71,296 | 44,222
Reconciliation of the fair value of contingent earn-out obligations that use significant unobservable inputs (Level 3) |  |
Balance at beginning of period | 44,222 |
Balance at end of period | $ 71,296 | $ 44,222

X
- Definition Represents the face amount of life insurance policies taken by the entity for their employees. + References No definition available. + Details
Name: | fix_LifeInsuranceContractsFaceAmount
Namespace Prefix: | fix_
Data Type: | xbrli:monetaryItemType
Balance Type: | debit
Period Type: | instant

X
- Definition Represents the number of employees covered under life insurance policy contracts. + References No definition available. + Details
Name: | fix_LifeInsuranceContractsNumberOfEmployeesCovered
Namespace Prefix: | fix_
Data Type: | xbrli:integerItemType
Balance Type: | na
Period Type: | instant

X
- Definition Percentage of weighted average cost of capital. + References No definition available. + Details
Name: | fix_WeightedAverageCostOfCapital
Namespace Prefix: | fix_
Data Type: | dtr-types:percentItemType
Balance Type: | na
Period Type: | duration

X
- Definition Fair value portion of currency on hand as well as demand deposits with banks or financial institutions. Includes other kinds of accounts that have the general characteristics of demand deposits. Also includes short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates. + References No definition available. + Details
Name: | us-gaap_CashAndCashEquivalentsFairValueDisclosure
Namespace Prefix: | us-gaap_
Data Type: | xbrli:monetaryItemType
Balance Type: | debit
Period Type: | instant

X
- Definition Fair value portion of the amount that could be realized under a life insurance contract or contracts owned by the entity, commonly known as corporate-owned life insurance (COLI) or bank-owned life insurance (BOLI). + References No definition available. + Details
Name: | us-gaap_CashSurrenderValueFairValueDisclosure
Namespace Prefix: | us-gaap_
Data Type: | xbrli:monetaryItemType
Balance Type: | debit
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 Reference 1: http://www.xbrl.org/2003/role/disclosureRef -Topic 820 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 2 -Subparagraph (a) -Publisher FASB -URI https://asc.fasb.org//1943274/2147482106/820-10-50-2 Reference 2: http://www.xbrl.org/2003/role/disclosureRef -Topic 820 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 2 -Subparagraph (b) -Publisher FASB -URI https://asc.fasb.org//1943274/2147482106/820-10-50-2 Reference 3: http://www.xbrl.org/2003/role/disclosureRef -Topic 820 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 3 -Publisher FASB -URI https://asc.fasb.org//1943274/2147482106/820-10-50-3 + Details
Name: | us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems
Namespace Prefix: | us-gaap_
Data Type: | xbrli:stringItemType
Balance Type: | na
Period Type: | duration

X
- Definition A roll forward is a reconciliation of a concept from the beginning of a period to the end of a period. + References No definition available. + Details
Name: | us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationCalculationRollForward
Namespace Prefix: | us-gaap_
Data Type: | xbrli:stringItemType
Balance Type: | na
Period Type: | duration

X
- Definition Amount of gain (loss) recognized in income from liability measured at fair value on recurring basis using unobservable input (level 3). + References Reference 1: http://www.xbrl.org/2003/role/disclosureRef -Topic 820 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 2 -Subparagraph (c)(1) -Publisher FASB -URI https://asc.fasb.org//1943274/2147482106/820-10-50-2 + Details
Name: | us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
Namespace Prefix: | us-gaap_
Data Type: | xbrli:monetaryItemType
Balance Type: | credit
Period Type: | duration

X
- Definition Amount of issuances of financial instrument classified as a liability measured using unobservable inputs that reflect the entity's own assumption about the assumptions market participants would use in pricing. + References Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef -Name Accounting Standards Codification -Topic 820 -SubTopic 10 -Section 50 -Paragraph 2 -Subparagraph (c)(2) -Publisher FASB -URI https://asc.fasb.org//1943274/2147482106/820-10-50-2 + Details
Name: | us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityIssues
Namespace Prefix: | us-gaap_
Data Type: | xbrli:monetaryItemType
Balance Type: | credit
Period Type: | duration

X
- Definition Amount of settlements of financial instrument classified as a liability measured using unobservable inputs that reflect the entity's own assumption about the assumptions market participants would use in pricing. + References Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef -Name Accounting Standards Codification -Topic 820 -SubTopic 10 -Section 50 -Paragraph 2 -Subparagraph (c)(2) -Publisher FASB -URI https://asc.fasb.org//1943274/2147482106/820-10-50-2 + Details
Name: | us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySettlements
Namespace Prefix: | us-gaap_
Data Type: | xbrli:monetaryItemType
Balance Type: | debit
Period Type: | duration

X
- Definition Fair value of financial instrument classified as a liability measured using unobservable inputs that reflect the entity's own assumption about the assumptions market participants would use in pricing. + References Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef -Name Accounting Standards Codification -Section 50 -Paragraph 2 -Subparagraph (c) -SubTopic 10 -Topic 820 -Publisher FASB -URI https://asc.fasb.org//1943274/2147482106/820-10-50-2 + Details
Name: | us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
Namespace Prefix: | us-gaap_
Data Type: | xbrli:monetaryItemType
Balance Type: | credit
Period Type: | instant

X
- Details
Name: | srt_RangeAxis=srt_MinimumMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | srt_RangeAxis=srt_MaximumMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | us-gaap_FairValueByLiabilityClassAxis=fix_ContingentConsiderationObligationsMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | us-gaap_FairValueByMeasurementFrequencyAxis=us-gaap_FairValueMeasurementsRecurringMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | us-gaap_FairValueByMeasurementBasisAxis=us-gaap_EstimateOfFairValueFairValueDisclosureMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | us-gaap_FairValueByFairValueHierarchyLevelAxis=us-gaap_FairValueInputsLevel1Member
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | us-gaap_FairValueByFairValueHierarchyLevelAxis=us-gaap_FairValueInputsLevel2Member
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | us-gaap_FairValueByFairValueHierarchyLevelAxis=us-gaap_FairValueInputsLevel3Member
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |