XML 82 R68.htm IDEA: XBRL DOCUMENT
v3.22.4

Commitments and Contingencies - Self-Insurance (Details) | Dec. 31, 2022 USD ($) item
--- | ---
Self-Insurance |
Amount of loss fully insured above per-incident deductible amount | $ 175,000,000.0
Amount of excess loss insurance covered | 175,000,000.0
Workers Compensation |
Self-Insurance |
Per incident deductible amount | 250,000
Amount of loss fully insured above per-incident deductible amount | 250,000
Employer's Liability |
Self-Insurance |
Per incident deductible amount | 250,000
Employer's Liability | Maximum |
Self-Insurance |
Amount of excess loss insurance covered | 175,000,000.0
General Liability |
Self-Insurance |
Per incident deductible amount | 250,000
Amount of loss fully insured above per-incident deductible amount | 10,000,000.0
General Liability | Maximum |
Self-Insurance |
Amount of excess loss insurance covered | 175,000,000.0
Auto Liability |
Self-Insurance |
Per incident deductible amount | 250,000
Amount of loss fully insured above per-incident deductible amount | 10,000,000.0
Auto Liability | Maximum |
Self-Insurance |
Amount of excess loss insurance covered | $ 175,000,000.0
Employee Medical |
Self-Insurance |
Number of medical plans | item | 3
Employee Medical - Plan One |
Self-Insurance |
Per person, per policy deductible amount | $ 350,000
Employee Medical - Plan Two |
Self-Insurance |
Per person, per policy deductible amount | 350,000
Employee Medical - Plan Three |
Self-Insurance |
Per incident deductible amount | $ 350,000

X
- Definition Represents the amount of aggregate excess loss coverage above applicable per-incident deductibles for all lines of risk. + References No definition available. + Details
Name: | fix_SelfInsuranceAggregateLossInsuranceCoveredAmount
Namespace Prefix: | fix_
Data Type: | xbrli:monetaryItemType
Balance Type: | debit
Period Type: | instant

X
- Definition Represents the amount of loss fully insured above per-incident deductible amount under insurance arrangements under various risks. + References No definition available. + Details
Name: | fix_SelfInsuranceAmountOfLossFullyInsuredAboveDeductibleCoverageAmount
Namespace Prefix: | fix_
Data Type: | xbrli:monetaryItemType
Balance Type: | debit
Period Type: | instant

X
- Definition Represents the amount of risk retained by the entity per incident before the insurance arrangement begins to provide coverage under various risks. + References No definition available. + Details
Name: | fix_SelfInsuranceDeductibleAmountPerIncident
Namespace Prefix: | fix_
Data Type: | xbrli:monetaryItemType
Balance Type: | debit
Period Type: | instant

X
- Definition Represents the amount of risk retained by the entity per person, per policy before the insurance arrangement begins to provide coverage under various risks. + References No definition available. + Details
Name: | fix_SelfInsuranceDeductibleAmountPerPersonPerPolicy
Namespace Prefix: | fix_
Data Type: | xbrli:monetaryItemType
Balance Type: | debit
Period Type: | instant

X
- Definition Represents the number of medical plans. + References No definition available. + Details
Name: | fix_SelfInsuranceNumberOfMedicalPlans
Namespace Prefix: | fix_
Data Type: | xbrli:integerItemType
Balance Type: | na
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_LossContingenciesLineItems
Namespace Prefix: | us-gaap_
Data Type: | xbrli:stringItemType
Balance Type: | na
Period Type: | duration

X
- Details
Name: | us-gaap_LossContingenciesByNatureOfContingencyAxis=fix_WorkersCompensationMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | us-gaap_LossContingenciesByNatureOfContingencyAxis=fix_EmployersLiabilityMember
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_LossContingenciesByNatureOfContingencyAxis=us-gaap_GeneralLiabilityMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | us-gaap_LossContingenciesByNatureOfContingencyAxis=fix_AutoLiabilityMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | us-gaap_LossContingenciesByNatureOfContingencyAxis=fix_EmployeeMedicalMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | us-gaap_LossContingenciesByNatureOfContingencyAxis=fix_EmployeeMedicalPlanOneMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | us-gaap_LossContingenciesByNatureOfContingencyAxis=fix_EmployeeMedicalPlanTwoMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | us-gaap_LossContingenciesByNatureOfContingencyAxis=fix_EmployeeMedicalPlanThreeMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |