XML 55 R2.htm IDEA: XBRL DOCUMENT
v3.23.1

Pay vs Performance Disclosure | 12 Months Ended
--- | ---
Dec. 31, 2022 USD ($) | Dec. 31, 2021 USD ($) | Dec. 31, 2020 USD ($)
Pay vs Performance Disclosure [Table] |  |  |
Pay vs Performance [Table Text Block] | PAY VERSUS PERFORMANCE As required by Section 953(a) of the Dodd-Frank Act and Item 402(v) of Regulation S‑K, the Company is providing the following pay versus performance table and related information which sets forth information concerning the compensation of the Company’s principal executive officer (“PEO”), Scott Montross, the President and CEO, and other NEOs for each of the years ended December 31, 2022, 2021, and 2020. The Company’s Compensation Committee does not directly use the information in this table or the related disclosures when making compensation decisions. For information regarding the Company’s pay-for-performance philosophy and how the Compensation Committee makes its decisions about NEO pay each year, refer to “Executive Compensation Discussion and Analysis” on page 33.
|  |  |  |  |  |  |  |  |  | Value of Initial Fixed $100 Investment Based On: |  |  |  |  |  |  |
Year (a) | Summary Compensation Table Total for PEO (b) |  | Compensation Actually Paid to PEO (1) (c) |  | Average Summary Compensation Table Total for Non-PEO NEOs (2) (d) |  | Average Compensation Actually Paid to Non-PEO NEOs (1)(2) (e) |  | Total Shareholder Return (3) (f) |  | Peer Group Total Shareholder Return (3)(4) (g) |  | Net Income (in thousands) (h) |  | NIBT (in thousands) (i) |  | EBITDA Margin (5) (Supplemental) |
2022 | $ | 2,534,019 |  | $ | 3,018,741 |  | $ | 976,283 |  | $ | 1,114,471 |  | $ | 101.17 |  | $ | 110.23 |  | $ | 31,149 |  | $ | 41,350 |  |  | 13.6 | %
2021 |  | 1,943,875 |  |  | 1,852,570 |  |  | 758,955 |  |  | 723,332 |  |  | 95.47 |  |  | 126.18 |  |  | 11,523 |  |  | 15,158 |  |  | 9.5 |
2020 |  | 1,962,273 |  |  | 2,352,277 |  |  | 675,609 |  |  | 757,896 |  |  | 84.96 |  |  | 113.43 |  |  | 19,050 |  |  | 25,634 |  |  | 14.4 |
PEO Total Compensation Amount | $ 2,534,019 | $ 1,943,875 | $ 1,962,273
PEO Actually Paid Compensation Amount | $ 3,018,741 | 1,852,570 | 2,352,277
Adjustment To PEO Compensation, Footnote [Text Block] |
| (1) | SEC rules require certain adjustments be made to the Summary Compensation table totals to determine “compensation actually paid” as reported in the Pay versus Performance Table. “Compensation actually paid” does not necessarily represent cash and/or equity value transferred to the applicable NEO without restriction, but rather is a value calculated under applicable SEC rules. In general, “compensation actually paid” is calculated as Summary Compensation table total compensation adjusted to include the fair market value of equity awards as of December 31 of the applicable year or, if earlier, the vesting date (rather than the grant date). NEOs do not participate in a defined benefit plan so no adjustment for pension benefits is included in the table below. The following table details these adjustments:
|  | Scott Montross (PEO) |  | 2022 |  | 2021 |  | 2020 |
|  | Summary Compensation table total for PEO (column (b)) |  | $ | 2,534,019 |  | $ | 1,943,875 |  | $ | 1,962,273 |
|  |  | Subtract equity awards included in Summary Compensation table total |  |  | (977,851 | ) |  | (876,489 | ) |  | (876,492 | )
|  |  | Add year-end value of equity awards granted in the covered year that remain outstanding and unvested as of year-end |  |  | 1,328,858 |  |  | 793,064 |  |  | 1,628,835 |
|  |  | Change in value of equity awards granted in prior years that remain outstanding and unvested as of year-end |  |  | 255,088 |  |  | (164,412 | ) |  | (109,520 | )
|  |  | Change in value of equity awards vested in the covered year |  |  | (121,373 | ) |  | 156,532 |  |  | (252,819 | )
|  | Compensation Actually Paid to PEO (column (c)) |  | $ | 3,018,741 |  | $ | 1,852,570 |  | $ | 2,352,277 |
Non-PEO NEO Average Total Compensation Amount | $ 976,283 | 758,955 | 675,609
Non-PEO NEO Average Compensation Actually Paid Amount | $ 1,114,471 | 723,332 | 757,896
Adjustment to Non-PEO NEO Compensation Footnote [Text Block] |
|  | Average for Non-PEO NEOs |  |  | 2022 |  |  | 2021 |  |  | 2020 |
|  | Average Summary Compensation table total for Non-PEO NEOs (column (d)) |  | $ | 976,283 |  | $ | 758,955 |  | $ | 675,609 |
|  |  | Subtract equity awards included in Summary Compensation table total |  |  | (291,172 | ) |  | (256,594 | ) |  | (205,269 | )
|  |  | Add year-end value of equity awards granted in the covered year that remain outstanding and unvested as of year-end |  |  | 395,691 |  |  | 232,171 |  |  | 381,461 |
|  |  | Change in value of equity awards granted in prior years that remain outstanding and unvested as of year-end |  |  | 62,807 |  |  | (49,317 | ) |  | (16,895 | )
|  |  | Change in value of equity awards vested in the covered year |  |  | (29,138 | ) |  | 38,117 |  |  | (51,514 | )
|  |  | Subtract prior year-end value of equity awards deemed to fail to meet vesting conditions |  |  | - |  |  | - |  |  | (25,496 | )
|  | Compensation Actually Paid to Non-PEO NEOs (column (e)) |  | $ | 1,114,471 |  | $ | 723,332 |  | $ | 757,896 |
| (2) | The NEOs whose compensation amounts are included for each year are as follows:
|  | • | 2022: | Aaron Wilkins, Miles Brittain, Eric Stokes, and Michael Wray
|  | • | 2021: | Aaron Wilkins, William Smith, Miles Brittain, and Eric Stokes
|  | • | 2020: | Aaron Wilkins, William Smith, Miles Brittain, Eric Stokes, and Robin Gantt. In 2020, Robin Gantt retired as Chief Financial Officer, and Aaron Wilkins was appointed to that position, resulting in five NEOs included in average compensation.
| (3) | The Company’s total shareholder return (“TSR”) and the peer group TSR for each applicable year is calculated based on a fixed investment of $100 on December 31, 2019 on the same cumulative basis as is used in Item 201(e) of Regulation S‑K.
| (4) | Peer group TSR is weighted according to the respective companies’ stock market capitalization at the beginning of the measurement period, which is December 31, 2019 for each year in the table. The Peer Group reflected in this table, which is used in the Company’s stock performance chart in Part II, Item 5 of its 2022 Annual Report to Shareholders, includes: Ampco-Pittsburgh Corporation, Badger Meter, Inc., Circor International, Inc., DMC Global Inc., L.B. Foster Company, Insteel Industries, Inc., Lindsay Corporation, Luxfer Holdings, PLC, Mueller Water Products, Inc., and Orion Group Holdings, Inc. In 2021 and 2020, the Company’s stock performance chart in Part II, Item 5 of the Company’s respective annual reports to shareholders disclosed the Russell 2000 Index and the S&P 600 Construction Machinery and Heavy Trucks Index. The TSR for these indices were as follows:
|  | • | Russell 2000 Index: $119.96 in 2020, $137.74 in 2021, and $109.59 in 2022
|  | • | S&P 600 Construction Machinery and Heavy Trucks Index: $112.99 in 2020, $129.13 in 2021, and $137.42 in 2022
| (5) | Earnings Before Interest, Income Taxes, Depreciation, and Amortization (“EBITDA”) Margin is supplemental to this disclosure and represents EBITDA as a percentage of total net sales. The Company’s method for calculating EBITDA is to deduct depreciation, amortization, and interest income and expense from the Company’s reported income before income taxes. From that, adjustments to EBITDA are occasionally necessary to consider unusual events or other timing differences. These items typically align with the types of adjustments provided for in the Reconciliation of Non-GAAP Measures which can be found in the Company’s quarterly earnings releases. When the Company adjusts financial measures such as EBITDA, those are considered equally for bonus programs affecting all employees, and as they relate to the compensation of the PEO and NEOs, require the explicit approval of the Company’s Compensation Committee.
Compensation Actually Paid vs. Total Shareholder Return [Text Block] | Compensation Actually Paid and Total Shareholder Return
|  | Compensation actually paid in 2020 was elevated slightly by meeting maximum vesting levels for performance-based equity awards due largely to the addition of Geneva in January 2020. Subsequent to that award and with additional investment in the Precast segment, the Company elected to increase the EBITDA Margin required to be achieved to realize a maximum payout in order to better reflect the higher profit potential for the broader Company.
Compensation Actually Paid vs. Net Income [Text Block] | Compensation Actually Paid, Net Income, and Net Income Before Income Tax (“NIBT”)
|  | Compensation actually paid moved in relation with the Company’s profitability, as expected, considering the design of the Company’s bonus programs are heavily weighted toward obtaining threshold, target, and maximum NIBT levels for the cash-based incentive compensation plan.
Compensation Actually Paid vs. Company Selected Measure [Text Block] | Compensation Actually Paid and EBITDA Margin
|  | Compensation actually paid moved in relation with the Company’s profitability, as expected, considering the designs of the Company’s bonus programs are heavily weighted toward obtaining threshold, target, and maximum level EBITDA Margins for the equity-based incentive compensation plan. As mentioned above, the Company increased its EBITDA Margin target starting in 2021 to account for the greater potential brought on by the larger and more diversified business the addition of Precast provides.
Total Shareholder Return Vs Peer Group [Text Block] | RELATIONSHIP BETWEEN TOTAL SHAREHOLDER RETURN OF THE COMPANY AND THE PEER GROUP
|  | The Company chose its 2022 Peer Group based on relative size as well as industries it serves. Due to the acquisition of ParkUSA, the Company has included digital water companies that tend to earn a higher trading valuation. The Company believes this is representative based on the intended strategic transformation that the Company intends to realize from recent and future acquisitions coupled with organic growth of the ParkUSA products. The Peer Group TSR is calculated after considering the relative size of the peers based on market capitalization. Evaluated with the eleven companies in the Peer Group, Northwest Pipe Company ranked fourth over the three years presented, third over the previous two years, and second for the single year ended December 31, 2022.
|  | This graph supplements the graph above and reflects the 2022 Peer Group TSR based on a simple average, rather than weighted for market capitalization. The Company’s 2022 TSR was just slightly better than where it started in 2019, a near record year for SPP, despite growing consolidated annual gross profit 82% between 2019 and 2022.
Tabular List [Table Text Block] | TABULAR LIST OF THE MOST IMPORTANT MEASURES The only performance measures used by the Company to link executive compensation actually paid to Company performance during the year ended December 31, 2022, in no particular order, are:
| • | Net Income Before Income Tax
| • | Earnings Before Interest, Income Taxes, Depreciation, and Amortization Margin (EBITDA Margin)
Total Shareholder Return Amount | $ 101.17 | 95.47 | 84.96
Peer Group Total Shareholder Return Amount | 110.23 | 126.18 | 113.43
Net Income (Loss) | $ 31,149 | $ 11,523 | $ 19,050
Company Selected Measure Amount | 41,350 | 15,158 | 25,634
Measure [Axis]: 1 |  |  |
Pay vs Performance Disclosure [Table] |  |  |
Measure Name | Net Income Before Income Tax |  |
Measure [Axis]: 2 |  |  |
Pay vs Performance Disclosure [Table] |  |  |
Measure Name | Earnings Before Interest, Income Taxes, Depreciation, and Amortization Margin (EBITDA Margin) |  |
Measure [Axis]: 3 |  |  |
Pay vs Performance Disclosure [Table] |  |  |
Other Performance Measure Amount | 0.136 | 0.095 | 0.144
PEO Subtract equity awards included in Summary Compensation table total [Member] |  |  |
Pay vs Performance Disclosure [Table] |  |  |
Adjustment to Compensation Amount | $ (977,851) | $ (876,489) | $ (876,492)
PEO Add year-end value of unvested equity awards granted in the covered year [Member] |  |  |
Pay vs Performance Disclosure [Table] |  |  |
Adjustment to Compensation Amount | 1,328,858 | 793,064 | 1,628,835
PEO Change in value of equity awards granted in prior years [Member] |  |  |
Pay vs Performance Disclosure [Table] |  |  |
Adjustment to Compensation Amount | 255,088 | (164,412) | (109,520)
PEO Change in value of equity awards vested in the covered year [Member] |  |  |
Pay vs Performance Disclosure [Table] |  |  |
Adjustment to Compensation Amount | (121,373) | 156,532 | (252,819)
NEO Subtract equity awards included in Summary Compensation table total [Member] |  |  |
Pay vs Performance Disclosure [Table] |  |  |
Adjustment to Compensation Amount | (291,172) | (256,594) | (205,269)
NEO Add year-end value of unvested equity awards granted in the covered year [Member] |  |  |
Pay vs Performance Disclosure [Table] |  |  |
Adjustment to Compensation Amount | 395,691 | 232,171 | 381,461
NEO Change in value of equity awards granted in prior years [Member] |  |  |
Pay vs Performance Disclosure [Table] |  |  |
Adjustment to Compensation Amount | 62,807 | (49,317) | (16,895)
NEO Change in value of equity awards vested in the covered year [Member] |  |  |
Pay vs Performance Disclosure [Table] |  |  |
Adjustment to Compensation Amount | (29,138) | 38,117 | (51,514)
NEO Subtract prior year-end value of equity awards deemed to fail to meet vesting conditions [Member] |  |  |
Pay vs Performance Disclosure [Table] |  |  |
Adjustment to Compensation Amount | $ 0 | $ 0 | $ (25,496)

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 3 + Details
Name: | ecd_AdjToCompAmt
Namespace Prefix: | ecd_
Data Type: | xbrli:monetaryItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 3 + Details
Name: | ecd_AdjToNonPeoNeoCompFnTextBlock
Namespace Prefix: | ecd_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 3 + Details
Name: | ecd_AdjToPeoCompFnTextBlock
Namespace Prefix: | ecd_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 2 -Subparagraph vi + Details
Name: | ecd_CoSelectedMeasureAmt
Namespace Prefix: | ecd_
Data Type: | xbrli:decimalItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 5 -Subparagraph iii + Details
Name: | ecd_CompActuallyPaidVsCoSelectedMeasureTextBlock
Namespace Prefix: | ecd_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 5 -Subparagraph ii + Details
Name: | ecd_CompActuallyPaidVsNetIncomeTextBlock
Namespace Prefix: | ecd_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 5 -Subparagraph i + Details
Name: | ecd_CompActuallyPaidVsTotalShareholderRtnTextBlock
Namespace Prefix: | ecd_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 2 -Subparagraph vi + Details
Name: | ecd_MeasureName
Namespace Prefix: | ecd_
Data Type: | xbrli:normalizedStringItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 2 -Subparagraph iii + Details
Name: | ecd_NonPeoNeoAvgCompActuallyPaidAmt
Namespace Prefix: | ecd_
Data Type: | xbrli:monetaryItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 2 -Subparagraph ii + Details
Name: | ecd_NonPeoNeoAvgTotalCompAmt
Namespace Prefix: | ecd_
Data Type: | xbrli:monetaryItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 2 -Subparagraph vi + Details
Name: | ecd_OtherPerfMeasureAmt
Namespace Prefix: | ecd_
Data Type: | xbrli:decimalItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 2 -Subparagraph iv + Details
Name: | ecd_PeerGroupTotalShareholderRtnAmt
Namespace Prefix: | ecd_
Data Type: | xbrli:monetaryItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 2 -Subparagraph iii + Details
Name: | ecd_PeoActuallyPaidCompAmt
Namespace Prefix: | ecd_
Data Type: | xbrli:monetaryItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 2 -Subparagraph ii + Details
Name: | ecd_PeoTotalCompAmt
Namespace Prefix: | ecd_
Data Type: | xbrli:monetaryItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 1 + Details
Name: | ecd_PvpTable
Namespace Prefix: | ecd_
Data Type: | xbrli:stringItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 1 + Details
Name: | ecd_PvpTableTextBlock
Namespace Prefix: | ecd_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 6 + Details
Name: | ecd_TabularListTableTextBlock
Namespace Prefix: | ecd_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 2 -Subparagraph iv + Details
Name: | ecd_TotalShareholderRtnAmt
Namespace Prefix: | ecd_
Data Type: | xbrli:monetaryItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 5 -Subparagraph iv + Details
Name: | ecd_TotalShareholderRtnVsPeerGroupTextBlock
Namespace Prefix: | ecd_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- Definition The portion of profit or loss for the period, net of income taxes, which is attributable to the parent. + References Reference 1: http://www.xbrl.org/2003/role/disclosureRef -Topic 235 -SubTopic 10 -Name Accounting Standards Codification -Section S99 -Paragraph 1 -Subparagraph (SX 210.4-08(g)(1)(ii)) -Publisher FASB -URI https://asc.fasb.org//1943274/2147480678/235-10-S99-1 Reference 2: http://www.xbrl.org/2003/role/disclosureRef -Topic 323 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 3 -Subparagraph (c) -Publisher FASB -URI https://asc.fasb.org//1943274/2147481687/323-10-50-3 Reference 3: http://www.xbrl.org/2003/role/disclosureRef -Topic 825 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 28 -Subparagraph (f) -Publisher FASB -URI https://asc.fasb.org//1943274/2147482907/825-10-50-28 Reference 4: http://www.xbrl.org/2003/role/disclosureRef -Topic 220 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 6 -Publisher FASB -URI https://asc.fasb.org//1943274/2147482765/220-10-50-6 Reference 5: http://www.xbrl.org/2003/role/disclosureRef -Topic 250 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 3 -Publisher FASB -URI https://asc.fasb.org//1943274/2147483443/250-10-50-3 Reference 6: http://www.xbrl.org/2003/role/disclosureRef -Topic 250 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 1 -Subparagraph (b)(2) -Publisher FASB -URI https://asc.fasb.org//1943274/2147483443/250-10-50-1 Reference 7: http://www.xbrl.org/2003/role/disclosureRef -Topic 815 -SubTopic 40 -Name Accounting Standards Codification -Section 65 -Paragraph 1 -Subparagraph (f) -Publisher FASB -URI https://asc.fasb.org//1943274/2147480175/815-40-65-1 Reference 8: http://www.xbrl.org/2003/role/disclosureRef -Topic 250 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 8 -Publisher FASB -URI https://asc.fasb.org//1943274/2147483443/250-10-50-8 Reference 9: http://www.xbrl.org/2003/role/disclosureRef -Topic 250 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 9 -Publisher FASB -URI https://asc.fasb.org//1943274/2147483443/250-10-50-9 Reference 10: http://www.xbrl.org/2003/role/disclosureRef -Topic 250 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 11 -Subparagraph (a) -Publisher FASB -URI https://asc.fasb.org//1943274/2147483443/250-10-50-11 Reference 11: http://www.xbrl.org/2003/role/disclosureRef -Topic 250 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 11 -Subparagraph (b) -Publisher FASB -URI https://asc.fasb.org//1943274/2147483443/250-10-50-11 Reference 12: http://www.xbrl.org/2003/role/disclosureRef -Topic 250 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 4 -Publisher FASB -URI https://asc.fasb.org//1943274/2147483443/250-10-50-4 Reference 13: http://www.xbrl.org/2003/role/exampleRef -Topic 946 -SubTopic 830 -Name Accounting Standards Codification -Section 55 -Paragraph 10 -Publisher FASB -URI https://asc.fasb.org//1943274/2147480167/946-830-55-10 Reference 14: http://www.xbrl.org/2003/role/disclosureRef -Topic 946 -SubTopic 220 -Name Accounting Standards Codification -Section 45 -Paragraph 7 -Publisher FASB -URI https://asc.fasb.org//1943274/2147483581/946-220-45-7 Reference 15: http://www.xbrl.org/2003/role/disclosureRef -Topic 944 -SubTopic 220 -Name Accounting Standards Codification -Section S99 -Paragraph 1 -Subparagraph (SX 210.7-04(18)) -Publisher FASB -URI https://asc.fasb.org//1943274/2147483586/944-220-S99-1 Reference 16: http://www.xbrl.org/2003/role/disclosureRef -Topic 280 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 22 -Publisher FASB -URI https://asc.fasb.org//1943274/2147482810/280-10-50-22 Reference 17: http://www.xbrl.org/2003/role/disclosureRef -Topic 946 -SubTopic 220 -Name Accounting Standards Codification -Section S99 -Paragraph 1 -Subparagraph (SX 210.6-07(9)) -Publisher FASB -URI https://asc.fasb.org//1943274/2147483575/946-220-S99-1 Reference 18: http://www.xbrl.org/2003/role/disclosureRef -Topic 946 -SubTopic 220 -Name Accounting Standards Codification -Section S99 -Paragraph 3 -Subparagraph (SX 210.6-09(1)(d)) -Publisher FASB -URI https://asc.fasb.org//1943274/2147483575/946-220-S99-3 Reference 19: http://www.xbrl.org/2003/role/disclosureRef -Topic 470 -SubTopic 10 -Name Accounting Standards Codification -Section S99 -Paragraph 1A -Subparagraph (SX 210.13-01(a)(4)(i)) -Publisher FASB -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A Reference 20: http://www.xbrl.org/2009/role/commonPracticeRef -Topic 470 -SubTopic 10 -Name Accounting Standards Codification -Section S99 -Paragraph 1A -Subparagraph (SX 210.13-01(a)(4)(ii)) -Publisher FASB -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A Reference 21: http://www.xbrl.org/2003/role/disclosureRef -Topic 470 -SubTopic 10 -Name Accounting Standards Codification -Section S99 -Paragraph 1A -Subparagraph (SX 210.13-01(a)(4)(iii)(A)) -Publisher FASB -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A Reference 22: http://www.xbrl.org/2003/role/disclosureRef -Topic 470 -SubTopic 10 -Name Accounting Standards Codification -Section S99 -Paragraph 1A -Subparagraph (SX 210.13-01(a)(4)(iv)) -Publisher FASB -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A Reference 23: http://www.xbrl.org/2003/role/disclosureRef -Topic 470 -SubTopic 10 -Name Accounting Standards Codification -Section S99 -Paragraph 1A -Subparagraph (SX 210.13-01(a)(5)) -Publisher FASB -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A Reference 24: http://www.xbrl.org/2003/role/disclosureRef -Topic 470 -SubTopic 10 -Name Accounting Standards Codification -Section S99 -Paragraph 1B -Subparagraph (SX 210.13-02(a)(4)(i)) -Publisher FASB -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B Reference 25: http://www.xbrl.org/2003/role/disclosureRef -Topic 470 -SubTopic 10 -Name Accounting Standards Codification -Section S99 -Paragraph 1B -Subparagraph (SX 210.13-02(a)(4)(iii)(A)) -Publisher FASB -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B Reference 26: http://www.xbrl.org/2003/role/disclosureRef -Topic 470 -SubTopic 10 -Name Accounting Standards Codification -Section S99 -Paragraph 1B -Subparagraph (SX 210.13-02(a)(4)(iii)(B)) -Publisher FASB -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B Reference 27: http://www.xbrl.org/2003/role/disclosureRef -Topic 470 -SubTopic 10 -Name Accounting Standards Codification -Section S99 -Paragraph 1B -Subparagraph (SX 210.13-02(a)(4)(iv)) -Publisher FASB -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B Reference 28: http://www.xbrl.org/2003/role/disclosureRef -Topic 470 -SubTopic 10 -Name Accounting Standards Codification -Section S99 -Paragraph 1B -Subparagraph (SX 210.13-02(a)(5)) -Publisher FASB -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B Reference 29: http://www.xbrl.org/2003/role/disclosureRef -Topic 280 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 30 -Subparagraph (b) -Publisher FASB -URI https://asc.fasb.org//1943274/2147482810/280-10-50-30 Reference 30: http://www.xbrl.org/2003/role/disclosureRef -Topic 280 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 32 -Subparagraph (f) -Publisher FASB -URI https://asc.fasb.org//1943274/2147482810/280-10-50-32 Reference 31: http://www.xbrl.org/2003/role/disclosureRef -Topic 260 -SubTopic 10 -Name Accounting Standards Codification -Section 45 -Paragraph 60B -Subparagraph (a) -Publisher FASB -URI https://asc.fasb.org//1943274/2147482689/260-10-45-60B Reference 32: http://www.xbrl.org/2003/role/exampleRef -Topic 280 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 31 -Publisher FASB -URI https://asc.fasb.org//1943274/2147482810/280-10-50-31 Reference 33: http://www.xbrl.org/2003/role/disclosureRef -Topic 280 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 32 -Subparagraph (c) -Publisher FASB -URI https://asc.fasb.org//1943274/2147482810/280-10-50-32 Reference 34: http://www.xbrl.org/2003/role/disclosureRef -Topic 205 -SubTopic 20 -Name Accounting Standards Codification -Section 50 -Paragraph 7 -Publisher FASB -URI https://asc.fasb.org//1943274/2147483499/205-20-50-7 Reference 35: http://fasb.org/us-gaap/role/ref/legacyRef -Topic 230 -SubTopic 10 -Name Accounting Standards Codification -Section 45 -Paragraph 28 -Publisher FASB -URI https://asc.fasb.org//1943274/2147482740/230-10-45-28 Reference 36: http://www.xbrl.org/2003/role/disclosureRef -Topic 220 -SubTopic 10 -Name Accounting Standards Codification -Section 45 -Paragraph 1A -Subparagraph (a) -Publisher FASB -URI https://asc.fasb.org//1943274/2147482790/220-10-45-1A Reference 37: http://www.xbrl.org/2003/role/disclosureRef -Topic 220 -SubTopic 10 -Name Accounting Standards Codification -Section 45 -Paragraph 1B -Subparagraph (a) -Publisher FASB -URI https://asc.fasb.org//1943274/2147482790/220-10-45-1B Reference 38: http://fasb.org/us-gaap/role/ref/legacyRef -Topic 220 -SubTopic 10 -Name Accounting Standards Codification -Section S99 -Paragraph 2 -Subparagraph (SX 210.5-03(20)) -Publisher FASB -URI https://asc.fasb.org//1943274/2147483621/220-10-S99-2 Reference 39: http://fasb.org/us-gaap/role/ref/legacyRef -Topic 942 -SubTopic 220 -Name Accounting Standards Codification -Section S99 -Paragraph 1 -Subparagraph (SX 210.9-04(22)) -Publisher FASB -URI https://asc.fasb.org//1943274/2147483589/942-220-S99-1 + Details
Name: | us-gaap_NetIncomeLoss
Namespace Prefix: | us-gaap_
Data Type: | xbrli:monetaryItemType
Balance Type: | credit
Period Type: | duration

X
- Details
Name: | ecd_MeasureAxis=1
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | ecd_MeasureAxis=2
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | ecd_MeasureAxis=3
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | ecd_AdjToCompAxis=nwpx_PEOSubtractEquityAwardsIncludedInSummaryCompensationTableTotalMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | ecd_AdjToCompAxis=nwpx_PEOAddYearendValueOfUnvestedEquityAwardsGrantedInTheCoveredYearMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | ecd_AdjToCompAxis=nwpx_PEOChangeInValueOfEquityAwardsGrantedInPriorYearsMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | ecd_AdjToCompAxis=nwpx_PEOChangeInValueOfEquityAwardsVestedInTheCoveredYearMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | ecd_AdjToCompAxis=nwpx_NEOSubtractEquityAwardsIncludedInSummaryCompensationTableTotalMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | ecd_AdjToCompAxis=nwpx_NEOAddYearendValueOfUnvestedEquityAwardsGrantedInTheCoveredYearMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | ecd_AdjToCompAxis=nwpx_NEOChangeInValueOfEquityAwardsGrantedInPriorYearsMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | ecd_AdjToCompAxis=nwpx_NEOChangeInValueOfEquityAwardsVestedInTheCoveredYearMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | ecd_AdjToCompAxis=nwpx_NEOSubtractPriorYearendValueOfEquityAwardsDeemedToFailToMeetVestingConditionsMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |