1 2 3<!DOCTYPE html> 4<html xmlns="http://www.w3.org/1999/xhtml"> 5<head><title> 6 Sunwater Online 7</title><meta name="viewport" content="width=device-width, initial-scale=1.0" /> 8 <style> 9 @font-face { 10 font-family: 'Rubik'; 11 font-style: normal; 12 font-weight: 300 700; 13 font-display: swap; 14 src: url('css/fonts/rubik-latin.woff2') format('woff2'); 15 } 16 17 * { 18 margin: 0; 19 padding: 0; 20 box-sizing: border-box; 21 } 22 23 body { 24 font-family: 'Rubik', sans-serif; 25 font-size: 76%; 26 background: #ebeff3; 27 color: #02355e; 28 min-height: 100vh; 29 } 30 31 a { 32 color: #02355e; 33 text-decoration: underline; 34 } 35 36 a:hover { 37 text-decoration: none; 38 } 39 40 /* Centered container matching old 960px layout */ 41 .login-container { 42 width: 960px; 43 margin: 14px auto 0 auto; 44 border: 1px solid #cdcdcd; 45 background: #fff; 46 position: relative; 47 } 48 49 /* Header */ 50 .login-header { 51 background: #031E2F; 52 padding: 8px 20px 0 20px; 53 position: relative; 54 } 55 56 .login-header-top { 57 display: flex; 58 align-items: flex-start; 59 justify-content: space-between; 60 } 61 62 .login-brand { 63 display: flex; 64 flex-direction: column; 65 } 66 67 #logo { 68 height: 80px; 69 } 70 71 #logo a { 72 display: block; 73 width: 200px; 74 height: 80px; 75 background: url('https://www.sunwater.com.au/wp-content/themes/sunwater/images/Sunwater_Logo_New.png') no-repeat left center; 76 background-size: contain; 77 text-indent: -9999px; 78 overflow: hidden; 79 } 80 81 .login-brand-sub { 82 color: #ffffff; 83 font-size: 15px; 84 margin-top: 2px; 85 margin-bottom: 16px; 86 font-style: normal; 87 font-weight: normal; 88 } 89 90 .login-header-links { 91 padding-top: 8px; 92 } 93 94 .login-header-links a { 95 color: #ffffff; 96 text-decoration: underline; 97 font-size: 1em; 98 font-weight: bold; 99 padding: 0 10px; 100 } 101 102 .login-header-links a:hover { 103 text-decoration: none; 104 } 105 106 .login-header-links .sep { 107 color: #ffffff; 108 } 109 110 .login-header-links a.highlight { 111 color: #00B0CA; 112 } 113 114 /* Nav tabs */ 115 .login-nav { 116 padding: 10px 0 12px 20px; 117 } 118 119 .login-nav a { 120 display: inline-block; 121 color: #00B0CA; 122 text-decoration: none; 123 font-size: 18px; 124 font-weight: bold; 125 padding: 6px 12px; 126 margin-right: 8px; 127 } 128 129 .login-nav a:first-child { 130 padding-left: 0; 131 } 132 133 .login-nav a:hover { 134 text-decoration: underline; 135 } 136 137 /* Content area */ 138 .login-body { 139 padding: 20px 30px 30px 30px; 140 } 141 142 .login-terms h3 { 143 font-size: 1.5em; 144 font-weight: bold; 145 color: #02355e; 146 margin-bottom: 10px; 147 } 148 149 .login-terms p { 150 font-size: 1.1em; 151 color: #333; 152 line-height: 1.6; 153 margin-bottom: 8px; 154 } 155 156 .login-terms a { 157 color: #02355e; 158 text-decoration: underline; 159 } 160 161 .login-terms a:hover { 162 text-decoration: none; 163 } 164 165 .login-form-area { 166 margin-top: 20px; 167 } 168 169 /* Footer */ 170 .login-footer { 171 width: 960px; 172 margin: 30px auto 20px auto; 173 text-align: center; 174 padding: 16px 0; 175 border-top: 1px solid #cdcdcd; 176 color: #6b8bad; 177 font-size: 1.1em; 178 } 179 180 .login-footer a { 181 color: #00B0CA; 182 text-decoration: none; 183 margin: 0 6px; 184 } 185 186 .login-footer a:hover { 187 text-decoration: underline; 188 } 189 190 .login-footer .sep { 191 color: #cdcdcd; 192 margin: 0 4px; 193 } 194 195 /* Responsive: shrink container on small screens */ 196 @media (max-width: 980px) { 197 .login-container, 198 .login-footer { 199 width: auto; 200 margin-left: 10px; 201 margin-right: 10px; 202 } 203 } 204 </style> 205</head> 206<body> 207 <form method="post" action="./CustomLogin.aspx" id="form1"> 208<div class="aspNetHidden"> 209<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" /> 210<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" /> 211<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="DTrathlrRxhI2DRK/1FLc6Vrfsx33B9YAYE87RzTVplwgKSEJ/iYAUFSRHluK5K
211FS4xxGgSf/PDCZZQZ3iX0jcE8N8dVYlTUK7iEHVakIAvVgrgQ6fSKIVdjVnzb/GNn5JYCS9fVKcEdcSb/r0NR9Yj6jIH4sRZeWVL/2njl1rPTtLGFLyXBtAmx+T33c+nPRhQtkQU43u/+N7hY66ByXcHwcizWK18FQCrv2kSFqQMQ7aHGicxM/nKBHm1UONFDl5V39MMvsb+sIaG9" /> 212</div> 213
214<script type="text/javascript"> 215//<![CDATA[ 216var theForm = document.forms['form1']; 217if (!theForm) { 218 theForm = document.form1; 219} 220function __doPostBack(eventTarget, eventArgument) { 221 if (!theForm.onsubmit || (theForm.onsubmit() != false)) { 222 theForm.__EVENTTARGET.value = eventTarget; 223 theForm.__EVENTARGUMENT.value = eventArgument; 224 theForm.submit(); 225 } 226} 227//]]> 228</script>
228 229 230
231<script src="/WebResource.axd?d=pynGkmcFUV1YC1KL-6LtK2OX7WkI0pKBRVf1AI5JAw1kGykXgu5VV4d-xfg1&t=639190879820000000" type="text/javascript"></script>
231 232 233
234<script src="/ScriptResource.axd?d=D9drwtSJ4hDq5Fzf44HLZRnwnfJKk5nfKaYABJ1omf0G6CdW6ojlqmuAUfrGPWpGEJTVx5G9GW3JfvWnN9uLnbm3Ckpfxl0OdW_9MdGydgpbwkCUPSN033XwJPfvXbUL6y_CAae1S3olp0Jl0&t=3e3fe94" type="text/javascript"></script>
vendor: 2 bytes, line 234
234
235<script type="text/javascript"> 236//<![CDATA[ 237if (typeof(Sys) === 'undefined') throw new Error('ASP.NET Ajax client-side framework failed to load.'); 238//]]> 239</script>
239 240
241<script src="/ScriptResource.axd?d=JnUc-DEDOM4Fu4_U1PXF1idimhX0pDjRM4eoZTSCMQ1uhIwAcUACOLFQPRfxnMeRGiR_DzKmK7GeGMGenq7WmrTqgoBMUsi9Ex-W_8lnTJlI4ariv3u4L0KR7FwS9tiDL4N1kE8kXPzoxs1z2SHtoHidIQ81&t=3e3fe94" type="text/javascript"></script>
241 242<div class="aspNetHidden"> 243 244 <input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="6C524DEB" /> 245 <input type="hidden" name="__VIEWSTATEENCRYPTED" id="__VIEWSTATEENCRYPTED" value="" /> 246 <input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="C/N7u9dC9BDON2rtyHTP/oj0QkXmXewaWT7Q07fGSRRCYJRvx1NBRzM6sj2FcWdvA5NnqSeJlq4Mi17gMvioLdp4y/QQhJmxXXtxfgI71rtxgqijNBvmyJXPlmrgNacj6MxLFwNhp96yINZ1dx9T03+ZDgI=" /> 247</div> 248
248<script type="text/javascript"> 249//<![CDATA[ 250Sys.WebForms.PageRequestManager._initialize('ScriptManager1', 'form1', [], [], [], 90, ''); 251//]]> 252</script>
252 253 254 255 <div class="login-container"> 256 <div class="login-header"> 257 <div class="login-header-top"> 258 <div class="login-brand"> 259 <div id="logo"><a href="http://www.sunwater.com.au" title="Sunwater Home">Sunwater</a></div> 260 <div class="login-brand-sub">Sunwater Online</div> 261 </div> 262 <div class="login-header-links"> 263 <a href="https://www.sunwater.com.au/about/contact/" target="_blank">Contact Us</a> 264 <span class="sep">|</span> 265 <a href="https://www.sunwater.com.au/customer/managing-your-account/" target="_blank" class="highlight">HELP</a> 266 <span class="sep">|</span> 267 <a href="https://www.sunwater.com.au" target="_blank">Home</a> 268 </div> 269 </div> 270 <div class="login-nav"> 271 <a href="/CustomLogin.aspx">Login</a> 272 <a href="/ForgotPassword.aspx">Forgot Password</a> 273 </div> 274 </div> 275 276 <div class="login-body"> 277 <div class="login-terms"> 278 <h3>Login</h3> 279 <p>Please note that by logging into Sunwater Online you are agreeing to the terms and conditions relating to its use. You can read the terms and conditions <a href="http://www.sunwater.com.au/schemes/sunwateronline/terms-and-conditions" target="_blank">here.</a></p> 280 <p>Please also note that Sunwater collects and uses your personal information to provide you with our products and services, to enable us to fulfil our obligations under any contract with you, for our business operations and to comply with the law. <a href="http://www.sunwater.com.au/home/privacy" target="_blank">Our Privacy Policy</a> tells you how we usually collect, use and disclose your personal information and how you can ask for access to it or seek correction of it. Our Privacy Policy also contains information about how you can make a complaint and how we will deal with such a complaint.</p> 281 <p>If you would like further information about our privacy policies or practices, please contact our Privacy Contact Officer by email: <a href="mailto:[email protected]">[email protected]</a> or other contact details can be found in our Privacy Policy.</p> 282 </div> 283 284 <div class="login-form-area"> 285 286
287<script src="https://cdn.tailwindcss.com"></script>
vendor: 2 bytes, line 287
287
288<script> 289 tailwind.config = { 290 theme: { 291 extend: { 292 colors: { 293 primary: '#00B0CA', 294 secondary: '#031E2F' 295 } 296 } 297 } 298 } 299</script>
299 300 301<style> 302 /* Override DNN page styles - only when rendered inside DNN's #Form (not CustomLogin.aspx) */ 303 #Form body { 304 overflow: hidden !important; 305 } 306 #Form { 307 position: fixed !important; 308 top: 0 !important; 309 left: 0 !important; 310 right: 0 !important; 311 bottom: 0 !important; 312 width: 100vw !important; 313 height: 100vh !important; 314 margin: 0 !important; 315 padding: 0 !important; 316 background: white !important; 317 z-index: 9999 !important; 318 } 319 /* Override page-level a underline for buttons */ 320 .login-form-container a.no-underline { 321 text-decoration: none !important; 322 } 323 /* MFA channel radio buttons: space the label off the radio circle */ 324 .mfa-channel-list label { 325 margin-left: 8px; 326 margin-right: 16px; 327 } 328 .mfa-channel-list input[type="radio"] { 329 vertical-align: middle; 330 } 331</style> 332 333<div class="login-form-container"> 334 <div class="w-full max-w-lg space-y-6"> 335 336 <div id="customLogin_divLoginFields"> 337 <!-- Error Message Display --> 338 339 340 <div class="space-y-4"> 341 <!-- Login ID row: label beside input --> 342 <div class="grid grid-cols-[120px_1fr] items-center gap-x-4"> 343 <label for="customLogin_txtUsername" id="customLogin_plUsername" class="text-sm font-bold text-gray-700 text-right">Login ID</label> 344 <input name="customLogin$txtUsername" type="text" id="customLogin_txtUsername" class="block w-full rounded-sm border border-gray-300 py-1.5 px-3 text-gray-900 focus:ring-2 focus:ring-inset focus:ring-[#00B0CA] sm:text-sm sm:leading-6" placeholder="" /> 345 </div> 346 347 <!-- Password row: label beside input --> 348 <div class="grid grid-cols-[120px_1fr] items-center gap-x-4"> 349 <label for="customLogin_txtPassword" id="customLogin_plPassword" class="text-sm font-bold text-gray-700 text-right" resourcekey="Password">Password</label> 350 <input name="customLogin$txtPassword" type="password" id="customLogin_txtPassword" class="block w-full rounded-sm border border-gray-300 py-1.5 px-3 text-gray-900 focus:ring-2 focus:ring-inset focus:ring-[#00B0CA] sm:text-sm sm:leading-6" placeholder="" /> 351 </div> 352 353 354 355 <!-- MFA Channel Selection Section (shown when both email and SMS are available) --> 356 357 358 <!-- MFA Verification Section (shown after credentials are validated) --> 359 360 361 362 363 364 365 <!-- Hidden: remember me and forgot password link (kept for functionality but not shown in main form) --> 366 <div style="display:none;"> 367 <span resourcekey="Remember"><input id="customLogin_chkCookie" type="checkbox" name="customLogin$chkCookie" /></span> 368 <span id="customLogin_lblLoginRememberMe">Remember me</span> 369 <div id="customLogin_liPassword"> 370 <a id="customLogin_passwordLink" resourcekey="cmdPassword">Forgot password?</a> 371 </div> 372 </div> 373 374 <!-- Buttons matching old page: LOGIN + FORGOT PASSWORD stacked --> 375 <div class="pt-4 space-y-3" style="max-width: 340px;"> 376 <a id="customLogin_cmdLogin" class="flex w-full justify-center rounded-sm bg-[#00B0CA] px-3 py-3 text-sm font-bold uppercase tracking-wider text-white shadow-sm hover:bg-[#009AB3] focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[#00B0CA]" resourcekey="cmdLogin" href="javascript:__doPostBack('customLogin$cmdLogin','')">Sign in</a> 377 <a id="customLogin_forgotPasswordBtn" class="flex w-full justify-center rounded-sm bg-[#00B0CA] px-3 py-3 text-sm font-bold uppercase tracking-wider text-white shadow-sm hover:bg-[#009AB3] no-underline" href="/ForgotPassword.aspx">FORGOT PASSWORD</a> 378 </div> 379 380 <!-- MFA actions (shown only during MFA verification) --> 381 382 </div> 383 384 385 </div> 386 387 <!-- Change Password Section --> 388 389 390 <div id="customLogin_divLogin"></div> 391 392 393 </div> 394</div> 395
396<script type="text/javascript"> 397 // Vanilla JavaScript - No jQuery dependencies 398 (function () { 399 const disabledActionClass = "opacity-50 pointer-events-none"; 400 401 function isActionDisabled(el) { 402 return el && el.classList.contains('pointer-events-none'); 403 } 404 405 function disableAction(el) { 406 if (el == null || el.classList.contains('pointer-events-none')) { 407 return; 408 } 409 el.classList.add('opacity-50', 'pointer-events-none'); 410 } 411 412 function enableAction(el) { 413 if (el == null) { 414 return; 415 } 416 el.classList.remove('opacity-50', 'pointer-events-none'); 417 } 418 419 function setUpLogin() { 420 const actionLinks = document.querySelectorAll('a[id*="SunWaterCustom_Login"]'); 421 actionLinks.forEach(function (action) { 422 action.addEventListener('click', function (e) { 423 if (isActionDisabled(this)) { 424 e.preventDefault(); 425 return false; 426 } 427 disableAction(this); 428 }); 429 }); 430 } 431 432 document.addEventListener('DOMContentLoaded', function () { 433 // Handle Enter key in login form 434 document.addEventListener('keydown', function (e) { 435 if (e.target.matches('input[type="text"], input[type="password"]') && e.keyCode === 13) { 436 const loginButton = document.getElementById('customLogin_cmdLogin'); 437 if (loginButton && !isActionDisabled(loginButton)) { 438 disableAction(loginButton); 439 setTimeout(function () { 440 const href = loginButton.getAttribute('href'); 441 if (href) { 442 eval(href); 443 } else { 444 loginButton.click(); 445 } 446 }, 100); 447 e.preventDefault(); 448 return false; 449 } 450 } 451 }); 452 453 setUpLogin(); 454 455 // Re-enable actions after postback (if using UpdatePanel) 456 if (typeof Sys !== 'undefined' && Sys.WebForms && Sys.WebForms.PageRequestManager) { 457 Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function () { 458 const actionLinks = document.querySelectorAll('a[id*="SunWaterCustom_Login"]'); 459 actionLinks.forEach(enableAction); 460 setUpLogin(); 461 }); 462 } 463 }); 464 })(); 465</script>
465 466 467 </div> 468 </div> 469 </div> 470 471 <div class="login-footer"> 472 <div style="margin-bottom: 8px; color: #031E2F; font-style: italic;">Delivering water for prosperity</div> 473 © Sunwater | 474 <a href="http://www.sunwater.com.au/home/privacy" target="_blank">Privacy</a> | 475 <a href="http://www.sunwater.com.au/about-sunwater/right-to-information" target="_blank">Right to Information</a> | 476 <a href="http://www.sunwater.com.au/home/terms-of-use" target="_blank">Terms of Use</a> 477 </div> 478 </form> 479</body> 480</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.