1<!DOCTYPE html> 2<html lang="en" data-color-scheme="system"> 3 <head> 4 <meta charset="utf-8"> 5 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 6 7 <title>Dollars & Sense</title> 8 9 <meta name="HandheldFriendly" content="True"> 10 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 11 12 <meta name="theme-color" content="#5d6735"> 13 14 15 <link rel="preload" href="https://www.dollarsandsense.org/assets/dist/app.min.js?v=4-xWwC_R-kEIQpp-" as="script"> 16 <link rel="preload" href="https://www.dollarsandsense.org/assets/dist/app.min.css?v=-k2eQ3U9ZDqbLzxQ" as="style"> 17 18 <link rel="preconnect" href="https://fonts.googleapis.com"> 19 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 20 21 22 23 24 25 26 27 28 29 <link rel="preload stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&family=Playfair+Display:ital,wght@0,600;0,700;0,800;0,900;1,600;1,700;1,800;1,900&display=swap" 30 as="style" onload="this.onload=null;this.rel='stylesheet'" crossorigin> 31 <style> 32 body { --font-body: var(--gh-font-body, 'Inter'), sans-serif; --font-headings: var(--gh-font-heading, 'Playfair Display'), serif; } 33 body h1, body h2, body h3 { font-weight: var(--font-weight-extra-bold); } 34 </style> 35 36 37
37<script async defer src="https://www.dollarsandsense.org/assets/dist/app.min.js?v=4-xWwC_R-kEIQpp-"></script>
37 38 39 <link rel="stylesheet" type="text/css" href="https://www.dollarsandsense.org/assets/dist/app.min.css?v=-k2eQ3U9ZDqbLzxQ"> 40 41 <style> 42 :root { 43 --global-max-width: 1400px; /* site max width */ 44 --global-content-width: 700px; /* post-content-width */ 45 --global-wide-width: 960px; /* site max width */ 46 --global-radius: 0px; /* default radius */ 47 --global-gallery-gap: 1em; /* Image gallery distance between images */ 48 --global-hyphens: none; /* none/auto */ 49 --global-header-height: 92px; 50 --global-theme-notifications: visible; /* visible/hidden */ 51 --global-progress-bar: visible; /* visible/hidden */ 52 --global-content-preview-fading: 0%; /* 50%-100% for fading effect */ 53 --global-scroll-behavior: smooth; 54 } 55</style> 56
57<script> 58 let preferredTheme = localStorage.getItem('PREFERRED_COLOR_SCHEME') || `system`; 59 document.documentElement.setAttribute('data-color-scheme', preferredTheme); 60 61 // Global values needed 62 const themeGlobal = { 63 currentPage: parseInt(''), 64 nextPage: parseInt(''), 65 nextPageLink: '', 66 maxPages: parseInt(''), 67 lastPage: `` === `` ? true : false, 68 postsPerPage: parseInt('12'), 69 scrollPos: 0, 70 imageLightbox: false 71 } 72 73 // Calculate contrast & HSL value; 74 function getBrandColorInfo(hexcolor) { 75 // get contrast 76 if (hexcolor.slice(0, 1) === '#') { hexcolor = hexcolor.slice(1); } 77 if (hexcolor.length === 3) { hexcolor = hexcolor.split('').map(function (hex) { return hex + hex;}).join(''); } 78 let r = parseInt(hexcolor.substr(0,2),16), g = parseInt(hexcolor.substr(2,2),16), b = parseInt(hexcolor.substr(4,2),16); 79 let yiq = ((r * 299) + (g * 587) + (b * 114)) / 1000; 80 const colorContrast = (yiq >= 128) ? '#000' : '#fff'; 81 82 //get HSL 83 r /= 255, g /= 255, b /= 255; 84 const max = Math.max(r, g, b), min = Math.min(r, g, b); 85 let h, s, l = (max + min) / 2; 86 if ( max == min ) { h = s = 0; } else { 87 let d = max - min; 88 s = l > 0.5 ? d / (2 - max - min) : d / (max + min); 89 switch(max){ 90 case r: h = (g - b) / d + (g < b ? 6 : 0); break; 91 case g: h = (b - r) / d + 2; break; 92 case b: h = (r - g) / d + 4; break; 93 } 94 h /= 6; 95 } 96 const colorHSL = [Math.round(h * 360), Math.round(s * 100), Math.round(l * 100)]; 97 98 // return 99 return { colorContrast, colorHSL } 100 }; 101 102 const brandColor = getBrandColorInfo("#5d6735"); 103 let style = document.createElement('style'); 104 style.innerHTML = `:root { 105 --color-brand-contrast: ${brandColor.colorContrast}; 106 --color-brand-h: ${brandColor.colorHSL[0]}; 107 --color-brand-s: ${brandColor.colorHSL[1]}%; 108 --color-brand-l: ${brandColor.colorHSL[2]}%; 109 --color-brand-hsl: ${brandColor.colorHSL[0]} ${brandColor.colorHSL[1]}% ${brandColor.colorHSL[2]}%; 110 }` 111 document.getElementsByTagName('head')[0].appendChild(style); 112</script>
112 113 114 115 116 117 118 <link rel="icon" href="https://storage.ghost.io/c/17/74/1774418b-e0eb-4470-b29b-ceb3f0599dab/content/images/size/w256h256/2025/06/D_S_logo_for_Donorbox__1_-removebg-preview.png" type="image/png"> 119 <link rel="canonical" href="https://www.dollarsandsense.org/signin/"> 120 <meta name="referrer" content="no-referrer-when-downgrade"> 121 122 <meta property="og:site_name" content="Dollars & Sense"> 123 <meta property="og:type" content="website"> 124 <meta property="og:title" content="Dollars & Sense"> 125 <meta property="og:url" content="https://www.dollarsandsense.org/signin/"> 126 <meta property="article:publisher" content="https://www.facebook.com/dollarsandsenseeconomics/"> 127 <meta name="twitter:card" content="summary"> 128 <meta name="twitter:title" content="Dollars & Sense"> 129 <meta name="twitter:url" content="https://www.dollarsandsense.org/signin/"> 130 <meta name="twitter:site" content="@Dollars_Sense"> 131 132 <meta name="generator" content="Ghost 6.68"> 133 <link rel="alternate" type="application/rss+xml" title="Dollars & Sense" href="https://www.dollarsandsense.org/latest/rss/"> 134
134<script defer src="https://cdn.jsdelivr.net/ghost/portal@~2.71/umd/portal.min.js" data-i18n="true" data-ghost="https://www.dollarsandsense.org/" data-key="2d04fc49de79352c3befed1dc2" data-api="https://dollarsandsense.ghost.io/ghost/api/content/" data-locale="en" crossorigin="anonymous"></script>
134<style id="gh-members-styles">.gh-post-upgrade-cta-content, 135.gh-post-upgrade-cta { 136 display: flex; 137 flex-direction: column; 138 align-items: center; 139 font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; 140 text-align: center; 141 width: 100%; 142 color: #ffffff; 143 font-size: 16px; 144} 145 146.gh-post-upgrade-cta-content { 147 border-radius: 8px; 148 padding: 40px 4vw; 149} 150 151.gh-post-upgrade-cta h2 { 152 color: #ffffff; 153 font-size: 28px; 154 letter-spacing: -0.2px; 155 margin: 0; 156 padding: 0; 157} 158 159.gh-post-upgrade-cta p { 160 margin: 20px 0 0; 161 padding: 0; 162} 163 164.gh-post-upgrade-cta small { 165 font-size: 16px; 166 letter-spacing: -0.2px; 167} 168 169.gh-post-upgrade-cta a { 170 color: #ffffff; 171 cursor: pointer; 172 font-weight: 500; 173 box-shadow: none; 174 text-decoration: underline; 175} 176 177.gh-post-upgrade-cta a:hover { 178 color: #ffffff; 179 opacity: 0.8; 180 box-shadow: none; 181 text-decoration: underline; 182} 183 184.gh-post-upgrade-cta a.gh-btn { 185 display: block; 186 background: #ffffff; 187 text-decoration: none; 188 margin: 28px 0 0; 189 padding: 8px 18px; 190 border-radius: 4px; 191 font-size: 16px; 192 font-weight: 600; 193} 194 195.gh-post-upgrade-cta a.gh-btn:hover { 196 opacity: 0.92; 197}</style>
197<script async src="https://js.stripe.com/v3/"></script>
197 198
198<script defer src="https://cdn.jsdelivr.net/ghost/sodo-search@~1.8/umd/sodo-search.min.js" data-key="2d04fc49de79352c3befed1dc2" data-styles="https://cdn.jsdelivr.net/ghost/sodo-search@~1.8/umd/main.css" data-sodo-search="https://dollarsandsense.ghost.io/" data-locale="en" crossorigin="anonymous"></script>
198 199 200 <link href="https://www.dollarsandsense.org/webmentions/receive/" rel="webmention"> 201
201<script defer src="/public/cards.min.js?v=ShRHxgy4po8zN-Wf"></script>
201 202 <link rel="stylesheet" type="text/css" href="/public/cards.min.css?v=WwnU9jw5ancNC8Gc"> 203
203<script defer src="/public/comment-counts.min.js?v=oFYkaGLdiMqB8VN9" data-ghost-comments-counts-api="https://www.dollarsandsense.org/members/api/comments/counts/"></script>
203 204
204<script defer src="/public/member-attribution.min.js?v=AKG4hWena9j3yX3I"></script>
204 205
205<script defer src="/public/ghost-stats.min.js?v=vFcCUf6ZQ0Hyhc8h" data-stringify-payload="false" data-datasource="analytics_events" data-storage="localStorage" data-host="https://www.dollarsandsense.org/.ghost/analytics/api/v1/page_hit" tb_site_uuid="1774418b-e0eb-4470-b29b-ceb3f0599dab" tb_post_uuid="undefined" tb_post_type="null" tb_member_uuid="undefined" tb_member_status="undefined" tb_gift_link=""></script>
205<style>:root {--ghost-accent-color: #5d6735;}</style> 206 <style> 207 208 .header__brand img { height: 80px; max-height: none; } 209 210 .post-info__avatars { display: none; } 211 212 iframe.gh-portal-notification-iframe { display: none; } 213 214</style> 215 216<style> 217 .post-hero__img { 218 border: 2px solid #000; 219 } 220 </style> 221 222 223<style> 224 /* Migrate Styles */ 225 .ds-sources-box { 226 font-size: 80%; 227 opacity: 0.8; 228 } 229 230 #features ul, 231 #toclist { 232 padding-left: 0; 233 } 234 235 #features li, 236 #toclist li { 237 display: grid; 238 grid-template-columns: repeat(5, 1fr); 239 column-gap: 20px; 240 margin-bottom: 20px; 241 } 242 243 #features li>img, 244 #toclist li a:nth-child(1) { 245 grid-row-start: 1; 246 grid-row-end: 5; 247 } 248 249 #features li>img, 250 #toclist li a:nth-child(1) img { 251 display: block; 252 width: 100%; 253 } 254 255 #features li *:nth-child(2), 256 #toclist li *:nth-child(2), 257 #features li .author, 258 #toclist li .author, 259 #features li .teaserweb, 260 #toclist li .teaserweb, 261 #features li .teaserprint { 262 grid-column-start: 2; 263 grid-column-end: 6; 264 } 265 266 #toclist .headline, 267 #features .headline { 268 font-weight: bold; 269 margin-bottom: 0; 270 } 271 272 #toclist .author, 273 #features .author { 274 font-size: smaller; 275 text-transform: small-caps; 276 opacity: 0.5; 277 margin-bottom: 0; 278 } 279 280 #subbuttons { 281 display: flex; 282 justify-content: center; 283 margin-top: 3em; 284 margin-bottom: 3em; 285 } 286 287 #subbuttons li { 288 margin: 0.5em; 289 list-style: none; 290 } 291 292 #subbuttons a { 293 display: inline-block; 294 font-weight: bold; 295 color: #fff; 296 background: var(--ghost-accent-color, #000); 297 padding: 0.2em 0.6em; 298 text-decoration: none; 299 border-radius: 3px; 300 } 301 302 #regulars ul { 303 padding-left: 0; 304 } 305 306 #regulars li { 307 list-style: none; 308 } 309 310 #regulars .section { 311 font-weight: bold; 312 display: block; 313 } 314 315 /* .tag-hash-wp .gh-content .kg-card.kg-callout-card { 316 background: #eee; 317 font-size: 90%; 318 } 319 320 .tag-hash-wp .gh-content .kg-card.kg-callout-card p { 321 margin-top: 1em; 322 } */ 323 324</style> 325 326 327<style> 328 /* This is so the from snippet floats right. */ 329.float-left-half figure, 330.float-left-two-thirds figure { 331 float: left; 332 margin: 8px 20px 6px 0; 333 334} 335.float-right-half figure, 336.float-right-two-thirds figure { 337 float: right; 338 margin: 8px 0 6px 20px; 339} 340.float-left-half figure, 341.float-right-half figure { 342 max-width: 50%; 343} 344@media (min-width: 64em) { 345 .float-left-two-thirds figure, 346 .float-right-two-thirds figure { 347 max-width: 67%; 348 } 349} 350 351 352 353</style> 354 355 356<style> 357 /* Styling for regular sidebar */ 358 .custom-sidebar2 { 359 width: 100%; 360 padding: 1.5em 1.5em 0 1.5em; 361 margin-bottom: 2em; 362 background-color: #ebf1e0; 363 border: 3px solid #ccc; 364 border-radius: 5px; 365} 366 367 /* Dark-mode specific styles */ 368@media (prefers-color-scheme: dark) { 369 .custom-sidebar2 { 370 background-color: #727A61; /* New dark-mode background color */ 371 border-color: #555; /* New dark-mode border color */ 372 } 373} 374 375@media (max-width: 768px) { 376 .custom-sidebar2 { 377 width: 100%; 378 margin-left: 0; 379 margin-top: 2em; 380 } 381} 382</style> 383 384<style> 385 /* Styling for old UAWSJ sidebar */ 386.custom-sidebar { 387 float: right; 388 width: 100%; 389 margin-bottom: 2em; 390 padding: 1.5em 1.5em 0 1.5em; 391 background-color: #f8f8f8; 392 border: 3px solid #ccc; 393 border-radius: 5px; 394 font-family: "Tinos" 395} 396 397 398 /* Dark-mode specific styles */ 399@media (prefers-color-scheme: dark) { 400 .custom-sidebar { 401 background-color: #3b3b3b; /* New dark-mode background color */ 402 border-color: #555; /* New dark-mode border color */ 403 } 404} 405 406@media (max-width: 768px) { 407 .custom-sidebar { 408 float: none; 409 width: 100%; 410 margin-left: 0; 411 margin-top: 2em; 412 } 413} 414 415 416 figure figcaption { 417 text-align: center; 418 font-size: medium; 419 font-weight: bold; 420 font-style: regular; 421} 422</style> 423 424<style> 425 /* Styling for new UAWSJ sidebar */ 426.custom-sidebar-uawsj { 427 float: right; 428 width: 100%; 429 margin-bottom: 2em; 430 padding: 1.5em 1.5em 0 1.5em; 431 background-color: #D3D3D3; 432 border: 3px solid #ccc; 433 border-radius: 5px; 434 font-family: "Tinos" 435} 436 437 /* Dark-mode specific styles */ 438@media (prefers-color-scheme: dark) { 439 .custom-sidebar-uawsj { 440 background-color: #3b3b3b; /* New dark-mode background color */ 441 border-color: #555; /* New dark-mode border color */ 442 } 443} 444 445@media (max-width: 768px) { 446 .custom-sidebar-uawsj { 447 float: none; 448 width: 100%; 449 margin-left: 0; 450 margin-top: 2em; 451 } 452} 453 454 455 figure figcaption { 456 text-align: center; 457 font-size: medium; 458 font-weight: bold; 459 font-style: regular; 460} 461</style> 462 463 464 465<style> 466 467.kg-html-card figcaption, 468.post-full-content .kg-image-card figcaption { 469 font-style: italic; 470 font-size: 1.4rem; 471 line-height: 1.6em; 472 color: var(--color-caption); 473 text-align: center; 474 margin-top: 1em; 475} 476 477 /* This is so the From caption looks right. */ 478.custom-caption { 479 text-align: center; 480 font-weight: bold; 481 font-size: small; 482 font-style: normal; 483 484} 485 486 .custom-caption a { 487 color: #5d6735; 488 text-decoration: none !important; 489 font-weight: bold; 490} 491 492.kg-html-card .custom-caption a { 493 text-decoration: none !important; 494} 495 496</style> 497 498<style> 499 .tag-hero__media .tag-hero__img { 500 aspect-ratio: auto; 501 object-fit: none; 502 width: auto; 503 border: 1px solid black; 504 } 505</style> 506 507 508 509<!-- Google tag (gtag.js) -->
vendor: 64 bytes, lines 509-510
509 510<script async src="https://www.googletagmanager.com/gtag/js?id=
510G-7WWSC5PBSQ
vendor: 12 bytes, line 510
510"></script>
511<script> 512
vendor: 134 bytes, lines 512-516
512window.dataLayer = window.dataLayer || []; 513 function gtag(){dataLayer.push(arguments);} 514 gtag('js', new Date()); 515 516 gtag('config', '
516G-7WWSC5PBSQ
vendor: 4 bytes, line 516
516');
517</script>
517 518 519 520 <link rel="preconnect" href="https://fonts.bunny.net"><link rel="stylesheet" href="https://fonts.bunny.net/css?family=roboto:400,500,700"><style>:root {--gh-font-heading: Roboto;--gh-font-body: Roboto;}</style> 521 </head> 522 <body class="gh-font-heading-roboto gh-font-body-roboto " data-excerpts="true"> 523 524 525 526 <main class="main flex-1"> 527 528<div class="signin-page flex flex-cc" data-image-style="right"> 529 <div class="signin-page__content"> 530 <a href="https://www.dollarsandsense.org" class="signin-page__brand"> 531 <picture class=""> 532 <source 533 sizes="200px" 534 data-sizes="auto" 535 srcset="https://storage.ghost.io/c/17/74/1774418b-e0eb-4470-b29b-ceb3f0599dab/content/images/size/w30/2025/07/Dollars-Sense_Primary_CMYK1_med--750.png 30w" 536 data-srcset="https://storage.ghost.io/c/17/74/1774418b-e0eb-4470-b29b-ceb3f0599dab/content/images/size/w300/format/webp/2025/07/Dollars-Sense_Primary_CMYK1_med--750.png 300w" 537 type="image/webp" 538 > 539 <img class="lazyload" 540 sizes="200px" 541 data-sizes="auto" 542 data-srcset="https://storage.ghost.io/c/17/74/1774418b-e0eb-4470-b29b-ceb3f0599dab/content/images/size/w300/2025/07/Dollars-Sense_Primary_CMYK1_med--750.png 300w" 543 srcset="https://storage.ghost.io/c/17/74/1774418b-e0eb-4470-b29b-ceb3f0599dab/content/images/size/w30/2025/07/Dollars-Sense_Primary_CMYK1_med--750.png 30w" 544 data-src="https://storage.ghost.io/c/17/74/1774418b-e0eb-4470-b29b-ceb3f0599dab/content/images/size/w100/2025/07/Dollars-Sense_Primary_CMYK1_med--750.png" 545 src="https://storage.ghost.io/c/17/74/1774418b-e0eb-4470-b29b-ceb3f0599dab/content/images/size/w30/2025/07/Dollars-Sense_Primary_CMYK1_med--750.png" 546 alt="Dollars & Sense" 547 548 > 549</picture> </a> 550 551 <div class="signin-page__box"> 552 <h1 class="signin-page__title">Sign in</h1> 553 <p id="form-input-label" class="opacity-080">Sign into your account again.</p> 554 <form class="subscribe-form" 555 data-members-form="signin" data-style=""> 556 <input data-members-email class="" 557 type="email" autocomplete="email" placeholder="Your email address" 558 aria-labelledby="form-input-label" required> 559 <button class="btn uppercase btn--brand" type="submit"> 560 <span>Send login link</span> 561 </button> 562 <div class="msg-success">Great! Check your inbox and click the link.</div> 563 <div class="msg-error">Sorry, something went wrong. Please try again.</div> 564</form> <p class="m-0 mt text-center"> 565 <small>Don't have an account yet? 566 <a href="/signup/">Sign up</a> 567 </small> 568 </p> 569 </div> 570 </div> 571</div> 572 </main> 573 574 575 <dialog class="notification"> 576 <i class="icon icon-success notification-icon"> 577 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-circle-check" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> 578 <path stroke="none" d="M0 0h24v24H0z" fill="none"/> 579 <circle cx="12" cy="12" r="9" /> 580 <path d="M9 12l2 2l4 -4" /> 581</svg> 582 583 584 585</i> <i class="icon icon-error notification-icon"> 586 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-alert-octagon" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> 587 <path stroke="none" d="M0 0h24v24H0z" fill="none"/> 588 <path d="M8.7 3h6.6c.3 0 .5 .1 .7 .3l4.7 4.7c.2 .2 .3 .4 .3 .7v6.6c0 .3 -.1 .5 -.3 .7l-4.7 4.7c-.2 .2 -.4 .3 -.7 .3h-6.6c-.3 0 -.5 -.1 -.7 -.3l-4.7 -4.7c-.2 -.2 -.3 -.4 -.3 -.7v-6.6c0 -.3 .1 -.5 .3 -.7l4.7 -4.7c.2 -.2 .4 -.3 .7 -.3z" /> 589 <line x1="12" y1="8" x2="12" y2="12" /> 590 <line x1="12" y1="16" x2="12.01" y2="16" /> 591</svg> 592 593 594 595</i> <i class="icon icon-warning notification-icon"> 596 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-alert-triangle" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> 597 <path stroke="none" d="M0 0h24v24H0z" fill="none"/> 598 <path d="M12 9v2m0 4v.01" /> 599 <path d="M5 19h14a2 2 0 0 0 1.84 -2.75l-7.1 -12.25a2 2 0 0 0 -3.5 0l-7.1 12.25a2 2 0 0 0 1.75 2.75" /> 600</svg> 601 602 603 604</i> <p class="notification-msg signup-success">
604Great! Youâve successfully signed up.</p> 605 <p class="notification-msg signin-success">Welcome back! You've successfully signed in.</p> 606 <p class="notification-msg subscribe-success">You've successfully subscribed to Dollars & Sense.</p> 607 <p class="notification-msg link-expired">Your link has expired.</p> 608 <p class="notification-msg checkout-success">Success! Check your email for magic link to sign-in.</p> 609 <p class="notification-msg billing-success">Success! Your billing info has been updated.</p> 610 <p class="notification-msg billing-cancel">Your billing was not updated.</p> 611 <button class="notification-close js-notification-close" aria-label="Close" onclick="closeNotification(event.currentTarget.parentNode);"> 612 <i class="icon icon-x"> 613 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-x" width="24" height="24" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> 614 <path stroke="none" d="M0 0h24v24H0z" fill="none"/> 615 <line x1="18" y1="6" x2="6" y2="18" /> 616 <line x1="6" y1="6" x2="18" y2="18" /> 617</svg> 618</i> </button> 619</dialog> 620 621 622 623 624
624<script> 625 // Give the parameter a variable name 626 const qsParams = new URLSearchParams(window.location.search); 627 const isAction = qsParams.has('action'); 628 const isStripe = qsParams.has('stripe'); 629 const success = qsParams.get('success'); 630 const action = qsParams.get('action'); 631 const stripe = qsParams.get('stripe'); 632 633 if (qsParams && isAction) { 634 if (success === "true") { 635 switch (action) { 636 case 'subscribe': 637 openNotification('subscribe-success'); 638 break; 639 case 'signup': 640 openNotification('signup-success'); 641 break; 642 case 'signin': 643 openNotification('signin-success'); 644 break; 645 default: 646 break; 647 } 648 } else { 649 openNotification('link-expired'); 650 } 651 } 652 653 if (qsParams && isStripe) { 654 switch (stripe) { 655 case 'success': 656 openNotification('checkout-success'); 657 break; 658 case 'billing-update-success': 659 openNotification('billing-success'); 660 break; 661 case 'billing-update-cancel': 662 openNotification('billing-cancel'); 663 break; 664 default: 665 break; 666 } 667 } 668 669 /** 670 * Handle Notifications 671 */ 672 function openNotification(type) { 673 const notification = document.querySelector('dialog.notification'); 674 if (notification) { 675 notification.setAttribute('data-msg-type', type); 676 notification.show(); 677 setTimeout(function(){ closeNotification(notification); }, 3000); 678 } 679 } 680 681 /** 682 * Clean URI 683 */ 684 function clearURI() { 685 window.history.replaceState({}, '', `${window.location.pathname}`); 686 } 687 688 function closeNotification(notification) { 689 notification.close(); 690 clearURI(); 691 setTimeout(function(){ notification.removeAttribute('data-msg-type') }, 500); 692 } 693 </script>
693 694 695 696
696<script> 697 698document.querySelector('.header .signup-link').innerText = 'Get updates' 699 700</script>
700 701 </body> 702</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.