XML 31 R20.htm IDEA: XBRL DOCUMENT
v3.26.1

Net Income Per Share | 6 Months Ended
--- | ---
Jun. 30, 2026
Earnings Per Share [Abstract] |
Net Income Per Share | Net Income Per Share The components and computation of basic and diluted net income per share were as follows:
| Three Months Ended June 30, |  | Six Months Ended June 30,
(in thousands, except per share amounts) | 2026 |  | 2025 |  | 2026 |  | 2025
Numerator |  |  |  |  |  |  |
Net income | $ | 6,864 |  |  | $ | 19,733 |  |  | $ | 26,593 |  |  | $ | 41,929 |
Denominator |  |  |  |  |  |  |
Weighted average common shares outstanding, basic | 36,533 |  |  | 37,965 |  |  | 36,953 |  |  | 37,978 |
Options to purchase common stock and ESPP | — |  |  | 73 |  |  | 5 |  |  | 86 |
PSUs, RSUs, RSAs, and DSUs | 44 |  |  | 61 |  |  | 68 |  |  | 68 |
Weighted average common shares outstanding, diluted | 36,577 |  |  | 38,099 |  |  | 37,026 |  |  | 38,132 |
Net income per share |  |  |  |  |  |  |
Basic | $ | 0.19 |  |  | $ | 0.52 |  |  | $ | 0.72 |  |  | $ | 1.10 |
Diluted | $ | 0.19 |  |  | $ | 0.52 |  |  | $ | 0.72 |  |  | $ | 1.10 |
The number of outstanding potential common shares that were excluded from the calculation of diluted net income per share as they were anti-dilutive was as follows:
| Three Months Ended June 30, |  | Six Months Ended June 30,
(in thousands) | 2026 |  | 2025 |  | 2026 |  | 2025
Anti-dilutive shares | 1,038 |  |  | 307 |  |  | 880 |  |  | 319 |

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 55 -Paragraph 12 -Publisher FASB -URI https://asc.fasb.org/1943274/2147482635/260-10-55-12 Reference 2: http://www.xbrl.org/2003/role/disclosureRef -Topic 505 -SubTopic 20 -Name Accounting Standards Codification -Section 05 -Paragraph 5 -Publisher FASB -URI https://asc.fasb.org/1943274/2147481468/505-20-05-5 Reference 3: 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 4: http://www.xbrl.org/2003/role/disclosureRef -Topic 260 -Name Accounting Standards Codification -Publisher FASB -URI https://asc.fasb.org/260/tableOfContent Reference 5: 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 6: 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