diff --git a/COPILOT_CONTEXT.md b/COPILOT_CONTEXT.md
index 81ecf93b..514a4f43 100644
--- a/COPILOT_CONTEXT.md
+++ b/COPILOT_CONTEXT.md
@@ -185,11 +185,79 @@ For signature placeholders, the service:
Current receiver viewer characteristics:
- route: `/envelope/{EnvelopeKey}`
- render mode: `InteractiveServer`
-- PDF rendering: `PDF.js`
+- PDF rendering: **Migration in progress from `PDF.js` to `DxPdfViewer`**
- toolbar: page navigation, zoom, thumbnail toggle, signature navigation, signature reset
- signature popup: `DxPopup`
- thumbnail sidebar: resizable and stored in `localStorage`
+### ⚠️ CRITICAL: DevExpress DxPdfViewer Control Requirements
+
+**Verified API for installed `DevExpress.Blazor.PdfViewer` v25.2.3:**
+
+| Property | Access | Notes |
+|----------|--------|-------|
+| `DocumentContent` | `[Parameter]` GET/SET | Feed PDF as `byte[]` |
+| `ZoomLevel` | `[Parameter]` GET/SET | **Factor** (not percentage): `1.5` = 150% |
+| `IsSinglePagePreview` | `[Parameter]` GET/SET | Single page mode |
+| `CssClass` | `[Parameter]` GET/SET | CSS class |
+| `DocumentName` | `[Parameter]` GET/SET | Download filename |
+| `SizeMode` | `[Parameter]` GET/SET | `Small` / `Medium` / `Large` |
+| `PageCount` | Read-only GET | Total pages — **no JS call needed** |
+| `ActivePageIndex` | Read-only GET | Current page (0-based) — **cannot SET** |
+| `CustomizeToolbar` | Event | Only available toolbar event |
+
+**Does NOT exist in v25.2.3 — do NOT use:**
+- `GoToPageAsync()` ❌
+- `GoToNextPageAsync()` ❌
+- `ZoomAsync()` ❌
+- `PageNumberChanged` event ❌
+- `ZoomLevelChanged` event ❌
+- `ToolbarVisible` property ❌
+
+**Correct approach:**
+```razor
+
+```
+
+```csharp
+// ZoomLevel: always divide by 100 (factor, not percentage)
+_viewerZoomLevel = _currentZoom / 100d; // 150 -> 1.5
+
+// PageCount: read directly, no JS needed
+_totalPages = _pdfViewer.PageCount;
+
+// Page navigation: only via CustomizeToolbar buttons
+protected void OnCustomizeToolbar(ToolbarModel toolbarModel)
+{
+ toolbarModel.AllItems.Clear();
+ var nextButton = new ToolbarItem
+ {
+ IconCssClass = "dx-icon-chevronnext",
+ Enabled = _currentPage < _totalPages,
+ Click = async (args) =>
+ {
+ _currentPage++;
+ _viewerZoomLevel = _currentZoom / 100d;
+ await InvokeAsync(StateHasChanged);
+ await RenderSignatureButtonsAsync();
+ }
+ };
+ toolbarModel.AllItems.Add(nextButton);
+}
+```
+
+**JavaScript role after migration:**
+- Overlay geometry calculations only
+- Thumbnail rendering via PDF.js helper
+- Custom UI interactions (sidebar resize, signature canvas)
+- **NOT** for controlling DxPdfViewer page or zoom
+
+See `DEVEXPRESS_V25_LIMITATIONS.md` for complete verified API reference.
+
### JS Assets
- `EnvelopeGenerator.Server/EnvelopeGenerator.Server/wwwroot/js/pdf-viewer.js`
- `EnvelopeGenerator.Server/EnvelopeGenerator.Server/wwwroot/js/receiver-signature.js`
diff --git a/DEBUG_NOTES.md b/DEBUG_NOTES.md
new file mode 100644
index 00000000..edcbb173
--- /dev/null
+++ b/DEBUG_NOTES.md
@@ -0,0 +1,300 @@
+# Debug Tools for DevExpress DxPdfViewer Integration
+
+## Purpose
+This document describes temporary debug tools added to diagnose DevExpress DOM structure and page navigation issues.
+
+## IMPORTANT: TEMPORARY DEBUG CODE
+
+**These debug tools are TEMPORARY and should be REMOVED after resolving the page navigation issue.**
+
+---
+
+## Debug Tools Added
+
+### 1. Debug UI Button (Toolbar)
+
+**Location:** `EnvelopeReceiverPage.razor` - Toolbar Section
+
+**Visual:** Orange button with "?" icon in the PDF viewer toolbar
+
+**What it does:**
+- Opens a floating overlay panel showing DevExpress DOM analysis
+- Displays all input elements found in DxPdfViewer
+- Shows which CSS selectors successfully find the page input
+- Provides a "Test: Go to Page 2" button for live testing
+
+**Code Location:**
+```razor
+@* DEBUG: DevExpress DOM Inspector *@
+