v3.26.1
CONDENSED CONSOLIDATED INCOME STATEMENTS - USD ($)
$ in Thousands
3 Months Ended 6 Months Ended
Jun. 30, 2026
Jun. 30, 2025
Jun. 30, 2026
Jun. 30, 2025
Income Statement [Abstract]        
Gross Contract Revenue $ 146,125 $ 122,090 $ 272,604 $ 235,021
Contract costs: (exclusive of depreciation and amortization below)        
Direct payroll costs 51,229 42,425 99,545 84,390
Sub-consultants and expenses 17,156 14,093 29,431 26,971
Total contract costs 68,385 56,518 128,976 111,361
Operating Expenses:        
Selling, general and administrative 62,274 49,759 120,052 100,239
Depreciation and amortization 7,813 6,544 16,219 13,065
(Gain) loss on sale of assets, net (479) 225 (880) 176
Total operating expenses 69,608 56,528 135,391 113,480
Income from operations 8,132 9,044 8,237 10,180
Other expenses 5,796 1,636 9,197 3,746
Income (loss) before tax expense 2,336 7,408 (960) 6,434
Income tax (benefit) expense (159) 1,399 247 2,169
Net income (loss) 2,495 6,009 (1,207) 4,265
Earnings allocated to non-vested shares 109 307 0 218
Net income (loss) attributable to common shareholders $ 2,386 $ 5,702 $ (1,207) $ 4,047
Earnings (loss) per share        
Basic (in dollars per share) $ 0.15 $ 0.35 $ (0.07) $ 0.25
Diluted (in dollars per share) $ 0.14 $ 0.34 $ (0.07) $ 0.24
Weighted average shares outstanding:        
Basic (in shares) 16,433,556 16,331,964 16,443,424 16,344,173
Diluted (in shares) 16,604,374 16,583,034 16,443,424 16,589,787