Organization record
CECO ENVIRONMENTAL CORP.
All evidence-backed facts for this organization, identity resolved across official registers.
Facts on record
Newest first; every row links to its evidence page.
| Fact | Value | Period | Source |
|---|---|---|---|
| accounts_payable | {"amount": 195955000, "concept": "us-gaap:AccountsPayableCurrent", "currency": "USD"} | 2026-06-30 | sec_edgar |
| accounts_payable | {"amount": 137594000, "concept": "us-gaap:AccountsPayableCurrent", "currency": "USD"} | 2026-03-31 | sec_edgar |
| accounts_payable | {"amount": 117848000, "concept": "us-gaap:AccountsPayableCurrent", "currency": "USD"} | 2025-12-31 | sec_edgar |
| accounts_payable | {"amount": 127576000, "concept": "us-gaap:AccountsPayableCurrent", "currency": "USD"} | 2025-09-30 | sec_edgar |
| accounts_payable | {"amount": 125971000, "concept": "us-gaap:AccountsPayableCurrent", "currency": "USD"} | 2025-06-30 | sec_edgar |
| accounts_payable | {"amount": 109504000, "concept": "us-gaap:AccountsPayableCurrent", "currency": "USD"} | 2025-03-31 | sec_edgar |
| accounts_payable | {"amount": 109671000, "concept": "us-gaap:AccountsPayableCurrent", "currency": "USD"} | 2024-12-31 | sec_edgar |
| accounts_payable | {"amount": 92316000, "concept": "us-gaap:AccountsPayableCurrent", "currency": "USD"} | 2024-09-30 | sec_edgar |
| accounts_payable | {"amount": 90944000, "concept": "us-gaap:AccountsPayableCurrent", "currency": "USD"} | 2024-06-30 | sec_edgar |
| accounts_payable | {"amount": 87691000, "concept": "us-gaap:AccountsPayableCurrent", "currency": "USD"} | 2023-12-31 | sec_edgar |
| accounts_payable | {"amount": 94236000, "concept": "us-gaap:AccountsPayableCurrent", "currency": "USD"} | 2023-09-30 | sec_edgar |
| accounts_payable | {"amount": 73407000, "concept": "us-gaap:AccountsPayableCurrent", "currency": "USD"} | 2022-12-31 | sec_edgar |
| accounts_receivable | {"amount": 458990000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD" | 2026-06-30 | sec_edgar |
| accounts_receivable | {"amount": 278528000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD" | 2026-03-31 | sec_edgar |
| accounts_receivable | {"amount": 172909000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD" | 2025-12-31 | sec_edgar |
| accounts_receivable | {"amount": 159615000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD" | 2025-09-30 | sec_edgar |
| accounts_receivable | {"amount": 161498000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD" | 2025-06-30 | sec_edgar |
| accounts_receivable | {"amount": 152405000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD" | 2025-03-31 | sec_edgar |
| accounts_receivable | {"amount": 159500000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD" | 2024-12-31 | sec_edgar |
| accounts_receivable | {"amount": 100111000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD" | 2024-09-30 | sec_edgar |
| accounts_receivable | {"amount": 126974000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD" | 2024-06-30 | sec_edgar |
| accounts_receivable | {"amount": 116647000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD" | 2024-03-31 | sec_edgar |
| accounts_receivable | {"amount": 112700000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD" | 2023-12-31 | sec_edgar |
| accounts_receivable | {"amount": 112433000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD" | 2023-09-30 | sec_edgar |
| accounts_receivable | {"amount": 126663000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD" | 2023-06-30 | sec_edgar |
| accounts_receivable | {"amount": 109889000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD" | 2023-03-31 | sec_edgar |
| accounts_receivable | {"amount": 83100000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2023-01-01 | sec_edgar |
| accounts_receivable | {"amount": 83100000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2022-12-31 | sec_edgar |
| accounts_receivable | {"amount": 89959000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2022-09-30 | sec_edgar |
| accounts_receivable | {"amount": 95318000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2022-06-30 | sec_edgar |
| accounts_receivable | {"amount": 95440000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2022-03-31 | sec_edgar |
| accounts_receivable | {"amount": 75000000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2022-01-01 | sec_edgar |
| accounts_receivable | {"amount": 74991000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2021-12-31 | sec_edgar |
| accounts_receivable | {"amount": 70024000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2021-09-30 | sec_edgar |
| accounts_receivable | {"amount": 65650000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2021-06-30 | sec_edgar |
| accounts_receivable | {"amount": 66468000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2021-03-31 | sec_edgar |
| accounts_receivable | {"amount": 63046000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2020-12-31 | sec_edgar |
| accounts_receivable | {"amount": 58274000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2020-09-30 | sec_edgar |
| accounts_receivable | {"amount": 60814000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2020-06-30 | sec_edgar |
| accounts_receivable | {"amount": 55638000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2020-03-31 | sec_edgar |
| accounts_receivable | {"amount": 68434000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2019-12-31 | sec_edgar |
| accounts_receivable | {"amount": 58091000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2019-09-30 | sec_edgar |
| accounts_receivable | {"amount": 60037000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2019-06-30 | sec_edgar |
| accounts_receivable | {"amount": 72963000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2019-03-31 | sec_edgar |
| accounts_receivable | {"amount": 53225000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2018-12-31 | sec_edgar |
| accounts_receivable | {"amount": 67804000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2018-09-30 | sec_edgar |
| accounts_receivable | {"amount": 67796000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2018-06-30 | sec_edgar |
| accounts_receivable | {"amount": 63796000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2018-03-31 | sec_edgar |
| accounts_receivable | {"amount": 67990000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2017-12-31 | sec_edgar |
| accounts_receivable | {"amount": 70504000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2017-09-30 | sec_edgar |
| accounts_receivable | {"amount": 66131000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2017-06-30 | sec_edgar |
| accounts_receivable | {"amount": 76726000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2017-03-31 | sec_edgar |
| accounts_receivable | {"amount": 83062000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2016-12-31 | sec_edgar |
| accounts_receivable | {"amount": 83359000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2016-09-30 | sec_edgar |
| accounts_receivable | {"amount": 84565000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2016-06-30 | sec_edgar |
| accounts_receivable | {"amount": 84828000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2016-03-31 | sec_edgar |
| accounts_receivable | {"amount": 97778000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2015-12-31 | sec_edgar |
| accounts_receivable | {"amount": 100758000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD" | 2015-09-30 | sec_edgar |
| accounts_receivable | {"amount": 65767000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2015-06-30 | sec_edgar |
| accounts_receivable | {"amount": 59193000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2015-03-31 | sec_edgar |
| accounts_receivable | {"amount": 58394000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2014-12-31 | sec_edgar |
| accounts_receivable | {"amount": 47639000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2014-09-30 | sec_edgar |
| accounts_receivable | {"amount": 41298000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2014-06-30 | sec_edgar |
| accounts_receivable | {"amount": 43446000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2014-03-31 | sec_edgar |
| accounts_receivable | {"amount": 44364000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2013-12-31 | sec_edgar |
| accounts_receivable | {"amount": 41164000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2013-09-30 | sec_edgar |
| accounts_receivable | {"amount": 28283000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2013-06-30 | sec_edgar |
| accounts_receivable | {"amount": 26802000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2013-03-31 | sec_edgar |
| accounts_receivable | {"amount": 29499000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2012-12-31 | sec_edgar |
| accounts_receivable | {"amount": 21281000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2012-09-30 | sec_edgar |
| accounts_receivable | {"amount": 18335000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2012-06-30 | sec_edgar |
| accounts_receivable | {"amount": 20268000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2012-03-31 | sec_edgar |
| accounts_receivable | {"amount": 23109000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2011-12-31 | sec_edgar |
| accounts_receivable | {"amount": 20618000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2011-09-30 | sec_edgar |
| accounts_receivable | {"amount": 20061000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2011-06-30 | sec_edgar |
| accounts_receivable | {"amount": 26772000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2010-12-31 | sec_edgar |
| capex | {"amount": 7486000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curr | 2026-06-30 | sec_edgar |
| capex | {"amount": 2589000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curr | 2026-03-31 | sec_edgar |
| capex | {"amount": 11343000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "cur | 2025-12-31 | sec_edgar |
| capex | {"amount": 8673000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curr | 2025-09-30 | sec_edgar |
| capex | {"amount": 4432000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curr | 2025-06-30 | sec_edgar |
| capex | {"amount": 3385000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curr | 2025-03-31 | sec_edgar |
| capex | {"amount": 17368000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "cur | 2024-12-31 | sec_edgar |
| capex | {"amount": 11237000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "cur | 2024-09-30 | sec_edgar |
| capex | {"amount": 7233000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curr | 2024-06-30 | sec_edgar |
| capex | {"amount": 3116000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curr | 2024-03-31 | sec_edgar |
| capex | {"amount": 8384000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curr | 2023-12-31 | sec_edgar |
| capex | {"amount": 5511000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curr | 2023-09-30 | sec_edgar |
| capex | {"amount": 3919000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curr | 2023-06-30 | sec_edgar |
| capex | {"amount": 2513000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curr | 2023-03-31 | sec_edgar |
| capex | {"amount": 3376000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curr | 2022-12-31 | sec_edgar |
| capex | {"amount": 2367000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curr | 2022-09-30 | sec_edgar |
| capex | {"amount": 1432000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curr | 2022-06-30 | sec_edgar |
| capex | {"amount": 665000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curre | 2022-03-31 | sec_edgar |
| capex | {"amount": 2616000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curr | 2021-12-31 | sec_edgar |
| capex | {"amount": 1740000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curr | 2021-09-30 | sec_edgar |
| capex | {"amount": 997000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curre | 2021-06-30 | sec_edgar |
| capex | {"amount": 492000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curre | 2021-03-31 | sec_edgar |
| capex | {"amount": 3945000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curr | 2020-12-31 | sec_edgar |
| capex | {"amount": 2875000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curr | 2020-09-30 | sec_edgar |
| capex | {"amount": 1992000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curr | 2020-06-30 | sec_edgar |
| capex | {"amount": 976000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curre | 2020-03-31 | sec_edgar |
| capex | {"amount": 5655000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curr | 2019-12-31 | sec_edgar |
| capex | {"amount": 3746000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curr | 2019-09-30 | sec_edgar |
| capex | {"amount": 1201000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curr | 2019-06-30 | sec_edgar |
| capex | {"amount": 423000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curre | 2019-03-31 | sec_edgar |
| capex | {"amount": 3090000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curr | 2018-12-31 | sec_edgar |
| capex | {"amount": 1897000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curr | 2018-09-30 | sec_edgar |
| capex | {"amount": 591000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curre | 2018-06-30 | sec_edgar |
| capex | {"amount": 466000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curre | 2018-03-31 | sec_edgar |
| capex | {"amount": 1028000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curr | 2017-12-31 | sec_edgar |
| capex | {"amount": 806000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curre | 2017-09-30 | sec_edgar |
| capex | {"amount": 641000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curre | 2017-06-30 | sec_edgar |
| capex | {"amount": 410000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curre | 2017-03-31 | sec_edgar |
| capex | {"amount": 1076000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curr | 2016-12-31 | sec_edgar |
| capex | {"amount": 811000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curre | 2016-09-30 | sec_edgar |
| capex | {"amount": 552000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curre | 2016-06-30 | sec_edgar |
| capex | {"amount": 212000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curre | 2016-03-31 | sec_edgar |
| capex | {"amount": 763000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curre | 2015-12-31 | sec_edgar |
| capex | {"amount": 526000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curre | 2015-09-30 | sec_edgar |
| capex | {"amount": 341000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curre | 2015-06-30 | sec_edgar |
| capex | {"amount": 119000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curre | 2015-03-31 | sec_edgar |
| capex | {"amount": 1151000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curr | 2014-12-31 | sec_edgar |
| capex | {"amount": 801000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curre | 2014-09-30 | sec_edgar |
| capex | {"amount": 711000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curre | 2014-06-30 | sec_edgar |
| capex | {"amount": 415000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curre | 2014-03-31 | sec_edgar |
| capex | {"amount": 1377000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curr | 2013-12-31 | sec_edgar |
| capex | {"amount": 533000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curre | 2013-09-30 | sec_edgar |
| capex | {"amount": 236000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curre | 2013-06-30 | sec_edgar |
| capex | {"amount": 53000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curren | 2013-03-31 | sec_edgar |
| capex | {"amount": 273000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curre | 2012-12-31 | sec_edgar |
| capex | {"amount": 234000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curre | 2012-09-30 | sec_edgar |
| capex | {"amount": 132000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curre | 2012-06-30 | sec_edgar |
| capex | {"amount": 73000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curren | 2012-03-31 | sec_edgar |
| capex | {"amount": 913000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curre | 2011-12-31 | sec_edgar |
| capex | {"amount": 654000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curre | 2011-09-30 | sec_edgar |
| capex | {"amount": 256000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curre | 2011-06-30 | sec_edgar |
| capex | {"amount": 160000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curre | 2011-03-31 | sec_edgar |
| capex | {"amount": 654000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curre | 2010-12-31 | sec_edgar |
| capex | {"amount": 400000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curre | 2010-09-30 | sec_edgar |
| capex | {"amount": 313000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curre | 2010-06-30 | sec_edgar |
| cash_and_equivalents | {"amount": 61066000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2026-06-30 | sec_edgar |
| cash_and_equivalents | {"amount": 45411000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2026-03-31 | sec_edgar |
| cash_and_equivalents | {"amount": 33144000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2025-12-31 | sec_edgar |
| cash_and_equivalents | {"amount": 32787000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2025-09-30 | sec_edgar |
| cash_and_equivalents | {"amount": 36823000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2025-06-30 | sec_edgar |
| cash_and_equivalents | {"amount": 146471000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currenc | 2025-03-31 | sec_edgar |
| cash_and_equivalents | {"amount": 37832000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2024-12-31 | sec_edgar |
| cash_and_equivalents | {"amount": 38700000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2024-09-30 | sec_edgar |
| cash_and_equivalents | {"amount": 36523000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2024-06-30 | sec_edgar |
| cash_and_equivalents | {"amount": 46557000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2024-03-31 | sec_edgar |
| cash_and_equivalents | {"amount": 54779000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2023-12-31 | sec_edgar |
| cash_and_equivalents | {"amount": 47583000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2023-09-30 | sec_edgar |
| cash_and_equivalents | {"amount": 47617000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2023-06-30 | sec_edgar |
| cash_and_equivalents | {"amount": 41233000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2023-03-31 | sec_edgar |
| cash_and_equivalents | {"amount": 45522000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2022-12-31 | sec_edgar |
| cash_and_equivalents | {"amount": 35188000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2022-09-30 | sec_edgar |
| cash_and_equivalents | {"amount": 34416000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2022-06-30 | sec_edgar |
| cash_and_equivalents | {"amount": 28382000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2022-03-31 | sec_edgar |
| cash_and_equivalents | {"amount": 29902000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2021-12-31 | sec_edgar |
| cash_and_equivalents | {"amount": 31925000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2021-09-30 | sec_edgar |
| cash_and_equivalents | {"amount": 32229000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2021-06-30 | sec_edgar |
| cash_and_equivalents | {"amount": 40864000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2021-03-31 | sec_edgar |
| cash_and_equivalents | {"amount": 35992000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2020-12-31 | sec_edgar |
| cash_and_equivalents | {"amount": 44537000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2020-09-30 | sec_edgar |
| cash_and_equivalents | {"amount": 41513000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2020-06-30 | sec_edgar |
| cash_and_equivalents | {"amount": 82528000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2020-03-31 | sec_edgar |
| cash_and_equivalents | {"amount": 35602000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2019-12-31 | sec_edgar |
| cash_and_equivalents | {"amount": 28963000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2019-09-30 | sec_edgar |
| cash_and_equivalents | {"amount": 28828000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2019-06-30 | sec_edgar |
| cash_and_equivalents | {"amount": 28167000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2019-03-31 | sec_edgar |
| cash_and_equivalents | {"amount": 43676000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2018-12-31 | sec_edgar |
| cash_and_equivalents | {"amount": 30718000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2018-09-30 | sec_edgar |
| cash_and_equivalents | {"amount": 35556000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2018-06-30 | sec_edgar |
| cash_and_equivalents | {"amount": 33089000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2018-03-31 | sec_edgar |
| cash_and_equivalents | {"amount": 29902000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2017-12-31 | sec_edgar |
| cash_and_equivalents | {"amount": 24567000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2017-09-30 | sec_edgar |
| cash_and_equivalents | {"amount": 27166000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2017-06-30 | sec_edgar |
| cash_and_equivalents | {"amount": 44999000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2017-03-31 | sec_edgar |
| cash_and_equivalents | {"amount": 45824000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2016-12-31 | sec_edgar |
| cash_and_equivalents | {"amount": 41814000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2016-09-30 | sec_edgar |
| cash_and_equivalents | {"amount": 56606000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2016-06-30 | sec_edgar |
| cash_and_equivalents | {"amount": 33390000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2016-03-31 | sec_edgar |
| cash_and_equivalents | {"amount": 34194000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2015-12-31 | sec_edgar |
| cash_and_equivalents | {"amount": 30763000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2015-09-30 | sec_edgar |
| cash_and_equivalents | {"amount": 17089000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2015-06-30 | sec_edgar |
| cash_and_equivalents | {"amount": 18990000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2015-03-31 | sec_edgar |
| cash_and_equivalents | {"amount": 18162000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2014-12-31 | sec_edgar |
| cash_and_equivalents | {"amount": 18039000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2014-09-30 | sec_edgar |
| cash_and_equivalents | {"amount": 17788000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2014-06-30 | sec_edgar |
| cash_and_equivalents | {"amount": 19227000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2014-03-31 | sec_edgar |
| cash_and_equivalents | {"amount": 21961000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2013-12-31 | sec_edgar |
| cash_and_equivalents | {"amount": 13586000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2013-09-30 | sec_edgar |
| cash_and_equivalents | {"amount": 5066000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency" | 2013-06-30 | sec_edgar |
| cash_and_equivalents | {"amount": 6926000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency" | 2013-03-31 | sec_edgar |
| cash_and_equivalents | {"amount": 22294000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2012-12-31 | sec_edgar |
| cash_and_equivalents | {"amount": 24455000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2012-09-30 | sec_edgar |
| cash_and_equivalents | {"amount": 19779000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2012-06-30 | sec_edgar |
| cash_and_equivalents | {"amount": 19860000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2012-03-31 | sec_edgar |
| cash_and_equivalents | {"amount": 12724000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2011-12-31 | sec_edgar |