| Segment Reporting [Table Text Block] |
| | | Three Months Ended June 30, 2026 | |
| (in thousands) | | US | | | Canada | | | Total | |
| Net revenue | | $ | 32,506 | | | $ | 4,400 | | | $ | 36,906 | |
| Cost of revenue | | | 25,124 | | | | 3,373 | | | | 28,497 | |
| Segment gross profit | | | 7,382 | | | | 1,027 | | | | 8,409 | |
| | | | | | | | | | | | | |
| Reconciling items (income) expense: | | | | | | | | | | | | |
| Selling, general and administrative expense | | | | | | | | | | | 6,767 | |
| Depreciation and amortization | | | | | | | | | | | 433 | |
| Interest expense, net | | | | | | | | | | | 642 | |
| Other expense, net | | | | | | | | | | | 46 | |
| Income before income tax expense | | | | | | | | | | $ | 521 | |
| | | Three Months Ended June 30, 2025 | |
| (in thousands) | | US | | | Canada | | | Total | |
| Net revenue | | $ | 35,258 | | | $ | 3,371 | | | $ | 38,629 | |
| Cost of revenue | | | 27,047 | | | | 2,520 | | | | 29,567 | |
| Segment gross profit | | | 8,211 | | | | 851 | | | | 9,062 | |
| | | | | | | | | | | | | |
| Reconciling items (income) expense: | | | | | | | | | | | | |
| Selling, general and administrative expense | | | | | | | | | | | 7,934 | |
| Depreciation and amortization | | | | | | | | | | | 413 | |
| Interest expense, net | | | | | | | | | | | 589 | |
| Other expense, net | | | | | | | | | | | 7 | |
| Income before income tax expense | | | | | | | | | | $ | 119 | |
| | | Six Months Ended June 30, 2026 | |
| (in thousands) | | US | | | Canada | | | Total | |
| Net revenue | | $ | 59,768 | | | $ | 7,656 | | | $ | 67,424 | |
| Cost of revenue | | | 46,400 | | | | 5,803 | | | | 52,203 | |
| Segment gross profit | | | 13,368 | | | | 1,853 | | | | 15,221 | |
| | | | | | | | | | | | | |
| Reconciling items (income) expense: | | | | | | | | | | | | |
| Selling, general and administrative expense | | | | | | | | | | | 12,966 | |
| Restructuring costs and severance | | | | | | | | | | | 245 | |
| Depreciation and amortization | | | | | | | | | | | 843 | |
| Interest expense, net | | | | | | | | | | | 1,141 | |
| Other expense, net | | | | | | | | | | | 30 | |
| Loss before income tax expense | | | | | | | | | | $ | (4 | ) |
| | | Six Months Ended June 30, 2025 | |
| (in thousands) | | US | | | Canada | | | Total | |
| Net revenue | | $ | 66,135 | | | $ | 6,536 | | | $ | 72,671 | |
| Cost of revenue | | | 51,741 | | | | 4,592 | | | | 56,333 | |
| Segment gross profit | | | 14,394 | | | | 1,944 | | | | 16,338 | |
| | | | | | | | | | | | | |
| Reconciling items (income) expense: | | | | | | | | | | | | |
| Selling, general and administrative expense | | | | | | | | | | | 13,807 | |
| Depreciation and amortization | | | | | | | | | | | 780 | |
| Interest expense, net | | | | | | | | | | | 1,058 | |
| Other income, net | | | | | | | | | | | (2 | ) |
| Income before income tax expense | | | | | | | | | | $ | 695 | |
|
| Segment Reporting, Entity-Wide Information Not Provided as Part of Reportable Segment, Geographical Area, Revenue [Table Text Block] |
| | | Three Months Ended June 30, | | | Six Months Ended June 30, | |
| (in thousands) | | 2026 | | | 2025 | | | 2026 | | | 2025 | |
| Net Revenue: | | | | | | | | | | | | | | | | |
| United States | | $ | 32,506 | | | $ | 35,258 | | | $ | 59,768 | | | $ | 66,135 | |
| Canada | | | 4,400 | | | | 3,371 | | | | 7,656 | | | | 6,536 | |
| Total net revenue | | $ | 36,906 | | | $ | 38,629 | | | $ | 67,424 | | | $ | 72,671 | |
|