| Comprehensive Income (Loss) Note [Text Block] |
| 14. | ACCUMULATED OTHER COMPREHENSIVE LOSS |
The components of accumulated other comprehensive loss at September 30, 2026 and December 31, 2025 are summarized below:
| | | September 30, | | | December 31, | |
| | | 2026 | | | 2025 | |
| | | | | | | | | |
| Foreign currency translation adjustment, net of taxes of ($312) at September 30, 2026 and ($312) at December 31, 2025 | | $ | (20,418 | ) | | $ | (19,490 | ) |
| Unrealized gains on interest rate swap cash flow hedge, net of taxes of $0 at September 30, 2026 and $0 at December 31, 2025 | | | - | | | | 906 | |
| Unrealized holding gains on marketable securities, net of taxes of ($7) at September 30, 2026 and ($7) at December 31, 2025 | | | 112 | | | | 21 | |
| Unfunded SERP liability, net of taxes of $996 at September 30, 2026 and $1,003 at December 31, 2025 | | | 1,362 | | | | 1,389 | |
| | | | | | | | | |
| Accumulated other comprehensive loss | | $ | (18,944 | ) | | $ | (17,174 | ) |
Changes in accumulated other comprehensive loss by component during the nine months ended September 30, 2026 are as set forth below. All amounts are net of tax:
| | | | | | | | | Unrealized | | | | | | | | | | |
| | | Foreign | | | Unrealized Gains | | | Holding | | | | | | | | | | |
| | | Currency | | | on Interest Rate | | | Gains on | | | | | | | | | | |
| | | Translation | | | Swap Cash | | | Marketable | | | Unfunded | | | | | | |
| | | Adjustment | | | Flow Hedge | | | Securities | | | SERP Liability | | | | Total | |
| | | | | | | | | | | | | | | | | | | | | | |
| Balance at December 31, 2025 | | $ | (19,490 | ) | | $ | 906 | | | $ | 21 | | | $ | 1,389 | | | | $ | (17,174 | ) |
| Other comprehensive (loss) income before reclassifications | | | (656 | ) | | | (906 | ) | | | 91 | | | | (23 | ) | | | | (1,494 | ) |
| Amount reclassified from accumulated other comprehensive loss | | | (272 | ) | | | - | | | | - | | | | (4 | ) | (a) | | | (276 | ) |
| Net current period other comprehensive (loss) income | | | (928 | ) | | | (906 | ) | | | 91 | | | | (27 | ) | | | | (1,770 | ) |
| | | | | | | | | | | | | | | | | | | | | | |
| Balance at September 30, 2026 | | $ | (20,418 | ) | | $ | - | | | $ | 112 | | | $ | 1,362 | | | | $ | (18,944 | ) |
| (a) This reclassification relates to the amortization of prior service costs and gains/losses associated with the Company's SERP. This expense is reflected in other income, net on the accompanying condensed consolidated statements of operations. |
|