| Schedule of Earnings Per Share, Basic and Diluted [Table Text Block] |
| | Three months ended September 30, | | | Nine months ended September 30, | |
| | 2026 | | | 2025 | | | 2026 | | | 2025 | |
Basic Earnings Per Share | | | | | | | | | | | | | | | | |
Net income | | $ | 15,281 | | | $ | 9,699 | | | $ | 37,720 | | | $ | 29,433 | |
Weighted average shares outstanding - basic | | | 12,790,829 | | | | 13,361,594 | | | | 12,875,239 | | | | 13,582,194 | |
Basic earnings per share | | $ | 1.19 | | | $ | 0.73 | | | $ | 2.93 | | | $ | 2.17 | |
| | | | | | | | | | | | | | | | |
Diluted Earnings Per Share | | | | | | | | | | | | | | | | |
Net income | | $ | 15,281 | | | $ | 9,699 | | | $ | 37,720 | | | $ | 29,433 | |
Weighted average shares outstanding - basic | | | 12,790,829 | | | | 13,361,594 | | | | 12,875,239 | | | | 13,582,194 | |
Effect of dilutive equity awards | | | 132,664 | | | | 109,064 | | | | 116,904 | | | | 92,740 | |
Weighted average shares outstanding - diluted | | | 12,923,493 | | | | 13,470,658 | | | | 12,992,143 | | | | 13,674,934 | |
Diluted earnings per share | | $ | 1.18 | | | $ | 0.72 | | | $ | 2.90 | | | $ | 2.15 | |
| | | | | | | | | | | | | | | | |
Anti dilutive equity awards | | | — | | | | 83 | | | | 20 | | | | — | |
|