CONDENSED CONSOLIDATED STATEMENTS OF CHANGES IN REDEEMABLE NON-CONTROLLING INTERESTS AND STOCKHOLDERS’ EQUITY - USD ($) $ in Thousands |
Total |
Class A Common Stock |
Class B Common Stock |
Common Stock
Class A Common Stock
|
Common Stock
Class B Common Stock
|
Additional Paid-in Capital |
Retained Earnings |
Accumulated Other Comprehensive (Loss) Income |
Treasury Stock |
Non-controlling Interests (“NCI”) |
| Redeemable non-controlling interests, beginning balance at Dec. 31, 2023 |
$ 46,865
|
|
|
|
|
|
|
|
|
|
| Redeemable Non-controlling Interests (“RNCI”) |
|
|
|
|
|
|
|
|
|
|
| Distributions to RNCI |
(418)
|
|
|
|
|
|
|
|
|
|
| Accretion of tax equity financing fees |
80
|
|
|
|
|
|
|
|
|
|
| Net (loss) income |
(3,766)
|
|
|
|
|
|
|
|
|
|
| Redeemable non-controlling interests, ending balance at Sep. 30, 2024 |
42,761
|
|
|
|
|
|
|
|
|
|
| Beginning balance (in shares) at Dec. 31, 2023 |
|
|
|
34,277,195
|
18,000,000
|
|
|
|
|
|
| Treasury stock, beginning balance (in shares) at Dec. 31, 2023 |
|
|
|
|
|
|
|
|
2,101,795
|
|
| Beginning balance at Dec. 31, 2023 |
925,886
|
|
|
$ 3
|
$ 2
|
$ 320,892
|
$ 595,911
|
$ (3,045)
|
$ (11,788)
|
$ 23,911
|
| Increase (Decrease) in Stockholders' Equity [Roll Forward] |
|
|
|
|
|
|
|
|
|
|
| Exercise of stock options (in shares) |
|
|
|
70,089
|
|
|
|
|
|
|
| Exercise of stock options |
909
|
|
|
|
|
909
|
|
|
|
|
| Stock-based compensation expense |
10,368
|
|
|
|
|
10,368
|
|
|
|
|
| Employee stock purchase plan (in shares) |
|
|
|
32,841
|
|
|
|
|
|
|
| Employee stock purchase plan |
990
|
|
|
|
|
990
|
|
|
|
|
| Restricted stock units released (in shares) |
|
|
|
62,626
|
|
|
|
|
40
|
|
| Unrealized loss from interest rate hedges, net |
(446)
|
|
|
|
|
|
|
(446)
|
|
|
| Foreign currency translation adjustment |
652
|
|
|
|
|
|
|
688
|
|
(36)
|
| Accretion of tax equity financing fees |
(80)
|
|
|
|
|
|
(80)
|
|
|
|
| Contributions from NCI |
33,789
|
|
|
|
|
3,040
|
|
|
|
30,749
|
| Distributions to NCI |
(1,367)
|
|
|
|
|
|
|
|
|
(1,367)
|
| Purchase of shares from NCI |
(23,760)
|
|
|
|
|
226
|
|
|
|
(23,986)
|
| Net (loss) income |
19,796
|
|
|
|
|
|
19,672
|
|
|
124
|
| Ending balance (in shares) at Sep. 30, 2024 |
|
|
|
34,442,751
|
18,000,000
|
|
|
|
|
|
| Treasury stock, ending balance (in shares) at Sep. 30, 2024 |
|
|
|
|
|
|
|
|
2,101,835
|
|
| Ending balance at Sep. 30, 2024 |
966,737
|
|
|
$ 3
|
$ 2
|
336,425
|
615,503
|
(2,803)
|
$ (11,788)
|
29,395
|
| Redeemable non-controlling interests, beginning balance at Jun. 30, 2024 |
43,777
|
|
|
|
|
|
|
|
|
|
| Redeemable Non-controlling Interests (“RNCI”) |
|
|
|
|
|
|
|
|
|
|
| Distributions to RNCI |
(130)
|
|
|
|
|
|
|
|
|
|
| Accretion of tax equity financing fees |
26
|
|
|
|
|
|
|
|
|
|
| Net (loss) income |
(912)
|
|
|
|
|
|
|
|
|
|
| Redeemable non-controlling interests, ending balance at Sep. 30, 2024 |
42,761
|
|
|
|
|
|
|
|
|
|
| Beginning balance (in shares) at Jun. 30, 2024 |
|
|
|
34,402,515
|
18,000,000
|
|
|
|
|
|
| Treasury stock, beginning balance (in shares) at Jun. 30, 2024 |
|
|
|
|
|
|
|
|
2,101,795
|
|
| Beginning balance at Jun. 30, 2024 |
941,192
|
|
|
$ 3
|
$ 2
|
332,356
|
597,930
|
(3,800)
|
$ (11,788)
|
26,489
|
| Increase (Decrease) in Stockholders' Equity [Roll Forward] |
|
|
|
|
|
|
|
|
|
|
| Exercise of stock options (in shares) |
|
|
|
7,500
|
|
|
|
|
|
|
| Exercise of stock options |
405
|
|
|
|
|
405
|
|
|
|
|
| Stock-based compensation expense |
3,664
|
|
|
|
|
3,664
|
|
|
|
|
| Restricted stock units released (in shares) |
|
|
|
32,736
|
|
|
|
|
40
|
|
| Unrealized loss from interest rate hedges, net |
(1,060)
|
|
|
|
|
|
|
(1,060)
|
|
|
| Foreign currency translation adjustment |
2,003
|
|
|
|
|
|
|
2,057
|
|
(54)
|
| Accretion of tax equity financing fees |
(26)
|
|
|
|
|
|
(26)
|
|
|
|
| Contributions from NCI |
2,997
|
|
|
|
|
0
|
|
|
|
2,997
|
| Distributions to NCI |
(364)
|
|
|
|
|
|
|
|
|
(364)
|
| Net (loss) income |
17,926
|
|
|
|
|
|
17,599
|
|
|
327
|
| Ending balance (in shares) at Sep. 30, 2024 |
|
|
|
34,442,751
|
18,000,000
|
|
|
|
|
|
| Treasury stock, ending balance (in shares) at Sep. 30, 2024 |
|
|
|
|
|
|
|
|
2,101,835
|
|
| Ending balance at Sep. 30, 2024 |
966,737
|
|
|
$ 3
|
$ 2
|
336,425
|
615,503
|
(2,803)
|
$ (11,788)
|
29,395
|
| Redeemable non-controlling interests, beginning balance at Dec. 31, 2024 |
2,463
|
|
|
|
|
|
|
|
|
|
| Redeemable Non-controlling Interests (“RNCI”) |
|
|
|
|
|
|
|
|
|
|
| Accretion of tax equity financing fees |
82
|
|
|
|
|
|
|
|
|
|
| Net (loss) income |
(989)
|
|
|
|
|
|
|
|
|
|
| Redeemable non-controlling interests, ending balance at Sep. 30, 2025 |
$ 1,556
|
|
|
|
|
|
|
|
|
|
| Beginning balance (in shares) at Dec. 31, 2024 |
|
34,501,213
|
18,000,000
|
34,501,213
|
18,000,000
|
|
|
|
|
|
| Treasury stock, beginning balance (in shares) at Dec. 31, 2024 |
2,101,835
|
|
|
|
|
|
|
|
2,101,835
|
|
| Beginning balance at Dec. 31, 2024 |
$ 1,045,149
|
|
|
$ 3
|
$ 2
|
378,321
|
652,561
|
(5,874)
|
$ (11,788)
|
31,924
|
| Increase (Decrease) in Stockholders' Equity [Roll Forward] |
|
|
|
|
|
|
|
|
|
|
| Exercise of stock options (in shares) |
|
|
|
89,178
|
|
|
|
|
|
|
| Exercise of stock options |
662
|
|
|
|
|
662
|
|
|
|
|
| Stock-based compensation expense |
10,341
|
|
|
|
|
10,341
|
|
|
|
|
| Employee stock purchase plan (in shares) |
|
|
|
60,762
|
|
|
|
|
|
|
| Employee stock purchase plan |
795
|
|
|
|
|
795
|
|
|
|
|
| Restricted stock units released (in shares) |
|
|
|
101,202
|
|
|
|
|
0
|
|
| Unrealized loss from interest rate hedges, net |
(695)
|
|
|
|
|
|
|
(695)
|
|
|
| Foreign currency translation adjustment |
5,594
|
|
|
|
|
|
|
5,502
|
|
92
|
| Accretion of tax equity financing fees |
(82)
|
|
|
|
|
|
(82)
|
|
|
|
| Contributions from NCI |
4,723
|
|
|
|
|
0
|
|
|
|
4,723
|
| Distributions to NCI |
(5,343)
|
|
|
|
|
|
|
|
|
(5,343)
|
| Net (loss) income |
$ 32,742
|
|
|
|
|
|
25,914
|
|
|
6,828
|
| Ending balance (in shares) at Sep. 30, 2025 |
|
34,752,355
|
18,000,000
|
34,752,355
|
18,000,000
|
|
|
|
|
|
| Treasury stock, ending balance (in shares) at Sep. 30, 2025 |
2,101,835
|
|
|
|
|
|
|
|
2,101,835
|
|
| Ending balance at Sep. 30, 2025 |
$ 1,093,886
|
|
|
$ 3
|
$ 2
|
390,119
|
678,393
|
(1,067)
|
$ (11,788)
|
38,224
|
| Redeemable non-controlling interests, beginning balance at Jun. 30, 2025 |
1,543
|
|
|
|
|
|
|
|
|
|
| Redeemable Non-controlling Interests (“RNCI”) |
|
|
|
|
|
|
|
|
|
|
| Accretion of tax equity financing fees |
27
|
|
|
|
|
|
|
|
|
|
| Net (loss) income |
(14)
|
|
|
|
|
|
|
|
|
|
| Redeemable non-controlling interests, ending balance at Sep. 30, 2025 |
1,556
|
|
|
|
|
|
|
|
|
|
| Beginning balance (in shares) at Jun. 30, 2025 |
|
|
|
34,703,659
|
18,000,000
|
|
|
|
|
|
| Treasury stock, beginning balance (in shares) at Jun. 30, 2025 |
|
|
|
|
|
|
|
|
2,101,835
|
|
| Beginning balance at Jun. 30, 2025 |
1,070,871
|
|
|
$ 3
|
$ 2
|
386,214
|
659,888
|
240
|
$ (11,788)
|
36,312
|
| Increase (Decrease) in Stockholders' Equity [Roll Forward] |
|
|
|
|
|
|
|
|
|
|
| Exercise of stock options (in shares) |
|
|
|
9,000
|
|
|
|
|
|
|
| Exercise of stock options |
159
|
|
|
|
|
159
|
|
|
|
|
| Stock-based compensation expense |
3,746
|
|
|
|
|
3,746
|
|
|
|
|
| Restricted stock units released (in shares) |
|
|
|
39,696
|
|
|
|
|
|
|
| Unrealized loss from interest rate hedges, net |
(65)
|
|
|
|
|
|
|
(65)
|
|
|
| Foreign currency translation adjustment |
(1,085)
|
|
|
|
|
|
|
(1,242)
|
|
157
|
| Accretion of tax equity financing fees |
(27)
|
|
|
|
|
|
(27)
|
|
|
|
| Contributions from NCI |
924
|
|
|
|
|
|
|
|
|
924
|
| Distributions to NCI |
(2,491)
|
|
|
|
|
|
|
|
|
(2,491)
|
| Net (loss) income |
$ 21,854
|
|
|
|
|
|
18,532
|
|
|
3,322
|
| Ending balance (in shares) at Sep. 30, 2025 |
|
34,752,355
|
18,000,000
|
34,752,355
|
18,000,000
|
|
|
|
|
|
| Treasury stock, ending balance (in shares) at Sep. 30, 2025 |
2,101,835
|
|
|
|
|
|
|
|
2,101,835
|
|
| Ending balance at Sep. 30, 2025 |
$ 1,093,886
|
|
|
$ 3
|
$ 2
|
$ 390,119
|
$ 678,393
|
$ (1,067)
|
$ (11,788)
|
$ 38,224
|