XML 144 R2.htm IDEA: XBRL DOCUMENT
v3.25.1

Pay vs Performance Disclosure - USD ($) | 12 Months Ended | 24 Months Ended | 36 Months Ended | 48 Months Ended | 60 Months Ended
--- | --- | --- | --- | --- | ---
Dec. 31, 2024 | Dec. 31, 2023 | Dec. 31, 2022 | Dec. 31, 2021 | Dec. 31, 2020 | Dec. 31, 2021 | Dec. 31, 2022 | Dec. 31, 2023 | Dec. 31, 2024
Pay vs Performance Disclosure [Table] |  |  |  |  |  |  |  |  |
Pay vs Performance Disclosure, Table | Pay vs. Performance Table As required by Item 402(v) of Regulation S-K, we are providing the following information about the relationship between executive compensation actually paid, as computed under SEC rules, and certain financial performance of the Company. For more information about the Company’s executive compensation program, refer to the CD&A starting on p. 33 and the compensation tables starting on p. 51. Note that for our Named Executive Officers (“NEOs”) other than Mr. Lane, our principal executive officer (“PEO”), compensation is reported as an average.
|  |  |  |  |  |  |  |  |  | Value of Initial Fixed $100 Investment Based on: |  |  |  |
Year |  | Summary Compensation Table Total for PEO ($)(1) |  | Compensation Actually Paid to PEO ($)(2) |  | Average Summary Compensation Table Total for Non-PEO NEOs ($)(1) |  | Average Compensation Actually Paid to Non-PEO NEOs ($)(2) |  | Total Shareholder Return ($)(3) |  | Peer Group Total Shareholder Return ($)(4) |  | Net Income (thousands) ($)(5) |  | Earnings Per Share ($)(6)
(a) |  | (b) |  | (c) |  | (d) |  | (e) |  | (f) |  | (g) |  | (h) |  | (i)
2024 |  | 8,176,738 |  | 14,549,444 |  | 2,398,730 |  | 5,142,103 |  | 876.81 |  | 218.59 |  | 522,433 |  | 14.60
2023 |  | 6,635,459 |  | 10,681,797 |  | 3,226,300 |  | 4,022,097 |  | 423.80 |  | 189.57 |  | 323,398 |  | 9.01
2022 |  | 5,386,708 |  | 6,948,812 |  | 1,616,978 |  | 1,907,821 |  | 235.94 |  | 137.67 |  | 245,947 |  | 6.82
2021 |  | 4,503,087 |  | 7,814,908 |  | 1,288,647 |  | 1,950,011 |  | 201.71 |  | 153.00 |  | 143,348 |  | 3.93
2020 |  | 4,060,002 |  | 4,388,659 |  | 1,061,468 |  | 1,109,474 |  | 106.73 |  | 119.84 |  | 150,139 |  | 4.09
Company Selected Measure Name | earnings per share |  |  |  |  |  |  |  |
Named Executive Officers, Footnote |
(1) | Reflects the amounts of total compensation reported for Mr. Lane in column (b) and the average amounts of total compensation of the NEOs (other than Mr. Lane) in column (d), in each case, for each applicable year in the “Total” column of the “Summary Compensation Table.” The NEOs included for purposes of calculating such amounts are William George, Trent McKenna (2021-2024 only), Laura Howell, Julie Shaeff, and Terrence Young (2020 only).
Peer Group Issuers, Footnote [Text Block] |
(4) | The amounts reported in column (g) represent the peer group TSR under SEC rules, from December 31, 2019, the last trading day of 2019, through the last trading day for the applicable year in the table, assuming reinvestment of dividends and weighted according to the respective companies’ stock market capitalization at the beginning of each period for which a return is indicated. The peer group used for this purpose is the S&P 400 Capital Goods Index. While not directly comparable, the Company believes that the S&P 400 Capital Good Index is an appropriate trade or line of business index.
PEO Total Compensation Amount | $ 8,176,738 | $ 6,635,459 | $ 5,386,708 | $ 4,503,087 | $ 4,060,002 |  |  |  |
PEO Actually Paid Compensation Amount | $ 14,549,444 | 10,681,797 | 6,948,812 | 7,814,908 | 4,388,659 |  |  |  |
Adjustment To PEO Compensation, Footnote |
| Year |  | Reported Summary Compensation Table Total for PEO ($) |  | Reported Value of Stock Awards ($)(a) |  | Equity Award Adjustments ($)(b) |  | Compensation Actually Paid to PEO ($)
| 2024 |  | 8,176,738 |  | (4,509,860) |  | 10,882,566 |  | 14,549,444
| 2023 |  | 6,635,459 |  | (3,256,375) |  | 7,302,713 |  | 10,681,797
| 2022 |  | 5,386,708 |  | (2,613,579) |  | 4,175,683 |  | 6,948,812
| 2021 |  | 4,503,087 |  | (2,375,954) |  | 5,687,775 |  | 7,814,908
| 2020 |  | 4,060,002 |  | (1,912,479) |  | 2,241,136 |  | 4,388,659
| (a) | Reflects the amounts reported in the “Stock Awards” column of the Summary Compensation Table for the applicable year for the PEO as reflected in the table above and the average of non-PEO NEOs set forth in the table below, as applicable. These amounts reflect the aggregate grant date fair value of stock awards granted during the applicable year, as determined in accordance with ASC Topic 718, excluding the effect of estimated forfeitures.
| (b) | The equity award adjustments (or average equity award adjustments, as applicable) for each applicable year include the addition (or subtraction, as applicable) of the following: (i) the year-end fair value of any equity awards granted in the applicable year that are outstanding and unvested as of the end of the year; (ii) the amount of change as of the end of the applicable year (from the end of the prior year) in fair value of any awards granted in prior years that are outstanding and unvested as of the end of the applicable year; (iii) for awards that are granted and vest in the same applicable year, the fair value as of the vesting date; (iv) for awards granted in prior years that vest in the applicable year, the amount equal to the change as of the vesting date (from the end of the prior year) in fair value; (v) for awards granted in prior years that are determined to fail to meet the applicable vesting conditions during the applicable year, a deduction for the amount equal to the fair value at the end of the prior year; and (vi) the dollar value of any dividends or other earnings paid on stock awards in the applicable year prior to the vesting date that are not otherwise reflected in the fair value of such award or included in any other component of total compensation for the applicable year. The amounts deducted or added in calculating the equity award adjustments are as follows:
| Year |  | Fair Value of Outstanding and Unvested Equity Awards Granted in Same Year ($) |  | Year over Year Change in Fair Value of Outstanding and Unvested Equity Awards ($) |  | Fair Value as of Vesting Date of Equity Awards Granted and Vested in the Year ($) |  | Year over Year Change in Fair Value of Equity Awards Granted in Prior Years that Vested in the Year ($) |  | Fair Value at the End of the Prior Year of Equity Awards that Failed to Meet Vesting Conditions in the Year ($) |  | Value of Dividends or other Earnings Paid on Stock or Option Awards not Otherwise Reflected in Fair Value or Total Compensation ($) |  | Total Equity Award Adjustments ($)
| 2024 |  | 4,723,391 |  | 4,566,941 |  | — |  | 1,592,234 |  | — |  | — |  | 10,882,566
| 2023 |  | 3,676,557 |  | 3,073,436 |  | — |  | 552,720 |  | — |  | — |  | 7,302,713
| 2022 |  | 2,672,724 |  | 1,653,961 |  | — |  | (151,002) |  | — |  | — |  | 4,175,683
| 2021 |  | 2,618,925 |  | 2,491,617 |  | — |  | 577,233 |  | — |  | — |  | 5,687,775
| 2020 |  | 1,766,757 |  | 817,233 |  | — |  | (342,854) |  | — |  | — |  | 2,241,136
Non-PEO NEO Average Total Compensation Amount | $ 2,398,730 | 3,226,300 | 1,616,978 | 1,288,647 | 1,061,468 |  |  |  |
Non-PEO NEO Average Compensation Actually Paid Amount | $ 5,142,103 | 4,022,097 | 1,907,821 | 1,950,011 | 1,109,474 |  |  |  |
Adjustment to Non-PEO NEO Compensation Footnote [Text Block] | Under SEC rules, the amounts shown below were deducted and added to total compensation for non-PEO NEOs to determine the “compensation actually paid” for the applicable year:
| Year |  | Average Reported Summary Compensation Table Total for Non-PEO NEOs ($) |  | Average Reported Value of Stock Awards ($)(a) above |  | Average Equity Award Adjustments ($)(b) above |  | Average Compensation Actually Paid to Non-PEO NEOs ($)
| 2024 |  | 2,398,730 |  | (884,813) |  | 3,628,186 |  | 5,142,103
| 2023 |  | 3,226,300 |  | (1,896,681) |  | 2,692,478 |  | 4,022,097
| 2022 |  | 1,616,978 |  | (499,556) |  | 790,399 |  | 1,907,821
| 2021 |  | 1,288,647 |  | (434,609) |  | 1,095,973 |  | 1,950,011
| 2020 |  | 1,061,468 |  | (330,632) |  | 378,638 |  | 1,109,474
The amounts deducted or added in calculating the total average equity award adjustments are as follows:
| Year ($) |  | Average Fair Value of Outstanding and Unvested Equity Awards Granted in Same Year ($) |  | Year over Year Average Change in Fair Value of Outstanding and Unvested Equity Awards ($) |  | Average Fair Value as of Vesting Date of Equity Awards Granted and Vested in the Year ($) |  | Year over Year Average Change in Fair Value of Equity Awards Granted in Prior Years that Vested in the Year ($) |  | Average Fair Value at the End of the Prior Year of Equity Awards that Failed to Meet Vesting Conditions in the Year ($) |  | Average Value of Dividends or other Earnings Paid on Stock or Option Awards not Otherwise Reflected in Fair Value or Total Compensation ($) |  | Total Average Equity Award Adjustments ($)
| 2024 |  | 926,607 |  | 1,797,928 |  | — |  | 903,651 |  | — |  | — |  | 3,628,186
| 2023 |  | 2,004,075 |  | 581,873 |  | — |  | 106,530 |  | — |  | — |  | 2,692,478
| 2022 |  | 510,773 |  | 308,871 |  | — |  | (29,245) |  | — |  | — |  | 790,399
| 2021 |  | 478,976 |  | 497,219 |  | — |  | 119,778 |  | — |  | — |  | 1,095,973
| 2020 |  | 305,434 |  | 134,023 |  | — |  | (60,819) |  | — |  | — |  | 378,638
Compensation Actually Paid vs. Total Shareholder Return [Text Block] | Relationship between: (a) the compensation actually paid to the Company’s PEO and (b) the average of the compensation actually paid to the Company’s other NEOs to (i) the TSR of the Company. PEO and Average Non-PEO NEO Compensation Actually Paid Versus Company TSR |  |  |  |  |  |  |  |
Compensation Actually Paid vs. Net Income [Text Block] | Relationship between: (a) the compensation actually paid to the Company’s PEO and (b) the average of the compensation actually paid to the Company’s other NEOs to (ii) the net income of the Company over the five years presented in the table. PEO and Average Non-PEO NEO Compensation Actually Paid Versus Net Income |  |  |  |  |  |  |  |
Compensation Actually Paid vs. Company Selected Measure [Text Block] | Relationship between: (a) the compensation actually paid to the Company’s PEO and (b) the average of the compensation actually paid to the Company’s other NEOs to (iii) the Company’s “Company-selected Measure,” which is EPS, over the five years presented in the table. PEO and Average Non-PEO NEO Compensation Actually Paid Versus Company EPS |  |  |  |  |  |  |  |
Total Shareholder Return Vs Peer Group [Text Block] | Relationship between the Company’s TSR and the TSR of its chosen peer group over the Company’s five fiscal years included in the Pay vs. Performance Table. Comparison of Cumulative TSR of Comfort Systems USA, Inc. and Peer Group |  |  |  |  |  |  |  |
Tabular List [Table Text Block] | Company-selected Measures
2024 Key Performance Measures Linking Performance and Executive Compensation Actually Paid:*
Earnings Per Share
Free Cash Flow
Relative Total Shareholder Return
* | For a further discussion of how we calculate EPS, FCF, and Relative TSR, see the “Liquidity and Capital Resources” section and Notes 14 and 15 to the Consolidated Financial Statements included in our Annual Report on Form 10-K for the year ended December 31, 2024.
Total Shareholder Return Amount |  |  |  |  | 106.73 | $ 201.71 | $ 235.94 | $ 423.80 | $ 876.81
Peer Group Total Shareholder Return Amount |  |  |  |  | 119.84 | $ 153.00 | $ 137.67 | $ 189.57 | $ 218.59
Net Income (Loss) Attributable to Parent | $ 522,433,000 | $ 323,398,000 | $ 245,947,000 | $ 143,348,000 | $ 150,139,000 |  |  |  |
Company Selected Measure Amount | 14.60 | 9.01 | 6.82 | 3.93 | 4.09 |  |  |  |
PEO Name | Mr. Lane | Mr. Lane | Mr. Lane | Mr. Lane | Mr. Lane |  |  |  |
Measure [Axis]: 1 |  |  |  |  |  |  |  |  |
Pay vs Performance Disclosure [Table] |  |  |  |  |  |  |  |  |
Measure Name | Earnings Per Share |  |  |  |  |  |  |  |
Non-GAAP Measure Description [Text Block] |
(6) | The amounts reported in column (i) represent the Company’s earnings per share, which the Company has determined represents the most important performance measure used to link compensation actually paid to our PEO and other NEOs to the Company’s performance.
Measure [Axis]: 2 |  |  |  |  |  |  |  |  |
Pay vs Performance Disclosure [Table] |  |  |  |  |  |  |  |  |
Measure Name | Free Cash Flow |  |  |  |  |  |  |  |
Measure [Axis]: 3 |  |  |  |  |  |  |  |  |
Pay vs Performance Disclosure [Table] |  |  |  |  |  |  |  |  |
Measure Name | Relative Total Shareholder Return |  |  |  |  |  |  |  |
Reported Valueof Stock Awards [Member] | PEO [Member] |  |  |  |  |  |  |  |  |
Pay vs Performance Disclosure [Table] |  |  |  |  |  |  |  |  |
Adjustment to Compensation Amount | $ (4,509,860) | $ (3,256,375) | $ (2,613,579) | $ (2,375,954) | $ (1,912,479) |  |  |  |
Equity Award Adjustments [Member] | PEO [Member] |  |  |  |  |  |  |  |  |
Pay vs Performance Disclosure [Table] |  |  |  |  |  |  |  |  |
Adjustment to Compensation Amount | 10,882,566 | 7,302,713 | 4,175,683 | 5,687,775 | 2,241,136 |  |  |  |
Fair Value Of Outstanding And Unvested Equity Awards Granted In Same Year [Member] | PEO [Member] |  |  |  |  |  |  |  |  |
Pay vs Performance Disclosure [Table] |  |  |  |  |  |  |  |  |
Adjustment to Compensation Amount | 4,723,391 | 3,676,557 | 2,672,724 | 2,618,925 | 1,766,757 |  |  |  |
Year Over Year Change In Fair Value Of Outstanding And Unvested Equity Awards [Member] | PEO [Member] |  |  |  |  |  |  |  |  |
Pay vs Performance Disclosure [Table] |  |  |  |  |  |  |  |  |
Adjustment to Compensation Amount | 4,566,941 | 3,073,436 | 1,653,961 | 2,491,617 | 817,233 |  |  |  |
Fair Value As Of Vesting Date Of Equity Awards Granted And Vested In The Year [Member] | PEO [Member] |  |  |  |  |  |  |  |  |
Pay vs Performance Disclosure [Table] |  |  |  |  |  |  |  |  |
Adjustment to Compensation Amount | 0 | 0 | 0 | 0 | 0 |  |  |  |
Year Over Year Change In Fair Value Of Equity Awards Granted In Prior Years That Vested In The Year [Member] | PEO [Member] |  |  |  |  |  |  |  |  |
Pay vs Performance Disclosure [Table] |  |  |  |  |  |  |  |  |
Adjustment to Compensation Amount | 1,592,234 | 552,720 | (151,002) | 577,233 | (342,854) |  |  |  |
Fair Value At The End Of The Prior Year Of Equity Awards That Failed To Meet Vesting Conditions In The Year [Member] | PEO [Member] |  |  |  |  |  |  |  |  |
Pay vs Performance Disclosure [Table] |  |  |  |  |  |  |  |  |
Adjustment to Compensation Amount | 0 | 0 | 0 | 0 | 0 |  |  |  |
Value Of Dividends Or Other Earnings Paid On Stock Or Option Awards Not Otherwise Reflected In Fair Value Or Total Compensation [Member] | PEO [Member] |  |  |  |  |  |  |  |  |
Pay vs Performance Disclosure [Table] |  |  |  |  |  |  |  |  |
Adjustment to Compensation Amount | 0 | 0 | 0 | 0 | 0 |  |  |  |
Total Equity Award Adjustments [Member] | PEO [Member] |  |  |  |  |  |  |  |  |
Pay vs Performance Disclosure [Table] |  |  |  |  |  |  |  |  |
Adjustment to Compensation Amount | 10,882,566 | 7,302,713 | 4,175,683 | 5,687,775 | 2,241,136 |  |  |  |
Average Reported Value Of Stock Awards [Member] | Non-PEO NEO [Member] |  |  |  |  |  |  |  |  |
Pay vs Performance Disclosure [Table] |  |  |  |  |  |  |  |  |
Adjustment to Compensation Amount | (884,813) | (1,896,681) | (499,556) | (434,609) | (330,632) |  |  |  |
Average Equity Award Adjustments [Member] | Non-PEO NEO [Member] |  |  |  |  |  |  |  |  |
Pay vs Performance Disclosure [Table] |  |  |  |  |  |  |  |  |
Adjustment to Compensation Amount | 3,628,186 | 2,692,478 | 790,399 | 1,095,973 | 378,638 |  |  |  |
Average Fair Value Of Outstanding And Unvested Equity Awards Granted In Same Year [Member] | Non-PEO NEO [Member] |  |  |  |  |  |  |  |  |
Pay vs Performance Disclosure [Table] |  |  |  |  |  |  |  |  |
Adjustment to Compensation Amount | 926,607 | 2,004,075 | 510,773 | 478,976 | 305,434 |  |  |  |
Year Over Year Average Change In Fair Value Of Outstanding And Unvested Equity Awards [Member] | Non-PEO NEO [Member] |  |  |  |  |  |  |  |  |
Pay vs Performance Disclosure [Table] |  |  |  |  |  |  |  |  |
Adjustment to Compensation Amount | 1,797,928 | 581,873 | 308,871 | 497,219 | 134,023 |  |  |  |
Average Fair Value As Of Vesting Date Of Equity Awards Granted And Vested In The Year [Member] | Non-PEO NEO [Member] |  |  |  |  |  |  |  |  |
Pay vs Performance Disclosure [Table] |  |  |  |  |  |  |  |  |
Adjustment to Compensation Amount | 0 | 0 | 0 | 0 | 0 |  |  |  |
Year Over Year Average Change In Fair Value Of Equity Awards Granted In Prior Years That Vested In The Year [Member] | Non-PEO NEO [Member] |  |  |  |  |  |  |  |  |
Pay vs Performance Disclosure [Table] |  |  |  |  |  |  |  |  |
Adjustment to Compensation Amount | 903,651 | 106,530 | (29,245) | 119,778 | (60,819) |  |  |  |
Average Fair Value At The End Of The Prior Year Of Equity Awards That Failed To Meet Vesting Conditions In The Year [Member] | Non-PEO NEO [Member] |  |  |  |  |  |  |  |  |
Pay vs Performance Disclosure [Table] |  |  |  |  |  |  |  |  |
Adjustment to Compensation Amount | 0 | 0 | 0 | 0 | 0 |  |  |  |
Average Value Of Dividends Or Other Earnings Paid On Stock Or Option Awards Not Otherwise Reflected In Fair Value Or Total Compensation [Member] | Non-PEO NEO [Member] |  |  |  |  |  |  |  |  |
Pay vs Performance Disclosure [Table] |  |  |  |  |  |  |  |  |
Adjustment to Compensation Amount | 0 | 0 | 0 | 0 | 0 |  |  |  |
Total Average Equity Award Adjustments [Member] | Non-PEO NEO [Member] |  |  |  |  |  |  |  |  |
Pay vs Performance Disclosure [Table] |  |  |  |  |  |  |  |  |
Adjustment to Compensation Amount | $ 3,628,186 | $ 2,692,478 | $ 790,399 | $ 1,095,973 | $ 378,638 |  |  |  |

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 3 + Details
Name: | ecd_AdjToCompAmt
Namespace Prefix: | ecd_
Data Type: | xbrli:monetaryItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 3 + Details
Name: | ecd_AdjToNonPeoNeoCompFnTextBlock
Namespace Prefix: | ecd_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 3 + Details
Name: | ecd_AdjToPeoCompFnTextBlock
Namespace Prefix: | ecd_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 2 -Subparagraph vi + Details
Name: | ecd_CoSelectedMeasureAmt
Namespace Prefix: | ecd_
Data Type: | xbrli:decimalItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 2 -Subparagraph vi + Details
Name: | ecd_CoSelectedMeasureName
Namespace Prefix: | ecd_
Data Type: | xbrli:normalizedStringItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 5 -Subparagraph iii + Details
Name: | ecd_CompActuallyPaidVsCoSelectedMeasureTextBlock
Namespace Prefix: | ecd_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 5 -Subparagraph ii + Details
Name: | ecd_CompActuallyPaidVsNetIncomeTextBlock
Namespace Prefix: | ecd_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 5 -Subparagraph i + Details
Name: | ecd_CompActuallyPaidVsTotalShareholderRtnTextBlock
Namespace Prefix: | ecd_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 2 -Subparagraph vi + Details
Name: | ecd_MeasureName
Namespace Prefix: | ecd_
Data Type: | xbrli:normalizedStringItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 3 + Details
Name: | ecd_NamedExecutiveOfficersFnTextBlock
Namespace Prefix: | ecd_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 2 -Subparagraph vi + Details
Name: | ecd_NonGaapMeasureDescriptionTextBlock
Namespace Prefix: | ecd_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 2 -Subparagraph iii + Details
Name: | ecd_NonPeoNeoAvgCompActuallyPaidAmt
Namespace Prefix: | ecd_
Data Type: | xbrli:monetaryItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 2 -Subparagraph ii + Details
Name: | ecd_NonPeoNeoAvgTotalCompAmt
Namespace Prefix: | ecd_
Data Type: | xbrli:monetaryItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 2 -Subparagraph iv + Details
Name: | ecd_PeerGroupIssuersFnTextBlock
Namespace Prefix: | ecd_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 2 -Subparagraph iv + Details
Name: | ecd_PeerGroupTotalShareholderRtnAmt
Namespace Prefix: | ecd_
Data Type: | xbrli:monetaryItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 2 -Subparagraph iii + Details
Name: | ecd_PeoActuallyPaidCompAmt
Namespace Prefix: | ecd_
Data Type: | xbrli:monetaryItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 3 + Details
Name: | ecd_PeoName
Namespace Prefix: | ecd_
Data Type: | xbrli:normalizedStringItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 2 -Subparagraph ii + Details
Name: | ecd_PeoTotalCompAmt
Namespace Prefix: | ecd_
Data Type: | xbrli:monetaryItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 1 + Details
Name: | ecd_PvpTable
Namespace Prefix: | ecd_
Data Type: | xbrli:stringItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 1 + Details
Name: | ecd_PvpTableTextBlock
Namespace Prefix: | ecd_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 6 + Details
Name: | ecd_TabularListTableTextBlock
Namespace Prefix: | ecd_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 2 -Subparagraph iv + Details
Name: | ecd_TotalShareholderRtnAmt
Namespace Prefix: | ecd_
Data Type: | xbrli:monetaryItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 5 -Subparagraph iv + Details
Name: | ecd_TotalShareholderRtnVsPeerGroupTextBlock
Namespace Prefix: | ecd_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- Definition The portion of profit or loss for the period, net of income taxes, which is attributable to the parent. + References Reference 1: http://www.xbrl.org/2003/role/disclosureRef -Topic 250 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 6 -Publisher FASB -URI https://asc.fasb.org/1943274/2147483443/250-10-50-6 Reference 2: http://www.xbrl.org/2003/role/disclosureRef -Topic 250 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 9 -Publisher FASB -URI https://asc.fasb.org/1943274/2147483443/250-10-50-9 Reference 3: http://www.xbrl.org/2003/role/disclosureRef -Topic 805 -SubTopic 60 -Name Accounting Standards Codification -Section 65 -Paragraph 1 -Subparagraph (g) -Publisher FASB -URI https://asc.fasb.org/1943274/2147476176/805-60-65-1 Reference 4: http://www.xbrl.org/2003/role/disclosureRef -Topic 740 -SubTopic 323 -Name Accounting Standards Codification -Section 65 -Paragraph 2 -Subparagraph (g)(3) -Publisher FASB -URI https://asc.fasb.org/1943274/2147478666/740-323-65-2 Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef -Topic 220 -SubTopic 10 -Name Accounting Standards Codification -Section S99 -Paragraph 2 -Subparagraph (SX 210.5-03(20)) -Publisher FASB -URI https://asc.fasb.org/1943274/2147483621/220-10-S99-2 Reference 6: http://www.xbrl.org/2003/role/disclosureRef -Topic 235 -SubTopic 10 -Name Accounting Standards Codification -Section S99 -Paragraph 1 -Subparagraph (SX 210.4-08(g)(1)(ii)) -Publisher FASB -URI https://asc.fasb.org/1943274/2147480678/235-10-S99-1 Reference 7: http://www.xbrl.org/2003/role/disclosureRef -Topic 323 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 3 -Subparagraph (c) -Publisher FASB -URI https://asc.fasb.org/1943274/2147481687/323-10-50-3 Reference 8: http://www.xbrl.org/2003/role/disclosureRef -Topic 825 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 28 -Subparagraph (f) -Publisher FASB -URI https://asc.fasb.org/1943274/2147482907/825-10-50-28 Reference 9: http://www.xbrl.org/2003/role/disclosureRef -Topic 220 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 6 -Publisher FASB -URI https://asc.fasb.org/1943274/2147482765/220-10-50-6 Reference 10: http://www.xbrl.org/2003/role/disclosureRef -Topic 250 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 3 -Publisher FASB -URI https://asc.fasb.org/1943274/2147483443/250-10-50-3 Reference 11: http://www.xbrl.org/2003/role/disclosureRef -Topic 250 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 1 -Subparagraph (b)(2) -Publisher FASB -URI https://asc.fasb.org/1943274/2147483443/250-10-50-1 Reference 12: http://www.xbrl.org/2003/role/disclosureRef -Topic 815 -SubTopic 40 -Name Accounting Standards Codification -Section 65 -Paragraph 1 -Subparagraph (f) -Publisher FASB -URI https://asc.fasb.org/1943274/2147480175/815-40-65-1 Reference 13: http://www.xbrl.org/2003/role/disclosureRef -Topic 250 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 8 -Publisher FASB -URI https://asc.fasb.org/1943274/2147483443/250-10-50-8 Reference 14: http://www.xbrl.org/2003/role/disclosureRef -Topic 250 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 11 -Subparagraph (a) -Publisher FASB -URI https://asc.fasb.org/1943274/2147483443/250-10-50-11 Reference 15: http://www.xbrl.org/2003/role/disclosureRef -Topic 250 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 11 -Subparagraph (b) -Publisher FASB -URI https://asc.fasb.org/1943274/2147483443/250-10-50-11 Reference 16: http://www.xbrl.org/2003/role/disclosureRef -Topic 250 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 4 -Publisher FASB -URI https://asc.fasb.org/1943274/2147483443/250-10-50-4 Reference 17: http://www.xbrl.org/2003/role/exampleRef -Topic 946 -SubTopic 830 -Name Accounting Standards Codification -Section 55 -Paragraph 10 -Publisher FASB -URI https://asc.fasb.org/1943274/2147479168/946-830-55-10 Reference 18: http://www.xbrl.org/2003/role/disclosureRef -Topic 946 -SubTopic 220 -Name Accounting Standards Codification -Section 45 -Paragraph 7 -Publisher FASB -URI https://asc.fasb.org/1943274/2147479105/946-220-45-7 Reference 19: http://www.xbrl.org/2003/role/disclosureRef -Topic 944 -SubTopic 220 -Name Accounting Standards Codification -Section S99 -Paragraph 1 -Subparagraph (SX 210.7-04(18)) -Publisher FASB -URI https://asc.fasb.org/1943274/2147477250/944-220-S99-1 Reference 20: http://www.xbrl.org/2003/role/disclosureRef -Topic 946 -SubTopic 220 -Name Accounting Standards Codification -Section S99 -Paragraph 1 -Subparagraph (SX 210.6-07(9)) -Publisher FASB -URI https://asc.fasb.org/1943274/2147479134/946-220-S99-1 Reference 21: http://www.xbrl.org/2003/role/disclosureRef -Topic 946 -SubTopic 220 -Name Accounting Standards Codification -Section S99 -Paragraph 3 -Subparagraph (SX 210.6-09(1)(d)) -Publisher FASB -URI https://asc.fasb.org/1943274/2147479134/946-220-S99-3 Reference 22: http://www.xbrl.org/2003/role/disclosureRef -Topic 470 -SubTopic 10 -Name Accounting Standards Codification -Section S99 -Paragraph 1A -Subparagraph (SX 210.13-01(a)(4)(i)) -Publisher FASB -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A Reference 23: http://www.xbrl.org/2009/role/commonPracticeRef -Topic 470 -SubTopic 10 -Name Accounting Standards Codification -Section S99 -Paragraph 1A -Subparagraph (SX 210.13-01(a)(4)(ii)) -Publisher FASB -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A Reference 24: http://www.xbrl.org/2003/role/disclosureRef -Topic 470 -SubTopic 10 -Name Accounting Standards Codification -Section S99 -Paragraph 1A -Subparagraph (SX 210.13-01(a)(4)(iii)(A)) -Publisher FASB -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A Reference 25: http://www.xbrl.org/2003/role/disclosureRef -Topic 470 -SubTopic 10 -Name Accounting Standards Codification -Section S99 -Paragraph 1A -Subparagraph (SX 210.13-01(a)(4)(iv)) -Publisher FASB -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A Reference 26: http://www.xbrl.org/2003/role/disclosureRef -Topic 470 -SubTopic 10 -Name Accounting Standards Codification -Section S99 -Paragraph 1A -Subparagraph (SX 210.13-01(a)(5)) -Publisher FASB -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A Reference 27: http://www.xbrl.org/2003/role/disclosureRef -Topic 470 -SubTopic 10 -Name Accounting Standards Codification -Section S99 -Paragraph 1B -Subparagraph (SX 210.13-02(a)(4)(i)) -Publisher FASB -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B Reference 28: http://www.xbrl.org/2003/role/disclosureRef -Topic 470 -SubTopic 10 -Name Accounting Standards Codification -Section S99 -Paragraph 1B -Subparagraph (SX 210.13-02(a)(4)(iii)(A)) -Publisher FASB -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B Reference 29: http://www.xbrl.org/2003/role/disclosureRef -Topic 470 -SubTopic 10 -Name Accounting Standards Codification -Section S99 -Paragraph 1B -Subparagraph (SX 210.13-02(a)(4)(iii)(B)) -Publisher FASB -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B Reference 30: http://www.xbrl.org/2003/role/disclosureRef -Topic 470 -SubTopic 10 -Name Accounting Standards Codification -Section S99 -Paragraph 1B -Subparagraph (SX 210.13-02(a)(4)(iv)) -Publisher FASB -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B Reference 31: http://www.xbrl.org/2003/role/disclosureRef -Topic 470 -SubTopic 10 -Name Accounting Standards Codification -Section S99 -Paragraph 1B -Subparagraph (SX 210.13-02(a)(5)) -Publisher FASB -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B Reference 32: http://www.xbrl.org/2003/role/disclosureRef -Topic 260 -SubTopic 10 -Name Accounting Standards Codification -Section 45 -Paragraph 60B -Subparagraph (a) -Publisher FASB -URI https://asc.fasb.org/1943274/2147482689/260-10-45-60B Reference 33: http://www.xbrl.org/2003/role/disclosureRef -Topic 205 -SubTopic 20 -Name Accounting Standards Codification -Section 50 -Paragraph 7 -Publisher FASB -URI https://asc.fasb.org/1943274/2147483499/205-20-50-7 Reference 34: http://fasb.org/us-gaap/role/ref/legacyRef -Topic 230 -SubTopic 10 -Name Accounting Standards Codification -Section 45 -Paragraph 28 -Publisher FASB -URI https://asc.fasb.org/1943274/2147482740/230-10-45-28 Reference 35: http://www.xbrl.org/2003/role/disclosureRef -Topic 220 -SubTopic 10 -Name Accounting Standards Codification -Section 45 -Paragraph 1A -Subparagraph (a) -Publisher FASB -URI https://asc.fasb.org/1943274/2147482790/220-10-45-1A Reference 36: http://www.xbrl.org/2003/role/disclosureRef -Topic 220 -SubTopic 10 -Name Accounting Standards Codification -Section 45 -Paragraph 1B -Subparagraph (a) -Publisher FASB -URI https://asc.fasb.org/1943274/2147482790/220-10-45-1B Reference 37: http://fasb.org/us-gaap/role/ref/legacyRef -Topic 942 -SubTopic 220 -Name Accounting Standards Codification -Section S99 -Paragraph 1 -Subparagraph (SX 210.9-04(22)) -Publisher FASB -URI https://asc.fasb.org/1943274/2147478524/942-220-S99-1 + Details
Name: | us-gaap_NetIncomeLoss
Namespace Prefix: | us-gaap_
Data Type: | xbrli:monetaryItemType
Balance Type: | credit
Period Type: | duration

X
- Details
Name: | ecd_MeasureAxis=1
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | ecd_MeasureAxis=2
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | ecd_MeasureAxis=3
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | ecd_AdjToCompAxis=fix_ReportedValueofStockAwardsMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | ecd_ExecutiveCategoryAxis=ecd_PeoMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | ecd_AdjToCompAxis=fix_EquityAwardAdjustmentsMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | ecd_AdjToCompAxis=fix_FairValueOfOutstandingAndUnvestedEquityAwardsGrantedInSameYearMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | ecd_AdjToCompAxis=fix_YearOverYearChangeInFairValueOfOutstandingAndUnvestedEquityAwardsMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | ecd_AdjToCompAxis=fix_FairValueAsOfVestingDateOfEquityAwardsGrantedAndVestedInTheYearMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | ecd_AdjToCompAxis=fix_YearOverYearChangeInFairValueOfEquityAwardsGrantedInPriorYearsThatVestedInTheYearMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | ecd_AdjToCompAxis=fix_FairValueAtTheEndOfThePriorYearOfEquityAwardsThatFailedToMeetVestingConditionsInTheYearMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | ecd_AdjToCompAxis=fix_ValueOfDividendsOrOtherEarningsPaidOnStockOrOptionAwardsNotOtherwiseReflectedInFairValueOrTotalCompensationMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | ecd_AdjToCompAxis=fix_TotalEquityAwardAdjustmentsMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | ecd_AdjToCompAxis=fix_AverageReportedValueOfStockAwardsMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | ecd_ExecutiveCategoryAxis=ecd_NonPeoNeoMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | ecd_AdjToCompAxis=fix_AverageEquityAwardAdjustmentsMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | ecd_AdjToCompAxis=fix_AverageFairValueOfOutstandingAndUnvestedEquityAwardsGrantedInSameYearMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | ecd_AdjToCompAxis=fix_YearOverYearAverageChangeInFairValueOfOutstandingAndUnvestedEquityAwardsMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | ecd_AdjToCompAxis=fix_AverageFairValueAsOfVestingDateOfEquityAwardsGrantedAndVestedInTheYearMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | ecd_AdjToCompAxis=fix_YearOverYearAverageChangeInFairValueOfEquityAwardsGrantedInPriorYearsThatVestedInTheYearMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | ecd_AdjToCompAxis=fix_AverageFairValueAtTheEndOfThePriorYearOfEquityAwardsThatFailedToMeetVestingConditionsInTheYearMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | ecd_AdjToCompAxis=fix_AverageValueOfDividendsOrOtherEarningsPaidOnStockOrOptionAwardsNotOtherwiseReflectedInFairValueOrTotalCompensationMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | ecd_AdjToCompAxis=fix_TotalAverageEquityAwardAdjustmentsMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |