| Share-Based Payment Arrangement, Option, Activity [Table Text Block] |
| | | Shares | | | Weighted Average Exercise Price | | | Weighted Average Remaining Contractual Term in Years | | | Intrinsic Value | |
| Options outstanding at January 1, 2025 | | | 131,847 | | | $ | 22.58 | | | | | | | | | |
| Options exercised | | | (45,505 | ) | | | 22.64 | | | | | | | | | |
| Options cancelled | | | (3,200 | ) | | | 22.19 | | | | | | | | | |
| Options outstanding at December 31, 2025 | | | 83,142 | | | $ | 22.56 | | | | | | | | | |
| Options cancelled | | | (2,400 | ) | | $ | 24.40 | | | | | | | | | |
| Options exercised | | | (47,450 | ) | | | 23.24 | | | | | | | | | |
| Options outstanding at June 30, 2026 | | | 33,292 | | | $ | 21.45 | | | | 1.3 | | | $ | 1,231,471 | |
| Options exercisable at June 30, 2026 | | | 33,292 | | | $ | 21.45 | | | | 1.3 | | | $ | 1,231,471 | |
| | | Shares | | | Weighted Average Exercise Price | | | Weighted Average Remaining Contractual Term in Years | | | Intrinsic Value | |
| Options outstanding at January 1, 2025 | | | 210,200 | | | $ | 32.55 | | | | | | | | | |
| Options granted | | | 30,803 | | | | 31.09 | | | | | | | | | |
| Options cancelled | | | (21,980 | ) | | | 32.41 | | | | | | | | | |
| Options exercised | | | (5,100 | ) | | | 31.36 | | | | | | | | | |
| Options outstanding at December 31, 2025 | | | 213,923 | | | $ | 32.38 | | | | | | | | | |
| Options granted | | | 80,500 | | | | 50.30 | | | | | | | | | |
| Options cancelled | | | (2,920 | ) | | | 39.63 | | | | | | | | | |
| Options exercised | | | (15,097 | ) | | | 31.63 | | | | | | | | | |
| Options outstanding at June 30, 2026 | | | 276,406 | | | $ | 37.56 | | | | 7.4 | | | $ | 5,770,219 | |
| Options exercisable at June 30, 2026 | | | 109,346 | | | $ | 32.00 | | | | 6.5 | | | $ | 2,891,012 | |
| Options expected to vest after June 30, 2026 | | | 167,780 | | | $ | 41.17 | | | | 8.1 | | | $ | 2,572,607 | |
|
| Share-Based Payment Arrangement, Cost by Plan [Table Text Block] |
| | | 2026 | | | 2025 | |
| Fair value of options vested | | $ | - | | | $ | - | |
| Intrinsic value of options exercised | | $ | 101,000 | | | $ | 243,000 | |
| Cash received from option exercises | | $ | 101,000 | | | $ | 254,000 | |
| Tax benefit from option exercises | | $ | - | | | $ | 2,000 | |
| Compensation cost | | $ | 150,000 | | | $ | 96,000 | |
| Tax benefit associated with compensation cost | | $ | 8,000 | | | $ | 5,000 | |
| | | 2026 | | | 2025 | |
| Fair value of options vested | | $ | 173,000 | | | $ | 193,000 | |
| Intrinsic value of options exercised | | $ | 1,525,000 | | | $ | 614,000 | |
| Cash received from option exercises | | $ | 1,489,000 | | | $ | 583,000 | |
| Tax benefit from option exercises | | $ | 220,000 | | | $ | 19,000 | |
| Compensation cost | | $ | 251,000 | | | $ | 163,000 | |
| Tax benefit associated with compensation cost | | $ | 14,000 | | | $ | 9,000 | |
|