<?xml version="1.0" encoding="UTF-8"?>
<informationTable
	xmlns="http://www.sec.gov/edgar/document/thirteenf/informationtable">
	<infoTable>
		<nameOfIssuer>APPLIED MATLS INC</nameOfIssuer>
		<titleOfClass>COM</titleOfClass>
		<cusip>038222105</cusip>
		<value>78954644</value>
		<shrsOrPrnAmt>
			<sshPrnamt>109202</sshPrnamt>
			<sshPrnamtType>SH</sshPrnamtType>
		</shrsOrPrnAmt>
		<investmentDiscretion>SOLE</investmentDiscretion>
		<votingAuthority>
			<Sole>95714</Sole>
			<Shared>0</Shared>
			<None>13488</None>
		</votingAuthority>
	</infoTable>
	<infoTable>
		<nameOfIssuer>AMPHENOL CORP</nameOfIssuer>
		<titleOfClass>CL A</titleOfClass>
		<cusip>032095101</cusip>
		<value>67852708</value>
		<shrsOrPrnAmt>
			<sshPrnamt>384825</sshPrnamt>
			<sshPrnamtType>SH</sshPrnamtType>
		</shrsOrPrnAmt>
		<investmentDiscretion>SOLE</investmentDiscretion>
		<votingAuthority>
			<Sole>336846</Sole>
			<Shared>0</Shared>
			<None>47979</None>
		</votingAuthority>
	</infoTable>
	<infoTable>
		<nameOfIssuer>BROADCOM INC</nameOfIssuer>
		<titleOfClass>COM</titleOfClass>
		<cusip>11135F101</cusip>
		<value>55939767</value>
		<shrsOrPrnAmt>
			<sshPrnamt>148085</sshPrnamt>
			<sshPrnamtType>SH</sshPrnamtType>
		</shrsOrPrnAmt>
		<investmentDiscretion>SOLE</investmentDiscretion>
		<votingAuthority>
			<Sole>129701</Sole>
			<Shared>0</Shared>
			<None>18384</None>
		</votingAuthority>
	</infoTable>
	<infoTable>
		<nameOfIssuer>BROOKFIELD CORP</nameOfIssuer>
		<titleOfClass>CL A LTD VT SH</titleOfClass>
		<cusip>11271J107</cusip>
		<value>598639</value>
		<shrsOrPrnAmt>
			<sshPrnamt>14036</sshPrnamt>
			<sshPrnamtType>SH</sshPrnamtType>
		</shrsOrPrnAmt>
		<investmentDiscretion>SOLE</investmentDiscretion>
		<votingAuthority>
			<Sole>14036</Sole>
			<Shared>0</Shared>
			<None>0</None>
		</votingAuthority>
	</infoTable>
	<infoTable>
		<nameOfIssuer>CAMECO CORP</nameOfIssuer>
		<titleOfClass>COM</titleOfClass>
		<cusip>13321L108</cusip>
		<value>483990</value>
		<shrsOrPrnAmt>
			<sshPrnamt>4750</sshPrnamt>
			<sshPrnamtType>SH</sshPrnamtType>
		</shrsOrPrnAmt>
		<investmentDiscretion>SOLE</investmentDiscretion>
		<votingAuthority>
			<Sole>4750</Sole>
			<Shared>0</Shared>
			<None>0</None>
		</votingAuthority>
	</infoTable>
	<infoTable>
		<nameOfIssuer>CANADIAN IMPERIAL BANK OF CO</nameOfIssuer>
		<titleOfClass>COM</titleOfClass>
		<cusip>136069101</cusip>
		<value>579146</value>
		<shrsOrPrnAmt>
			<sshPrnamt>5031</sshPrnamt>
			<sshPrnamtType>SH</sshPrnamtType>
		</shrsOrPrnAmt>
		<investmentDiscretion>SOLE</investmentDiscretion>
		<votingAuthority>
			<Sole>5031</Sole>
			<Shared>0</Shared>
			<None>0</None>
		</votingAuthority>
	</infoTable>
	<infoTable>
		<nameOfIssuer>COSTCO WHOLESALE CORPORATION</nameOfIssuer>
		<titleOfClass>COM</titleOfClass>
		<cusip>22160K105</cusip>
		<value>60723866</value>
		<shrsOrPrnAmt>
			<sshPrnamt>64911</sshPrnamt>
			<sshPrnamtType>SH</sshPrnamtType>
		</shrsOrPrnAmt>
		<investmentDiscretion>SOLE</investmentDiscretion>
		<votingAuthority>
			<Sole>56658</Sole>
			<Shared>0</Shared>
			<None>8253</None>
		</votingAuthority>
	</infoTable>
	<infoTable>
		<nameOfIssuer>CANADIAN PACIFIC KANSAS CITY</nameOfIssuer>
		<titleOfClass>COM</titleOfClass>
		<cusip>13646K108</cusip>
		<value>594975</value>
		<shrsOrPrnAmt>
			<sshPrnamt>6865</sshPrnamt>
			<sshPrnamtType>SH</sshPrnamtType>
		</shrsOrPrnAmt>
		<investmentDiscretion>SOLE</investmentDiscretion>
		<votingAuthority>
			<Sole>6865</Sole>
			<Shared>0</Shared>
			<None>0</None>
		</votingAuthority>
	</infoTable>
	<infoTable>
		<nameOfIssuer>CINTAS CORP</nameOfIssuer>
		<titleOfClass>COM</titleOfClass>
		<cusip>172908105</cusip>
		<value>61696839</value>
		<shrsOrPrnAmt>
			<sshPrnamt>362750</sshPrnamt>
			<sshPrnamtType>SH</sshPrnamtType>
		</shrsOrPrnAmt>
		<investmentDiscretion>SOLE</investmentDiscretion>
		<votingAuthority>
			<Sole>316857</Sole>
			<Shared>0</Shared>
			<None>45893</None>
		</votingAuthority>
	</infoTable>
	<infoTable>
		<nameOfIssuer>CENOVUS ENERGY INC</nameOfIssuer>
		<titleOfClass>COM</titleOfClass>
		<cusip>15135U109</cusip>
		<value>485678</value>
		<shrsOrPrnAmt>
			<sshPrnamt>19581</sshPrnamt>
			<sshPrnamtType>SH</sshPrnamtType>
		</shrsOrPrnAmt>
		<investmentDiscretion>SOLE</investmentDiscretion>
		<votingAuthority>
			<Sole>19581</Sole>
			<Shared>0</Shared>
			<None>0</None>
		</votingAuthority>
	</infoTable>
	<infoTable>
		<nameOfIssuer>EMCOR GROUP INC</nameOfIssuer>
		<titleOfClass>COM</titleOfClass>
		<cusip>29084Q100</cusip>
		<value>62772822</value>
		<shrsOrPrnAmt>
			<sshPrnamt>75639</sshPrnamt>
			<sshPrnamtType>SH</sshPrnamtType>
		</shrsOrPrnAmt>
		<investmentDiscretion>SOLE</investmentDiscretion>
		<votingAuthority>
			<Sole>66153</Sole>
			<Shared>0</Shared>
			<None>9486</None>
		</votingAuthority>
	</infoTable>
	<infoTable>
		<nameOfIssuer>FIRSTSERVICE CORP NEW</nameOfIssuer>
		<titleOfClass>COM</titleOfClass>
		<cusip>33767E202</cusip>
		<value>597725</value>
		<shrsOrPrnAmt>
			<sshPrnamt>4205</sshPrnamt>
			<sshPrnamtType>SH</sshPrnamtType>
		</shrsOrPrnAmt>
		<investmentDiscretion>SOLE</investmentDiscretion>
		<votingAuthority>
			<Sole>4205</Sole>
			<Shared>0</Shared>
			<None>0</None>
		</votingAuthority>
	</infoTable>
	<infoTable>
		<nameOfIssuer>GE AEROSPACE</nameOfIssuer>
		<titleOfClass>COM NEW</titleOfClass>
		<cusip>369604301</cusip>
		<value>72662053</value>
		<shrsOrPrnAmt>
			<sshPrnamt>194423</sshPrnamt>
			<sshPrnamtType>SH</sshPrnamtType>
		</shrsOrPrnAmt>
		<investmentDiscretion>SOLE</investmentDiscretion>
		<votingAuthority>
			<Sole>170067</Sole>
			<Shared>0</Shared>
			<None>24356</None>
		</votingAuthority>
	</infoTable>
	<infoTable>
		<nameOfIssuer>HOWMET AEROSPACE INC</nameOfIssuer>
		<titleOfClass>COM</titleOfClass>
		<cusip>443201108</cusip>
		<value>63653985</value>
		<shrsOrPrnAmt>
			<sshPrnamt>236753</sshPrnamt>
			<sshPrnamtType>SH</sshPrnamtType>
		</shrsOrPrnAmt>
		<investmentDiscretion>SOLE</investmentDiscretion>
		<votingAuthority>
			<Sole>207382</Sole>
			<Shared>0</Shared>
			<None>29371</None>
		</votingAuthority>
	</infoTable>
	<infoTable>
		<nameOfIssuer>INTERACTIVE BROKERS GROUP IN</nameOfIssuer>
		<titleOfClass>COM CL A</titleOfClass>
		<cusip>45841N107</cusip>
		<value>65867354</value>
		<shrsOrPrnAmt>
			<sshPrnamt>756747</sshPrnamt>
			<sshPrnamtType>SH</sshPrnamtType>
		</shrsOrPrnAmt>
		<investmentDiscretion>SOLE</investmentDiscretion>
		<votingAuthority>
			<Sole>662266</Sole>
			<Shared>0</Shared>
			<None>94481</None>
		</votingAuthority>
	</infoTable>
	<infoTable>
		<nameOfIssuer>KLA CORP</nameOfIssuer>
		<titleOfClass>COM NEW</titleOfClass>
		<cusip>482480100</cusip>
		<value>77910613</value>
		<shrsOrPrnAmt>
			<sshPrnamt>258228</sshPrnamt>
			<sshPrnamtType>SH</sshPrnamtType>
		</shrsOrPrnAmt>
		<investmentDiscretion>SOLE</investmentDiscretion>
		<votingAuthority>
			<Sole>225897</Sole>
			<Shared>0</Shared>
			<None>32331</None>
		</votingAuthority>
	</infoTable>
	<infoTable>
		<nameOfIssuer>ELI LILLY &amp; CO</nameOfIssuer>
		<titleOfClass>COM</titleOfClass>
		<cusip>532457108</cusip>
		<value>74781288</value>
		<shrsOrPrnAmt>
			<sshPrnamt>62345</sshPrnamt>
			<sshPrnamtType>SH</sshPrnamtType>
		</shrsOrPrnAmt>
		<investmentDiscretion>SOLE</investmentDiscretion>
		<votingAuthority>
			<Sole>54532</Sole>
			<Shared>0</Shared>
			<None>7813</None>
		</votingAuthority>
	</infoTable>
	<infoTable>
		<nameOfIssuer>MASTERCARD INCORPORATED</nameOfIssuer>
		<titleOfClass>CL A</titleOfClass>
		<cusip>57636Q104</cusip>
		<value>60215264</value>
		<shrsOrPrnAmt>
			<sshPrnamt>117240</sshPrnamt>
			<sshPrnamtType>SH</sshPrnamtType>
		</shrsOrPrnAmt>
		<investmentDiscretion>SOLE</investmentDiscretion>
		<votingAuthority>
			<Sole>102531</Sole>
			<Shared>0</Shared>
			<None>14709</None>
		</votingAuthority>
	</infoTable>
	<infoTable>
		<nameOfIssuer>MCKESSON CORP</nameOfIssuer>
		<titleOfClass>COM</titleOfClass>
		<cusip>58155Q103</cusip>
		<value>58166389</value>
		<shrsOrPrnAmt>
			<sshPrnamt>76979</sshPrnamt>
			<sshPrnamtType>SH</sshPrnamtType>
		</shrsOrPrnAmt>
		<investmentDiscretion>SOLE</investmentDiscretion>
		<votingAuthority>
			<Sole>67274</Sole>
			<Shared>0</Shared>
			<None>9705</None>
		</votingAuthority>
	</infoTable>
	<infoTable>
		<nameOfIssuer>MOODYS CORP</nameOfIssuer>
		<titleOfClass>COM</titleOfClass>
		<cusip>615369105</cusip>
		<value>263599</value>
		<shrsOrPrnAmt>
			<sshPrnamt>582</sshPrnamt>
			<sshPrnamtType>SH</sshPrnamtType>
		</shrsOrPrnAmt>
		<investmentDiscretion>SOLE</investmentDiscretion>
		<votingAuthority>
			<Sole>582</Sole>
			<Shared>0</Shared>
			<None>0</None>
		</votingAuthority>
	</infoTable>
	<infoTable>
		<nameOfIssuer>MSCI INC</nameOfIssuer>
		<titleOfClass>COM</titleOfClass>
		<cusip>55354G100</cusip>
		<value>55687977</value>
		<shrsOrPrnAmt>
			<sshPrnamt>99434</sshPrnamt>
			<sshPrnamtType>SH</sshPrnamtType>
		</shrsOrPrnAmt>
		<investmentDiscretion>SOLE</investmentDiscretion>
		<votingAuthority>
			<Sole>86978</Sole>
			<Shared>0</Shared>
			<None>12456</None>
		</votingAuthority>
	</infoTable>
	<infoTable>
		<nameOfIssuer>MICROSOFT CORP</nameOfIssuer>
		<titleOfClass>COM</titleOfClass>
		<cusip>594918104</cusip>
		<value>62998164</value>
		<shrsOrPrnAmt>
			<sshPrnamt>168886</sshPrnamt>
			<sshPrnamtType>SH</sshPrnamtType>
		</shrsOrPrnAmt>
		<investmentDiscretion>SOLE</investmentDiscretion>
		<votingAuthority>
			<Sole>147611</Sole>
			<Shared>0</Shared>
			<None>21275</None>
		</votingAuthority>
	</infoTable>
	<infoTable>
		<nameOfIssuer>ROYAL BK CDA</nameOfIssuer>
		<titleOfClass>COM</titleOfClass>
		<cusip>780087102</cusip>
		<value>703176</value>
		<shrsOrPrnAmt>
			<sshPrnamt>3397</sshPrnamt>
			<sshPrnamtType>SH</sshPrnamtType>
		</shrsOrPrnAmt>
		<investmentDiscretion>SOLE</investmentDiscretion>
		<votingAuthority>
			<Sole>3397</Sole>
			<Shared>0</Shared>
			<None>0</None>
		</votingAuthority>
	</infoTable>
	<infoTable>
		<nameOfIssuer>SHERWIN WILLIAMS CO</nameOfIssuer>
		<titleOfClass>COM</titleOfClass>
		<cusip>824348106</cusip>
		<value>260994</value>
		<shrsOrPrnAmt>
			<sshPrnamt>758</sshPrnamt>
			<sshPrnamtType>SH</sshPrnamtType>
		</shrsOrPrnAmt>
		<investmentDiscretion>SOLE</investmentDiscretion>
		<votingAuthority>
			<Sole>758</Sole>
			<Shared>0</Shared>
			<None>0</None>
		</votingAuthority>
	</infoTable>
	<infoTable>
		<nameOfIssuer>STATE STR SPDR S&amp;P 500 ETF T</nameOfIssuer>
		<titleOfClass>TR UNIT</titleOfClass>
		<cusip>78462F103</cusip>
		<value>3285440</value>
		<shrsOrPrnAmt>
			<sshPrnamt>4399</sshPrnamt>
			<sshPrnamtType>SH</sshPrnamtType>
		</shrsOrPrnAmt>
		<investmentDiscretion>SOLE</investmentDiscretion>
		<votingAuthority>
			<Sole>4399</Sole>
			<Shared>0</Shared>
			<None>0</None>
		</votingAuthority>
	</infoTable>
	<infoTable>
		<nameOfIssuer>TARGA RES CORP</nameOfIssuer>
		<titleOfClass>COM</titleOfClass>
		<cusip>87612G101</cusip>
		<value>70707184</value>
		<shrsOrPrnAmt>
			<sshPrnamt>263694</sshPrnamt>
			<sshPrnamtType>SH</sshPrnamtType>
		</shrsOrPrnAmt>
		<investmentDiscretion>SOLE</investmentDiscretion>
		<votingAuthority>
			<Sole>230706</Sole>
			<Shared>0</Shared>
			<None>32988</None>
		</votingAuthority>
	</infoTable>
	<infoTable>
		<nameOfIssuer>TRANE TECHNOLOGIES PLC</nameOfIssuer>
		<titleOfClass>SHS</titleOfClass>
		<cusip>G8994E103</cusip>
		<value>63691315</value>
		<shrsOrPrnAmt>
			<sshPrnamt>129674</sshPrnamt>
			<sshPrnamtType>SH</sshPrnamtType>
		</shrsOrPrnAmt>
		<investmentDiscretion>SOLE</investmentDiscretion>
		<votingAuthority>
			<Sole>113494</Sole>
			<Shared>0</Shared>
			<None>16180</None>
		</votingAuthority>
	</infoTable>
	<infoTable>
		<nameOfIssuer>VISA INC</nameOfIssuer>
		<titleOfClass>COM CL A</titleOfClass>
		<cusip>92826C839</cusip>
		<value>64182847</value>
		<shrsOrPrnAmt>
			<sshPrnamt>187072</sshPrnamt>
			<sshPrnamtType>SH</sshPrnamtType>
		</shrsOrPrnAmt>
		<investmentDiscretion>SOLE</investmentDiscretion>
		<votingAuthority>
			<Sole>163703</Sole>
			<Shared>0</Shared>
			<None>23369</None>
		</votingAuthority>
	</infoTable>
	<infoTable>
		<nameOfIssuer>VERISK ANALYTICS INC</nameOfIssuer>
		<titleOfClass>COM</titleOfClass>
		<cusip>92345Y106</cusip>
		<value>60695321</value>
		<shrsOrPrnAmt>
			<sshPrnamt>338078</sshPrnamt>
			<sshPrnamtType>SH</sshPrnamtType>
		</shrsOrPrnAmt>
		<investmentDiscretion>SOLE</investmentDiscretion>
		<votingAuthority>
			<Sole>295327</Sole>
			<Shared>0</Shared>
			<None>42751</None>
		</votingAuthority>
	</infoTable>
	<infoTable>
		<nameOfIssuer>WABTEC</nameOfIssuer>
		<titleOfClass>COM</titleOfClass>
		<cusip>929740108</cusip>
		<value>63342836</value>
		<shrsOrPrnAmt>
			<sshPrnamt>234949</sshPrnamt>
			<sshPrnamtType>SH</sshPrnamtType>
		</shrsOrPrnAmt>
		<investmentDiscretion>SOLE</investmentDiscretion>
		<votingAuthority>
			<Sole>205657</Sole>
			<Shared>0</Shared>
			<None>29292</None>
		</votingAuthority>
	</infoTable>
	<infoTable>
		<nameOfIssuer>WASTE CONNECTIONS INC</nameOfIssuer>
		<titleOfClass>COM</titleOfClass>
		<cusip>94106B101</cusip>
		<value>591996</value>
		<shrsOrPrnAmt>
			<sshPrnamt>3553</sshPrnamt>
			<sshPrnamtType>SH</sshPrnamtType>
		</shrsOrPrnAmt>
		<investmentDiscretion>SOLE</investmentDiscretion>
		<votingAuthority>
			<Sole>3553</Sole>
			<Shared>0</Shared>
			<None>0</None>
		</votingAuthority>
	</infoTable>
	<infoTable>
		<nameOfIssuer>WALMART INC</nameOfIssuer>
		<titleOfClass>COM</titleOfClass>
		<cusip>931142103</cusip>
		<value>60762694</value>
		<shrsOrPrnAmt>
			<sshPrnamt>536487</sshPrnamt>
			<sshPrnamtType>SH</sshPrnamtType>
		</shrsOrPrnAmt>
		<investmentDiscretion>SOLE</investmentDiscretion>
		<votingAuthority>
			<Sole>469212</Sole>
			<Shared>0</Shared>
			<None>67275</None>
		</votingAuthority>
	</infoTable>
	<infoTable>
		<nameOfIssuer>BERKLEY W R CORP</nameOfIssuer>
		<titleOfClass>COM</titleOfClass>
		<cusip>084423102</cusip>
		<value>64748735</value>
		<shrsOrPrnAmt>
			<sshPrnamt>918030</sshPrnamt>
			<sshPrnamtType>SH</sshPrnamtType>
		</shrsOrPrnAmt>
		<investmentDiscretion>SOLE</investmentDiscretion>
		<votingAuthority>
			<Sole>801954</Sole>
			<Shared>0</Shared>
			<None>116076</None>
		</votingAuthority>
	</infoTable>
</informationTable>
