%3Clink rel="preconnect" href="https://fonts.googleapis.com"%3E%3Clink href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600%26family=Plus+Jakarta+Sans:wght@500;600;700;800%26family=Newsreader:opsz,wght@6..72,500%26display=swap" rel="stylesheet"%3E %3Cstyle%3E html,body{margin:0;background:#f2f6ed} .ck{--ink:#0e160f;--body:#505851;--muted:#7b847c;--green:#317039;--green-d:#24552b;--gold:#f2bf4a;--bg:#f2f6ed;--bg2:#e4efd3;--line:#dfe6d9;--surface:#fff;--err:#b4462b;--dark:#0f1a12; font-family:"Inter",system-ui,sans-serif;color:var(--body);font-size:15px;line-height:1.5;min-height:100vh;background:radial-gradient(1200px 600px at 85%25 -10%25,var(--bg2),transparent 60%25),var(--bg);-webkit-font-smoothing:antialiased} .ck *,.ck *:before,.ck *:after{box-sizing:border-box} .ck h1,.ck h2,.ck h3,.ck p{margin:0} .ck h1,.ck h2,.ck h3{font-family:"Plus Jakarta Sans",system-ui,sans-serif;color:var(--ink);letter-spacing:-.02em;font-weight:700} .ck a{color:inherit} .ck button{font:inherit;cursor:pointer} .ck-top{max-width:1180px;margin:0 auto;padding:22px 24px;display:flex;align-items:center;justify-content:space-between;gap:16px} .ck-logo{display:inline-flex;align-items:center;gap:10px;text-decoration:none} .ck-logo img{height:34px;width:auto;display:block} .ck-sec{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--muted)} .ck-sec svg{width:15px;height:15px} .ck-steps{max-width:1180px;margin:0 auto;padding:0 24px 22px;display:flex;gap:8px;flex-wrap:wrap} .ck-step{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:500;color:var(--muted);padding:6px 14px 6px 6px;border-radius:50px;background:rgba(255,255,255,.55);border:1px solid transparent;transition:all .3s} .ck-step i{font-style:normal;width:22px;height:22px;border-radius:50%25;display:grid;place-items:center;background:var(--line);color:var(--ink);font-size:12px;font-weight:600;transition:all .3s} .ck-step.on{background:#fff;color:var(--ink);border-color:var(--line)} .ck-step.on i{background:var(--green);color:#fff} .ck-step.done i{background:var(--green);color:#fff} .ck-grid{max-width:1180px;margin:0 auto;padding:0 24px 80px;display:grid;grid-template-columns:minmax(0,1fr) 420px;gap:28px;align-items:start} .ck-panel{background:var(--surface);border-radius:32px;padding:10px;box-shadow:0 1px 0 rgba(14,22,15,.04),0 30px 60px -40px rgba(14,22,15,.25)} .ck-in{padding:30px 30px 34px} .ck-view{display:none;animation:ckIn .45s cubic-bezier(.2,.7,.2,1)} .ck-view.on{display:block} @keyframes ckIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}} .ck .ck-h{font-size:30px;line-height:1.15;margin-bottom:6px} .ck .ck-sub{color:var(--body);margin-bottom:26px} .ck-block{padding:24px 0;border-top:1px solid var(--line)} .ck-block:first-of-type{border-top:0;padding-top:4px} .ck-lbl{font-family:"Plus Jakarta Sans",sans-serif;font-size:13px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ink);margin-bottom:14px;display:flex;justify-content:space-between;align-items:center;gap:10px} .ck-lbl small{font-family:"Inter",sans-serif;text-transform:none;letter-spacing:0;font-weight:400;color:var(--muted);font-size:13px} .ck-plans{display:grid;grid-template-columns:1fr 1fr;gap:12px} .ck-plan{position:relative;text-align:left;border:1.5px solid var(--line);background:#fbfcfa;border-radius:20px;padding:18px 18px 16px;transition:border-color .25s,box-shadow .25s,transform .25s} .ck-plan:hover{transform:translateY(-2px);border-color:#c9d6c2} .ck-plan.on{border-color:var(--green);background:#fff;box-shadow:0 0 0 4px rgba(49,112,57,.12)} .ck-plan b{display:block;font-family:"Plus Jakarta Sans",sans-serif;color:var(--ink);font-size:17px} .ck-plan .pr{font-family:"Plus Jakarta Sans",sans-serif;color:var(--ink);font-size:24px;font-weight:700;letter-spacing:-.03em;margin:6px 0 4px} .ck-plan .pr span{font-family:"Inter",sans-serif;font-size:13px;font-weight:400;color:var(--muted);letter-spacing:0} .ck-plan p{font-size:13px;color:var(--body)} .ck-plan .dot{position:absolute;top:16px;right:16px;width:20px;height:20px;border-radius:50%25;border:1.5px solid #c3cfbd;transition:all .25s} .ck-plan.on .dot{border-color:var(--green);background:var(--green);box-shadow:inset 0 0 0 4px #fff} .ck-free{display:inline-block;margin-top:12px;font-size:13px;color:var(--muted)} .ck-free a{color:var(--green);font-weight:600;text-decoration:underline;text-underline-offset:3px} .ck-f{margin-bottom:14px;position:relative} .ck-f label{display:block;font-size:13px;font-weight:500;color:var(--ink);margin-bottom:6px} .ck-f label em{font-style:normal;color:var(--muted);font-weight:400} .ck-ctl{position:relative} .ck input[type=text],.ck input[type=email],.ck input[type=password],.ck input[type=tel],.ck select{width:100%25;height:50px;border:1.5px solid var(--line);border-radius:14px;background:#fbfcfa;padding:0 16px;font:inherit;font-size:15px;color:var(--ink);outline:none;transition:border-color .2s,box-shadow .2s,background .2s;-webkit-appearance:none;appearance:none;margin:0} .ck select{background-image:url("data:image/svg+xml,%253Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%253E%253Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%2523505851' stroke-width='1.6' stroke-linecap='round'/%253E%253C/svg%253E");background-repeat:no-repeat;background-position:right 16px center;padding-right:40px} .ck input::placeholder{color:#a7afa6} .ck input:hover,.ck select:hover{border-color:#cdd8c7} .ck input:focus,.ck select:focus{border-color:var(--green);background:#fff;box-shadow:0 0 0 4px rgba(49,112,57,.12)} .ck-f.bad input,.ck-f.bad select{border-color:var(--err);box-shadow:0 0 0 4px rgba(180,70,43,.1)} .ck-f.ok input{border-color:#9cc3a1} .ck-f .ok-i{position:absolute;right:14px;top:50%25;transform:translateY(-50%25) scale(.6);opacity:0;transition:all .25s;color:var(--green);pointer-events:none} .ck-f.ok .ok-i{opacity:1;transform:translateY(-50%25) scale(1)} .ck-f .msg{font-size:12.5px;color:var(--err);margin-top:6px;min-height:0;display:none} .ck-f.bad .msg{display:block} .ck-row{display:grid;grid-template-columns:1fr 1fr;gap:12px} .ck-row3{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:12px} .ck-brand{position:absolute;right:12px;top:50%25;transform:translateY(-50%25);font:700 11px/1 "Plus Jakarta Sans",sans-serif;letter-spacing:.06em;padding:6px 8px;border-radius:7px;background:var(--ink);color:#fff;opacity:0;transition:opacity .2s} .ck-brand.on{opacity:1} .ck-cardwrap{perspective:1200px;margin:2px 0 20px;display:flex;justify-content:center} .ck-pc{width:320px;max-width:100%25;aspect-ratio:1.586;position:relative;transform-style:preserve-3d;transition:transform .7s cubic-bezier(.2,.7,.2,1)} .ck-pc.flip{transform:rotateY(180deg)} .ck-pc .fa{position:absolute;inset:0;border-radius:18px;backface-visibility:hidden;-webkit-backface-visibility:hidden;overflow:hidden;color:#eef3ea;background:linear-gradient(135deg,#1d3322,#0f1a12 60%25,#15251a);box-shadow:0 24px 40px -20px rgba(14,22,15,.6),inset 0 0 0 1px rgba(255,255,255,.08)} .ck-pc .fa:before{content:"";position:absolute;inset:0;background:repeating-radial-gradient(circle at 120%25 120%25,rgba(255,255,255,.035) 0 1px,transparent 1px 9px)} .ck-pc .front{padding:20px 22px;display:flex;flex-direction:column;justify-content:space-between} .ck-pc .back{transform:rotateY(180deg)} .ck-pc .chip{width:40px;height:30px;border-radius:6px;background:linear-gradient(135deg,#e9d49a,#b8964b);position:relative} .ck-pc .chip:after{content:"";position:absolute;inset:6px 8px;border:1px solid rgba(0,0,0,.2);border-radius:3px} .ck-pc .num{font:600 19px/1 "Plus Jakarta Sans",sans-serif;letter-spacing:.08em;white-space:nowrap} .ck-pc .meta{display:flex;justify-content:space-between;align-items:flex-end;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:#a9b6aa} .ck-pc .meta b{display:block;color:#eef3ea;font:600 13px/1.3 "Plus Jakarta Sans",sans-serif;letter-spacing:.04em;margin-top:3px;max-width:180px;over
flow:hidden;text-overflow:ellipsis;white-space:nowrap} .ck-pc .net{position:absolute;top:20px;right:22px;font:800 13px/1 "Plus Jakarta Sans",sans-serif;letter-spacing:.08em;color:#eef3ea} .ck-pc .strip{position:absolute;top:26px;left:0;right:0;height:40px;background:#050806} .ck-pc .sig{position:absolute;top:86px;left:22px;right:22px;height:36px;border-radius:6px;background:repeating-linear-gradient(90deg,#e8ece4 0 6px,#dfe4da 6px 12px);display:flex;align-items:center;justify-content:flex-end;padding-right:12px;color:var(--ink);font:600 15px/1 "Plus Jakarta Sans",sans-serif;letter-spacing:.1em} .ck-pc .bk{position:absolute;bottom:18px;left:22px;font-size:11px;color:#a9b6aa} .ck-check{font-weight:400;margin-bottom:0;display:flex;gap:12px;align-items:flex-start;font-size:14px;color:var(--body);cursor:pointer;margin:6px 0 4px} .ck-check input{appearance:none;-webkit-appearance:none;width:20px;height:20px;flex:0 0 20px;border:1.5px solid #bfcbb8;border-radius:6px;margin:1px 0 0;background:#fff;display:grid;place-items:center;transition:all .2s;cursor:pointer} .ck-check input:checked{background:var(--green);border-color:var(--green);background-image:url("data:image/svg+xml,%253Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%253E%253Cpath d='M5.5 10.5l3 3 6-7' fill='none' stroke='%2523fff' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/%253E%253C/svg%253E");background-size:18px;background-position:center;background-repeat:no-repeat} .ck-check input:focus-visible{box-shadow:0 0 0 4px rgba(49,112,57,.15)} .ck-check a{color:var(--green);font-weight:600;text-decoration:underline;text-underline-offset:3px} .ck-check.bad input{border-color:var(--err)} .ck-btn{width:100%25;height:56px;border:0;border-radius:50px;background:var(--ink);color:#fff;font:700 16px/1 "Plus Jakarta Sans",sans-serif;letter-spacing:-.01em;display:flex;align-items:center;justify-content:center;gap:10px;position:relative;overflow:hidden;transition:transform .2s,background .3s,box-shadow .3s;margin-top:18px} .ck-btn:hover{background:#1c2a1e;box-shadow:0 14px 30px -14px rgba(14,22,15,.6)} .ck-btn:active{transform:scale(.99)} .ck-btn:focus-visible{outline:none;box-shadow:0 0 0 4px rgba(49,112,57,.25)} .ck-btn svg{width:17px;height:17px} .ck-btn .sp{width:18px;height:18px;border-radius:50%25;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;animation:ckSp .8s linear infinite;display:none} .ck-btn.busy .sp{display:block} .ck-btn.busy .lb,.ck-btn.busy svg{display:none} .ck-btn[disabled]{cursor:default} @keyframes ckSp{to{transform:rotate(360deg)}} .ck .ck-fine{font-size:12.5px;color:var(--muted);margin-top:14px;display:flex;gap:8px;align-items:flex-start} .ck-fine svg{flex:0 0 14px;width:14px;height:14px;margin-top:2px} .ck-alert{display:none;background:#fbeee9;color:var(--err);border-radius:14px;padding:12px 14px;font-size:14px;margin-top:14px} .ck-alert.on{display:block} .ck-sum{position:sticky;top:24px;background:var(--dark);color:#dfe7dc;border-radius:32px;padding:10px;overflow:hidden} .ck-sum-in{padding:26px 24px 24px;position:relative} .ck-sum:before{content:"";position:absolute;inset:0;background:radial-gradient(500px 300px at 90%25 -10%25,rgba(143,199,154,.18),transparent 70%25);pointer-events:none} .ck .ck-sum h2{color:#fff;font-size:18px;margin-bottom:18px;display:flex;justify-content:space-between;align-items:center} .ck-sum h2 span{font:500 12px/1 "Inter",sans-serif;color:#9aa79c;letter-spacing:0} .ck-mc{position:relative;aspect-ratio:1.586;border-radius:18px;padding:18px 20px;background:linear-gradient(140deg,#24402b,#12201a 55%25,#0b130d);box-shadow:inset 0 0 0 1.5px rgba(242,191,74,.8),0 26px 50px -24px rgba(0,0,0,.8);display:flex;flex-direction:column;justify-content:space-between;overflow:hidden;transform:rotate(-2deg);transition:transform .5s cubic-bezier(.2,.7,.2,1);margin:4px 6px 22px} .ck-mc:hover{transform:rotate(0) translateY(-3px)} .ck-mc:before{content:"";position:absolute;inset:0;background:repeating-radial-gradient(circle at -20%25 130%25,rgba(255,255,255,.04) 0 1px,transparent 1px 10px)} .ck-mc .t{display:flex;justify-content:space-between;align-items:center;position:relative} .ck-mc .t img{height:22px;filter:brightness(0) invert(1);opacity:.92} .ck-mc .badge{font:800 10.5px/1 "Plus Jakarta Sans",sans-serif;letter-spacing:.1em;background:var(--gold);color:var(--ink);padding:6px 9px;border-radius:50px} .ck-mc .pn{position:relative;font-family:"Newsreader",Georgia,serif;font-size:30px;color:#fff;line-height:1;letter-spacing:-.01em} .ck-mc .b{position:relative;display:flex;justify-content:space-between;align-items:flex-end;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:#9aa79c} .ck-mc .b strong{display:block;color:#eef3ea;font:600 13px/1.3 "Plus Jakarta Sans",sans-serif;letter-spacing:.03em;margin-top:3px;max-width:190px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .ck-lines{list-style:none;margin:0;padding:0;font-size:14px} .ck-lines li{display:flex;justify-content:space-between;padding:10px 0;border-bottom:1px solid rgba(255,255,255,.07);color:#b7c3b8} .ck-lines li b{color:#fff;font-weight:600} .ck-lines li.tot{border-bottom:0;padding-top:16px;font-size:15px;color:#fff} .ck-lines li.tot b{font:700 26px/1 "Plus Jakarta Sans",sans-serif;letter-spacing:-.03em} .ck-inc{margin-top:16px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.07);border-radius:20px;padding:16px 18px} .ck .ck-inc p{font:700 12px/1 "Plus Jakarta Sans",sans-serif;letter-spacing:.1em;text-transform:uppercase;color:#9aa79c;margin-bottom:12px} .ck-inc ul{list-style:none;margin:0;padding:0} .ck-inc li{display:flex;gap:10px;align-items:flex-start;font-size:14px;color:#dfe7dc;padding:5px 0} .ck-inc li:before{content:"";flex:0 0 16px;height:16px;margin-top:3px;border-radius:50%25;background:#8fc79a url("data:image/svg+xml,%253Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%253E%253Cpath d='M4.5 8.3l2.2 2.2 4.8-5' fill='none' stroke='%25230f1a12' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%253E%253C/svg%253E") center/16px no-repeat} .ck .ck-note{font-size:12.5px;color:#8e9b90;margin-top:16px;line-height:1.55} .ck-ok{display:flex;gap:14px;align-items:center;background:#eef5ea;border-radius:20px;padding:16px 18px;margin-bottom:26px} .ck-ok svg{flex:0 0 44px;width:44px;height:44px} .ck-ok svg circle{stroke-dasharray:130;stroke-dashoffset:130;animation:ckDraw .7s .1s ease forwards} .ck-ok svg path{stroke-dasharray:30;stroke-dashoffset:30;animation:ckDraw .45s .6s ease forwards} @keyframes ckDraw{to{stroke-dashoffset:0}} .ck-ok b{display:block;color:var(--ink);font-family:"Plus Jakarta Sans",sans-serif} .ck-ok span{font-size:14px} .ck-eye{position:absolute;right:8px;top:50%25;transform:translateY(-50%25);border:0;background:none;color:var(--muted);font-size:13px;font-weight:600;padding:8px 10px;border-radius:10px} .ck-eye:hover{color:var(--ink);background:#f1f4ee} .ck-str{display:flex;gap:6px;margin-top:8px} .ck-str i{flex:1;height:4px;border-radius:4px;background:var(--line);transition:background .3s} .ck .ck-str-t{font-size:12.5px;color:var(--muted);margin-top:6px;min-height:18px} .ck .ck-alt{text-align:center;font-size:14px;color:var(--muted);margin-top:18px} .ck-alt a,.ck-alt button{color:var(--green);font-weight:600;background:none;border:0;padding:0;text-decoration:underline;text-underline-offset:3px;font-size:14px} .ck-foot{max-width:1180px;margin:0 auto;padding:0 24px 40px;font-size:12.5px;color:var(--muted);display:flex;gap:18px;flex-wrap:wrap;justify-content:space-between} .ck-foot a{color:var(--muted)} @media(max-width:1000px){.ck-grid{grid-template-columns:1fr}.ck-sum{position:relative;top:0;order:-1}.ck-mc{max-width:380px;margin:4px auto 22px}} @media(max-width:560px){.ck-top{padding:16px}.ck-steps{padding:0 16px 16px}.ck-step{font-size:12px;padding-right:10px}.ck-grid{padding:0 12px 56px;gap:16px}.ck-in{padding:22px 16px 24px}.ck-sum-in{padding:20px 14px 16px}.ck .ck-h{font
-size:25px}.ck-plans,.ck-row{grid-template-columns:1fr}.ck-row3{grid-template-columns:1fr 1fr}.ck-row3 .zipf{grid-column:1/-1}.ck-sec span{display:none}.ck-pc .num{font-size:16px}.ck-panel,.ck-sum{border-radius:26px}} %3C/style%3E %3Cdiv class="ck" id="ck"%3E %3Cheader class="ck-top"%3E%3Ca class="ck-logo" href="/" aria-label="Cash Pass home"%3E%3Cimg src="https://cdn.prod.website-files.com/6ab6a7e91f57908f23e58489/6ab6a8eb84f317c1aed82ce0_logo-01.png" alt="Cash Pass"%3E%3C/a%3E %3Cdiv class="ck-sec"%3E%3Csvg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5"%3E%3Crect x="3" y="7" width="10" height="7" rx="2"/%3E%3Cpath d="M5.5 7V5a2.5 2.5 0 015 0v2"/%3E%3C/svg%3E%3Cspan%3ESecure checkout%3C/span%3E%3C/div%3E%3C/header%3E %3Cnav class="ck-steps" aria-label="Checkout progress"%3E%3Cdiv class="ck-step on" id="st1"%3E%3Ci%3E1%3C/i%3EPlan and payment%3C/div%3E%3Cdiv class="ck-step" id="st2"%3E%3Ci%3E2%3C/i%3EYour account%3C/div%3E%3Cdiv class="ck-step" id="st3"%3E%3Ci%3E3%3C/i%3ESet up Pass%3C/div%3E%3C/nav%3E %3Cdiv class="ck-grid"%3E %3Cmain class="ck-panel"%3E%3Cdiv class="ck-in"%3E %3Csection class="ck-view on" id="vPay" aria-labelledby="hPay"%3E %3Ch1 class="ck-h" id="hPay"%3ECheck out%3C/h1%3E%3Cp class="ck-sub"%3EOne payment a year. Cancel anytime, and your plan runs to the end of the paid year.%3C/p%3E %3Cform id="payForm" novalidate%3E %3Cdiv class="ck-block"%3E%3Cdiv class="ck-lbl"%3EYour plan%3C/div%3E %3Cdiv class="ck-plans" role="radiogroup" aria-label="Plan"%3E %3Cbutton type="button" class="ck-plan" role="radio" data-plan="pass"%3E%3Cspan class="dot"%3E%3C/span%3E%3Cb%3EPass%3C/b%3E%3Cdiv class="pr"%3E$59 %3Cspan%3E/ year%3C/span%3E%3C/div%3E%3Cp%3EUnlimited cards, automatic rules, cap tracking, and the fee ledger.%3C/p%3E%3C/button%3E %3Cbutton type="button" class="ck-plan" role="radio" data-plan="family"%3E%3Cspan class="dot"%3E%3C/span%3E%3Cb%3EPass Family%3C/b%3E%3Cdiv class="pr"%3E$99 %3Cspan%3E/ year%3C/span%3E%3C/div%3E%3Cp%3EEverything in Pass for up to five people, with shared rules.%3C/p%3E%3C/button%3E %3C/div%3E %3Cspan class="ck-free"%3ECarrying three cards or fewer? %3Ca href="/pass?onboard=1%26amp;plan=free"%3EStart free instead%3C/a%3E%3C/span%3E%3C/div%3E %3Cdiv class="ck-block"%3E%3Cdiv class="ck-lbl"%3EContact%3C/div%3E %3Cdiv class="ck-f" data-f="email"%3E%3Clabel for="email"%3EEmail%3C/label%3E%3Cdiv class="ck-ctl"%3E%3Cinput id="email" type="email" autocomplete="email" placeholder="you@example.com" required%3E%3Csvg class="ok-i" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2"%3E%3Cpath d="M4 9.5l3 3 7-7" stroke-linecap="round" stroke-linejoin="round"/%3E%3C/svg%3E%3C/div%3E%3Cdiv class="msg"%3E%3C/div%3E%3C/div%3E %3C/div%3E %3Cdiv class="ck-block"%3E%3Cdiv class="ck-lbl"%3EPayment %3Csmall%3EAll transactions are encrypted%3C/small%3E%3C/div%3E %3Cdiv class="ck-cardwrap"%3E%3Cdiv class="ck-pc" id="pc"%3E%3Cdiv class="fa front"%3E%3Cdiv style="display:flex;justify-content:space-between;align-items:center;position:relative"%3E%3Cdiv class="chip"%3E%3C/div%3E%3Cdiv class="net" id="pcNet"%3E%3C/div%3E%3C/div%3E%3Cdiv class="num" id="pcNum" style="position:relative"%3E•••• •••• •••• ••••%3C/div%3E%3Cdiv class="meta" style="position:relative"%3E%3Cdiv%3EName on card%3Cb id="pcName"%3EYour name%3C/b%3E%3C/div%3E%3Cdiv style="text-align:right"%3EExpires%3Cb id="pcExp"%3EMM/YY%3C/b%3E%3C/div%3E%3C/div%3E%3C/div%3E%3Cdiv class="fa back"%3E%3Cdiv class="strip"%3E%3C/div%3E%3Cdiv class="sig" id="pcCvc"%3E•••%3C/div%3E%3Cdiv class="bk"%3ESecurity code%3C/div%3E%3C/div%3E%3C/div%3E%3C/div%3E %3Cdiv class="ck-f" data-f="name"%3E%3Clabel for="name"%3EName on card%3C/label%3E%3Cdiv class="ck-ctl"%3E%3Cinput id="name" type="text" autocomplete="cc-name" placeholder="Jordan Mills" required%3E%3Csvg class="ok-i" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2"%3E%3Cpath d="M4 9.5l3 3 7-7" stroke-linecap="round" stroke-linejoin="round"/%3E%3C/svg%3E%3C/div%3E%3Cdiv class="msg"%3E%3C/div%3E%3C/div%3E %3Cdiv class="ck-f" data-f="cc"%3E%3Clabel for="cc"%3ECard number%3C/label%3E%3Cdiv class="ck-ctl"%3E%3Cinput id="cc" type="text" inputmode="numeric" autocomplete="cc-number" placeholder="1234 1234 1234 1234" maxlength="23" required%3E%3Cspan class="ck-brand" id="ccBrand"%3E%3C/span%3E%3C/div%3E%3Cdiv class="msg"%3E%3C/div%3E%3C/div%3E %3Cdiv class="ck-row"%3E%3Cdiv class="ck-f" data-f="exp"%3E%3Clabel for="exp"%3EExpiration%3C/label%3E%3Cdiv class="ck-ctl"%3E%3Cinput id="exp" type="text" inputmode="numeric" autocomplete="cc-exp" placeholder="MM / YY" maxlength="7" required%3E%3Csvg class="ok-i" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2"%3E%3Cpath d="M4 9.5l3 3 7-7" stroke-linecap="round" stroke-linejoin="round"/%3E%3C/svg%3E%3C/div%3E%3Cdiv class="msg"%3E%3C/div%3E%3C/div%3E %3Cdiv class="ck-f" data-f="cvc"%3E%3Clabel for="cvc"%3ESecurity code%3C/label%3E%3Cdiv class="ck-ctl"%3E%3Cinput id="cvc" type="text" inputmode="numeric" autocomplete="cc-csc" placeholder="CVC" maxlength="4" required%3E%3Csvg class="ok-i" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2"%3E%3Cpath d="M4 9.5l3 3 7-7" stroke-linecap="round" stroke-linejoin="round"/%3E%3C/svg%3E%3C/div%3E%3Cdiv class="msg"%3E%3C/div%3E%3C/div%3E%3C/div%3E %3C/div%3E %3Cdiv class="ck-block"%3E%3Cdiv class="ck-lbl"%3EBilling address%3C/div%3E %3Cdiv class="ck-f" data-f="country"%3E%3Clabel for="country"%3ECountry%3C/label%3E%3Cdiv class="ck-ctl"%3E%3Cselect id="country" autocomplete="country"%3E%3Coption value="US"%3EUnited States%3C/option%3E%3Coption value="CA"%3ECanada%3C/option%3E%3Coption value="GB"%3EUnited Kingdom%3C/option%3E%3Coption value="AU"%3EAustralia%3C/option%3E%3Coption value="IE"%3EIreland%3C/option%3E%3Coption value="NZ"%3ENew Zealand%3C/option%3E%3C/select%3E%3C/div%3E%3C/div%3E %3Cdiv class="ck-f" data-f="street"%3E%3Clabel for="street"%3EStreet address%3C/label%3E%3Cdiv class="ck-ctl"%3E%3Cinput id="street" type="text" autocomplete="address-line1" placeholder="120 Market Street" required%3E%3Csvg class="ok-i" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2"%3E%3Cpath d="M4 9.5l3 3 7-7" stroke-linecap="round" stroke-linejoin="round"/%3E%3C/svg%3E%3C/div%3E%3Cdiv class="msg"%3E%3C/div%3E%3C/div%3E %3Cdiv class="ck-f" data-f="apt"%3E%3Clabel for="apt"%3EApartment, suite, or unit %3Cem%3E(optional)%3C/em%3E%3C/label%3E%3Cdiv class="ck-ctl"%3E%3Cinput id="apt" type="text" autocomplete="address-line2" placeholder="Apt 4B"%3E%3C/div%3E%3C/div%3E %3Cdiv class="ck-row3"%3E%3Cdiv class="ck-f" data-f="city"%3E%3Clabel for="city"%3ECity%3C/label%3E%3Cdiv class="ck-ctl"%3E%3Cinput id="city" type="text" autocomplete="address-level2" placeholder="Austin" required%3E%3C/div%3E%3Cdiv class="msg"%3E%3C/div%3E%3C/div%3E %3Cdiv class="ck-f" data-f="state"%3E%3Clabel for="state" id="stateL"%3EState%3C/label%3E%3Cdiv class="ck-ctl" id="stateBox"%3E%3C/div%3E%3Cdiv class="msg"%3E%3C/div%3E%3C/div%3E %3Cdiv class="ck-f zipf" data-f="zip"%3E%3Clabel for="zip" id="zipL"%3EZIP code%3C/label%3E%3Cdiv class="ck-ctl"%3E%3Cinput id="zip" type="text" autocomplete="postal-code" placeholder="78701" maxlength="10" required%3E%3C/div%3E%3Cdiv class="msg"%3E%3C/div%3E%3C/div%3E%3C/div%3E %3C/div%3E %3Clabel class="ck-check" id="agreeRow"%3E%3Cinput type="checkbox" id="agree"%3E%3Cspan%3EI agree to the %3Ca href="/terms" target="_blank" rel="noopener"%3ETerms of Service%3C/a%3E and %3Ca href="/privacy" target="_blank" rel="noopener"%3EPrivacy Policy%3C/a%3E, and I understand my plan renews each year until I cancel.%3C/span%3E%3C/label%3E %3Cdiv class="ck-alert" id="payErr" role="alert"%3E%3C/div%3E %3Cbutton class="ck-btn" type="submit" id="payBtn"%3E%3Csvg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.6"%3E%3Crect x="3" y="7" wid
th="10" height="7" rx="2"/%3E%3Cpath d="M5.5 7V5a2.5 2.5 0 015 0v2"/%3E%3C/svg%3E%3Cspan class="lb" id="payLbl"%3EPay $59%3C/span%3E%3Cspan class="sp"%3E%3C/span%3E%3C/button%3E %3Cp class="ck-fine"%3E%3Csvg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5"%3E%3Ccircle cx="8" cy="8" r="6.5"/%3E%3Cpath d="M8 7.2V11M8 5h.01" stroke-linecap="round"/%3E%3C/svg%3E%3Cspan%3ECash Pass is software. It issues no card, holds no balance, and moves no money, so your existing card protections stay with your issuer.%3C/span%3E%3C/p%3E %3Cp class="ck-alt"%3EAlready a member? %3Cbutton type="button" data-go="vIn"%3ESign in%3C/button%3E%3C/p%3E %3C/form%3E %3C/section%3E %3Csection class="ck-view" id="vUp" aria-labelledby="hUp"%3E %3Cdiv class="ck-ok"%3E%3Csvg viewBox="0 0 44 44" fill="none"%3E%3Ccircle cx="22" cy="22" r="20" stroke="#317039" stroke-width="2.5"/%3E%3Cpath d="M14 22.5l5.5 5.5L30.5 17" stroke="#317039" stroke-width="2.8" stroke-linecap="round" stroke-linejoin="round"/%3E%3C/svg%3E%3Cdiv%3E%3Cb id="okT"%3EPayment confirmed%3C/b%3E%3Cspan id="okS"%3EPass, $59 a year. A receipt is on its way.%3C/span%3E%3C/div%3E%3C/div%3E %3Ch1 class="ck-h" id="hUp"%3ECreate your account%3C/h1%3E%3Cp class="ck-sub"%3EYou will use this to sign in to Pass on your phone and on the web.%3C/p%3E %3Cform id="upForm" novalidate%3E %3Cdiv class="ck-f" data-f="uName"%3E%3Clabel for="uName"%3EFull name%3C/label%3E%3Cdiv class="ck-ctl"%3E%3Cinput id="uName" type="text" autocomplete="name" placeholder="Jordan Mills" required%3E%3C/div%3E%3Cdiv class="msg"%3E%3C/div%3E%3C/div%3E %3Cdiv class="ck-f" data-f="uEmail"%3E%3Clabel for="uEmail"%3EEmail%3C/label%3E%3Cdiv class="ck-ctl"%3E%3Cinput id="uEmail" type="email" autocomplete="username" placeholder="you@example.com" required%3E%3C/div%3E%3Cdiv class="msg"%3E%3C/div%3E%3C/div%3E %3Cdiv class="ck-f" data-f="uPass"%3E%3Clabel for="uPass"%3EPassword%3C/label%3E%3Cdiv class="ck-ctl"%3E%3Cinput id="uPass" type="password" autocomplete="new-password" placeholder="At least 8 characters" required%3E%3Cbutton type="button" class="ck-eye" data-eye="uPass"%3EShow%3C/button%3E%3C/div%3E%3Cdiv class="ck-str" id="str"%3E%3Ci%3E%3C/i%3E%3Ci%3E%3C/i%3E%3Ci%3E%3C/i%3E%3Ci%3E%3C/i%3E%3C/div%3E%3Cdiv class="ck-str-t" id="strT"%3EUse 8 or more characters with a mix of letters and numbers.%3C/div%3E%3Cdiv class="msg"%3E%3C/div%3E%3C/div%3E %3Cdiv class="ck-alert" id="upErr" role="alert"%3E%3C/div%3E %3Cbutton class="ck-btn" type="submit" id="upBtn"%3E%3Cspan class="lb"%3ECreate account and continue%3C/span%3E%3Cspan class="sp"%3E%3C/span%3E%3C/button%3E %3Cp class="ck-alt"%3EAlready have an account? %3Cbutton type="button" data-go="vIn"%3ESign in%3C/button%3E%3C/p%3E %3C/form%3E %3C/section%3E %3Csection class="ck-view" id="vIn" aria-labelledby="hIn"%3E %3Ch1 class="ck-h" id="hIn"%3EWelcome back%3C/h1%3E%3Cp class="ck-sub"%3ESign in to open Pass and pick up where you left off.%3C/p%3E %3Cform id="inForm" novalidate%3E %3Cdiv class="ck-f" data-f="iEmail"%3E%3Clabel for="iEmail"%3EEmail%3C/label%3E%3Cdiv class="ck-ctl"%3E%3Cinput id="iEmail" type="email" autocomplete="username" placeholder="you@example.com" required%3E%3C/div%3E%3Cdiv class="msg"%3E%3C/div%3E%3C/div%3E %3Cdiv class="ck-f" data-f="iPass"%3E%3Clabel for="iPass"%3EPassword%3C/label%3E%3Cdiv class="ck-ctl"%3E%3Cinput id="iPass" type="password" autocomplete="current-password" placeholder="Your password" required%3E%3Cbutton type="button" class="ck-eye" data-eye="iPass"%3EShow%3C/button%3E%3C/div%3E%3Cdiv class="msg"%3E%3C/div%3E%3C/div%3E %3Cdiv class="ck-alert" id="inErr" role="alert"%3E%3C/div%3E %3Cbutton class="ck-btn" type="submit" id="inBtn"%3E%3Cspan class="lb"%3ESign in%3C/span%3E%3Cspan class="sp"%3E%3C/span%3E%3C/button%3E %3Cp class="ck-alt"%3ENew to Cash Pass? %3Cbutton type="button" data-go="vPay"%3EChoose a plan%3C/button%3E or %3Ca href="/pass?onboard=1%26amp;plan=free"%3Estart free%3C/a%3E%3C/p%3E %3C/form%3E %3C/section%3E %3C/div%3E%3C/main%3E %3Caside class="ck-sum" aria-label="Order summary"%3E%3Cdiv class="ck-sum-in"%3E %3Ch2%3EOrder summary %3Cspan id="sumPer"%3EBilled yearly%3C/span%3E%3C/h2%3E %3Cdiv class="ck-mc"%3E%3Cdiv class="t"%3E%3Cimg src="https://cdn.prod.website-files.com/6ab6a7e91f57908f23e58489/6ab6a8eb84f317c1aed82ce0_logo-01.png" alt=""%3E%3Cspan class="badge"%3EMEMBER%3C/span%3E%3C/div%3E%3Cdiv class="pn" id="mcPlan"%3EPass%3C/div%3E%3Cdiv class="b"%3E%3Cdiv%3EMember%3Cstrong id="mcName"%3EYour name here%3C/strong%3E%3C/div%3E%3Cdiv style="text-align:right"%3ERenews%3Cstrong id="mcRenew"%3E%3C/strong%3E%3C/div%3E%3C/div%3E%3C/div%3E %3Cul class="ck-lines"%3E%3Cli%3E%3Cspan id="lnPlan"%3EPass, 1 year%3C/span%3E%3Cb id="lnPrice"%3E$59.00%3C/b%3E%3C/li%3E%3Cli%3E%3Cspan%3ETax%3C/span%3E%3Cb%3E$0.00%3C/b%3E%3C/li%3E%3Cli class="tot"%3E%3Cspan%3EDue today%3C/span%3E%3Cb id="lnTot"%3E$59.00%3C/b%3E%3C/li%3E%3C/ul%3E %3Cdiv class="ck-inc"%3E%3Cp%3EWhat you get%3C/p%3E%3Cul id="incList"%3E%3C/ul%3E%3C/div%3E %3Cp class="ck-note"%3ECancel anytime from Settings in Pass. Your plan stays active until the end of the paid year. Questions? %3Ca href="mailto:support@yourcashpass.com" style="color:#cfe0cc"%3Esupport@yourcashpass.com%3C/a%3E%3C/p%3E %3C/div%3E%3C/aside%3E %3C/div%3E %3Cfooter class="ck-foot"%3E%3Cspan%3E%26copy; 2026 Cash Pass%3C/span%3E%3Cspan%3E%3Ca href="/terms"%3ETerms of Service%3C/a%3E %26nbsp;%26middot;%26nbsp; %3Ca href="/privacy"%3EPrivacy Policy%3C/a%3E %26nbsp;%26middot;%26nbsp; %3Ca href="/support"%3ESupport%3C/a%3E%3C/span%3E%3C/footer%3E %3C/div%3E %3Cscript%3E (function(){ var $=function(id){return document.getElementById(id)}; function qs(k){try{return new URLSearchParams(location.search).get(k)}catch(e){return null}} function sv(k,v){try{localStorage.setItem(k,JSON.stringify(v))}catch(e){}} function ld(k){try{return JSON.parse(localStorage.getItem(k)||'null')}catch(e){return null}} function hash(s){try{if(window.crypto%26%26crypto.subtle%26%26window.TextEncoder){return crypto.subtle.digest('SHA-256',new TextEncoder().encode('cashpass:'+s)).then(function(b){return Array.prototype.map.call(new Uint8Array(b),function(x){return('0'+x.toString(16)).slice(-2)}).join('')})}}catch(e){}var h=5381;for(var i=0;i%3Cs.length;i++)h=((h%3C%3C5)+h+s.charCodeAt(i))|0;return Promise.resolve('d'+(h%3E%3E%3E0).toString(16))} var PLANS={pass:{name:'Pass',price:59,inc:['Unlimited cards in your wallet','Automatic rules from your history','Rotating category reminders','Cap tracking through the year','The annual fee ledger']},family:{name:'Pass Family',price:99,inc:['Everything in Pass','Up to five people on one plan','Shared household rules','Household earnings view','Per-person breakdown']}}; var SIGNIN=qs('signin')==='1';var plan=(qs('plan')||'').toLowerCase()==='family'?'family':'pass'; var renew=new Date();renew.setFullYear(renew.getFullYear()+1); var renewTxt=renew.toLocaleDateString('en-US',{month:'short',day:'numeric',year:'numeric'}); $('mcRenew').textContent=renewTxt; function setPlan(p,u){plan=p;var P=PLANS[p]; [].forEach.call(document.querySelectorAll('.ck-plan'),function(b){var on=b.getAttribute('data-plan')===p;b.classList.toggle('on',on);b.setAttribute('aria-checked',on?'true':'false')}); $('mcPlan').textContent=P.name;$('lnPlan').textContent=P.name+', 1 year';$('lnPrice').textContent='$'+P.price+'.00';$('lnTot').textContent='$'+P.price+'.00';$('payLbl').textContent='Pay $'+P.price; $('incList').innerHTML=P.inc.map(function(t){return '%3Cli%3E'+t+'%3C/li%3E'}).join(''); if(u)try{history.replaceState(null,'',location.pathname+'?plan='+p)}catch(e){}} [].forEach.call(document.querySelectorAll('.ck-plan'),function(b){b.addEventListener('click',function(){setPlan(b.getAttribute('data-plan'),1)})}); setPlan(plan); var STATES='AL Alabama|AK Alaska|AZ Arizona|AR Arkansas|CA California|CO Colorado|CT Connecticut|DE Delaware|DC District of Columbia|FL Florida|GA Georgia|HI Hawaii|ID Idaho|IL Illinois|IN Indiana|IA Iowa|KS Kansas|KY Ke
ntucky|LA Louisiana|ME Maine|MD Maryland|MA Massachusetts|MI Michigan|MN Minnesota|MS Mississippi|MO Missouri|MT Montana|NE Nebraska|NV Nevada|NH New Hampshire|NJ New Jersey|NM New Mexico|NY New York|NC North Carolina|ND North Dakota|OH Ohio|OK Oklahoma|OR Oregon|PA Pennsylvania|RI Rhode Island|SC South Carolina|SD South Dakota|TN Tennessee|TX Texas|UT Utah|VT Vermont|VA Virginia|WA Washington|WV West Virginia|WI Wisconsin|WY Wyoming'.split('|'); function renderState(){var c=$('country').value;var box=$('stateBox'); if(c==='US'){box.innerHTML='%3Cselect id="state" autocomplete="address-level1"%3E%3Coption value=""%3ESelect%3C/option%3E'+STATES.map(function(s){return '%3Coption value="'+s.slice(0,2)+'"%3E'+s.slice(3)+'%3C/option%3E'}).join('')+'%3C/select%3E';$('stateL').textContent='State';$('zipL').textContent='ZIP code';$('zip').placeholder='78701'} else{var lab={CA:'Province',GB:'County',AU:'State',IE:'County',NZ:'Region'}[c]||'Region';box.innerHTML='%3Cinput id="state" type="text" autocomplete="address-level1" placeholder="'+lab+'"%3E';$('stateL').textContent=lab;$('zipL').textContent='Postal code';$('zip').placeholder={CA:'M5V 2T6',GB:'SW1A 1AA',AU:'2000',IE:'D02 X285',NZ:'6011'}[c]||''} $('state').addEventListener('blur',function(){check('state')});$('state').addEventListener('change',function(){if(touched.state)check('state')})} $('country').addEventListener('change',function(){renderState();if(touched.zip)check('zip')});renderState(); function brand(n){if(/^3[47]/.test(n))return 'amex';if(/^4/.test(n))return 'visa';if(/^(5[1-5]|2[2-7])/.test(n))return 'mc';if(/^(6011|65|64[4-9])/.test(n))return 'disc';return ''} var BN={amex:'AMEX',visa:'VISA',mc:'MASTERCARD',disc:'DISCOVER'}; function luhn(n){if(n.length%3C13||n.length%3E19)return false;var s=0,a=false;for(var i=n.length-1;i%3E=0;i--){var d=+n[i];if(a){d*=2;if(d%3E9)d-=9}s+=d;a=!a}return s%2510===0} function fmtCC(d){var b=brand(d);if(b==='amex'){d=d.slice(0,15);return [d.slice(0,4),d.slice(4,10),d.slice(10,15)].filter(Boolean).join(' ')}d=d.slice(0,19);return (d.match(/.{1,4}/g)||[]).join(' ')} var cc=$('cc'),exp=$('exp'),cvc=$('cvc'),nm=$('name'),pc=$('pc'); cc.addEventListener('input',function(){var d=cc.value.replace(/\D/g,'');var pos=cc.selectionStart,before=cc.value.length;cc.value=fmtCC(d);if(pos%3Cbefore)try{cc.setSelectionRange(pos,pos)}catch(e){}var b=brand(d);$('ccBrand').textContent=BN[b]||'';$('ccBrand').classList.toggle('on',!!b);$('pcNet').textContent=BN[b]||'';cvc.maxLength=b==='amex'?4:3; var mask=(b==='amex'?'•••• •••••• •••••':'•••• •••• •••• ••••').split('');var f=fmtCC(d).split('');for(var i=0;i%3Cf.length%26%26i%3Cmask.length;i++)mask[i]=f[i];$('pcNum').textContent=mask.join('');if(touched.cc)check('cc')}); exp.addEventListener('input',function(e){var d=exp.value.replace(/\D/g,'').slice(0,4);if(d.length===1%26%26+d%3E1)d='0'+d;exp.value=d.length%3E2?d.slice(0,2)+' / '+d.slice(2):d;$('pcExp').textContent=d.length?(d.slice(0,2)+(d.length%3E2?'/'+d.slice(2):'')):'MM/YY';if(touched.exp)check('exp')}); exp.addEventListener('keydown',function(e){if(e.key==='Backspace'%26%26/ \/ $/.test(exp.value)){e.preventDefault();exp.value=exp.value.slice(0,1)}}); cvc.addEventListener('input',function(){cvc.value=cvc.value.replace(/\D/g,'').slice(0,cvc.maxLength);$('pcCvc').textContent=cvc.value?cvc.value.replace(/./g,'•'):'•••';if(touched.cvc)check('cvc')}); cvc.addEventListener('focus',function(){pc.classList.add('flip')});cvc.addEventListener('blur',function(){pc.classList.remove('flip')}); nm.addEventListener('input',function(){var v=nm.value.trim();$('pcName').textContent=v||'Your name';$('mcName').textContent=v||'Your name here';if(touched.name)check('name')}); var touched={}; var RULES={ email:function(v){return /^[^\s@]+@[^\s@]+\.[^\s@]{2,}$/.test(v.trim())?'':'Enter a valid email address.'}, name:function(v){return v.trim().length%3E=2?'':'Enter the name as it appears on your card.'}, cc:function(v){var d=v.replace(/\D/g,'');if(!d)return 'Enter your card number.';if(!luhn(d))return 'That card number is not valid. Check it and try again.';return ''}, exp:function(v){var m=v.replace(/\s/g,'').match(/^(\d{2})\/(\d{2})$/);if(!m)return 'Enter the expiration date as MM / YY.';var mo=+m[1],yr=2000+ +m[2];if(mo%3C1||mo%3E12)return 'Enter a month from 01 to 12.';var now=new Date();if(new Date(yr,mo,1)%3C=new Date(now.getFullYear(),now.getMonth(),1))return 'This card has expired.';return ''}, cvc:function(v){var need=brand(cc.value.replace(/\D/g,''))==='amex'?4:3;return v.length===need?'':'Enter the '+need+'-digit security code.'}, street:function(v){return v.trim().length%3E=4?'':'Enter your billing street address.'}, city:function(v){return v.trim().length%3E=2?'':'Enter your city.'}, state:function(v){return v.trim()?'':($('country').value==='US'?'Select your state.':'Enter your '+$('stateL').textContent.toLowerCase()+'.')}, zip:function(v){var c=$('country').value;v=v.trim();if(c==='US')return /^\d{5}(-\d{4})?$/.test(v)?'':'Enter a 5-digit ZIP code.';return v.length%3E=3?'':'Enter your postal code.'}, uName:function(v){return v.trim().length%3E=2?'':'Enter your full name.'}, uEmail:function(v){return /^[^\s@]+@[^\s@]+\.[^\s@]{2,}$/.test(v.trim())?'':'Enter a valid email address.'}, uPass:function(v){return v.length%3E=8?'':'Use at least 8 characters.'}, iEmail:function(v){return /^[^\s@]+@[^\s@]+\.[^\s@]{2,}$/.test(v.trim())?'':'Enter a valid email address.'}, iPass:function(v){return v?'':'Enter your password.'}}; function check(id){var el=$(id);if(!el)return true;var wrap=document.querySelector('[data-f="'+id+'"]');var m=RULES[id](el.value);if(wrap){wrap.classList.toggle('bad',!!m);wrap.classList.toggle('ok',!m%26%26!!el.value);var mm=wrap.querySelector('.msg');if(mm)mm.textContent=m}el.setAttribute('aria-invalid',m?'true':'false');return !m} Object.keys(RULES).forEach(function(id){var el=$(id);if(!el||id==='state')return;el.addEventListener('blur',function(){if(el.value||touched[id]){touched[id]=1;check(id)}});el.addEventListener('input',function(){if(touched[id])check(id)})}); function validate(ids){var first=null;ids.forEach(function(id){touched[id]=1;if(!check(id)%26%26!first)first=id});if(first){var el=$(first);el.focus({preventScroll:true});el.scrollIntoView({behavior:'smooth',block:'center'})}return !first} function busy(b,on){b.classList.toggle('busy',on);b.disabled=on} function steps(n){[1,2,3].forEach(function(i){var s=$('st'+i);s.classList.toggle('on',i===n);s.classList.toggle('done',i%3Cn);s.querySelector('i').textContent=i%3Cn?'✓':i})} function show(v){['vPay','vUp','vIn'].forEach(function(id){$(id).classList.toggle('on',id===v)});steps(v==='vPay'?1:2);window.scrollTo({top:0,behavior:'smooth'});var f=$(v).querySelector('input');if(f%26%26window.innerWidth%3E700)setTimeout(function(){f.focus({preventScroll:true})},350)} [].forEach.call(document.querySelectorAll('[data-go]'),function(b){b.addEventListener('click',function(){var g=b.getAttribute('data-go');if(g==='vIn'){var o=ld('cp_order');if(o%26%26o.email%26%26!$('iEmail').value)$('iEmail').value=o.email}show(g)})}); [].forEach.call(document.querySelectorAll('[data-eye]'),function(b){b.addEventListener('click',function(){var i=$(b.getAttribute('data-eye'));var s=i.type==='password';i.type=s?'text':'password';b.textContent=s?'Hide':'Show'})}); $('payForm').addEventListener('submit',function(e){e.preventDefault();$('payErr').classList.remove('on'); var ok=validate(['email','name','cc','exp','cvc','street','city','state','zip']);var ag=$('agree').checked;$('agreeRow').classList.toggle('bad',!ag); if(!ok)return;if(!ag){$('payErr').textContent='Agree to the Terms of Service and Privacy Policy to continue.';$('payErr').classList.add('on');return} var b=$('payBtn');busy(b,true); setTimeout(function(){var P=PLANS[plan];var order={plan:plan,price:P.price,email:$('email').value.trim().toLowerCase(),name:$('name').value.trim(),paid:true,paidAt:Date.now(),renews:renew.getTime()}; cc.value='';cvc.value='';exp.value=''; sv('cp_order'
,order);sv('cp_plan',plan);busy(b,false); $('okT').textContent='Payment confirmed';$('okS').textContent=P.name+', $'+P.price+' a year. A receipt is on its way to '+order.email+'.'; $('uName').value=order.name;$('uEmail').value=order.email;show('vUp')},1400)}); var strC=['#e2e7de','#d4775a','#e0a93c','#8fbf6a','#317039']; $('uPass').addEventListener('input',function(){var v=this.value,s=0;if(v.length%3E=8)s++;if(/[A-Z]/.test(v)%26%26/[a-z]/.test(v))s++;if(/\d/.test(v))s++;if(/[^A-Za-z0-9]/.test(v)||v.length%3E=14)s++;if(v.length%3C8)s=Math.min(s,1); [].forEach.call($('str').children,function(el,i){el.style.background=i%3Cs?strC[s]:strC[0]});$('strT').textContent=!v?'Use 8 or more characters with a mix of letters and numbers.':['Too short','Weak','Fair','Good','Strong'][s];if(touched.uPass)check('uPass')}); $('upForm').addEventListener('submit',function(e){e.preventDefault();$('upErr').classList.remove('on');if(!validate(['uName','uEmail','uPass']))return; var b=$('upBtn');busy(b,true);var em=$('uEmail').value.trim().toLowerCase();var o=ld('cp_order')||{}; hash(em+':'+$('uPass').value).then(function(h){var user={name:$('uName').value.trim(),email:em,hash:h,plan:o.plan||plan,createdAt:Date.now()};sv('cp_user',user);sv('cp_session',{email:em,at:Date.now()});sv('cp_plan',user.plan);steps(3);setTimeout(function(){location.href='/pass?onboard=1%26plan='+encodeURIComponent(user.plan)},500)})}); $('inForm').addEventListener('submit',function(e){e.preventDefault();$('inErr').classList.remove('on');if(!validate(['iEmail','iPass']))return; var b=$('inBtn');busy(b,true);var em=$('iEmail').value.trim().toLowerCase(),p=$('iPass').value;var u=ld('cp_user'); hash(em+':'+p).then(function(h){setTimeout(function(){busy(b,false); if(!u||u.email!==em||(u.hash!==h%26%26u.pass!==p)){$('inErr').textContent='That email and password do not match an account on this device. Check them and try again, or choose a plan to get started.';$('inErr').classList.add('on');return} sv('cp_session',{email:em,at:Date.now()});location.href=ld('cp_onboard')?'/pass':'/pass?onboard=1%26plan='+encodeURIComponent(u.plan||'pass')},500)})}); if(SIGNIN){var o=ld('cp_order');if(o%26%26o.email)$('iEmail').value=o.email;show('vIn')} else{var o2=ld('cp_order'),u2=ld('cp_user');if(o2%26%26o2.paid%26%26!u2%26%26Date.now()-o2.paidAt%3C864e5){setPlan(o2.plan==='family'?'family':'pass');$('okS').textContent=PLANS[plan].name+', $'+PLANS[plan].price+' a year. Finish creating your account.';$('uName').value=o2.name||'';$('uEmail').value=o2.email||'';show('vUp')}} })(); %3C/script%3E