| Schedule of Earnings Per Share, Basic and Diluted [Table Text Block] |
| | | Three Months Ended | | | Six Months Ended | |
| | | June 30, 2026 | | | June 30, 2025 | | | June 30, 2026 | | | June 30, 2025 | |
| Numerator: | | | | | | | | | | | | | | | | |
| Net income for basic and diluted earnings per share | | $ | 3,168 | | | $ | 3,741 | | | $ | 5,930 | | | $ | 5,873 | |
| Denominator for basic earnings per share weighted average shares | | | 3,751,175 | | | | 3,646,503 | | | | 3,766,775 | | | | 3,609,744 | |
| Effect of dilutive securities: | | | | | | | | | | | | | | | | |
| Options, restricted stock units, and warrants | | | 272,031 | | | | 246,870 | | | | 270,276 | | | | 283,718 | |
| Denominator for diluted earnings per share weighted average shares | | | 4,023,206 | | | | 3,893,373 | | | | 4,037,051 | | | | 3,893,462 | |
| Basic earnings per share | | $ | 0.84 | | | $ | 1.03 | | | $ | 1.57 | | | $ | 1.63 | |
| Diluted earnings per share | | $ | 0.79 | | | $ | 0.96 | | | $ | 1.47 | | | $ | 1.51 | |
|