Add reference docs and update CLAUDE.md
Some checks failed
Build and Deploy / build (push) Failing after 5s
Build and Deploy / deploy (push) Has been skipped

This commit is contained in:
Lorentz 2026-02-15 23:33:57 +00:00
parent fbe79c0773
commit 6ef918aad4
10 changed files with 2810 additions and 1 deletions

View file

@ -24,6 +24,24 @@ Rebuilding the Vorteq Quest customer portal from a legacy Laravel 9 / Windows Se
- **CI/CD:** Forgejo Actions with self-hosted runner - **CI/CD:** Forgejo Actions with self-hosted runner
- **Registry:** Forgejo built-in OCI container registry - **Registry:** Forgejo built-in OCI container registry
## Reference Documentation\
\
All legacy system documentation is in the `docs/` directory:\
\
- **`vorteqcoil-portal-documentation.md`** — Complete interface documentation of the legacy portal: navigation, sections, column layouts, business logic. Reference when building UI pages.\
- **`vorteqcoil-visual-documentation.html`** — Visual reference guide with color coding system and UI patterns. Reference for design decisions.\
- **`VorteqDiscovery_20260206_205453.txt`** — Server infrastructure discovery: IIS config, scheduled tasks, services.\
- **`VorteqAppDiscovery_20260206_210519.txt`** — Application code discovery: Laravel routes, controllers, models, views, Blade templates. Reference when implementing features.\
- **`VorteqEpicorDB_20260210_211850.txt`** — Epicor database schema: tables, stored procedures, views. Reference when writing Epicor queries.\
- **`EpicorDatabase.php`** — Legacy PHP database class with all Epicor query implementations. Primary reference for porting queries to TypeScript.\
- **`_FILE_LISTING.txt`** — Complete file listing of the legacy Laravel application.\
- **`_MODEL_MAP.txt`** — Legacy Eloquent model-to-table mappings. Reference for Prisma schema design.\
- **`_SQL_QUERIES_FOUND.txt`** — All SQL queries extracted from the legacy codebase. Reference for service layer implementation.\
\
' CLAUDE.md
## Infrastructure ## Infrastructure
### Server ### Server

View file

@ -2,7 +2,7 @@
services: services:
# Traefik Reverse Proxy # Traefik Reverse Proxy
traefik: traefik:
image: traefik:v3.0 image: traefik:latest
container_name: traefik container_name: traefik
restart: unless-stopped restart: unless-stopped
security_opt: security_opt:

2117
docs/EpicorDatabase.php Normal file

File diff suppressed because it is too large Load diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
docs/_FILE_LISTING.txt Normal file

Binary file not shown.

BIN
docs/_MODEL_MAP.txt Normal file

Binary file not shown.

BIN
docs/_SQL_QUERIES_FOUND.txt Normal file

Binary file not shown.

View file

@ -0,0 +1,674 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Vorteq Coil Portal - Visual Documentation</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
line-height: 1.6;
color: #333;
background: #f5f5f5;
}
header {
background: #2c3e50;
color: white;
padding: 2rem;
text-align: center;
box-shadow: 0 2px 5px rgba(0,0,0,0.1);
}
header h1 {
font-size: 2.5rem;
margin-bottom: 0.5rem;
}
header p {
font-size: 1.1rem;
opacity: 0.9;
}
nav {
background: white;
padding: 1rem;
box-shadow: 0 2px 5px rgba(0,0,0,0.1);
position: sticky;
top: 0;
z-index: 100;
}
nav ul {
list-style: none;
display: flex;
flex-wrap: wrap;
justify-content: center;
gap: 1rem;
}
nav a {
color: #2c3e50;
text-decoration: none;
padding: 0.5rem 1rem;
border-radius: 5px;
transition: background 0.3s;
}
nav a:hover {
background: #f7941d;
color: white;
}
.container {
max-width: 1400px;
margin: 0 auto;
padding: 2rem;
}
section {
background: white;
margin: 2rem 0;
padding: 2rem;
border-radius: 10px;
box-shadow: 0 2px 10px rgba(0,0,0,0.1);
}
section h2 {
color: #2c3e50;
font-size: 2rem;
margin-bottom: 1rem;
padding-bottom: 0.5rem;
border-bottom: 3px solid #f7941d;
}
section h3 {
color: #34495e;
font-size: 1.5rem;
margin: 1.5rem 0 1rem 0;
}
.screenshot-container {
margin: 2rem 0;
border: 1px solid #ddd;
border-radius: 5px;
overflow: hidden;
box-shadow: 0 2px 8px rgba(0,0,0,0.1);
}
.screenshot-container img {
width: 100%;
display: block;
}
.screenshot-caption {
background: #f8f9fa;
padding: 1rem;
font-style: italic;
color: #666;
border-top: 2px solid #f7941d;
}
.feature-list {
margin: 1rem 0;
padding-left: 2rem;
}
.feature-list li {
margin: 0.5rem 0;
}
.info-box {
background: #e8f4f8;
border-left: 4px solid #3498db;
padding: 1rem;
margin: 1rem 0;
border-radius: 3px;
}
.warning-box {
background: #fff3cd;
border-left: 4px solid #f7941d;
padding: 1rem;
margin: 1rem 0;
border-radius: 3px;
}
.color-legend {
display: flex;
flex-wrap: wrap;
gap: 1rem;
margin: 1rem 0;
}
.color-item {
display: flex;
align-items: center;
gap: 0.5rem;
}
.color-box {
width: 30px;
height: 30px;
border-radius: 3px;
border: 1px solid #ddd;
}
footer {
background: #2c3e50;
color: white;
text-align: center;
padding: 2rem;
margin-top: 3rem;
}
.btn {
display: inline-block;
padding: 0.75rem 1.5rem;
background: #f7941d;
color: white;
text-decoration: none;
border-radius: 5px;
margin: 0.5rem;
transition: background 0.3s;
}
.btn:hover {
background: #e07a0d;
}
@media print {
nav { display: none; }
section { page-break-inside: avoid; }
}
</style>
</head>
<body>
<header>
<h1>Vorteq Coil Portal</h1>
<p>Complete Visual Interface Documentation</p>
<p style="font-size: 0.9rem; margin-top: 0.5rem;">Documentation Date: February 15, 2026</p>
</header>
<nav>
<ul>
<li><a href="#overview">Overview</a></li>
<li><a href="#dashboard">Dashboard</a></li>
<li><a href="#inventory">Inventory</a></li>
<li><a href="#invoices">Invoices</a></li>
<li><a href="#orders">Open Orders</a></li>
<li><a href="#coil-activity">Coil Activity</a></li>
<li><a href="#schedulers">Schedulers</a></li>
<li><a href="#admin">Administration</a></li>
<li><a href="#help">Help</a></li>
</ul>
</nav>
<div class="container">
<section id="overview">
<h2>Portal Overview</h2>
<p>The Vorteq Coil Quest Portal is a comprehensive web application for managing coil inventory, orders, and production scheduling. This documentation captures the complete interface as of February 2026.</p>
<div class="info-box">
<strong>Portal URL:</strong> https://portal.vorteqcoil.com/quest/dashboard<br>
<strong>Authentication:</strong> Username/password login required<br>
<strong>Browser Compatibility:</strong> Modern browsers (Chrome, Firefox, Safari, Edge)
</div>
<h3>Key Features</h3>
<ul class="feature-list">
<li>Customer-specific data views</li>
<li>Multi-stage inventory tracking (6 statuses)</li>
<li>Order management and tracking</li>
<li>Coil activity monitoring</li>
<li>Automated email notifications</li>
<li>Report scheduling</li>
<li>Production scheduling</li>
<li>Administrative controls</li>
</ul>
<h3>Color Coding System</h3>
<div class="color-legend">
<div class="color-item">
<div class="color-box" style="background: #f7941d;"></div>
<span>Primary Actions / Unprocessed</span>
</div>
<div class="color-item">
<div class="color-box" style="background: #8e44ad;"></div>
<span>Rejects/Returns</span>
</div>
<div class="color-item">
<div class="color-box" style="background: #27ae60;"></div>
<span>Work In Progress / Export</span>
</div>
<div class="color-item">
<div class="color-box" style="background: #3498db;"></div>
<span>Finished Goods / Info Actions</span>
</div>
<div class="color-item">
<div class="color-box" style="background: #e74c3c;"></div>
<span>Destructive Actions / Processed Rejects</span>
</div>
</div>
</section>
<section id="dashboard">
<h2>1. Dashboard</h2>
<p>The dashboard serves as the landing page and requires customer selection before accessing other features.</p>
<div class="warning-box">
<strong>Note:</strong> To capture live screenshots, navigate to <a href="https://portal.vorteqcoil.com/quest/dashboard" target="_blank">https://portal.vorteqcoil.com/quest/dashboard</a> and use your browser's screenshot tool (Cmd+Shift+4 on Mac, Windows+Shift+S on Windows, or right-click > "Take Screenshot" in browser).
</div>
<h3>Dashboard Features</h3>
<ul class="feature-list">
<li><strong>Customer Selection:</strong> Dropdown menu (cyan background) with searchable customer list</li>
<li><strong>Customer Format:</strong> Customer ID - Company Name (e.g., "AAI - Armour Alloys Inc.")</li>
<li><strong>Notifications Panel:</strong> Important company announcements and updates</li>
<li><strong>State Management:</strong> Selected customer persists across page navigation</li>
</ul>
<p><em>Screenshot to capture: Dashboard with customer dropdown opened showing full customer list</em></p>
</section>
<section id="inventory">
<h2>2. Inventory Management</h2>
<p>Comprehensive inventory tracking across six processing stages with export and email capabilities.</p>
<h3>Inventory Header</h3>
<ul class="feature-list">
<li><strong>Start Shipment Release:</strong> Purple button to initiate shipment process</li>
<li><strong>Export Summary to Excel:</strong> Green button for summary export</li>
<li><strong>Export Summary to PDF:</strong> Green button for PDF summary</li>
<li><strong>Export Details to Excel:</strong> Green button for detailed export</li>
<li><strong>Shipment Release Emails:</strong> Orange button to send notifications</li>
</ul>
<h3>Inventory Tabs</h3>
<h4>Tab 1: Unprocessed (Orange)</h4>
<p>Raw materials and incoming inventory not yet processed.</p>
<ul class="feature-list">
<li>Columns: Plant, Vorteq Part#, Vorteq Part # Desc, Warehouse, Qty LB</li>
<li>Filterable columns with dropdown menus</li>
<li>Sortable by any column</li>
</ul>
<p><em>Screenshot to capture: Inventory > Unprocessed tab</em></p>
<h4>Tab 2: Unprocessed (Rejects / Returns) (Purple)</h4>
<p>Incoming items that were rejected or returned before processing.</p>
<ul class="feature-list">
<li>Same column structure as Unprocessed</li>
<li>Distinct color coding for visibility</li>
</ul>
<p><em>Screenshot to capture: Inventory > Unprocessed (Rejects / Returns) tab</em></p>
<h4>Tab 3: Work In Progress (Green)</h4>
<p>Items currently being processed on production lines.</p>
<ul class="feature-list">
<li>Additional Columns: Coat Part#, Vorteq Paint, % completion</li>
<li>Real-time processing status</li>
</ul>
<p><em>Screenshot to capture: Inventory > Work In Progress tab</em></p>
<h4>Tab 4: Finished Goods (Blue)</h4>
<p>Completed items ready for shipment.</p>
<ul class="feature-list">
<li>Columns include final specifications</li>
<li>Quality control status</li>
</ul>
<p><em>Screenshot to capture: Inventory > Finished Goods tab</em></p>
<h4>Tab 5: Processed - Other (Orange)</h4>
<p>Items that have been processed but don't fall into standard categories.</p>
<p><em>Screenshot to capture: Inventory > Processed - Other tab</em></p>
<h4>Tab 6: Processed (Rejects / Returns) (Red/Pink)</h4>
<p>Items that were processed but subsequently rejected or returned.</p>
<ul class="feature-list">
<li>Includes reason codes</li>
<li>Links to quality reports</li>
</ul>
<p><em>Screenshot to capture: Inventory > Processed (Rejects / Returns) tab</em></p>
</section>
<section id="invoices">
<h2>3. Invoices</h2>
<p>View and search customer invoices with filtering capabilities.</p>
<div class="info-box">
<strong>Historical Data:</strong> For invoices older than what's displayed, contact Carole Bedore.
</div>
<h3>Invoice Table Columns</h3>
<ul class="feature-list">
<li><strong>Invoice Number:</strong> Unique identifier with sorting</li>
<li><strong>Number of Pages:</strong> Page count</li>
<li><strong>Sent On:</strong> Date with calendar picker</li>
<li><strong>Job Number:</strong> Associated job</li>
<li><strong>Amount:</strong> Invoice total</li>
<li><strong>Is Paid?:</strong> Yes/No radio button filter</li>
</ul>
<p><em>Screenshot to capture: Invoices page showing data table</em></p>
</section>
<section id="orders">
<h2>4. Open Orders</h2>
<p>Track all open customer orders with comprehensive filtering and export options.</p>
<h3>Header Actions</h3>
<ul class="feature-list">
<li><strong>Export to Excel:</strong> Green button</li>
<li><strong>Export to PDF:</strong> Green button</li>
<li><strong>Coil Allocation Emails:</strong> Orange button</li>
</ul>
<h3>Table Columns</h3>
<ul class="feature-list">
<li>Plant</li>
<li>Job# (Job Number)</li>
<li>Alloc# (Allocation Number)</li>
<li>PO# (Purchase Order Number)</li>
<li>RLS (Release Status)</li>
<li>Due Date (calendar picker)</li>
<li>Cust. Part# (Customer Part Number)</li>
<li>Part Number</li>
<li>Description</li>
<li>Prod Qty (Production Quantity)</li>
<li>Qty Cmp (Quantity Complete)</li>
<li>Sales Order</li>
<li>Ln (Line Number)</li>
</ul>
<p><em>Screenshot to capture: Open Orders page with all columns visible</em></p>
</section>
<section id="coil-activity">
<h2>5. Coil Activity</h2>
<p>Monitor coil usage, receipts, releases, and allocations with date range filtering.</p>
<h3>Date Range Selector</h3>
<div class="warning-box">
<strong>Limit:</strong> You can display up to a month of data at a time.
</div>
<ul class="feature-list">
<li>Start Date field with calendar picker</li>
<li>End Date field with calendar picker</li>
<li>Submit button (green) to apply filters</li>
</ul>
<h3>Tab 1: Coil Usage (Orange)</h3>
<p>Track actual coil consumption by job.</p>
<ul class="feature-list">
<li>Columns: Date Used, Vorteq Part#, Cust Part#, Part Description, Lot#, Mfg Lot#, Weight, Plant Name, Job#, Cust PO#, Qty LB</li>
</ul>
<p><em>Screenshot to capture: Coil Activity > Coil Usage tab</em></p>
<h3>Tab 2: Coil Receipts (Purple)</h3>
<p>Track incoming coil inventory deliveries.</p>
<ul class="feature-list">
<li>Columns: Date Rec, Vorteq Part#, Cust Part#, Part Description, Lot#, Mfg Lot#, Plant Name, Packing Slip, Supplier Name, Mill Order #</li>
</ul>
<p><em>Screenshot to capture: Coil Activity > Coil Receipts tab</em></p>
<h3>Tab 3: Shipment Releases (Red/Pink)</h3>
<p>View completed and cancelled shipment releases.</p>
<ul class="feature-list">
<li>Export to Excel button</li>
<li>Columns: Reference Num, Company, Ship To Address, User, Plant, Completed On, Is Cancelled, Cancelled On, Cancelled By</li>
</ul>
<p><em>Screenshot to capture: Coil Activity > Shipment Releases tab</em></p>
<h3>Tab 4: Coil Allocations (Red/Pink)</h3>
<p>Track coil allocation requests and their status.</p>
<ul class="feature-list">
<li>Export to Excel button</li>
<li>Columns: Reference Num, Company, User, Job Num, Plant, Completed On, Is Cancelled, Cancelled On, Cancelled By</li>
</ul>
<p><em>Screenshot to capture: Coil Activity > Coil Allocations tab</em></p>
</section>
<section id="schedulers">
<h2>6. Schedulers</h2>
<h3>Report Scheduler</h3>
<p>Manage automated report generation and distribution.</p>
<ul class="feature-list">
<li>User-specific view with dropdown selector</li>
<li>"Add Report" button (top right)</li>
<li>Weekly calendar view (Sunday - Saturday)</li>
<li>Visual scheduling interface</li>
<li>Current user displayed: Lorentz Hinrichsen</li>
</ul>
<p><em>Screenshot to capture: Report Scheduler calendar view</em></p>
<h3>Plant Scheduler</h3>
<p>Production line scheduling and planning.</p>
<ul class="feature-list">
<li>Plant selection dropdown (cyan background)</li>
<li>Line selection required</li>
<li>Production schedule view after selection</li>
</ul>
<p><em>Screenshot to capture: Plant Scheduler initial state</em></p>
</section>
<section id="admin">
<h2>7. Administration</h2>
<h3>Admin Reviews/Allocations</h3>
<h4>Shipment Releases</h4>
<div class="warning-box">
<strong>Warning:</strong> Cancelling a release will make the items in it available for a new release and cannot be undone. Email notifications will be sent out based on the same rules as confirmation emails.
</div>
<ul class="feature-list">
<li>Export to Excel functionality</li>
<li>Filter by Reference Num, Company, User, Plant, Completion Date, Cancellation Status</li>
<li>Actions: Edit (blue pencil), PDF (blue document), Cancel (red X)</li>
</ul>
<p><em>Screenshot to capture: Administration: Shipment Releases with data</em></p>
<h4>Coil Allocation Requests</h4>
<div class="warning-box">
<strong>Warning:</strong> Cancelling a coil allocation request will make the items in it available for a new request and cannot be undone. Email notifications will be sent out based on the same rules as confirmation emails.
</div>
<ul class="feature-list">
<li>Export to Excel functionality</li>
<li>Filter by Reference Num, Company, User, Job Num, Plant, Completion Date</li>
<li>Actions: View (blue eye), PDF (blue document), Cancel (red X)</li>
</ul>
<p><em>Screenshot to capture: Administration: Coil Allocation Requests with data</em></p>
<h3>Administration Dropdown Menu</h3>
<p>Comprehensive system administration access:</p>
<ul class="feature-list">
<li>Customers</li>
<li>Users</li>
<li>Account Requests</li>
<li>Notifications</li>
<li>AP Check Processing</li>
<li>Shipping Reports</li>
<li>Shipment Releases</li>
<li>Coil Allocation Requests</li>
<li>Generate Password Reset Links</li>
<li>Email Logs</li>
<li>Documentation</li>
<li>Wave EDI</li>
<li>Invoice Upload</li>
<li>Paintline backups</li>
<li>Inventory Type - Paint Codes</li>
</ul>
<h4>Customers Administration</h4>
<div class="info-box">
<strong>Note:</strong> Records that are currently in use cannot be removed.
</div>
<ul class="feature-list">
<li><strong>Add Button:</strong> Create new customer (green)</li>
<li><strong>Bulk Assign Invoicing Emails:</strong> Mass email assignment</li>
<li><strong>Bulk Assign Order Acknowledgement Emails:</strong> Mass email assignment</li>
<li><strong>Export to Excel:</strong> Export customer list</li>
<li><strong>Columns:</strong> Customer ID, Name, Inactive status, Email addresses, In Use indicator, Edit action</li>
</ul>
<p><em>Screenshot to capture: Administration: Customers with full data table</em></p>
</section>
<section id="help">
<h2>8. Help & Support Documentation</h2>
<p>Comprehensive user documentation organized by functional area.</p>
<h3>Documentation Sections</h3>
<h4>Account</h4>
<ul class="feature-list">
<li>How To Log In/Out</li>
</ul>
<h4>Admin</h4>
<ul class="feature-list">
<li>Customers</li>
<li>Users</li>
<li>Account Requests</li>
<li>Notifications</li>
<li>AP Check Processing</li>
<li>Shipment Releases</li>
<li>Password Reset Links</li>
<li>Email Logs</li>
<li>Documentation</li>
<li>Wave EDI</li>
<li>Invoice Upload</li>
</ul>
<h4>Coil Activity</h4>
<ul class="feature-list">
<li>Coil Activity Overview</li>
<li>Coil Usage</li>
<li>Coil Receipts</li>
<li>Shipment Releases</li>
</ul>
<h4>Dashboard</h4>
<ul class="feature-list">
<li>Recent Production</li>
<li>Recent Shipments</li>
<li>How to view notifications</li>
</ul>
<h4>Inventory</h4>
<ul class="feature-list">
<li>Inventory Overview</li>
<li>Additional inventory topics</li>
</ul>
<p><em>Screenshot to capture: Help page showing all documentation sections</em></p>
</section>
<section>
<h2>How to Capture Screenshots</h2>
<p>To create your own screenshot library:</p>
<ol class="feature-list">
<li><strong>Navigate to the portal:</strong> <a href="https://portal.vorteqcoil.com/quest/dashboard" target="_blank">https://portal.vorteqcoil.com/quest/dashboard</a></li>
<li><strong>Log in</strong> with your credentials</li>
<li><strong>Select a customer</strong> from the dropdown</li>
<li><strong>Use browser screenshot tools:</strong>
<ul>
<li><strong>Mac:</strong> Cmd + Shift + 4 (select area) or Cmd + Shift + 5 (screenshot tool)</li>
<li><strong>Windows:</strong> Windows + Shift + S</li>
<li><strong>Chrome:</strong> Right-click > "Capture Screenshot" (in DevTools)</li>
<li><strong>Firefox:</strong> Right-click > "Take a Screenshot"</li>
</ul>
</li>
<li><strong>Name your files systematically:</strong>
<ul>
<li>01-dashboard-customer-selection.png</li>
<li>02-inventory-unprocessed.png</li>
<li>03-inventory-unprocessed-rejects.png</li>
<li>04-inventory-work-in-progress.png</li>
<li>05-inventory-finished-goods.png</li>
<li>06-inventory-processed-other.png</li>
<li>07-inventory-processed-rejects.png</li>
<li>08-invoices.png</li>
<li>09-open-orders.png</li>
<li>10-coil-activity-usage.png</li>
<li>11-coil-activity-receipts.png</li>
<li>12-coil-activity-shipment-releases.png</li>
<li>13-coil-activity-allocations.png</li>
<li>14-report-scheduler.png</li>
<li>15-plant-scheduler.png</li>
<li>16-admin-shipment-releases.png</li>
<li>17-admin-coil-allocation-requests.png</li>
<li>18-admin-customers.png</li>
<li>19-help.png</li>
</ul>
</li>
<li><strong>Save all files</strong> to a dedicated folder for reference</li>
</ol>
<div class="info-box">
<strong>Tip:</strong> For full-page screenshots in Chrome DevTools:
<ol style="margin-top: 0.5rem;">
<li>Press F12 to open DevTools</li>
<li>Press Cmd+Shift+P (Mac) or Ctrl+Shift+P (Windows)</li>
<li>Type "screenshot"</li>
<li>Select "Capture full size screenshot"</li>
</ol>
</div>
</section>
<section>
<h2>Modernization Recommendations</h2>
<h3>High Priority</h3>
<ul class="feature-list">
<li>Responsive design for mobile/tablet access</li>
<li>Real-time data updates (WebSockets)</li>
<li>Enhanced search and filtering</li>
<li>Dashboard analytics with charts</li>
<li>Accessibility compliance (WCAG 2.1)</li>
</ul>
<h3>UI/UX Improvements</h3>
<ul class="feature-list">
<li>Inline editing for quick updates</li>
<li>Drag-and-drop file uploads</li>
<li>Interactive charts for data visualization</li>
<li>Contextual help tooltips</li>
<li>Keyboard shortcuts for power users</li>
</ul>
<h3>Technical Enhancements</h3>
<ul class="feature-list">
<li>API-first architecture</li>
<li>Progressive Web App (PWA) capabilities</li>
<li>Offline mode support</li>
<li>Advanced caching strategies</li>
<li>Micro-frontend architecture</li>
</ul>
</section>
<section>
<h2>Quick Links</h2>
<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 1rem; margin-top: 1rem;">
<a href="https://portal.vorteqcoil.com/quest/dashboard" class="btn" target="_blank">Portal Login</a>
<a href="vorteqcoil-portal-documentation.md" class="btn" download>Download Text Documentation</a>
<a href="#overview" class="btn">Back to Top</a>
</div>
</section>
</div>
<footer>
<p><strong>Vorteq Coil Portal - Visual Documentation</strong></p>
<p>Created: February 15, 2026</p>
<p>For modernization project reference</p>
<p style="margin-top: 1rem; font-size: 0.9rem;">© 2026 Vorteq Coil. All rights reserved.</p>
</footer>
</body>
</html>