diff --git a/tradein-mvp/frontend/src/components/trade-in/v2/SectionOverlay.tsx b/tradein-mvp/frontend/src/components/trade-in/v2/SectionOverlay.tsx
index 435a56d0..b1db1274 100644
--- a/tradein-mvp/frontend/src/components/trade-in/v2/SectionOverlay.tsx
+++ b/tradein-mvp/frontend/src/components/trade-in/v2/SectionOverlay.tsx
@@ -30,6 +30,11 @@ interface SectionOverlayProps {
cache?: CacheData;
}
+// Panel geometry (relative to the artboard). Kept as a constant so the click
+// backdrop can align its top edge to the panel — the backdrop starts BELOW the
+// TopNav so the top tabs stay clickable while an overlay is open.
+const PANEL_TOP = 80;
+
export default function SectionOverlay({
active,
onClose,
@@ -105,138 +110,182 @@ export default function SectionOverlay({
}, []);
return (
-
-
-
- {/* HUD corner brackets */}
+ <>
+ {/* Click-outside backdrop. A transparent layer covering the artboard BELOW
+ the TopNav (top: PANEL_TOP) — clicking the margin area around the panel
+ closes the overlay (in addition to Esc). It is a SIBLING of the dialog
+ (not an ancestor) and sits one z-index below it, so clicks inside the
+ panel / on its buttons never reach this handler (they don't bubble to a
+ sibling) and therefore never close the overlay. Starting below the nav
+ keeps the top tabs clickable. aria-hidden + no tabIndex → invisible to
+ AT and keyboard; Esc remains the keyboard close path. */}
-
- {/* overlay header */}