XML 30 R18.htm IDEA: XBRL DOCUMENT
v3.25.3

Earnings Per Share | 9 Months Ended
--- | ---
Sep. 30, 2025
Earnings Per Share [Abstract] |
Earnings Per Share | Earnings Per Share Basic income per share is computed by dividing net loss by the weighted average number of common shares outstanding during the period. Diluted income per share assumes the issuance of potentially dilutive shares of common stock during the period. The following table reconciles the numerators and denominators of the basic and diluted loss per share computations:
| Three Months Ended September 30, |  | Nine Months Ended September 30,
Numerator (in thousands): | 2025 |  | 2024 |  | 2025 |  | 2024
Net income | $ | 2,259 |  | $ | 1,807 |  | $ | 4,591 |  | $ | 1,412
Denominator: |  |  |  |  |  |  |
Weighted average common shares outstanding: |  |  |  |  |  |  |
Basic | 20,413,636 |  | 21,290,512 |  | 20,779,268 |  | 21,271,858
Dilutive effect of common stock equivalents | 532,971 |  | 361,945 |  | 386,519 |  | 435,977
Diluted | 20,946,607 |  | 21,652,457 |  | 21,165,787 |  | 21,707,835
Net income per share: |  |  |  |  |  |  |
Basic | $ | 0.11 |  | $ | 0.08 |  | $ | 0.22 |  | $ | 0.07
Diluted | $ | 0.11 |  | $ | 0.08 |  | $ | 0.22 |  | $ | 0.07
For the three months ended September 30, 2025 and 2024, respectively, 1,551,232 and 2,220,823 of outstanding options and unvested restricted stock units with an exercise price above the current market value of the Company's common stock that were not included in the calculation because they would have an anti-dilutive effect. For the nine months ended September 30, 2025, and 2024 there were 2,175,388 and 1,877,878 of outstanding options and unvested restricted stock units with an exercise price above the market value for the Company’s common stock that were not included in the calculation because they would have an anti-dilutive effect. Share Repurchase Program On May 16, 2024, our Board of Directors approved a stock repurchase program (the “Share Repurchase Program”) that authorizes the Company to repurchase up to $20.0 million of the Company’s outstanding common stock through June 30, 2026. The Share Repurchase Program superseded the previous authorization, which expired on June 30, 2024. Repurchases under the Share Repurchase Program are subject to market conditions, the periodic capital needs of the Company’s operating activities, and the continued satisfaction of all covenants under the 2021 Credit Agreement, as amended. Repurchases under the Share Repurchase Program may take place in the open market or in privately negotiated transactions and may be made under a Rule 10b5-1 plan. The Share Repurchase Program does not obligate the Company to repurchase shares and may be suspended, terminated, or modified at any time at the discretion of the Board. As of September 30, 2025, the Company had repurchased and retired approximately $9.7 million, or 1,360,482 shares, of the Company's outstanding common stock under the Share Repurchase Program.

X
- References No definition available. + Details
Name: | us-gaap_EarningsPerShareAbstract
Namespace Prefix: | us-gaap_
Data Type: | xbrli:stringItemType
Balance Type: | na
Period Type: | duration

X
- Definition The entire disclosure for earnings per share. + References Reference 1: http://www.xbrl.org/2003/role/disclosureRef -Topic 260 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 1 -Subparagraph (c) -Publisher FASB -URI https://asc.fasb.org/1943274/2147482662/260-10-50-1 Reference 2: http://www.xbrl.org/2003/role/disclosureRef -Topic 260 -Name Accounting Standards Codification -Publisher FASB -URI https://asc.fasb.org/260/tableOfContent Reference 3: http://www.xbrl.org/2003/role/disclosureRef -Topic 260 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 2 -Publisher FASB -URI https://asc.fasb.org/1943274/2147482662/260-10-50-2 Reference 4: http://www.xbrl.org/2003/role/disclosureRef -Topic 260 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 3 -Publisher FASB -URI https://asc.fasb.org/1943274/2147482662/260-10-50-3 + Details
Name: | us-gaap_EarningsPerShareTextBlock
Namespace Prefix: | us-gaap_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration