Respond in English. Build a self-contained downloadable HTML sales dashboard for Harbor Thread, a fictional small retail business. Use the inline CSV below as pa43-source.csv. This is a controlled test, not real customer or business data.

Required UI: gross sales, refunds, net sales, included product lines and distinct orders; net sales by channel and product with numeric labels; All / Store / Online filter; replacement CSV upload; source filename; row exclusion audit. No external libraries or network calls.

Business rules:
- Each row is a product line. Remove only exact duplicates across the nine original columns, preserving the first. Never deduplicate by order ID: distinct product lines can share one order.
- Include only Completed rows dated September 28 through October 4, 2026 inclusive.
- Gross and refunds are line amounts, not unit prices. Net sales = gross sales minus refunds. Net sales is not profit.
- Every filter must update every KPI, chart and applicable audit consistently. Order count is distinct order IDs within the selected included rows.
- Read standard CSV quoting correctly; product names may contain commas.
- Recalculate from the replacement file; do not hard-code aggregates.
- If any required header is missing, or any required numeric amount/quantity or date is invalid, reject the entire replacement. Show a prominent error near the KPIs and do not display the rejected file's partial totals. If retaining the last valid totals, clearly identify them as the previous valid file, not the rejected file.
- A later valid upload must clear the error and fully replace prior data.
- Escape source strings before inserting them as HTML.

Return the complete HTML and state what you actually executed or checked. Do not claim browser interactions, CSV upload tests or business outcomes that you did not perform.

CSV:
line_id,order_id,sale_date,status,channel,product,units,gross_sales_usd,refund_usd
L01,A01,2026-09-28,Completed,Store,Jacket,2,200.00,0.00
L02,A01,2026-09-28,Completed,Store,Belt,1,30.00,0.00
L03,A02,2026-09-29,Completed,Online,Jeans,1,80.00,20.00
L04,A03,2026-09-30,Completed,Online,Shirt,3,90.00,0.00
L03,A02,2026-09-29,Completed,Online,Jeans,1,80.00,20.00
L05,A04,2026-10-01,Cancelled,Store,Jacket,1,100.00,0.00
L06,A05,2026-10-02,Pending,Online,Belt,2,60.00,0.00
L07,A06,2026-10-03,Completed,Store,Jeans,2,160.00,40.00
L08,A07,2026-10-04,Completed,Online,Jacket,1,100.00,0.00
L09,A08,2026-10-05,Completed,Store,Shirt,1,30.00,0.00
L10,A09,2026-09-27,Completed,Store,Belt,1,30.00,0.00
