1<!DOCTYPE html> 2<html lang="en"> 3<head> 4 <!-- Google tag (gtag.js) -->
vendor: 68 bytes, lines 4-5
4 5 <script async src="https://www.googletagmanager.com/gtag/js?id=
5G-7M9PMK2FNN
vendor: 16 bytes, lines 5-6
5"></script> 6
6<script> 7
vendor: 146 bytes, lines 7-11
7window.dataLayer = window.dataLayer || []; 8 function gtag(){dataLayer.push(arguments);} 9 gtag('js', new Date()); 10 11 gtag('config', '
11G-7M9PMK2FNN
vendor: 8 bytes, lines 11-12
11'); 12
12</script>
12 13 <meta charset="UTF-8"> 14 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 15 <meta name="facebook-domain-verification" content="0k8dgkmdck3q6bcdaz0a8e0dnav89e" /> 16 <title>Affiliate Login - SavvyPro JOTâ¢</title> 17 <link rel="icon" type="image/png" href="images/spjot-48.png"> 18 <link rel="shortcut icon" type="image/png" href="images/spjot-48.png"> 19 <link rel="stylesheet" href="styles.css"> 20 <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet"> 21 <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css"> 22 <!-- Fallback Font Awesome CDN --> 23 <link rel="stylesheet" href="https://use.fontawesome.com/releases/v6.0.0/css/all.css"> 24
24<script>(function(w,r){w._rwq=r;w[r]=w[r]||function(){(w[r].q=w[r].q||[]).push(arguments)}})(window,'rewardful');</script>
24 25
25<script async src='https://r.wdfl.co/rw.js' data-rewardful='e4b5d8'></script>
25 26</head> 27<body> 28 <!-- Header --> 29 <header class="header"> 30 <nav class="nav"> 31 <div class="nav-brand"> 32 <a href='/'> 33 <div class="logo"> 34 <img src="images/spjot-48.png" alt="SP-JOT" class="logo-icon"> 35 <span class="logo-text">SavvyPro JOTâ¢</span> 36 </div> 37 </a> 38 </div> 39 <ul class="nav-menu"> 40 <li class="nav-item"> 41 <a class='nav-link' href='/'>Home</a> 42 </li> 43 <li class="nav-item"> 44 <a class='nav-link' href='/#features'>Features</a> 45 </li> 46 <li class="nav-item"> 47 <a class='nav-link' href='/#pricing'>Pricing</a> 48 </li> 49 <li class="nav-item"> 50 <a class='nav-link' href='/#contact'>Contact</a> 51 </li> 52 </ul> 53 <div class="hamburger"> 54 <span></span> 55 <span></span> 56 <span></span> 57 </div> 58 </nav> 59 </header> 60 61 <!-- Main Content --> 62 <main class="affiliate-login-page"> 63 <div class="container"> 64 <div class="affiliate-login-content"> 65 <div class="text-center mb-5"> 66 <div class="logo-section"> 67 <div class="logo"> 68 <img src="images/spjot-48.png" alt="SP-JOT" class="logo-icon"> 69 </div> 70 </div> 71 <h1 class="affiliate-login-title">Affiliate Login</h1> 72 </div> 73 74 <div class="affiliate-login-panel"> 75 <div class="text-center mb-4"> 76 <h5 class="welcome-heading">ð Welcome back, friend.</h5> 77 <p class="welcome-message">We're so glad to see you! Login to continue.</p> 78 </div> 79 80 <form class="affiliate-login-form" id="affiliateLoginForm"> 81 <div class="form-group"> 82 <label class="form-label required" for="affiliate_email">Email</label> 83 <input 84 required 85 autofocus 86 placeholder="[email protected]" 87 class="form-control" 88 type="email" 89 name="email" 90 id="affiliate_email" 91 > 92 </div> 93 94 <div class="form-group"> 95 <label class="form-label required" for="affiliate_password">Password</label> 96 <input 97 required 98 autocomplete="current-password" 99 placeholder="Enter your password" 100 class="form-control" 101 type="password" 102 name="password" 103 id="affiliate_password" 104 > 105 </div> 106 107 <!-- Honeypot field for spam protection --> 108 <div class="honeypot"> 109 <label for="website_url">Leave blank</label> 110 <input type="text" name="website_url" id="website_url" autocomplete="off" tabindex="-1"> 111 </div> 112 113 <div class="form-check"> 114 <input 115 class="form-check-input" 116 type="checkbox" 117 value="1" 118 name="remember_me" 119 id="affiliate_remember_me" 120 > 121 <label class="form-check-label" for="affiliate_remember_me"> 122 Remember me 123 </label> 124 </div> 125 126 <div class="form-actions"> 127 <button type="submit" class="btn btn-primary btn-large"> 128 <i class="fas fa-sign-in-alt"></i> 129 Login to Dashboard 130 </button> 131 </div> 132 </form> 133 134 <div class="login-footer"> 135 <div class="forgot-password"> 136 <a href="#forgot-password" id="forgotPasswordLink"> 137 <i class="fas fa-key"></i> 138 Forgot your password? 139 </a> 140 </div> 141 142 <div class="signup-link"> 143 <p>Don't have an affiliate account? <a href='/affiliate-signup'>Sign up here</a></p> 144 </div> 145 </div> 146 </div> 147 148 <div class="affiliate-login-footer"> 149 <p class="help-text"> 150 <i class="fas fa-info-circle"></i> 151 Need help accessing your account? <a href="mailto:[email protected]?subject=Affiliate Login Help">Contact our affiliate team</a> 152 </p> 153 </div> 154 </div> 155 </div> 156 </main> 157 158 <!-- Footer --> 159 <footer class="footer"> 160 <div class="container"> 161 <div class="footer-content"> 162 <div class="footer-brand"> 163 <div class="logo">
164 <span class="logo-text">SavvyPro JOTâ¢</span> 165 </div> 166 </div> 167 <div class="footer-links"> 168 <a href='/privacy-policy#privacy-rights'>Privacy Rights</a> 169 <a href='/cookie-policy'>Cookie Policy</a> 170 <a href='/terms-of-service'>Terms of Service</a> 171 </div> 172 </div> 173 <div class="footer-bottom"> 174 <p>© 2024 SavvyPro JOTâ¢. All rights reserved.</p> 175 </div> 176 </div> 177 </footer> 178 179
179<script> 180 // Form submission handling 181 document.getElementById('affiliateLoginForm').addEventListener('submit', function(e) { 182 e.preventDefault(); 183 184 // Get form data 185 const formData = new FormData(this); 186 const data = Object.fromEntries(formData); 187 188 // Basic validation 189 if (!data.email || !data.password) { 190 alert('Please fill in all required fields.'); 191 return; 192 } 193 194 // Validate email format 195 const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; 196 if (!emailRegex.test(data.email)) { 197 alert('Please enter a valid email address.'); 198 return; 199 } 200 201 // Simulate login process 202 const submitBtn = this.querySelector('button[type="submit"]'); 203 const originalText = submitBtn.innerHTML; 204 submitBtn.innerHTML = '<i class="fas fa-spinner fa-spin"></i> Logging in...'; 205 submitBtn.disabled = true; 206 207 // Simulate API call 208 setTimeout(() => { 209 // Simulate successful login 210 alert('Login successful! Redirecting to your Rewardful dashboard...'); 211 212 // Redirect to Rewardful Dashboard 213 // In production, this would be your actual Rewardful dashboard URL 214 window.location.href = 'https://dashboard.rewardful.com/affiliates/dashboard'; 215 216 // For demo purposes, show a message about the redirect 217 setTimeout(() => { 218 this.reset(); 219 submitBtn.innerHTML = originalText; 220 submitBtn.disabled = false; 221 }, 1000); 222 }, 2000); 223 }); 224 225 // Forgot password functionality 226 document.getElementById('forgotPasswordLink').addEventListener('click', function(e) { 227 e.preventDefault(); 228 const email = document.getElementById('affiliate_email').value; 229 230 if (email) { 231 alert(`Password reset instructions have been sent to ${email}`); 232 } else { 233 const userEmail = prompt('Please enter your email address:'); 234 if (userEmail) { 235 alert(`Password reset instructions have been sent to ${userEmail}`); 236 } 237 } 238 }); 239 240 // Mobile navigation toggle 241 const hamburger = document.querySelector('.hamburger'); 242 const navMenu = document.querySelector('.nav-menu'); 243 244 if (hamburger && navMenu) { 245 hamburger.addEventListener('click', function() { 246 navMenu.classList.toggle('active'); 247 hamburger.classList.toggle('active'); 248 }); 249 } 250 251 // Auto-focus on email field 252 document.getElementById('affiliate_email').focus(); 253 </script>
253 254</body> 255</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.