1<!DOCTYPE html> 2<html lang="en"> 3<head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <title>Client Sign In | XPath Labs</title> 7 <link rel="icon" type="image/svg+xml" href="/favicon.svg"> 8 <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet"> 9 <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet"> 10 <link rel="stylesheet" href="styles.css"> 11 <link rel="stylesheet" href="auth-shared.css"> 12 <!-- Firebase SDK --> 13
13<script src="https://www.gstatic.com/firebasejs/10.7.1/firebase-app-compat.js"></script>
13 14
14<script src="https://www.gstatic.com/firebasejs/10.7.1/firebase-auth-compat.js"></script>
14 15</head> 16<body class="auth-page"> 17 <div class="auth-container single-column"> 18 <div class="auth-card"> 19 <div class="auth-header"> 20 <a href="/" aria-label="XPath Labs home"><img src="images/xpathlabs.jpg" alt="XPath Labs" class="auth-logo"></a> 21 <h1>Client sign in</h1> 22 <p>Growth systems that care about your business.</p> 23 </div> 24 25 <!-- Auth Tabs (Create Account temporarily hidden) --> 26 <div class="auth-tabs" style="display: none;"> 27 <button class="tab-btn active" data-tab="login">Sign In</button> 28 <button class="tab-btn" data-tab="register">Create Account</button> 29 </div> 30 31 <!-- Login Form --> 32 <form id="loginForm" class="auth-form active"> 33 <div class="form-group"> 34 <label>Email</label> 35 <input type="email" id="loginEmail" required> 36 </div> 37 <div class="form-group"> 38 <label>Password</label> 39 <div class="password-input-wrapper"> 40 <input type="password" id="loginPassword" class="form-input" required> 41 <button type="button" class="toggle-password" tabindex="-1"> 42 <i class="fas fa-eye"></i> 43 </button> 44 </div> 45 </div> 46 <button type="submit" class="btn btn-primary btn-block"> 47 <i class="fas fa-sign-in-alt"></i> Sign In 48 </button> 49 50 <div class="auth-divider"> 51 <span>or</span> 52 </div> 53 54 <button type="button" id="googleSignInBtn" class="btn btn-block" style="background: #fff; color: #333; border: 1px solid #ddd; display: flex; align-items: center; justify-content: center; gap: 0.5rem;"> 55 <img src="https://www.gstatic.com/firebasejs/ui/2.0.0/images/auth/google.svg" alt="Google" style="width: 18px; height: 18px;"> 56 Continue with Google 57 </button> 58 59 <div class="auth-footer"> 60 <a href="forgot-password.html">Forgot Password?</a> 61 </div> 62 </form> 63 64 <!-- Register Form --> 65 <form id="registerForm" class="auth-form"> 66 <div class="form-group"> 67 <label>Full Name</label> 68 <input type="text" id="registerName" required> 69 </div> 70 <div class="form-group"> 71 <label>Email</label> 72 <input type="email" id="registerEmail" required> 73 </div> 74 <div class="form-group"> 75 <label>Company</label> 76 <input type="text" id="registerCompany" required> 77 </div> 78 <div class="form-group"> 79 <label>Account Type</label> 80 <select id="registerAccountType" required> 81 <option value="">Select type</option> 82 <option value="brand">Brand (I manage my own ads)</option> 83 <option value="agency">Agency (I manage client ads)</option> 84 </select> 85 </div> 86 <div class="form-group"> 87 <label>Website <span style="font-weight: normal; color: #9ca3af;">(optional)</span></label> 88 <input type="url" id="registerWebsite" placeholder="https://yourcompany.com"> 89 </div> 90 <div class="form-group"> 91 <label>Password</label> 92 <div class="password-input-wrapper"> 93 <input type="password" id="registerPassword" class="form-input" required> 94 <button type="button" class="toggle-password" tabindex="-1"> 95 <i class="fas fa-eye"></i> 96 </button> 97 </div> 98 </div> 99 <div class="form-group"> 100 <label>Monthly Ad Spend</label> 101 <select id="registerAdSpend" required> 102 <option value="">Select range</option> 103 <option value="<5k">Less than $5,000</option> 104 <option value="5k-25k">$5,000 - $25,000</option> 105 <option value="25k-100k">$25,000 - $100,000</option> 106 <option value="100k+">$100,000+</option> 107 </select> 108 </div> 109 <button type="submit" class="btn btn-primary btn-block"> 110 <i class="fas fa-user-plus"></i> Create Account 111 </button> 112 113 <div class="auth-footer"> 114 <p>
114By signing up, you agree to our <a href="terms-of-service.html" target="_blank">Terms</a> and <a href="privacy-policy.html" target="_blank">Privacy Policy</a></p> 115 </div> 116 </form> 117 </div> 118 </div> 119 120
120<script src="firebase-config.js"></script>
120 121
121<script src="auth-shared.js"></script>
121 122
122<script src="auth.js"></script>
122 123
123<script src="google-signin.js"></script>
123 124
124<script>GoogleSignIn.attachToButtons(['googleSignInBtn'], { directSignIn: true });</script>
124 125 126 <!--Start of Tawk.to Script--> 127
127<script type="text/javascript"> 128 var Tawk_API=Tawk_API||{}, Tawk_LoadStart=new Date(); 129 (function(){ 130 var s1=document.createElement("script"),s0=document.getElementsByTagName("script")[0]; 131 s1.async=true; 132 s1.src='https://embed.tawk.to/69bf0452d7422e1c38d0cd91/1jk92hp58'; 133 s1.charset='UTF-8'; 134 s1.setAttribute('crossorigin','*'); 135 s0.parentNode.insertBefore(s1,s0); 136 })(); 137 </script>
137 138 <!--End of Tawk.to Script--> 139</body> 140</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.