1<!DOCTYPE html> 2<html lang="en" class="pollsmax-ads-hidden" data-pm-no-ads="1"> 3<head>
vendor: 68 bytes, lines 3-4
3 4 <script async src="https://www.googletagmanager.com/gtag/js?id=
4G-5889914FSK
vendor: 16 bytes, lines 4-5
4"></script> 5
5<script>
vendor: 118 bytes, line 5
5window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments);}gtag("js",new Date());gtag("config","
5G-5889914FSK
vendor: 3 bytes, line 5
5");
5</script>
5 6
6<script src="/assets/pm-theme-boot-20260903e.js"></script>
6 7 <meta charset="utf-8" /> 8 <meta name="viewport" content="width=device-width,initial-scale=1" /> 9 <title>Log in | Pollsmax</title> 10 <meta name="description" content="Log in to your Pollsmax account." /> 11<meta name="robots" content="noindex,nofollow" /> 12 <link rel="canonical" href="https://www.pollsmax.com/login/" /> 13 <link rel="icon" href="/favicon.ico" sizes="any"> 14 <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"> 15 <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"> 16 <link rel="icon" type="image/png" sizes="48x48" href="/favicon-48x48.png"> 17 <link rel="icon" type="image/png" sizes="96x96" href="/favicon-96x96.png"> 18 <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"> 19 <link rel="preconnect" href="https://fonts.googleapis.com" /> 20 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> 21 <link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700&family=Plus+Jakarta+Sans:wght@500;600;700&display=swap" rel="stylesheet" /> 22 <link rel="stylesheet" href="/assets/pm-site-chrome-20260714i.css" /> 23 <link rel="stylesheet" href="/assets/pollsmax-auth-pages.css?v=1" /> 24 <link rel="stylesheet" href="/assets/tailwind-compiled.css?v=1" /> 25
25<script defer src="/assets/pm-shared-20260714s.js?v=no-primcal-20260911a"></script>
25 26
26<script defer id="pollsmax-supabase-config-js" src="/assets/pollsmax-supabase-config.js?v=7"></script>
26 27
27<script defer id="pollsmax-auth-js" src="/assets/pollsmax-auth.js?v=36"></script>
27 28
28<script defer src="https://cdn.vercel-insights.com/v1/script.js"></script>
28 29
29<script defer src="/assets/vercel-speed-insights.js"></script>
29 30
30<script type="text/javascript" async="async" data-noptimize="1" data-cfasync="false" src="//scripts.mediavine.com/tags/177f11e0-5cb3-48de-bfea-0a340210da36.js"></script>
30 31</head> 32<body class="sleek-home pollsmax-auth-page pollsmax-ads-hidden" data-pm-no-ads="1" data-pm-no-page-top="1" data-pm-no-multiplex="1"> 33 <header id="mainHeader" class="relative z-50 transition-all duration-300 ease-out"> 34 <div class="w-full px-4 sm:px-6 lg:px-10 xl:px-14"> 35 <div class="flex items-center justify-between gap-4 sm:gap-6 py-0.5 relative"> 36 <div class="flex items-center gap-4 sm:gap-6 md:gap-8 min-w-0"> 37 <a href="/" class="flex items-center shrink-0"> 38 <img src="/images/logo.webp" alt="POLLSMAX" class="sleek-home-header-logo h-[48px] sm:h-[52px] md:h-[56px] w-auto block" width="180" height="56" decoding="async" /> 39 </a> 40 <nav class="flex items-center gap-4 sm:gap-5 md:gap-6 shrink-0 ml-2 sm:ml-4 md:ml-6 et-header-nav--desktop" style="font-size:16px!important;line-height:1.28!important;" aria-label="Primary"> 41 <a href="/senate/" class="px-1 py-1 text-slate-200 hover:text-white">2026 Senate</a> 42 <a href="/2026-us-house/" class="px-1 py-1 text-slate-200 hover:text-white">
422026 House</a> 43 <a href="/governor/" class="px-1 py-1 text-slate-200 hover:text-white">2026 Governors</a> 44 <a href="/2028-president/" class="px-1 py-1 text-slate-200 hover:text-white">2028 President</a> 45 </nav> 46 </div> 47 <div class="sleek-home-header-meta flex items-end gap-2 sm:gap-3 shrink-0 min-w-0"> 48 <a href="https://x.com/Pollsmax" target="_blank" rel="noopener noreferrer" aria-label="Pollsmax on X"> 49 <img src="/images/twitter.svg" alt="Pollsmax on X" class="h-4 w-4" width="16" height="16" decoding="async" /> 50 </a> 51 </div> 52 </div> 53 </div> 54 </header> 55 <main class="pollsmax-auth-main mv-content"> 56<section class="pollsmax-auth-card pollsmax-content" aria-labelledby="authTitle"><h1 id="authTitle">Log in</h1><p class="pollsmax-auth-lead">Access your Pollsmax account.</p><div id="authMsg" class="pollsmax-auth-msg" role="status" aria-live="polite"></div><form id="authForm" novalidate><div class="pollsmax-auth-field"><label for="email">Email</label><input id="email" name="email" type="email" autocomplete="email" required /></div><div class="pollsmax-auth-field"><label for="password">Password</label><input id="password" name="password" type="password" autocomplete="current-password" required minlength="8" /></div><div class="pollsmax-auth-actions"><button type="submit" class="pollsmax-auth-btn pollsmax-auth-btn--primary" id="authSubmit">Log in</button></div></form><div class="pollsmax-auth-divider">or</div><div class="pollsmax-auth-actions"><button type="button" class="pollsmax-auth-btn pollsmax-auth-btn--google" id="authGoogleBtn"><svg width="18" height="18" viewBox="0 0 48 48" aria-hidden="true"><path fill="#FFC107" d="M43.6 20.5H42V20H24v8h11.3C33.7 32.7 29.3 36 24 36c-6.6 0-12-5.4-12-12s5.4-12 12-12c3 0 5.8 1.1 7.9 3l5.7-5.7C34 5.1 29.3 3 24 3 12.3 3 3 12.3 3 24s9.3 21 21 21 21-9.3 21-21c0-1.4-.1-2.3-.4-3.5z"/><path fill="#FF3D00" d="M6.3 14.7l6.6 4.8C14.7 16 19 13 24 13c3 0 5.8 1.1 7.9 3l5.7-5.7C34 5.1 29.3 3 24 3 16.1 3 9.2 7.5 6.3 14.7z"/><path fill="#4CAF50" d="M24 45c5.2 0 9.9-2 13.4-5.2l-6.2-5.2C29.3 36.7 26.8 38 24 38c-5.2 0-9.6-3.3-11.3-7.9l-6.5 5C9.1 40.6 16 45 24 45z"/><path fill="#1976D2" d="M43.6 20.5H42V20H24v8h11.3c-.8 2.2-2.3 4.1-4.1 5.5l.1.1 6.2 5.2C39.2 36.3 45 31 45 24c0-1.4-.1-2.3-.4-3.5z"/></svg>Continue with Google</button></div><div class="pollsmax-auth-links"><a href="/forgot-password/">Forgot password?</a><br />No account? <a href="/signup/">Sign up</a></div></section> 57 </main> 58 <footer class="bg-[#111827] border-t border-slate-700 mt-16" data-et-site-footer="1"> 59 <div class="w-full max-w-none px-4 sm:px-6 lg:px-10 xl:px-14 pt-8 pb-10"> 60 <p class="text-slate-500 text-sm">© 2026 Pollsmax. All rights reserved.</p> 61 </div> 62 </footer> 63
63<script> 64(function(){ 65function msg(t,k){var el=document.getElementById('authMsg');if(!el)return;el.textContent=t||'';el.className='pollsmax-auth-msg'+(t?' is-visible pollsmax-auth-msg--'+k:'');} 66function nextPath(){try{var n=new URLSearchParams(location.search).get('next');if(!n)return'/account/';n=String(n);if(n.charAt(0)!=='/')return'/account/';if(n.charAt(1)==='/'||n.charAt(1)==='\\')return'/account/';if(n.indexOf('\\')>=0||n.indexOf('://')>=0)return'/account/';var u=new URL(n,location.origin);if(u.origin!==location.origin)return'/account/';if(u.pathname.indexOf('//')>=0)return'/account/';return u.pathname+(u.search||'')+(u.hash||'');}catch(e){}return'/account/';} 67function ready(fn){if(window.PollsmaxAuth)return fn();var t=setInterval(function(){if(window.PollsmaxAuth){clearInterval(t);fn();}},40);} 68ready(function(){ 69 var submit=document.getElementById('authSubmit'); 70 var google=document.getElementById('authGoogleBtn'); 71 function setEnabled(on){ if(submit) submit.disabled=!on; if(google) google.disabled=!on; } 72 /* Warm init quietly â only show banner / disable controls if init genuinely fails. */ 73 PollsmaxAuth.getClient().then(function(){ 74 return PollsmaxAuth.getUser(); 75 }).then(function(u){ 76 if(u) location.replace(nextPath()); 77 }).catch(function(err){ 78 msg((err&&err.message)||'Login is temporarily unavailable','error'); 79 setEnabled(false); 80 }); 81 document.getElementById('authForm').addEventListener('submit',function(e){ 82 e.preventDefault(); 83 var email=document.getElementById('email').value.trim(); 84 var password=document.getElementById('password').value; 85 if(submit) submit.disabled=true; msg('',''); 86 PollsmaxAuth.signInWithEmail(email,password).then(function(res){ 87 if(res.error){msg(res.error.message||'Login failed','error'); if(submit) submit.disabled=false; return;} 88 location.replace(nextPath()); 89 }).catch(function(err){msg((err&&err.message)||'Login is temporarily unavailable','error'); if(submit) submit.disabled=false;}); 90 }); 91 document.getElementById('authGoogleBtn').addEventListener('click',function(){ 92 msg('Redirecting to Googleâ¦','info'); 93 if(google) google.disabled=true; 94 PollsmaxAuth.signInWithGoogle().then(function(res){ 95 if(res.error){msg(res.error.message||'Google sign-in failed','error'); if(google) google.disabled=false; return;} 96 if(res.data&&res.data.url){ location.assign(res.data.url); return; } 97 msg('Google sign-in failed','error'); if(google) google.disabled=false; 98 }).catch(function(err){msg((err&&err.message)||'Login is temporarily unavailable','error'); if(google) google.disabled=false;}); 99 }); 100}); 101})(); 102 </script>
102 103
103<script defer src="/assets/site-footer-pc-20260904a.js"></script>
103 104</body> 105</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.