| Schedule of Earnings Per Share, Basic and Diluted [Table Text Block] |
| | | Three Months Ended June 30, | | | Six Months Ended June 30, | |
| | | 2024 | | | 2023 | | | 2024 | | | 2023 | |
| Numerator: | | | | | | | | | | | | | | | | |
| Net income (loss) | | $ | (11,627 | ) | | $ | 4,251 | | | $ | (17,903 | ) | | $ | (27,692 | ) |
| Denominator: | | | | | | | | | | | | | | | | |
| Weighted average shares outstanding | | | 15,289,622 | | | | 13,502,166 | | | | 15,827,411 | | | | 13,435,643 | |
| Weighted average restricted shares vested not delivered | | | 245,367 | | | | 285,829 | | | | 287,882 | | | | 285,000 | |
| Total basic weighted average shares outstanding | | | 15,534,989 | | | | 13,787,995 | | | | 16,115,293 | | | | 13,720,643 | |
| Dilutive effect of assumed conversion of restricted stock units | | | — | | | | 4,113 | | | | — | | | | — | |
| Total diluted weighted average shares outstanding | | | 15,534,989 | | | | 13,792,108 | | | | 16,115,293 | | | | 13,720,643 | |
| Basic and diluted income (loss) per share: | | | | | | | | | | | | | | | | |
| Basic | | $ | (0.75 | ) | | $ | 0.31 | | | $ | (1.11 | ) | | $ | (2.02 | ) |
| Diluted | | $ | (0.75 | ) | | $ | 0.31 | | | $ | (1.11 | ) | | $ | (2.02 | ) |
|
| Schedule of Antidilutive Securities Excluded from Computation of Earnings Per Share [Table Text Block] |
| | | Three Months Ended June 30, | | | Six Months Ended June 30, | |
| | | 2024 | | | 2023 | | | 2024 | | | 2023 | |
| Restricted stock units | | | 993,975 | | | | 928,057 | | | | 993,975 | | | | 932,085 | |
| Stock options | | | 298,331 | | | | 356,500 | | | | 298,331 | | | | 356,500 | |
| Total anti-dilutive securities | | | 1,292,306 | | | | 1,284,557 | | | | 1,292,306 | | | | 1,288,585 | |
|