Organization record
SENSTAR TECHNOLOGIES CORPORATION
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": 1889000, "concept": "us-gaap:AccountsPayableCurrent", "currency": "USD"} | 2025-12-31 | sec_edgar |
| accounts_payable | {"amount": 2689000, "concept": "us-gaap:AccountsPayableCurrent", "currency": "USD"} | 2024-12-31 | sec_edgar |
| accounts_payable | {"amount": 1650000, "concept": "us-gaap:AccountsPayableCurrent", "currency": "USD"} | 2023-12-31 | sec_edgar |
| accounts_payable | {"amount": 2408000, "concept": "us-gaap:AccountsPayableCurrent", "currency": "USD"} | 2022-12-31 | sec_edgar |
| accounts_receivable | {"amount": 9840000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2025-12-31 | sec_edgar |
| accounts_receivable | {"amount": 10306000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2024-12-31 | sec_edgar |
| accounts_receivable | {"amount": 9545000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2023-12-31 | sec_edgar |
| accounts_receivable | {"amount": 9973000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2022-12-31 | sec_edgar |
| capex | {"amount": 559000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curre | 2025-12-31 | sec_edgar |
| capex | {"amount": 273000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curre | 2024-12-31 | sec_edgar |
| capex | {"amount": 380000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curre | 2023-12-31 | sec_edgar |
| capex | {"amount": 158000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curre | 2022-12-31 | sec_edgar |
| capex | {"amount": 792000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curre | 2021-12-31 | sec_edgar |
| cash_and_equivalents | {"amount": 22341000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2025-12-31 | sec_edgar |
| cash_and_equivalents | {"amount": 20466000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2024-12-31 | sec_edgar |
| cash_and_equivalents | {"amount": 14806000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2023-12-31 | sec_edgar |
| cash_and_equivalents | {"amount": 14937000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency | 2022-12-31 | sec_edgar |
| cashflow_financing | {"amount": 16000, "concept": "us-gaap:NetCashProvidedByUsedInFinancingActivities", "curren | 2025-12-31 | sec_edgar |
| cashflow_financing | {"amount": 39000, "concept": "us-gaap:NetCashProvidedByUsedInFinancingActivities", "curren | 2024-12-31 | sec_edgar |
| cashflow_financing | {"amount": -213000, "concept": "us-gaap:NetCashProvidedByUsedInFinancingActivities", "curr | 2023-12-31 | sec_edgar |
| cashflow_financing | {"amount": 19000, "concept": "us-gaap:NetCashProvidedByUsedInFinancingActivities", "curren | 2022-12-31 | sec_edgar |
| cashflow_financing | {"amount": -39683000, "concept": "us-gaap:NetCashProvidedByUsedInFinancingActivities", "cu | 2021-12-31 | sec_edgar |
| cashflow_investing | {"amount": -561000, "concept": "us-gaap:NetCashProvidedByUsedInInvestingActivities", "curr | 2025-12-31 | sec_edgar |
| cashflow_investing | {"amount": -223000, "concept": "us-gaap:NetCashProvidedByUsedInInvestingActivities", "curr | 2024-12-31 | sec_edgar |
| cashflow_investing | {"amount": -334000, "concept": "us-gaap:NetCashProvidedByUsedInInvestingActivities", "curr | 2023-12-31 | sec_edgar |
| cashflow_investing | {"amount": -237000, "concept": "us-gaap:NetCashProvidedByUsedInInvestingActivities", "curr | 2022-12-31 | sec_edgar |
| cashflow_investing | {"amount": 31725000, "concept": "us-gaap:NetCashProvidedByUsedInInvestingActivities", "cur | 2021-12-31 | sec_edgar |
| cashflow_operating | {"amount": 1755000, "concept": "us-gaap:NetCashProvidedByUsedInOperatingActivities", "curr | 2025-12-31 | sec_edgar |
| cashflow_operating | {"amount": 6656000, "concept": "us-gaap:NetCashProvidedByUsedInOperatingActivities", "curr | 2024-12-31 | sec_edgar |
| cashflow_operating | {"amount": 260000, "concept": "us-gaap:NetCashProvidedByUsedInOperatingActivities", "curre | 2023-12-31 | sec_edgar |
| cashflow_operating | {"amount": -9515000, "concept": "us-gaap:NetCashProvidedByUsedInOperatingActivities", "cur | 2022-12-31 | sec_edgar |
| cashflow_operating | {"amount": 6029000, "concept": "us-gaap:NetCashProvidedByUsedInOperatingActivities", "curr | 2021-12-31 | sec_edgar |
| common_shares_issued | {"unit": "shares", "value": 23331653, "concept": "us-gaap:CommonStockSharesIssued"} | 2025-12-31 | sec_edgar |
| common_shares_issued | {"unit": "shares", "value": 23326653, "concept": "us-gaap:CommonStockSharesIssued"} | 2024-12-31 | sec_edgar |
| common_shares_issued | {"unit": "shares", "value": 23309987, "concept": "us-gaap:CommonStockSharesIssued"} | 2023-12-31 | sec_edgar |
| common_shares_issued | {"unit": "shares", "value": 23309987, "concept": "us-gaap:CommonStockSharesIssued"} | 2022-12-31 | sec_edgar |
| common_shares_outstanding | {"unit": "shares", "value": 23331653, "concept": "us-gaap:CommonStockSharesOutstanding"} | 2025-12-31 | sec_edgar |
| common_shares_outstanding | {"unit": "shares", "value": 23326653, "concept": "us-gaap:CommonStockSharesOutstanding"} | 2024-12-31 | sec_edgar |
| common_shares_outstanding | {"unit": "shares", "value": 23309987, "concept": "us-gaap:CommonStockSharesOutstanding"} | 2023-12-31 | sec_edgar |
| common_shares_outstanding | {"unit": "shares", "value": 23309987, "concept": "us-gaap:CommonStockSharesOutstanding"} | 2022-12-31 | sec_edgar |
| cost_of_revenue | {"amount": 12537000, "concept": "us-gaap:CostOfRevenue", "currency": "USD"} | 2025-12-31 | sec_edgar |
| cost_of_revenue | {"amount": 12836000, "concept": "us-gaap:CostOfRevenue", "currency": "USD"} | 2024-12-31 | sec_edgar |
| cost_of_revenue | {"amount": 13944000, "concept": "us-gaap:CostOfRevenue", "currency": "USD"} | 2023-12-31 | sec_edgar |
| cost_of_revenue | {"amount": 14056000, "concept": "us-gaap:CostOfRevenue", "currency": "USD"} | 2022-12-31 | sec_edgar |
| cost_of_revenue | {"amount": 12935000, "concept": "us-gaap:CostOfRevenue", "currency": "USD"} | 2021-12-31 | sec_edgar |
| current_assets | {"amount": 40834000, "concept": "us-gaap:AssetsCurrent", "currency": "USD"} | 2025-12-31 | sec_edgar |
| current_assets | {"amount": 38234000, "concept": "us-gaap:AssetsCurrent", "currency": "USD"} | 2024-12-31 | sec_edgar |
| current_assets | {"amount": 34339000, "concept": "us-gaap:AssetsCurrent", "currency": "USD"} | 2023-12-31 | sec_edgar |
| current_assets | {"amount": 35259000, "concept": "us-gaap:AssetsCurrent", "currency": "USD"} | 2022-12-31 | sec_edgar |
| current_liabilities | {"amount": 9035000, "concept": "us-gaap:LiabilitiesCurrent", "currency": "USD"} | 2025-12-31 | sec_edgar |
| current_liabilities | {"amount": 12420000, "concept": "us-gaap:LiabilitiesCurrent", "currency": "USD"} | 2024-12-31 | sec_edgar |
| current_liabilities | {"amount": 10064000, "concept": "us-gaap:LiabilitiesCurrent", "currency": "USD"} | 2023-12-31 | sec_edgar |
| current_liabilities | {"amount": 10638000, "concept": "us-gaap:LiabilitiesCurrent", "currency": "USD"} | 2022-12-31 | sec_edgar |
| dei:EntityCommonStockSharesOutstanding | {"unit": "shares", "value": 23331653} | 2025-12-31 | sec_edgar |
| dei:EntityCommonStockSharesOutstanding | {"unit": "shares", "value": 23326653} | 2024-12-31 | sec_edgar |
| dei:EntityCommonStockSharesOutstanding | {"unit": "shares", "value": 23309987} | 2023-12-31 | sec_edgar |
| depreciation_amortization | {"amount": 676000, "concept": "us-gaap:DepreciationDepletionAndAmortization", "currency": | 2025-12-31 | sec_edgar |
| depreciation_amortization | {"amount": 733000, "concept": "us-gaap:DepreciationDepletionAndAmortization", "currency": | 2024-12-31 | sec_edgar |
| depreciation_amortization | {"amount": 917000, "concept": "us-gaap:DepreciationDepletionAndAmortization", "currency": | 2023-12-31 | sec_edgar |
| depreciation_amortization | {"amount": 1430000, "concept": "us-gaap:DepreciationDepletionAndAmortization", "currency": | 2022-12-31 | sec_edgar |
| depreciation_amortization | {"amount": 1869000, "concept": "us-gaap:DepreciationDepletionAndAmortization", "currency": | 2021-12-31 | sec_edgar |
| eps_basic | {"per": "shares", "amount": 0.14, "concept": "us-gaap:EarningsPerShareBasic", "currency": | 2025-12-31 | sec_edgar |
| eps_basic | {"per": "shares", "amount": 0.11, "concept": "us-gaap:EarningsPerShareBasic", "currency": | 2024-12-31 | sec_edgar |
| eps_basic | {"per": "shares", "amount": -0.06, "concept": "us-gaap:EarningsPerShareBasic", "currency": | 2023-12-31 | sec_edgar |
| eps_basic | {"per": "shares", "amount": 0.16, "concept": "us-gaap:EarningsPerShareBasic", "currency": | 2022-12-31 | sec_edgar |
| eps_basic | {"per": "shares", "amount": 0.28, "concept": "us-gaap:EarningsPerShareBasic", "currency": | 2021-12-31 | sec_edgar |
| eps_diluted | {"per": "shares", "amount": 0.14, "concept": "us-gaap:EarningsPerShareDiluted", "currency" | 2025-12-31 | sec_edgar |
| eps_diluted | {"per": "shares", "amount": 0.11, "concept": "us-gaap:EarningsPerShareDiluted", "currency" | 2024-12-31 | sec_edgar |
| eps_diluted | {"per": "shares", "amount": -0.06, "concept": "us-gaap:EarningsPerShareDiluted", "currency | 2023-12-31 | sec_edgar |
| eps_diluted | {"per": "shares", "amount": 0.16, "concept": "us-gaap:EarningsPerShareDiluted", "currency" | 2022-12-31 | sec_edgar |
| eps_diluted | {"per": "shares", "amount": 0.28, "concept": "us-gaap:EarningsPerShareDiluted", "currency" | 2021-12-31 | sec_edgar |
| goodwill | {"amount": 10850000, "concept": "us-gaap:Goodwill", "currency": "USD"} | 2025-12-31 | sec_edgar |
| goodwill | {"amount": 10360000, "concept": "us-gaap:Goodwill", "currency": "USD"} | 2024-12-31 | sec_edgar |
| goodwill | {"amount": 11090000, "concept": "us-gaap:Goodwill", "currency": "USD"} | 2023-12-31 | sec_edgar |
| goodwill | {"amount": 10866000, "concept": "us-gaap:Goodwill", "currency": "USD"} | 2022-12-31 | sec_edgar |
| goodwill | {"amount": 11449000, "concept": "us-gaap:Goodwill", "currency": "USD"} | 2021-12-31 | sec_edgar |
| gross_profit | {"amount": 23837000, "concept": "us-gaap:GrossProfit", "currency": "USD"} | 2025-12-31 | sec_edgar |
| gross_profit | {"amount": 22917000, "concept": "us-gaap:GrossProfit", "currency": "USD"} | 2024-12-31 | sec_edgar |
| gross_profit | {"amount": 18848000, "concept": "us-gaap:GrossProfit", "currency": "USD"} | 2023-12-31 | sec_edgar |
| gross_profit | {"amount": 21502000, "concept": "us-gaap:GrossProfit", "currency": "USD"} | 2022-12-31 | sec_edgar |
| gross_profit | {"amount": 21981000, "concept": "us-gaap:GrossProfit", "currency": "USD"} | 2021-12-31 | sec_edgar |
| income_tax_expense | {"amount": -136000, "concept": "us-gaap:IncomeTaxExpenseBenefit", "currency": "USD"} | 2025-12-31 | sec_edgar |
| income_tax_expense | {"amount": 1977000, "concept": "us-gaap:IncomeTaxExpenseBenefit", "currency": "USD"} | 2024-12-31 | sec_edgar |
| income_tax_expense | {"amount": -40000, "concept": "us-gaap:IncomeTaxExpenseBenefit", "currency": "USD"} | 2023-12-31 | sec_edgar |
| income_tax_expense | {"amount": -2404000, "concept": "us-gaap:IncomeTaxExpenseBenefit", "currency": "USD"} | 2022-12-31 | sec_edgar |
| income_tax_expense | {"amount": 2261000, "concept": "us-gaap:IncomeTaxExpenseBenefit", "currency": "USD"} | 2021-12-31 | sec_edgar |
| industry_sic | {"code": "3669", "scheme": "SIC", "description": "Communications Equipment, NEC"} | sec_edgar | |
| intangible_assets | {"amount": 142000, "concept": "us-gaap:IntangibleAssetsNetExcludingGoodwill", "currency": | 2025-12-31 | sec_edgar |
| intangible_assets | {"amount": 468000, "concept": "us-gaap:IntangibleAssetsNetExcludingGoodwill", "currency": | 2024-12-31 | sec_edgar |
| intangible_assets | {"amount": 881000, "concept": "us-gaap:IntangibleAssetsNetExcludingGoodwill", "currency": | 2023-12-31 | sec_edgar |
| intangible_assets | {"amount": 1142000, "concept": "us-gaap:IntangibleAssetsNetExcludingGoodwill", "currency": | 2022-12-31 | sec_edgar |
| inventory | {"amount": 5591000, "concept": "us-gaap:InventoryNet", "currency": "USD"} | 2025-12-31 | sec_edgar |
| inventory | {"amount": 4957000, "concept": "us-gaap:InventoryNet", "currency": "USD"} | 2024-12-31 | sec_edgar |
| inventory | {"amount": 7178000, "concept": "us-gaap:InventoryNet", "currency": "USD"} | 2023-12-31 | sec_edgar |
| inventory | {"amount": 8443000, "concept": "us-gaap:InventoryNet", "currency": "USD"} | 2022-12-31 | sec_edgar |
| net_income | {"amount": 3217000, "concept": "us-gaap:NetIncomeLoss", "currency": "USD"} | 2025-12-31 | sec_edgar |
| net_income | {"amount": 2637000, "concept": "us-gaap:NetIncomeLoss", "currency": "USD"} | 2024-12-31 | sec_edgar |
| net_income | {"amount": -1289000, "concept": "us-gaap:NetIncomeLoss", "currency": "USD"} | 2023-12-31 | sec_edgar |
| net_income | {"amount": 3831000, "concept": "us-gaap:NetIncomeLoss", "currency": "USD"} | 2022-12-31 | sec_edgar |
| net_income | {"amount": 6416000, "concept": "us-gaap:NetIncomeLoss", "currency": "USD"} | 2021-12-31 | sec_edgar |
| noncurrent_liabilities | {"amount": 2417000, "concept": "us-gaap:LiabilitiesNoncurrent", "currency": "USD"} | 2025-12-31 | sec_edgar |
| noncurrent_liabilities | {"amount": 1980000, "concept": "us-gaap:LiabilitiesNoncurrent", "currency": "USD"} | 2024-12-31 | sec_edgar |
| noncurrent_liabilities | {"amount": 3010000, "concept": "us-gaap:LiabilitiesNoncurrent", "currency": "USD"} | 2023-12-31 | sec_edgar |
| noncurrent_liabilities | {"amount": 3561000, "concept": "us-gaap:LiabilitiesNoncurrent", "currency": "USD"} | 2022-12-31 | sec_edgar |
| operating_expenses | {"amount": 20827000, "concept": "us-gaap:OperatingExpenses", "currency": "USD"} | 2025-12-31 | sec_edgar |
| operating_expenses | {"amount": 19034000, "concept": "us-gaap:OperatingExpenses", "currency": "USD"} | 2024-12-31 | sec_edgar |
| operating_expenses | {"amount": 20113000, "concept": "us-gaap:OperatingExpenses", "currency": "USD"} | 2023-12-31 | sec_edgar |
| operating_expenses | {"amount": 20018000, "concept": "us-gaap:OperatingExpenses", "currency": "USD"} | 2022-12-31 | sec_edgar |
| operating_expenses | {"amount": 20900000, "concept": "us-gaap:OperatingExpenses", "currency": "USD"} | 2021-12-31 | sec_edgar |
| operating_income | {"amount": 3010000, "concept": "us-gaap:OperatingIncomeLoss", "currency": "USD"} | 2025-12-31 | sec_edgar |
| operating_income | {"amount": 3883000, "concept": "us-gaap:OperatingIncomeLoss", "currency": "USD"} | 2024-12-31 | sec_edgar |
| operating_income | {"amount": -1265000, "concept": "us-gaap:OperatingIncomeLoss", "currency": "USD"} | 2023-12-31 | sec_edgar |
| operating_income | {"amount": 1484000, "concept": "us-gaap:OperatingIncomeLoss", "currency": "USD"} | 2022-12-31 | sec_edgar |
| operating_income | {"amount": 1081000, "concept": "us-gaap:OperatingIncomeLoss", "currency": "USD"} | 2021-12-31 | sec_edgar |
| operating_lease_liability | {"amount": 558000, "concept": "us-gaap:OperatingLeaseLiability", "currency": "USD"} | 2025-12-31 | sec_edgar |
| operating_lease_liability | {"amount": 550000, "concept": "us-gaap:OperatingLeaseLiability", "currency": "USD"} | 2024-12-31 | sec_edgar |
| operating_lease_liability | {"amount": 877000, "concept": "us-gaap:OperatingLeaseLiability", "currency": "USD"} | 2023-12-31 | sec_edgar |
| ppe_net | {"amount": 1622000, "concept": "us-gaap:PropertyPlantAndEquipmentNet", "currency": "USD"} | 2025-12-31 | sec_edgar |
| ppe_net | {"amount": 1328000, "concept": "us-gaap:PropertyPlantAndEquipmentNet", "currency": "USD"} | 2024-12-31 | sec_edgar |
| ppe_net | {"amount": 1589000, "concept": "us-gaap:PropertyPlantAndEquipmentNet", "currency": "USD"} | 2023-12-31 | sec_edgar |
| ppe_net | {"amount": 1651000, "concept": "us-gaap:PropertyPlantAndEquipmentNet", "currency": "USD"} | 2022-12-31 | sec_edgar |
| pretax_income | {"amount": 3081000, "concept": "us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxe | 2025-12-31 | sec_edgar |
| pretax_income | {"amount": 4614000, "concept": "us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxe | 2024-12-31 | sec_edgar |
| pretax_income | {"amount": -1329000, "concept": "us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTax | 2023-12-31 | sec_edgar |
| pretax_income | {"amount": 1625000, "concept": "us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxe | 2022-12-31 | sec_edgar |
| pretax_income | {"amount": 70000, "concept": "us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesE | 2021-12-31 | sec_edgar |
| retained_earnings | {"amount": -3946000, "concept": "us-gaap:RetainedEarningsAccumulatedDeficit", "currency": | 2025-12-31 | sec_edgar |
| retained_earnings | {"amount": -7163000, "concept": "us-gaap:RetainedEarningsAccumulatedDeficit", "currency": | 2024-12-31 | sec_edgar |
| retained_earnings | {"amount": -9800000, "concept": "us-gaap:RetainedEarningsAccumulatedDeficit", "currency": | 2023-12-31 | sec_edgar |
| retained_earnings | {"amount": -8511000, "concept": "us-gaap:RetainedEarningsAccumulatedDeficit", "currency": | 2022-12-31 | sec_edgar |
| revenue | {"amount": 36374000, "concept": "us-gaap:Revenues", "currency": "USD"} | 2025-12-31 | sec_edgar |
| revenue | {"amount": 35753000, "concept": "us-gaap:Revenues", "currency": "USD"} | 2024-12-31 | sec_edgar |
| revenue | {"amount": 32792000, "concept": "us-gaap:Revenues", "currency": "USD"} | 2023-12-31 | sec_edgar |
| revenue | {"amount": 35558000, "concept": "us-gaap:Revenues", "currency": "USD"} | 2022-12-31 | sec_edgar |
| revenue | {"amount": 34916000, "concept": "us-gaap:Revenues", "currency": "USD"} | 2021-12-31 | sec_edgar |
| rnd_expense | {"amount": 3348000, "concept": "us-gaap:ResearchAndDevelopmentExpense", "currency": "USD"} | 2025-12-31 | sec_edgar |
| rnd_expense | {"amount": 4151000, "concept": "us-gaap:ResearchAndDevelopmentExpense", "currency": "USD"} | 2024-12-31 | sec_edgar |
| rnd_expense | {"amount": 4005000, "concept": "us-gaap:ResearchAndDevelopmentExpense", "currency": "USD"} | 2023-12-31 | sec_edgar |
| rnd_expense | {"amount": 4032000, "concept": "us-gaap:ResearchAndDevelopmentExpense", "currency": "USD"} | 2022-12-31 | sec_edgar |
| rnd_expense | {"amount": 3933000, "concept": "us-gaap:ResearchAndDevelopmentExpense", "currency": "USD"} | 2021-12-31 | sec_edgar |
| sga_expense | {"amount": 7847000, "concept": "us-gaap:GeneralAndAdministrativeExpense", "currency": "USD | 2025-12-31 | sec_edgar |
| sga_expense | {"amount": 5885000, "concept": "us-gaap:GeneralAndAdministrativeExpense", "currency": "USD | 2024-12-31 | sec_edgar |
| sga_expense | {"amount": 6154000, "concept": "us-gaap:GeneralAndAdministrativeExpense", "currency": "USD | 2023-12-31 | sec_edgar |
| sga_expense | {"amount": 6978000, "concept": "us-gaap:GeneralAndAdministrativeExpense", "currency": "USD | 2022-12-31 | sec_edgar |
| sga_expense | {"amount": 6969000, "concept": "us-gaap:GeneralAndAdministrativeExpense", "currency": "USD | 2021-12-31 | sec_edgar |
| share_based_compensation | {"amount": 612000, "concept": "us-gaap:ShareBasedCompensation", "currency": "USD"} | 2025-12-31 | sec_edgar |
| share_based_compensation | {"amount": 18000, "concept": "us-gaap:ShareBasedCompensation", "currency": "USD"} | 2024-12-31 | sec_edgar |
| share_based_compensation | {"amount": 18000, "concept": "us-gaap:ShareBasedCompensation", "currency": "USD"} | 2023-12-31 | sec_edgar |
| share_based_compensation | {"amount": 93000, "concept": "us-gaap:ShareBasedCompensation", "currency": "USD"} | 2022-12-31 | sec_edgar |
| share_based_compensation | {"amount": 155000, "concept": "us-gaap:ShareBasedCompensation", "currency": "USD"} | 2021-12-31 | sec_edgar |
| shares_wavg_basic | {"unit": "shares", "value": 23329557, "concept": "us-gaap:WeightedAverageNumberOfSharesOut | 2025-12-31 | sec_edgar |
| shares_wavg_basic | {"unit": "shares", "value": 23311721, "concept": "us-gaap:WeightedAverageNumberOfSharesOut | 2024-12-31 | sec_edgar |
| shares_wavg_basic | {"unit": "shares", "value": 23309987, "concept": "us-gaap:WeightedAverageNumberOfSharesOut | 2023-12-31 | sec_edgar |
| shares_wavg_basic | {"unit": "shares", "value": 23308001, "concept": "us-gaap:WeightedAverageNumberOfSharesOut | 2022-12-31 | sec_edgar |
| shares_wavg_basic | {"unit": "shares", "value": 23208589, "concept": "us-gaap:WeightedAverageNumberOfSharesOut | 2021-12-31 | sec_edgar |
| shares_wavg_diluted | {"unit": "shares", "value": 23459946, "concept": "us-gaap:WeightedAverageNumberOfDilutedSh | 2025-12-31 | sec_edgar |
| shares_wavg_diluted | {"unit": "shares", "value": 23311721, "concept": "us-gaap:WeightedAverageNumberOfDilutedSh | 2024-12-31 | sec_edgar |
| shares_wavg_diluted | {"unit": "shares", "value": 23309987, "concept": "us-gaap:WeightedAverageNumberOfDilutedSh | 2023-12-31 | sec_edgar |
| shares_wavg_diluted | {"unit": "shares", "value": 23309976, "concept": "us-gaap:WeightedAverageNumberOfDilutedSh | 2022-12-31 | sec_edgar |
| shares_wavg_diluted | {"unit": "shares", "value": 23208589, "concept": "us-gaap:WeightedAverageNumberOfDilutedSh | 2021-12-31 | sec_edgar |
| stockholders_equity | {"amount": 43216000, "concept": "us-gaap:StockholdersEquity", "currency": "USD"} | 2025-12-31 | sec_edgar |
| stockholders_equity | {"amount": 37676000, "concept": "us-gaap:StockholdersEquity", "currency": "USD"} | 2024-12-31 | sec_edgar |
| stockholders_equity | {"amount": 37192000, "concept": "us-gaap:StockholdersEquity", "currency": "USD"} | 2023-12-31 | sec_edgar |
| stockholders_equity | {"amount": 37687000, "concept": "us-gaap:StockholdersEquity", "currency": "USD"} | 2022-12-31 | sec_edgar |
| total_assets | {"amount": 54668000, "concept": "us-gaap:Assets", "currency": "USD"} | 2025-12-31 | sec_edgar |
| total_assets | {"amount": 52076000, "concept": "us-gaap:Assets", "currency": "USD"} | 2024-12-31 | sec_edgar |
| total_assets | {"amount": 50266000, "concept": "us-gaap:Assets", "currency": "USD"} | 2023-12-31 | sec_edgar |
| total_assets | {"amount": 51886000, "concept": "us-gaap:Assets", "currency": "USD"} | 2022-12-31 | sec_edgar |
| total_equity | {"amount": 43216000, "concept": "us-gaap:StockholdersEquityIncludingPortionAttributableToN | 2025-12-31 | sec_edgar |
| total_equity | {"amount": 37676000, "concept": "us-gaap:StockholdersEquityIncludingPortionAttributableToN | 2024-12-31 | sec_edgar |
| total_equity | {"amount": 37192000, "concept": "us-gaap:StockholdersEquityIncludingPortionAttributableToN | 2023-12-31 | sec_edgar |
| total_equity | {"amount": 37687000, "concept": "us-gaap:StockholdersEquityIncludingPortionAttributableToN | 2022-12-31 | sec_edgar |
| total_equity | {"amount": 35757000, "concept": "us-gaap:StockholdersEquityIncludingPortionAttributableToN | 2021-12-31 | sec_edgar |
| total_equity | {"amount": 67098000, "concept": "us-gaap:StockholdersEquityIncludingPortionAttributableToN | 2020-12-31 | sec_edgar |
| total_liabilities_and_equity | {"amount": 54668000, "concept": "us-gaap:LiabilitiesAndStockholdersEquity", "currency": "U | 2025-12-31 | sec_edgar |
| total_liabilities_and_equity | {"amount": 52076000, "concept": "us-gaap:LiabilitiesAndStockholdersEquity", "currency": "U | 2024-12-31 | sec_edgar |
| total_liabilities_and_equity | {"amount": 50266000, "concept": "us-gaap:LiabilitiesAndStockholdersEquity", "currency": "U | 2023-12-31 | sec_edgar |
| total_liabilities_and_equity | {"amount": 51886000, "concept": "us-gaap:LiabilitiesAndStockholdersEquity", "currency": "U | 2022-12-31 | sec_edgar |
| xbrl:AccountsPayableCurrent | {"amount": 1889000, "currency": "USD"} | 2025-12-31 | sec_edgar |
| xbrl:AccountsPayableCurrent | {"amount": 2689000, "currency": "USD"} | 2024-12-31 | sec_edgar |
| xbrl:AccountsPayableCurrent | {"amount": 1650000, "currency": "USD"} | 2023-12-31 | sec_edgar |
| xbrl:AccountsPayableCurrent | {"amount": 2408000, "currency": "USD"} | 2022-12-31 | sec_edgar |
| xbrl:AccountsReceivableNetCurrent | {"amount": 9840000, "currency": "USD"} | 2025-12-31 | sec_edgar |
| xbrl:AccountsReceivableNetCurrent | {"amount": 10306000, "currency": "USD"} | 2024-12-31 | sec_edgar |
| xbrl:AccountsReceivableNetCurrent | {"amount": 9545000, "currency": "USD"} | 2023-12-31 | sec_edgar |
| xbrl:AccountsReceivableNetCurrent | {"amount": 9973000, "currency": "USD"} | 2022-12-31 | sec_edgar |
| xbrl:AccruedIncomeTaxesCurrent | {"amount": 1113000, "currency": "USD"} | 2023-12-31 | sec_edgar |
| xbrl:AccruedIncomeTaxesCurrent | {"amount": 1053000, "currency": "USD"} | 2022-12-31 | sec_edgar |
| xbrl:AccruedLiabilitiesCurrent | {"amount": 3993000, "currency": "USD"} | 2025-12-31 | sec_edgar |
| xbrl:AccruedLiabilitiesCurrent | {"amount": 6433000, "currency": "USD"} | 2024-12-31 | sec_edgar |
| xbrl:AccruedLiabilitiesCurrent | {"amount": 5052000, "currency": "USD"} | 2023-12-31 | sec_edgar |
| xbrl:AccruedLiabilitiesCurrent | {"amount": 4877000, "currency": "USD"} | 2022-12-31 | sec_edgar |
| xbrl:AccruedRoyaltiesCurrentAndNoncurrent | {"amount": 600000, "currency": "USD"} | 2023-12-31 | sec_edgar |
| xbrl:AccruedSalariesCurrent | {"amount": 1948000, "currency": "USD"} | 2025-12-31 | sec_edgar |
| xbrl:AccruedSalariesCurrent | {"amount": 2133000, "currency": "USD"} | 2024-12-31 | sec_edgar |
| xbrl:AccruedSalariesCurrent | {"amount": 1381000, "currency": "USD"} | 2023-12-31 | sec_edgar |
| xbrl:AccruedSalariesCurrent | {"amount": 1696000, "currency": "USD"} | 2022-12-31 | sec_edgar |
| xbrl:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment | {"amount": 6804000, "currency": "USD"} | 2025-12-31 | sec_edgar |
| xbrl:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment | {"amount": 6556000, "currency": "USD"} | 2024-12-31 | sec_edgar |
| xbrl:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment | {"amount": 6853000, "currency": "USD"} | 2023-12-31 | sec_edgar |