Zoom Rugs
Secure Portal
Concierge Access
Enter the email connected to your Zoom Rugs estimate, invoice, pickup, or customer record.
New to Zoom Rugs?
Active Client Dashboard
Welcome Back, Client.
Your current rug project, invoices, photos, and white-glove pickup details are available below.
Projects
1
Cleaning & Restoration
Open Balance
$450
Estimate Approved
Photos
4
Initial Inspection
Next Step
Wash
In facility
Project Timeline
Payment Center
Rug Passportâ„¢
Your private collection history and care notes.
Message Concierge
Need to send more photos or ask a question about your project?
function handleLogin(e) { e.preventDefault(); const email = document.getElementById('email-input').value.trim().toLowerCase();
const btnText = document.querySelector('#login-btn span'); const spinner = document.getElementById('login-spinner'); btnText.style.display = 'none'; spinner.style.display = 'block';
// RESTRICTED EMAILS ONLY const allowedEmails = ['cactus006@gmail.com', 'info@zoomrugs.com', 'max@zoomrugs.com'];
setTimeout(() => { if (allowedEmails.includes(email)) { document.getElementById('login-screen').classList.add('hidden'); document.getElementById('app-interface').classList.remove('hidden'); document.getElementById('user-name-display').innerText = email.split('@')[0]; } else { btnText.style.display = 'block'; spinner.style.display = 'none';
let errorMsg = document.getElementById('login-error'); if (!errorMsg) { errorMsg = document.createElement('p'); errorMsg.id = 'login-error'; errorMsg.className = 'text-red-400 text-xs mt-4 bg-red-900/20 border border-red-500/30 py-3 px-4 rounded-sm text-center'; document.querySelector('form').appendChild(errorMsg); } errorMsg.innerText = "Error: Email not found in VIP database. Access denied."; } }, 1000); }
function signOut() { document.getElementById('email-input').value = ''; document.getElementById('dashboard-view').classList.add('hidden'); document.getElementById('login-view').classList.remove('hidden'); document.getElementById('sign-out-btn').classList.add('hidden'); document.getElementById('sign-out-btn').classList.remove('md:block'); }