if(!window.__uqEngine){
window.__uqEngine=(function(){
"use strict";
var CUR=document.currentScript;
/* fallback copies - the static style/markup above are the primary path */
var CSS="@import url('https://fonts.googleapis.com/css2?family=Chewy&family=Poppins:wght@400;500;600&display=swap');#upairyqz{margin-left:calc(50% - 50vw)!important;margin-right:calc(50% - 50vw)!important;width:100vw;max-width:100vw;background:#ffffff!important;min-height:100vh;padding:0 0 48px 0;position:relative;}#upairyqz,#upairyqz *{box-sizing:border-box;}#upairyqz p{margin:0;}#upairyqz img{max-width:100%;border:0;}#upairyqz .uq-head{max-width:660px;margin:0 auto;padding:22px 18px 6px;position:relative;}#upairyqz .uq-logo{text-align:center;padding-bottom:16px;}#upairyqz .uq-logoimg{height:34px!important;width:auto!important;display:inline-block;}#upairyqz .uq-progrow{display:flex;align-items:center;gap:10px;}#upairyqz .uq-back{appearance:none;-webkit-appearance:none;border:none!important;cursor:pointer;width:34px;height:34px;min-width:34px;border-radius:50%!important;background:#ffffff!important;color:#2b2620!important;box-shadow:0 1px 3px rgba(60,50,30,.14);font-size:16px!important;line-height:1!important;display:flex;align-items:center;justify-content:center;padding:0;transition:transform .15s ease,opacity .2s ease;}#upairyqz .uq-back:hover{transform:translateX(-2px);}#upairyqz .uq-back.uq-hide{opacity:0;pointer-events:none;}#upairyqz .uq-segs{display:flex;gap:8px;flex:1;}#upairyqz .uq-seg{flex:1;height:4px;border-radius:99px;background:#e9e7e0;overflow:hidden;}#upairyqz .uq-seg i{display:block;height:100%;width:0%;background:#4e8a3c;border-radius:99px;transition:width .35s ease;}#upairyqz .uq-stage{max-width:660px;margin:0 auto;padding:12px 14px 0;}#upairyqz .uq-card{background:#ffffff;border:1px solid #eeece6;border-radius:26px;padding:30px 22px 26px;box-shadow:0 1px 2px rgba(60,50,30,.05),0 10px 30px rgba(60,50,30,.07);animation:uqFadeUp .3s ease both;}@keyframes uqFadeUp{from{opacity:0;transform:translateY(12px);}to{opacity:1;transform:translateY(0);}}@media (prefers-reduced-motion:reduce){#upairyqz .uq-card{animation:none;}#upairyqz .uq-seg i{transition:none;}}#upairyqz .uq-h1{font-family:'Chewy',cursive!important;font-weight:600!important;font-size:29px!important;line-height:1.18!important;color:#2b2620!important;margin:0 0 10px;letter-spacing:-.2px;}#upairyqz .uq-h2{font-family:'Chewy',cursive!important;font-weight:600!important;font-size:25px!important;line-height:1.22!important;color:#2b2620!important;margin:0 0 8px;letter-spacing:-.2px;}#upairyqz .uq-sub{font-family:'Poppins',sans-serif!important;font-size:14.5px!important;line-height:1.55!important;color:#6e6552!important;margin:0 0 20px;}#upairyqz .uq-p{font-family:'Poppins',sans-serif!important;font-size:15px!important;line-height:1.65!important;color:#4a4335!important;margin:0 0 14px;}#upairyqz .uq-p b{color:#2b2620;font-weight:600;}#upairyqz .uq-pill{display:inline-block;font-family:'Poppins',sans-serif!important;font-size:11px!important;font-weight:600!important;letter-spacing:1.4px;text-transform:uppercase;color:#4e8a3c!important;background:#eef4ea;border-radius:99px;padding:6px 13px;margin:0 0 12px;line-height:1!important;}#upairyqz .uq-qlabel{font-family:'Poppins',sans-serif!important;font-size:15.5px!important;font-weight:600!important;color:#2b2620!important;margin:4px 0 4px;line-height:1.4!important;}#upairyqz .uq-why{font-family:'Poppins',sans-serif!important;font-size:13px!important;color:#8a8069!important;margin:0 0 16px;line-height:1.5!important;}#upairyqz .uq-ratebar{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:9px;margin:0 0 16px;}#upairyqz .uq-avs{display:flex;align-items:center;}#upairyqz .uq-av{width:26px;height:26px;border-radius:50%;border:2px solid #ffffff;}#upairyqz .uq-av + .uq-av,#upairyqz .uq-plus{margin-left:-9px;}#upairyqz .uq-av1{background:linear-gradient(135deg,#e4c7a4,#c99b6e);}#upairyqz .uq-av2{background:linear-gradient(135deg,#c7d4b3,#9db07f);}#upairyqz .uq-av3{background:linear-gradient(135deg,#ccc2dd,#a394c2);}#upairyqz .uq-plus{width:26px;height:26px;border-radius:50%;background:#ffffff;border:2px solid #ffffff;display:flex;align-items:center;justify-content:center;font-family:'Poppins',sans-serif!important;font-size:9.5px!important;font-weight:600!important;color:#57503f;box-shadow:0 1px 3px rgba(60,50,30,.15);line-height:1!important;}#upairyqz .uq-rstars{color:#d9a93c!important;font-size:15px!important;letter-spacing:1px;line-height:1!important;}#upairyqz .uq-rtxt{font-family:'Poppins',sans-serif!important;font-size:13.5px!important;color:#2b2620!important;line-height:1.2!important;}#upairyqz .uq-rtxt b{font-weight:600;}#upairyqz .uq-laurel{display:flex;align-items:center;justify-content:center;gap:9px;margin:20px 4px 2px;}#upairyqz .uq-fern{display:flex;}#upairyqz .uq-fern svg{display:block;}#upairyqz .uq-fernL{transform:scaleX(-1);}#upairyqz .uq-lltext{font-family:'Poppins',sans-serif!important;font-size:12.5px!important;color:#8a8069!important;line-height:1.45!important;text-align:center;max-width:300px;}#upairyqz .uq-chain{text-align:center;font-family:'Chewy',cursive!important;font-size:19px!important;font-weight:600!important;color:#4e8a3c!important;background:#eef4ea;border-radius:16px;padding:15px 12px;margin:4px 0 16px;line-height:1.35!important;}#upairyqz .uq-warn{display:flex;gap:10px;background:#fbf3e0;border:1px solid #eadfc0;border-radius:16px;padding:14px 15px;margin:4px 0 16px;}#upairyqz .uq-warn .uq-wi{font-size:16px!important;line-height:1.4!important;}#upairyqz .uq-warn .uq-wt{font-family:'Poppins',sans-serif!important;font-size:13.5px!important;line-height:1.55!important;color:#6b5c33!important;}#upairyqz .uq-warn .uq-wt b{color:#4a3f20;}#upairyqz .uq-callout{background:#f5f4ee;border-radius:16px;padding:16px 17px;margin:4px 0 16px;font-family:'Poppins',sans-serif!important;font-size:14px!important;line-height:1.6!important;color:#4a4335!important;text-align:center;}#upairyqz .uq-callout b{color:#2b2620;}#upairyqz .uq-tease{font-family:'Poppins',sans-serif!important;font-size:13px!important;color:#8a8069!important;text-align:center;margin:2px 0 16px;line-height:1.5!important;}#upairyqz .uq-opts{margin:6px 0 4px;}#upairyqz .uq-opt{appearance:none;-webkit-appearance:none;width:100%;text-align:left;display:flex;align-items:center;gap:13px;cursor:pointer;background:#ffffff!important;border:1.5px solid #e6e4db!important;border-radius:16px!important;padding:13px 15px;margin:0 0 10px;transition:border-color .16s ease,background .16s ease,transform .12s ease;}#upairyqz .uq-opt:active{transform:scale(.985);}#upairyqz .uq-opt .uq-ico{width:40px;height:40px;min-width:40px;border-radius:12px;background:#f3f2ec;display:flex;align-items:center;justify-content:center;font-size:19px!important;line-height:1!important;}#upairyqz .uq-opt .uq-lab{font-family:'Poppins',sans-serif!important;font-size:14.5px!important;font-weight:500!important;color:#2b2620!important;line-height:1.4!important;flex:1;}#upairyqz .uq-opt .uq-chk{width:22px;height:22px;min-width:22px;border-radius:50%;border:1.5px solid #d9d7cc;display:flex;align-items:center;justify-content:center;font-size:12px!important;color:#ffffff!important;line-height:1!important;transition:all .15s ease;}#upairyqz .uq-opt.uq-on{border-color:#4e8a3c!important;background:#f0f5ec!important;}#upairyqz .uq-opt.uq-on .uq-chk{background:#4e8a3c;border-color:#4e8a3c;}#upairyqz .uq-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:6px 0 4px;}#upairyqz .uq-agecard{position:relative;appearance:none;-webkit-appearance:none;cursor:pointer;padding:0;background:#ffffff!important;border:1.5px solid #e6e4db!important;border-radius:18px!important;overflow:hidden;transition:border-color .16s ease,transform .12s ease;}#upairyqz .uq-agecard:active{transform:scale(.98);}#upairyqz .uq-agecard.uq-on{border-color:#4e8a3c!important;}#upairyqz .uq-ageimg{width:100%;aspect-ratio:4/5;background:radial-gradient(circle at 50% 42%,#f7f7f2 0%,#ecece4 100%);display:flex;align-items:center;justify-content:center;}#upairyqz .uq-ageimg img{width:100%;height:100%;object-fit:cover;display:block;}#upairyqz .uq-ageimg .uq-agemoji{font-size:46px!important;line-height:1!important;}#upairyqz .uq-agelab{position:absolute;left:10px;right:10px;bottom:10px;background:#ffffff;border-radius:12px;padding:10px 6px;box-shadow:0 2px 8px rgba(60,50,30,.14);font-family:'Poppins',sans-serif!important;font-size:13.5px!important;font-weight:600!important;color:#2b2620!important;text-align:center;line-height:1.2!important;}#upairyqz .uq-agecard.uq-on .uq-agelab{color:#4e8a3c!important;}#upairyqz .uq-btn{appearance:none;-webkit-appearance:none;border:0!important;cursor:pointer;display:block;width:100%;text-align:center;text-decoration:none!important;background:#4e8a3c!important;color:#ffffff!important;border-radius:999px!important;font-family:'Poppins',sans-serif!important;font-size:16px!important;font-weight:600!important;line-height:1.2!important;padding:17px 24px;margin:14px 0 2px;box-shadow:0 6px 16px rgba(78,138,60,.28);transition:background .16s ease,transform .12s ease,opacity .2s ease;}#upairyqz .uq-btn:hover{background:#43792f!important;color:#ffffff!important;}#upairyqz .uq-btn:active{transform:scale(.985);}#upairyqz .uq-btn:disabled{opacity:.45;cursor:default;box-shadow:none;}#upairyqz .uq-scorewrap{text-align:center;padding:6px 0 2px;}#upairyqz .uq-scorenum{font-family:'Chewy',cursive!important;font-weight:400!important;font-size:76px!important;line-height:1!important;color:#4e8a3c!important;display:inline-block;}#upairyqz .uq-scoreof{font-family:'Chewy',cursive!important;font-size:28px!important;font-weight:400!important;color:#8a887c!important;margin-left:4px;}#upairyqz .uq-status{display:inline-block;font-family:'Poppins',sans-serif!important;font-size:11.5px!important;font-weight:600!important;letter-spacing:1.4px;text-transform:uppercase;color:#4e8a3c!important;background:#eef4ea;border:1px solid #d8e6d0;border-radius:99px;padding:7px 15px;margin:14px 0 14px;line-height:1!important;}#upairyqz .uq-loop{background:#ffffff;border:1px solid #e6e4db;border-radius:18px;padding:18px 16px;margin:14px 0 4px;text-align:center;}#upairyqz .uq-loop .uq-lt{font-family:'Poppins',sans-serif!important;font-size:12.5px!important;font-weight:600!important;color:#2b2620!important;margin:0 0 6px;line-height:1.4!important;}#upairyqz .uq-loop .uq-lm{font-family:'Poppins',sans-serif!important;font-size:13.5px!important;color:#6e6552!important;margin:0 0 8px;line-height:1.5!important;}#upairyqz .uq-loop .uq-lc{font-family:'Chewy',cursive!important;font-size:19px!important;font-weight:600!important;color:#4e8a3c!important;margin:0 0 8px;line-height:1.3!important;}#upairyqz .uq-loop .uq-lf{font-family:'Poppins',sans-serif!important;font-size:12.5px!important;color:#8a8069!important;line-height:1.5!important;}#upairyqz .uq-chips{display:flex;flex-wrap:wrap;gap:8px;margin:2px 0 18px;}#upairyqz .uq-chip{font-family:'Poppins',sans-serif!important;font-size:12.5px!important;font-weight:500!important;color:#5c5442!important;background:#f1f0e9;border-radius:99px;padding:7px 13px;line-height:1.2!important;}#upairyqz .uq-lrow{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:15px 2px;border-bottom:1px solid #ecebe4;}#upairyqz .uq-lrow:last-of-type{border-bottom:none;}#upairyqz .uq-lrow .uq-ln{font-family:'Poppins',sans-serif!important;font-size:14.5px!important;color:#4a4335!important;line-height:1.4!important;}#upairyqz .uq-ldot{width:22px;height:22px;min-width:22px;border-radius:50%;border:1.5px solid #d9d7cc;display:flex;align-items:center;justify-content:center;font-size:12px!important;color:#ffffff!important;line-height:1!important;transition:all .2s ease;}#upairyqz .uq-lrow.uq-done .uq-ldot{background:#4e8a3c;border-color:#4e8a3c;}#upairyqz .uq-lpct{font-family:'Poppins',sans-serif!important;font-size:13px!important;font-weight:600!important;color:#4e8a3c!important;min-width:38px;text-align:right;}#upairyqz .uq-lbar{height:5px;border-radius:99px;background:#e6e4db;margin:10px 2px 2px;overflow:hidden;}#upairyqz .uq-lbar i{display:block;height:100%;width:0%;background:#4e8a3c;border-radius:99px;}#upairyqz .uq-review{background:#ffffff;border:1px solid #e6e4db;border-radius:18px;padding:16px 17px;margin:16px 0 2px;}#upairyqz .uq-stars{color:#d9a93c!important;font-size:14px!important;letter-spacing:2px;margin:0 0 7px;line-height:1!important;}#upairyqz .uq-rtext{font-family:'Poppins',sans-serif!important;font-size:13.5px!important;line-height:1.6!important;color:#4a4335!important;font-style:italic;margin:0 0 8px;}#upairyqz .uq-rname{font-family:'Poppins',sans-serif!important;font-size:13px!important;font-weight:600!important;color:#2b2620!important;line-height:1.3!important;}#upairyqz .uq-rname span{color:#4e8a3c;}#upairyqz .uq-covered{background:#f2f7ef;border-left:3px solid #4e8a3c;border-radius:0 16px 16px 0;padding:14px 16px;margin:4px 0 16px;}#upairyqz .uq-covered .uq-ct{font-family:'Chewy',cursive!important;font-size:17px!important;font-weight:600!important;color:#2b2620!important;margin:0 0 5px;line-height:1.3!important;}#upairyqz .uq-covered .uq-cb{font-family:'Poppins',sans-serif!important;font-size:13.5px!important;line-height:1.6!important;color:#4a4335!important;}#upairyqz .uq-plancard{background:#ffffff;border:1px solid #e6e4db;border-radius:18px;padding:19px 18px 8px;margin:6px 0 16px;}#upairyqz .uq-plancard .uq-pt{font-family:'Poppins',sans-serif!important;font-size:13.5px!important;font-weight:600!important;color:#2b2620!important;margin:0 0 14px;line-height:1.4!important;}#upairyqz .uq-step{border-left:3px solid #4e8a3c;padding:0 0 4px 14px;margin:0 0 15px;}#upairyqz .uq-step .uq-sd{font-family:'Poppins',sans-serif!important;font-size:11px!important;font-weight:600!important;letter-spacing:1.3px;color:#8a8069!important;text-transform:uppercase;margin:0 0 3px;line-height:1.3!important;}#upairyqz .uq-step .uq-st{font-family:'Chewy',cursive!important;font-size:18px!important;font-weight:600!important;color:#4e8a3c!important;margin:0 0 4px;line-height:1.25!important;}#upairyqz .uq-step .uq-sb{font-family:'Poppins',sans-serif!important;font-size:13.5px!important;line-height:1.6!important;color:#4a4335!important;}#upairyqz .uq-trust{display:flex;flex-wrap:wrap;justify-content:center;gap:7px 16px;font-family:'Poppins',sans-serif!important;font-size:12.5px!important;color:#6e6552!important;margin:14px 0 2px;text-align:center;line-height:1.4!important;}#upairyqz .uq-prodimg{width:100%;border-radius:18px;overflow:hidden;margin:4px 0 16px;background:radial-gradient(circle at 50% 45%,#f7f7f2 0%,#ecece4 100%);}#upairyqz .uq-prodimg img{width:100%;display:block;}#upairyqz .uq-prodimg .uq-pph{display:flex;align-items:center;justify-content:center;aspect-ratio:4/3;font-size:52px!important;}#upairyqz .uq-prodname{font-family:'Chewy',cursive!important;font-size:23px!important;font-weight:600!important;color:#2b2620!important;text-align:center;margin:0 0 8px;line-height:1.25!important;}#upairyqz .uq-proddesc{font-family:'Poppins',sans-serif!important;font-size:14px!important;line-height:1.65!important;color:#4a4335!important;text-align:center;margin:0 0 6px;}#upairyqz .uq-center{text-align:center;}#upairyqz .uq-reward{background:#eef4ea;border:1px solid #d8e6d0;border-radius:18px;padding:17px 16px;text-align:center;margin:14px 0 12px;}#upairyqz .uq-reward .uq-rw1{font-family:'Poppins',sans-serif!important;font-size:11px!important;font-weight:600!important;letter-spacing:1.4px;text-transform:uppercase;color:#2c5530!important;margin:0 0 6px;line-height:1!important;}#upairyqz .uq-reward .uq-rw2{font-family:'Chewy',cursive!important;font-size:24px!important;font-weight:600!important;color:#2b2620!important;margin:0 0 5px;line-height:1.2!important;}#upairyqz .uq-reward .uq-rw2 span{color:#4e8a3c;}#upairyqz .uq-reward .uq-rw3{font-family:'Poppins',sans-serif!important;font-size:12.5px!important;color:#6e6552!important;line-height:1.4!important;}#upairyqz .uq-stock{display:block;width:fit-content;margin:0 auto 12px;font-family:'Poppins',sans-serif!important;font-size:12.5px!important;color:#b0482f!important;background:#fdefe9;border:1px solid #f2d5c8;border-radius:99px;padding:7px 14px;line-height:1.3!important;}#upairyqz .uq-guarantee{background:#2c5530!important;border-radius:18px;padding:19px 18px;text-align:center;margin:6px 0 14px;}#upairyqz .uq-guarantee .uq-g1{font-family:'Chewy',cursive!important;font-size:19px!important;font-weight:600!important;color:#ffffff!important;margin:0 0 5px;line-height:1.3!important;}#upairyqz .uq-guarantee .uq-g2{font-family:'Poppins',sans-serif!important;font-size:13px!important;color:#d9e6d6!important;line-height:1.55!important;}#upairyqz .uq-sticky{display:none;position:fixed;left:0;right:0;bottom:0;z-index:60;background:rgba(255,255,255,.94);backdrop-filter:blur(8px);box-shadow:0 -6px 20px rgba(60,50,30,.09);padding:11px 16px calc(11px + env(safe-area-inset-bottom));}#upairyqz.uq-final .uq-sticky{display:block;}#upairyqz .uq-sticky .uq-btn{max-width:620px;margin:0 auto;}#upairyqz.uq-final{padding-bottom:120px;}@media (min-width:700px){#upairyqz .uq-card{padding:40px 40px 34px;}#upairyqz .uq-h1{font-size:36px!important;}#upairyqz .uq-h2{font-size:29px!important;}#upairyqz .uq-scorenum{font-size:88px!important;}}body.uq-chromeless .shopify-section-group-header-group,body.uq-chromeless .shopify-section-group-footer-group{display:none!important;}.shopify-section-group-header-group,.shopify-section-group-footer-group,#shopify-section-header,#shopify-section-footer{display:none!important;}#upairyqz .uq-skip{display:inline-block;font-family:'Poppins',sans-serif!important;font-size:12.5px!important;color:#8a8069!important;text-decoration:underline!important;margin:0 0 14px;line-height:1.3!important;}#upairyqz .uq-skip:hover{color:#57503f!important;}#upairyqz img.uq-av{object-fit:cover;display:block;}#upairyqz .uq-sfacts{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin:2px 0 14px;}#upairyqz .uq-sfact{font-family:'Poppins',sans-serif!important;font-size:12.5px!important;font-weight:500!important;color:#3f6b31!important;background:#eef4ea;border:1px solid #d8e6d0;border-radius:99px;padding:7px 13px;line-height:1.2!important;}#upairyqz .uq-sfact.uq-sgap{color:#8a6a2b!important;background:#fbf3e0;border-color:#eadfc0;}#upairyqz .uq-strans{font-family:'Poppins',sans-serif!important;font-size:12.5px!important;color:#8a8069!important;line-height:1.55!important;text-align:center;margin:0 0 14px;}#upairyqz .uq-helps{background:#eef4ea;border-left:3px solid #4e8a3c;border-radius:0 16px 16px 0;padding:14px 16px;margin:4px 0 16px;}#upairyqz .uq-helps .uq-ht{font-family:'Poppins',sans-serif!important;font-size:13px!important;font-weight:600!important;color:#2c5530!important;margin:0 0 5px;line-height:1.3!important;}#upairyqz .uq-helps .uq-hb{font-family:'Poppins',sans-serif!important;font-size:13.5px!important;line-height:1.6!important;color:#3f4a38!important;}#upairyqz .uq-helps .uq-hb b{color:#2b2620;}#upairyqz .uq-rc{display:flex;align-items:center;gap:12px;background:#f7f6f1;border:1px solid #ecebe4;border-radius:14px;padding:12px 14px;margin:0 0 10px;opacity:0;transform:translateY(6px);transition:opacity .35s ease,transform .35s ease;}#upairyqz .uq-rc.uq-in{opacity:1;transform:translateY(0);}#upairyqz .uq-rck{width:22px;height:22px;min-width:22px;border-radius:50%;background:#4e8a3c;color:#fff!important;display:flex;align-items:center;justify-content:center;font-size:12px!important;line-height:1!important;}#upairyqz .uq-rcb{display:flex;flex-direction:column;gap:2px;}#upairyqz .uq-rcl{font-family:'Poppins',sans-serif!important;font-size:10.5px!important;font-weight:600!important;letter-spacing:1.2px;text-transform:uppercase;color:#8a8069!important;line-height:1.2!important;}#upairyqz .uq-rcv{font-family:'Poppins',sans-serif!important;font-size:14.5px!important;font-weight:600!important;color:#2b2620!important;line-height:1.3!important;}#upairyqz .uq-review{transition:opacity .5s ease;}";
var SHELL="<div class=\"uq-head\"><div class=\"uq-logo\"><img class=\"uq-logoimg\" width=\"140\" height=\"34\" src=\"https://cdn.shopify.com/s/files/1/0684/6149/4493/files/BlackUpairy_dae8e29a-9b26-4fdc-b51e-f6ceb075ccb9.png?v=1784073005\" alt=\"UpAiry\"></div><div class=\"uq-progrow\"><button class=\"uq-back uq-hide\" type=\"button\" aria-label=\"Back\">←</button><div class=\"uq-segs\"><div class=\"uq-seg\"><i></i></div><div class=\"uq-seg\"><i></i></div><div class=\"uq-seg\"><i></i></div><div class=\"uq-seg\"><i></i></div></div></div></div><div class=\"uq-stage\"></div><div class=\"uq-sticky\"></div>";
function bootOne(wrap){
try{
if(wrap.getAttribute("data-uq-booted")==="1"){ return; }
wrap.setAttribute("data-uq-booted","1");
if(!document.getElementById("uq-css")){
var st=document.createElement("style");
st.id="uq-css"; st.textContent=CSS;
document.head.appendChild(st);
}
if(!wrap.querySelector(".uq-stage")){ wrap.innerHTML=SHELL; }
var stage=wrap.querySelector(".uq-stage");
var backBt=wrap.querySelector(".uq-back");
var segs=wrap.querySelector(".uq-segs").children;
var sticky=wrap.querySelector(".uq-sticky");
/* ================= CONFIG - ZACH: EDIT THIS BLOCK ================= */
var CONFIG = {
LP_URL: "https://www.upairy.com/pages/quiz-lp", /* final CTA destination */
PASS_PARAMS: true, /* appends ?uqscore=&uqage=&uqtemp= */
HIDE_THEME_CHROME: true, /* hides theme header+footer on the quiz page only */
RATING: "4.82", /* set the REAL figure */
LAUREL_LINE: "The #1 potty training solution — trusted by parents worldwide", /* fern-flanked line, your wording call */
OFFER_HEAD: "Up to 6 pairs FREE", /* quiz reward */
OFFER_SUB: "Applied automatically at checkout",
STOCK_LINE: "", /* leave "" unless genuinely true */
PRODUCT_IMG: "https://cdn.shopify.com/s/files/1/0684/6149/4493/files/1j16a11j16a11j1_1.png?v=1780956692",
AGE_IMAGES: [
"https://cdn.shopify.com/s/files/1/0684/6149/4493/files/18to24m.png?v=1784077716",
"https://cdn.shopify.com/s/files/1/0684/6149/4493/files/2-3.png?v=1784077716",
"https://cdn.shopify.com/s/files/1/0684/6149/4493/files/3to4.png?v=1784077716",
"https://cdn.shopify.com/s/files/1/0684/6149/4493/files/4plus.png?v=1784077716"
],
AV_IMAGES: [
"https://cdn.shopify.com/s/files/1/0684/6149/4493/files/3hW5N0arTf810tdSH2-VK_QkyJ33Yi.png?v=1780884533",
"https://cdn.shopify.com/s/files/1/0684/6149/4493/files/P4qda_8QRBN2ThXa29Z1d_6bStJaIm.png?v=1780884532",
"https://cdn.shopify.com/s/files/1/0684/6149/4493/files/review_1_8d399547-3e32-4fc7-be5c-8ed43cfdfa72.png?v=1780883775"
],
REVIEW_LOADING: { /* real customer quote (Facebook group, from VOC research) - swap NAME for the actual reviewer */
text: "I’ve loved these for my 2-year-old. We’re on day 3 and he’s only had two accidents — and he’s going on the potty!",
name: "Kayla M."
},
REVIEW_OFFER: { /* real customer quote (r/pottytraining, from VOC research) - swap NAME for the actual reviewer */
text: "They hold a lot — he’ll pee with a full bladder before telling us and nothing gets through. Fewer outfit changes, way less stress when accidents happen. We like them better.",
name: "Renee S."
}
};
/* ================================================================== */
var FERN = '<svg width="20" height="40" viewBox="0 0 20 40" fill="none" aria-hidden="true"><path fill="#C8A700" d="M4.42 38.908c.412.438.94.754 1.524.914.753.197 1.455.122 2.263-.104a9.4 9.4 0 0 0 1.965-.829 9.4 9.4 0 0 0-1.97-.816c-.81-.22-1.511-.29-2.264-.09a3.3 3.3 0 0 0-1.517.925M3.983 38.131a3.16 3.16 0 0 1 .02-1.753c.232-.731.67-1.275 1.293-1.828a9.4 9.4 0 0 1 1.76-1.194 9 9 0 0 1-.344 2.075c-.24.79-.553 1.411-1.127 1.93a3.3 3.3 0 0 1-1.602.77M9.294 36.019a3.2 3.2 0 0 0 1.67.404c.751-.035 1.374-.305 2.05-.743a9 9 0 0 0 1.56-1.324 9.2 9.2 0 0 0-2.053-.186c-.809.03-1.475.165-2.107.566a3.1 3.1 0 0 0-1.12 1.283M8.662 35.43a3.06 3.06 0 0 1-.5-1.617c-.004-.74.238-1.364.647-2.05a9 9 0 0 1 1.263-1.6c.177.654.277 1.326.298 2.003.013.795-.09 1.456-.463 2.097a3.13 3.13 0 0 1-1.245 1.166M13.068 31.953c.511.177 1.063.21 1.593.098a3.7 3.7 0 0 0 1.746-1.012 8.3 8.3 0 0 0 1.202-1.464 8.5 8.5 0 0 0-1.906.164 3.7 3.7 0 0 0-1.83.859c-.39.37-.67.838-.805 1.355M12.39 31.518a2.86 2.86 0 0 1-.73-1.396 3.55 3.55 0 0 1 .245-1.977 8.2 8.2 0 0 1 .884-1.668 8.2 8.2 0 0 1 .61 1.782 3.55 3.55 0 0 1-.069 1.991c-.188.5-.513.939-.94 1.268M15.844 26.916a2.8 2.8 0 0 0 1.478-.287 3.43 3.43 0 0 0 1.345-1.336c.308-.51.556-1.053.738-1.619a8 8 0 0 0-1.7.6 3.45 3.45 0 0 0-1.457 1.216c-.267.43-.407.923-.404 1.426M15.12 26.68a2.73 2.73 0 0 1-1.007-1.102 3.35 3.35 0 0 1-.261-1.862c.065-.59.198-1.17.398-1.73.387.455.72.952.993 1.482.314.56.46 1.195.424 1.833-.049.5-.239.978-.547 1.379M17.263 21.856a2.76 2.76 0 0 0 1.368-.592c.481-.423.831-.97 1.01-1.58.186-.56.307-1.138.359-1.725a7.8 7.8 0 0 0-1.514.942c-.517.38-.914.896-1.146 1.488-.164.472-.19.98-.078 1.467M16.509 21.78a2.74 2.74 0 0 1-1.218-.854 3.34 3.34 0 0 1-.662-1.748 7.6 7.6 0 0 1 .006-1.76c.475.358.907.768 1.287 1.224.428.475.71 1.06.814 1.685.063.495-.016.999-.227 1.453M17.392 16.678c.432-.157.811-.43 1.094-.787a3 3 0 0 0 .58-1.592 7 7 0 0 0-.025-1.596 7 7 0 0 0-1.153 1.124c-.381.436-.63.969-.718 1.537-.051.45.026.905.222 1.314M16.71 16.755a2.5 2.5 0 0 1-1.249-.521 3.06 3.06 0 0 1-.933-1.42 7 7 0 0 1-.345-1.561c.492.226.956.507 1.383.837.473.34.839.802 1.056 1.336a2.4 2.4 0 0 1 .087 1.329M16.527 12.143a2.27 2.27 0 0 0 .84-.917c.219-.487.294-1.024.217-1.551a6.4 6.4 0 0 0-.332-1.442q-.485.57-.827 1.233a2.8 2.8 0 0 0-.354 1.527c.04.418.198.816.456 1.15M15.923 12.34a2.34 2.34 0 0 1-1.231-.24 2.86 2.86 0 0 1-1.12-1.113 6.4 6.4 0 0 1-.615-1.348q.737.17 1.415.5c.494.219.915.57 1.215 1.013.222.358.338.77.336 1.189M14.736 7.93c.307-.267.532-.612.65-.998a2.7 2.7 0 0 0-.04-1.503c-.13-.458-.312-.9-.543-1.317a6.2 6.2 0 0 0-.589 1.297 2.68 2.68 0 0 0-.092 1.502c.104.39.317.742.614 1.02M14.195 8.21a2.25 2.25 0 0 1-1.206-.038 2.77 2.77 0 0 1-1.238-.884 6.2 6.2 0 0 1-.797-1.184c.482.032.959.118 1.42.257.504.132.959.4 1.313.775.268.305.443.677.508 1.074M12.304 4.211c.237-.304.383-.666.421-1.047.03-.485-.08-.968-.316-1.395a6 6 0 0 0-.75-1.13 5.8 5.8 0 0 0-.31 1.315c-.072.48-.006.972.193 1.417.17.344.434.635.762.84M11.852 4.569a2.13 2.13 0 0 1-1.132.18 2.65 2.65 0 0 1-1.32-.602 6 6 0 0 1-.962-.962A6 6 0 0 1 9.81 3.17c.494.033.967.202 1.368.488.306.236.54.551.673.91M9.765 2.028a2 2 0 0 1-1.062-.096 2.44 2.44 0 0 1-1.045-.844A5.5 5.5 0 0 1 7.018 0c.423.054.84.155 1.24.301a2.45 2.45 0 0 1 1.116.752c.22.283.355.621.39.975"></path><path fill="#C8A700" d="m.1 40 .528-.121c.344-.08.86-.211 1.493-.412a21.23 21.23 0 0 0 10.639-7.528 22.2 22.2 0 0 0 3.744-7.902 22.9 22.9 0 0 0 .464-8.693 22 22 0 0 0-2.365-7.227 22.6 22.6 0 0 0-4.142-5.538l-.388-.374-.045.045.384.376a22.488 22.488 0 0 1 4.08 5.547 21.9 21.9 0 0 1 2.291 7.195 22.7 22.7 0 0 1-.528 8.607 21.994 21.994 0 0 1-3.757 7.773A20.85 20.85 0 0 1 1.99 39.063c-.627.193-1.115.312-1.462.39L0 39.57z"></path></svg>';
var CHAIN = "Feel it → Know it → Potty";
var AGES = [
{ v:"18-24m", lab:"18–24 months", moji:"🍼", say:"18–24 month old" },
{ v:"2-3y", lab:"2–3 years", moji:"🧸", say:"2–3 year old" },
{ v:"3-4y", lab:"3–4 years", moji:"🎨", say:"3–4 year old" },
{ v:"4y+", lab:"4+ years", moji:"🚀", say:"4+ year old" }
];
var BRIDGES = {
"18-24m": [
{t:"p", h:"This is the earliest window — and it can be a great one."},
{t:"p", h:"At this age kids don’t learn from words or rewards. They learn from one thing: <b>feeling what their body is doing.</b>"},
{t:"chain"},
{t:"p", h:"Most children this young are still building that first link. Totally normal. The goal right now isn’t speed — it’s connection."},
{t:"warn", h:"A child can’t practice noticing a feeling that gets erased in seconds."}
],
"2-3y": [
{t:"p", h:"Good news — this is the window where it usually clicks."},
{t:"p", h:"But kids don’t learn by sitting on the potty. They learn by connecting a chain:"},
{t:"chain"},
{t:"p", h:"If your child sits happily, gets up, then pees on the floor ten minutes later like nothing happened… that’s not defiance. The chain is broken at step one — <b>they never felt it coming.</b>"},
{t:"warn", h:"You can’t reward or remind a child into noticing a feeling they never get to feel."}
],
"3-4y": [
{t:"p", h:"First: nothing is wrong with your child."},
{t:"p", h:"By now most parents have tried a few things — and when it doesn’t stick, the pressure starts. Preschool deadlines. Grandparent comments. The doubt."},
{t:"p", h:"Here’s what’s usually true: it’s not motivation. Kids this age <b>want</b> to be big. What’s missing is the chain:"},
{t:"chain"},
{t:"p", h:"Years in super-absorbent disposables mean many 3-year-olds have simply never practiced step one."},
{t:"warn", h:"More pressure on a child who can’t feel the signal creates battles — not progress."}
],
"4y+": [
{t:"p", h:"Take a breath. You are not the only one — not even close."},
{t:"p", h:"Parents of older kids carry the most doubt and deserve it least — because by 4, the issue is almost never willpower or intelligence."},
{t:"p", h:"It’s usually the first link in the chain:"},
{t:"chain"},
{t:"p", h:"The longer a child spends in modern disposables, the longer their body goes without practicing that first step — noticing the feeling <b>before</b> it becomes an accident. That skill can switch on at any age. Often faster in older kids, because everything else is already in place."},
{t:"warn", h:"Waiting longer doesn’t build the skill. Feeling does."}
]
};
var BRINGS = [
{ v:"first", moji:"✨", lab:"First time — want to start it right", chal:"Just getting started" },
{ v:"ready", moji:"🤔", lab:"Not sure my child is ready", chal:"Not sure they’re ready" },
{ v:"stuck", moji:"🔥", lab:"We’re trying, but it’s not sticking", chal:"Trying, but it’s not sticking" },
{ v:"refuse", moji:"⛈️", lab:"They refuse the potty or melt down", chal:"Refusal and meltdowns" },
{ v:"regress", moji:"🔄", lab:"They were trained… then regressed", chal:"Trained, then regressed" },
{ v:"deadline", moji:"⏰", lab:"Daycare or preschool deadline is coming", chal:"Deadline coming up" }
];
var WEAR = [
{ v:"diapers", moji:"👶", lab:"Diapers", chip:"In diapers", rec:"Diapers", phrase:"in diapers most of the day" },
{ v:"pullups", moji:"🩲", lab:"Disposable pull-up style pants", chip:"In disposables", rec:"Disposables", phrase:"in disposable training pants most of the day" },
{ v:"under", moji:"🌈", lab:"Regular underwear (accidents and all)", chip:"In underwear", rec:"Underwear", phrase:"already in regular underwear" },
{ v:"bare", moji:"🍑", lab:"Bare bottom at home", chip:"Bare-bottom days", rec:"Nothing / bare at home", phrase:"doing bare-bottom time at home" },
{ v:"mix", moji:"🔀", lab:"A mix, depending on the day", chip:"Mixed wear", rec:"A mix", phrase:"in a mix of wear through the day" }
];
var READY = [
{ v:"bothered", moji:"😖", lab:"Bothered by a wet or dirty diaper — wants it changed" },
{ v:"tells", moji:"🗣️", lab:"Tells you when they’ve gone (even if it’s after)" },
{ v:"curious", moji:"🚽", lab:"Curious about the toilet — follows you in, wants to flush" },
{ v:"dry2h", moji:"⏱️", lab:"Stays dry for 2+ hours at a stretch" },
{ v:"pants", moji:"🩳", lab:"Can pull pants up and down mostly by themselves" },
{ v:"pauses", moji:"🙈", lab:"Pauses, squats, or hides when they’re going" },
{ v:"none", moji:"❌", lab:"None of these yet", ex:true }
];
var ACC = [
{ v:"sitthen", moji:"🚽", lab:"They sit on the potty… then go right after getting up" },
{ v:"plays", moji:"🎮", lab:"They pee and keep playing, totally unbothered" },
{ v:"nonotice", moji:"💧", lab:"They don’t seem to notice they’re wet" },
{ v:"hides", moji:"🙈", lab:"They hide to pee or poop" },
{ v:"holds", moji:"⏳", lab:"They hold it for hours, then it’s too late" },
{ v:"pooponly", moji:"💩", lab:"Pee is fine — poop only happens in a diaper" },
{ v:"rare", moji:"✅", lab:"Honestly, accidents are getting rarer" }
];
var HARDER = [
{ v:"consti", moji:"💩", lab:"Constipation or poop withholding" },
{ v:"fear", moji:"😨", lab:"Afraid of the toilet, or of letting go" },
{ v:"overwhelm", moji:"🌊", lab:"Gets overwhelmed or pressured easily" },
{ v:"adhd", moji:"🧩", lab:"ADHD, autism, or a suspicion of either" },
{ v:"change", moji:"🏠", lab:"Big change at home — new sibling, moving, new daycare" },
{ v:"nothing", moji:"✅", lab:"Nothing extra — just the training itself", ex:true }
];
var TRIED = [
{ v:"stickers", moji:"⭐", lab:"Sticker charts or reward jars", short:"Sticker charts" },
{ v:"candy", moji:"🍬", lab:"Candy bribes (the M&M method)", short:"Candy bribes" },
{ v:"timers", moji:"⏰", lab:"Timers or scheduled potty sits", short:"Timers" },
{ v:"naked", moji:"🩳", lab:"The 3-day naked-weekend method", short:"The naked weekend" },
{ v:"books", moji:"📚", lab:"Books, songs, potty videos", short:"Potty books and songs" },
{ v:"waiting", moji:"🧘", lab:"Waiting for them to “show readiness”", short:"Waiting for readiness" },
{ v:"pullups", moji:"🩲", lab:"Disposable training pants", short:"Disposable training pants" },
{ v:"none", moji:"🆕", lab:"Nothing yet — just starting", ex:true }
];
var TEMP = [
{ v:"strong", moji:"🦁", lab:"Strong-willed — everything on their terms", say:"strong-willed",
clause:"They need to feel in charge of it — the feedback does the teaching, so you don’t have to be the potty police." },
{ v:"cautious",moji:"🐢", lab:"Cautious — needs to feel safe first", say:"cautious",
clause:"They need it to feel safe and predictable — feeling wetness with a safety net, no big messes, no big reactions." },
{ v:"easy", moji:"🦋", lab:"Easygoing — goes with the flow", say:"easygoing",
clause:"They just need the information their body’s been missing — once they feel it, they tend to roll with it." },
{ v:"busy", moji:"🐿", lab:"Busy — too absorbed in play to stop", say:"busy",
clause:"They need a signal loud enough to interrupt play — one they feel instantly, not one you announce." }
];
var COVERED = [
{ k:"adhd", body:"Kids with ADHD or autism often need stronger, more immediate body feedback — not more reminders. That’s exactly what this plan is built on. Common, and very trainable." },
{ k:"fear", body:"For a child scared of letting go, pressure is the enemy. Every step stays low-stakes — no forced sits, no big reactions. The feedback does the talking." },
{ k:"consti", body:"Poop withholding usually rides on discomfort, not defiance. Go gently there — and if it persists, loop in your doctor. The plan keeps pee-side progress moving in the meantime." },
{ k:"overwhelm", body:"The plan strips training down to one clear signal — less talking, fewer steps, no pressure spikes." },
{ k:"change", body:"Timing matters. The plan works with the disruption, not against it — consistency in one small thing while everything else moves." }
];
var STATUS = {
hidden: { pill:"SIGNAL HIDDEN",
line:"Right now, not much of the signal is getting through — they feel it late, or not at all. That’s the first link in the loop, and the easiest one to build. The next step is making it impossible to miss — safely.",
planH:"here’s how we close the gap." },
building:{ pill:"SIGNAL STILL BUILDING",
line:"They’re catching pieces of the signal — just not consistently yet. The next step is making it impossible to miss.",
planH:"closer than it feels at home." },
almost: { pill:"SIGNAL ALMOST CONNECTED",
line:"Most of the wiring is already in place — they’re closer than it probably feels at home. The next step is the same clear feedback, every single time.",
planH:"the wiring is nearly there." }
};
var TIMELN = { hidden:"2–3 weeks with the right feedback", building:"1–2 weeks with the right feedback", almost:"5–10 days with the right feedback" };
/* ---------------- state + helpers ---------------- */
var A = { age:null, brings:null, wear:null, ready:[], acc:[], harder:[], tried:[], temp:null };
var idx = 0, lock = false, loadToken = 0;
function fb(n,p){ try{ if(window.fbq){ window.fbq("trackCustom", n, p||{}); } }catch(e){} }
function find(list,v){ for(var i=0;i<list.length;i++){ if(list[i].v===v){ return list[i]; } } return list[0]; }
function computeScore(){
var s = 1;
if(A.ready.indexOf("none") === -1){ s += 1.2 * A.ready.length; }
if(A.acc.indexOf("rare") > -1){ s += 2; }
var gaps = 0;
for(var i=0;i<A.acc.length;i++){ if(A.acc[i] !== "rare"){ gaps++; } }
s -= Math.min(2, 0.4 * gaps);
s = Math.round(s);
if(s < 1){ s = 1; } if(s > 10){ s = 10; }
return s;
}
function statusOf(s){ return s <= 3 ? STATUS.hidden : (s <= 6 ? STATUS.building : STATUS.almost); }
function statusKey(s){ return s <= 3 ? "hidden" : (s <= 6 ? "building" : "almost"); }
function optsHTML(list, multi, sel){
var h = '<div class="uq-opts">';
for(var i=0;i<list.length;i++){
var o = list[i];
var on = multi ? (sel.indexOf(o.v) > -1) : (sel === o.v);
h += '<button type="button" class="uq-opt' + (on ? " uq-on" : "") + '" data-v="' + o.v + '">'
+ '<span class="uq-ico">' + o.moji + '</span>'
+ '<span class="uq-lab">' + o.lab + '</span>'
+ '<span class="uq-chk">✓</span>'
+ '</button>';
}
return h + "</div>";
}
function bindSingle(list, key, adv){
var btns = stage.querySelectorAll(".uq-opt");
for(var i=0;i<btns.length;i++){
btns[i].onclick = function(){
if(lock){ return; }
lock = true;
A[key] = this.getAttribute("data-v");
var all = stage.querySelectorAll(".uq-opt");
for(var j=0;j<all.length;j++){ all[j].classList.remove("uq-on"); }
this.classList.add("uq-on");
setTimeout(function(){ lock = false; go(adv); }, 240);
};
}
}
function bindMulti(list, key, btnId){
var btns = stage.querySelectorAll(".uq-opt");
var cta = stage.querySelector("#"+btnId);
function refresh(){ cta.disabled = (A[key].length === 0); }
for(var i=0;i<btns.length;i++){
btns[i].onclick = function(){
var v = this.getAttribute("data-v");
var def = find(list, v);
var pos = A[key].indexOf(v);
if(pos > -1){
A[key].splice(pos,1);
this.classList.remove("uq-on");
} else {
if(def.ex){
A[key] = [v];
var all = stage.querySelectorAll(".uq-opt");
for(var j=0;j<all.length;j++){ all[j].classList.remove("uq-on"); }
} else {
var exDef = null;
for(var k=0;k<list.length;k++){ if(list[k].ex){ exDef = list[k]; } }
if(exDef){
var p2 = A[key].indexOf(exDef.v);
if(p2 > -1){
A[key].splice(p2,1);
var exBtn = stage.querySelector('.uq-opt[data-v="' + exDef.v + '"]');
if(exBtn){ exBtn.classList.remove("uq-on"); }
}
}
A[key].push(v);
}
this.classList.add("uq-on");
}
refresh();
};
}
refresh();
}
/* ---------------- screens ---------------- */
var SCREENS = [
/* 0 - hook + age */
function(){
var skipUrl = CONFIG.LP_URL + (CONFIG.LP_URL.indexOf("?") > -1 ? "&" : "?") + "uqskip=1";
var h = '<div class="uq-card uq-center">'
+ '<div class="uq-ratebar">'
+ '<span class="uq-avs">' + CONFIG.AV_IMAGES.map(function(u,ix){ return '<img class="uq-av uq-av' + (ix+1) + '" src="' + u + '" alt="" width="26" height="26">'; }).join("") + '<span class="uq-plus">+1M</span></span>'
+ '<span class="uq-rstars">★★★★★</span>'
+ '<span class="uq-rtxt"><b>' + CONFIG.RATING + '</b> · Excellent</span>'
+ '</div>'
+ '<h1 class="uq-h1">Get Your Toddler’s Personalized Potty Training Plan</h1>'
+ '<p class="uq-sub">Answer 8 quick questions to find the right approach for your child — takes about 2 minutes.</p>'
+ '<a class="uq-skip" id="uq-skip" href="' + skipUrl + '">Skip the quiz →</a>'
+ '<p class="uq-qlabel">How old is your child?</p>'
+ '<p class="uq-why">Age changes what “right” looks like.</p>'
+ '<div class="uq-grid">';
for(var i=0;i<AGES.length;i++){
var img = CONFIG.AGE_IMAGES[i];
h += '<button type="button" class="uq-agecard' + (A.age === AGES[i].v ? " uq-on" : "") + '" data-v="' + AGES[i].v + '">'
+ '<span class="uq-ageimg">' + (img ? '<img src="' + img + '" alt="" width="400" height="500">' : '<span class="uq-agemoji">' + AGES[i].moji + "</span>") + "</span>"
+ '<span class="uq-agelab">' + AGES[i].lab + "</span>"
+ "</button>";
}
h += "</div>"
+ '<div class="uq-laurel"><span class="uq-fern uq-fernL">' + FERN + '</span><span class="uq-lltext">' + CONFIG.LAUREL_LINE + '</span><span class="uq-fern">' + FERN + '</span></div>'
+ "</div>";
stage.innerHTML = h;
var cards = stage.querySelectorAll(".uq-agecard");
for(var c=0;c<cards.length;c++){
cards[c].onclick = function(){
if(lock){ return; }
lock = true;
A.age = this.getAttribute("data-v");
var all = stage.querySelectorAll(".uq-agecard");
for(var j=0;j<all.length;j++){ all[j].classList.remove("uq-on"); }
this.classList.add("uq-on");
fb("QuizStart", { age: A.age });
setTimeout(function(){ lock = false; go(1); }, 260);
};
}
var sk = stage.querySelector("#uq-skip");
if(sk){ sk.onclick = function(){ fb("QuizSkip", {}); }; }
},
/* 1 - age bridge */
function(){
var age = find(AGES, A.age);
var rows = BRIDGES[A.age] || BRIDGES["2-3y"];
var h = '<div class="uq-card">'
+ '<span class="uq-pill">' + age.lab + "</span>"
+ '<h2 class="uq-h2">What This Means For Your Child</h2>';
for(var i=0;i<rows.length;i++){
var r = rows[i];
if(r.t === "p"){ h += '<p class="uq-p">' + r.h + "</p>"; }
if(r.t === "chain"){ h += '<div class="uq-chain">' + CHAIN + "</div>"; }
if(r.t === "warn"){
h += '<div class="uq-warn"><span class="uq-wi">⚠️</span>'
+ '<span class="uq-wt"><b>What most parents miss:</b> ' + r.h + "</span></div>";
}
}
h += '<p class="uq-tease">Next: what’s bringing you here today.</p>'
+ '<button type="button" class="uq-btn" id="uq-next">Continue →</button></div>';
stage.innerHTML = h;
stage.querySelector("#uq-next").onclick = function(){ go(2); };
},
/* 2 - what brings you here */
function(){
stage.innerHTML = '<div class="uq-card">'
+ '<h2 class="uq-h2">What brings you here today?</h2>'
+ '<p class="uq-sub">Pick what’s closest — this shapes your plan.</p>'
+ optsHTML(BRINGS, false, A.brings) + "</div>";
bindSingle(BRINGS, "brings", 3);
},
/* 3 - wear */
function(){
stage.innerHTML = '<div class="uq-card">'
+ '<h2 class="uq-h2">What do they wear most of the day right now?</h2>'
+ '<p class="uq-sub">What they wear decides how much their body gets to feel — it matters more than most parents realize.</p>'
+ optsHTML(WEAR, false, A.wear) + "</div>";
bindSingle(WEAR, "wear", 4);
},
/* 4 - readiness signs */
function(){
stage.innerHTML = '<div class="uq-card">'
+ '<h2 class="uq-h2">Quick check — what are they already showing?</h2>'
+ '<p class="uq-sub">Tick everything you’ve seen, even once. These are the building blocks.</p>'
+ optsHTML(READY, true, A.ready)
+ '<button type="button" class="uq-btn" id="uq-next">Continue →</button></div>';
bindMulti(READY, "ready", "uq-next");
stage.querySelector("#uq-next").onclick = function(){ go(5); };
},
/* 5 - accident patterns */
function(){
stage.innerHTML = '<div class="uq-card">'
+ '<h2 class="uq-h2">When accidents happen, what do you usually notice?</h2>'
+ '<p class="uq-sub">Tick all that apply — this tells us how much of the signal is getting through.</p>'
+ optsHTML(ACC, true, A.acc)
+ '<button type="button" class="uq-btn" id="uq-next">Continue →</button></div>';
bindMulti(ACC, "acc", "uq-next");
stage.querySelector("#uq-next").onclick = function(){ go(6); };
},
/* 6 - signal score reveal */
function(){
var s = computeScore();
var st = statusOf(s);
var n = (A.ready.indexOf("none") > -1) ? 0 : A.ready.length;
var g = 0;
for(var i=0;i<A.acc.length;i++){ if(A.acc[i] !== "rare"){ g++; } }
fb("QuizSignalScore", { score: s });
stage.innerHTML = '<div class="uq-card uq-center">'
+ '<span class="uq-pill">Based on your answers</span>'
+ '<h2 class="uq-h2">Your Child’s Potty Signal Score</h2>'
+ '<div class="uq-scorewrap"><span class="uq-scorenum" id="uq-snum">1</span><span class="uq-scoreof">/10</span></div>'
+ '<div><span class="uq-status">' + st.pill + "</span></div>"
+ '<div class="uq-sfacts"><span class="uq-sfact">✓ ' + n + ' readiness sign' + (n === 1 ? "" : "s") + ' spotted</span><span class="uq-sfact uq-sgap">⚠️ ' + g + ' signal gap' + (g === 1 ? "" : "s") + '</span></div>'
+ '<p class="uq-p" style="text-align:center;">' + st.line + "</p>"
+ '<p class="uq-strans">Signal = how clearly their body’s “I need to go” message gets through. It’s the one kind of readiness you can actually build — at any age.</p>'
+ '<div class="uq-loop">'
+ '<p class="uq-lt">The part most parents miss:</p>'
+ '<p class="uq-lm">Potty training clicks when the loop connects:</p>'
+ '<p class="uq-lc">' + CHAIN + "</p>"
+ '<p class="uq-lf">Everything in your plan is built around closing that loop.</p>'
+ "</div>"
+ '<button type="button" class="uq-btn" id="uq-next">Find My Child’s Best Next Step →</button></div>';
var el = stage.querySelector("#uq-snum"), t0 = null, dur = 900;
function tick(ts){ if(!t0){ t0 = ts; } var pr = Math.min(1,(ts - t0)/dur); if(el){ el.textContent = Math.max(1, Math.round(pr * s)); } if(pr < 1){ window.requestAnimationFrame(tick); } }
window.requestAnimationFrame(tick);
stage.querySelector("#uq-next").onclick = function(){ go(7); };
},
/* 7 - anything making it harder */
function(){
stage.innerHTML = '<div class="uq-card">'
+ '<h2 class="uq-h2">Is anything making this harder right now?</h2>'
+ '<p class="uq-sub">This won’t change the goal — it changes the approach.</p>'
+ optsHTML(HARDER, true, A.harder)
+ '<button type="button" class="uq-btn" id="uq-next">Continue →</button></div>';
bindMulti(HARDER, "harder", "uq-next");
stage.querySelector("#uq-next").onclick = function(){ go(8); };
},
/* 8 - what have you tried */
function(){
stage.innerHTML = '<div class="uq-card">'
+ '<h2 class="uq-h2">What have you already tried?</h2>'
+ '<p class="uq-sub">No judgment — most parents here have tried at least three.</p>'
+ optsHTML(TRIED, true, A.tried)
+ '<button type="button" class="uq-btn" id="uq-next">Continue →</button></div>';
bindMulti(TRIED, "tried", "uq-next");
stage.querySelector("#uq-next").onclick = function(){ go(9); };
},
/* 9 - temperament */
function(){
stage.innerHTML = '<div class="uq-card">'
+ '<h2 class="uq-h2">Last one — which sounds most like your child?</h2>'
+ '<p class="uq-sub">Temperament changes the approach more than age does.</p>'
+ optsHTML(TEMP, false, A.temp) + "</div>";
bindSingle(TEMP, "temp", 10);
},
/* 10 - bridge: why most potty advice falls short */
function(){
var shorts = [];
for(var i=0;i<A.tried.length && shorts.length<3;i++){
var d = find(TRIED, A.tried[i]);
if(d.short){ shorts.push(d.short); }
}
var trio = shorts.length ? (shorts.join(". ") + ".") : "Rewards. Timers. The 3-day method.";
var mid = (A.wear === "under")
? '<div class="uq-warn"><span class="uq-wi">💧</span><span class="uq-wt">You’ve gone straight to underwear — all signal, no safety net. Every miss is a puddle, so most families retreat to disposables and lose the progress. The fix: feeling <b>with a floor under it</b>.</span></div>'
: '<div class="uq-warn"><span class="uq-wi">💧</span><span class="uq-wt">Modern disposables pull wetness away in seconds — erasing the exact signal your child needs to learn from. Occupational therapists call that missing skill <b>interoception</b>. They’re not being stubborn — their body never gets the memo.</span></div>';
stage.innerHTML = '<div class="uq-card">'
+ '<span class="uq-pill">Why most potty advice falls short</span>'
+ '<h2 class="uq-h2">It’s not you. It’s not your child. It’s what they’re wearing.</h2>'
+ '<p class="uq-p">' + trio + ' All of them assume one thing: that your child can <b>feel</b> when they need to go. Most can’t yet.</p>'
+ mid
+ '<div class="uq-callout">In 1957 — before disposables — <b>92% of children were out of diapers by 18 months.</b> Kids haven’t changed. What they wear has.</div>'
+ '<div class="uq-helps"><p class="uq-ht">What actually helps:</p><p class="uq-hb">A signal <b>clear enough to notice</b>. Protection <b>solid enough that you stay calm</b>. A pace <b>gentle enough that confidence grows with every try</b>.</p></div>'
+ '<button type="button" class="uq-btn" id="uq-next">Build My Child’s Plan →</button></div>';
stage.querySelector("#uq-next").onclick = function(){ go(11); };
},
/* 11 - loading */
function(){
var s = computeScore(), key = statusKey(s);
var age = find(AGES, A.age), tp = find(TEMP, A.temp || "easy"), wr = find(WEAR, A.wear || "diapers"), br = find(BRINGS, A.brings || "stuck");
var tSay = tp.say.charAt(0).toUpperCase() + tp.say.slice(1);
function rc(lab, val){ return '<div class="uq-rc"><span class="uq-rck">✓</span><span class="uq-rcb"><span class="uq-rcl">' + lab + '</span><span class="uq-rcv">' + val + "</span></span></div>"; }
stage.innerHTML = '<div class="uq-card">'
+ '<h2 class="uq-h2 uq-center">Building your child’s plan…</h2>'
+ '<p class="uq-sub uq-center" style="margin-bottom:14px;">Analyzing your answers</p>'
+ '<div class="uq-lbar"><i id="uq-lfill"></i></div>'
+ '<p class="uq-lpct" id="uq-pct" style="text-align:center;margin:6px 0 14px;">0%</p>'
+ '<div id="uq-rcs">'
+ rc("Age group", age.lab)
+ rc("Temperament", tSay)
+ rc("Currently wearing", wr.rec)
+ rc("Main challenge", br.chal)
+ rc("Potty Signal Score", s + "/10")
+ rc("Expected timeline", TIMELN[key])
+ "</div>"
+ '<div class="uq-review" id="uq-lrev" style="opacity:0;">'
+ '<div class="uq-stars">★★★★★</div>'
+ '<p class="uq-rtext">“' + CONFIG.REVIEW_LOADING.text + '”</p>'
+ '<p class="uq-rname">' + CONFIG.REVIEW_LOADING.name + ' <span>✓</span></p>'
+ "</div></div>";
var token = ++loadToken;
var cards = stage.querySelectorAll("#uq-rcs .uq-rc");
for(var i=0;i<cards.length;i++){
(function(el, ms){ setTimeout(function(){ if(token === loadToken){ el.className += " uq-in"; } }, ms); })(cards[i], 400 + i * 620);
}
setTimeout(function(){ if(token === loadToken){ var rv = stage.querySelector("#uq-lrev"); if(rv){ rv.style.opacity = "1"; } } }, 4300);
var t0 = null, dur = 5200;
var pct = stage.querySelector("#uq-pct"), fill = stage.querySelector("#uq-lfill");
function step(ts){
if(token !== loadToken){ return; }
if(!t0){ t0 = ts; }
var pr = Math.min(1, (ts - t0) / dur);
var v = Math.round(pr * 100);
if(pct){ pct.textContent = v + "%"; }
if(fill){ fill.style.width = v + "%"; }
if(pr < 1){ window.requestAnimationFrame(step); }
else { setTimeout(function(){ if(token === loadToken){ go(12); } }, 700); }
}
window.requestAnimationFrame(step);
},
/* 12 - your plan */
function(){
var s = computeScore(), key = statusKey(s), st = statusOf(s);
var age = find(AGES, A.age), tp = find(TEMP, A.temp || "easy"), wr = find(WEAR, A.wear || "diapers");
fb("QuizPlanView", { score: s, status: key });
var covered = "";
for(var i=0;i<COVERED.length;i++){
if(A.harder.indexOf(COVERED[i].k) > -1){
covered = '<div class="uq-covered"><p class="uq-ct">We’ve got you covered.</p><p class="uq-cb">' + COVERED[i].body + "</p></div>";
break;
}
}
var d13 = (A.wear === "under")
? "The safety net goes on — accidents stop being floods and start being lessons."
: "They start feeling what disposables were hiding. Accidents become data, not setbacks.";
stage.innerHTML = '<div class="uq-card">'
+ '<div class="uq-center"><span class="uq-pill">✓ Your plan is ready</span></div>'
+ '<p class="uq-sub uq-center" style="margin-bottom:6px;">Based on your answers:</p>'
+ '<h2 class="uq-h2 uq-center">Signal Score ' + s + "/10 — " + st.planH + "</h2>"
+ '<p class="uq-p">For a ' + tp.say + " " + age.say + " " + wr.phrase + ", pressure and reminders tend to backfire — feedback wins. " + tp.clause + "</p>"
+ covered
+ '<div class="uq-plancard">'
+ '<p class="uq-pt">Here’s what your plan focuses on:</p>'
+ '<div class="uq-step"><p class="uq-sd">Day 1–3</p><p class="uq-st">Awareness Begins</p><p class="uq-sb">' + d13 + "</p></div>"
+ '<div class="uq-step"><p class="uq-sd">Day 4–7</p><p class="uq-st">Connecting The Dots</p><p class="uq-sb">They tell you after… then during… then before. The chain is forming.</p></div>'
+ '<div class="uq-step"><p class="uq-sd">Week 2+</p><p class="uq-st">Real Independence</p><p class="uq-sb">Asking to go. Dry on outings. Every child’s pace is different — for most families the shift shows up within a week or two.</p></div>'
+ "</div>"
+ '<div class="uq-trust"><span>🛡️ 75-Day Guarantee</span><span>💙 1,000,000+ pairs sold</span><span>⭐ ' + CONFIG.RATING + "/5 rating</span></div>"
+ '<button type="button" class="uq-btn" id="uq-next">See What Makes The Plan Work →</button></div>';
stage.querySelector("#uq-next").onclick = function(){ go(13); };
},
/* 13 - recommendation */
function(){
var s = computeScore();
fb("QuizComplete", { score: s });
var img = CONFIG.PRODUCT_IMG
? '<div class="uq-prodimg"><img src="' + CONFIG.PRODUCT_IMG + '" alt="UpAiry Potty Training Underwear"></div>'
: '<div class="uq-prodimg"><div class="uq-pph">🩲</div></div>';
var stock = CONFIG.STOCK_LINE ? '<span class="uq-stock">🔴 ' + CONFIG.STOCK_LINE + "</span>" : "";
var url = CONFIG.LP_URL;
if(CONFIG.PASS_PARAMS){
url += (url.indexOf("?") > -1 ? "&" : "?") + "uqscore=" + s + "&uqage=" + encodeURIComponent(A.age || "") + "&uqtemp=" + encodeURIComponent(A.temp || "");
}
stage.innerHTML = '<div class="uq-card">'
+ '<h2 class="uq-h2 uq-center">Your Personalized Recommendation</h2>'
+ img
+ '<div class="uq-center"><span class="uq-pill">Recommended for your child</span></div>'
+ '<p class="uq-prodname">UpAiry Potty Training Underwear</p>'
+ '<p class="uq-proddesc">Real underwear on the outside. A 3-layer cotton core inside that lets your child feel wet for a moment — while catching the accident before it hits the floor. The feedback loop, built in. Feels like big-kid underwear, so they’ll actually wear them.</p>'
+ '<div class="uq-review">'
+ '<div class="uq-stars">★★★★★</div>'
+ '<p class="uq-rtext">“' + CONFIG.REVIEW_OFFER.text + '”</p>'
+ '<p class="uq-rname">' + CONFIG.REVIEW_OFFER.name + ' <span>✓</span></p>'
+ "</div>"
+ '<div class="uq-reward">'
+ '<p class="uq-rw1">🎉 Your quiz reward</p>'
+ '<p class="uq-rw2"><span>' + CONFIG.OFFER_HEAD + "</span></p>"
+ '<p class="uq-rw3">' + CONFIG.OFFER_SUB + "</p>"
+ "</div>"
+ stock
+ '<div class="uq-guarantee">'
+ '<p class="uq-g1">75-Day Money-Back Guarantee</p>'
+ '<p class="uq-g2">Try them through real training — mess and all. If it doesn’t click, we’ll refund you.</p>'
+ "</div>"
+ '<div class="uq-trust"><span>💙 1,000,000+ pairs sold</span><span>⭐ ' + CONFIG.RATING + "/5 rating</span></div>"
+ '<a class="uq-btn" id="uq-cta2" href="' + url + '">Claim My Quiz Discount →</a>'
+ "</div>";
sticky.innerHTML = '<a class="uq-btn" id="uq-cta" href="' + url + '">Claim My Quiz Discount →</a>';
sticky.querySelector("#uq-cta").onclick = function(){ fb("QuizCTAClick", { score: s, spot: "sticky" }); };
var c2 = stage.querySelector("#uq-cta2");
if(c2){ c2.onclick = function(){ fb("QuizCTAClick", { score: s, spot: "inline" }); }; }
}
];
/* ---------------- navigation ---------------- */
var SEGMAP = [ [0,3], [4,6], [7,10], [11,13] ];
var PREV = { 12:10, 13:12 };
function paint(){
for(var i=0;i<4;i++){
var a = SEGMAP[i][0], b = SEGMAP[i][1], f = 0;
if(idx > b){ f = 100; }
else if(idx >= a){ f = ((idx - a + 1) / (b - a + 1)) * 100; }
segs[i].firstElementChild.style.width = f + "%";
}
backBt.classList.toggle("uq-hide", idx === 0 || idx === 11);
wrap.classList.toggle("uq-final", idx === 13);
if(idx !== 13){ sticky.innerHTML = ""; }
}
function go(i){
loadToken++;
idx = i;
SCREENS[idx]();
paint();
try{
var top = wrap.getBoundingClientRect().top + window.pageYOffset;
window.scrollTo({ top: Math.max(0, top - 8), behavior: "smooth" });
}catch(e){ window.scrollTo(0,0); }
}
backBt.onclick = function(){
if(idx === 0){ return; }
go(PREV[idx] !== undefined ? PREV[idx] : idx - 1);
};
if(CONFIG.HIDE_THEME_CHROME && document.body && document.body.className.indexOf("uq-chromeless") < 0){ document.body.className += " uq-chromeless"; }
window.__uqtHook=function(){ return { go:go, A:A }; };
if(window.__uqAge){ var fv = window.__uqAge; window.__uqAge = null; A.age = fv; fb("QuizStart", { age: fv }); go(1); }
else{ go(0); }
}catch(e){ if(window.console){ console.error("UpAiry quiz init failed:", e); } }
}
function bootAll(){
var list=document.querySelectorAll(".upairyqz");
if(!list.length && CUR && CUR.parentNode){
var w=document.createElement("div");
w.id="upairyqz"; w.className="upairyqz";
CUR.parentNode.insertBefore(w,CUR);
list=[w];
}
for(var i=0;i<list.length;i++){ bootOne(list[i]); }
}
if(!window.__upairyqzWired){
window.__upairyqzWired=1;
document.addEventListener("shopify:section:load", function(){ setTimeout(bootAll, 60); });
}
return { bootAll: bootAll };
})();
}
(function(){
var b=window.__uqEngine.bootAll;
if(document.readyState==="loading"){ document.addEventListener("DOMContentLoaded", b); }
else{ b(); }
setTimeout(b, 800);
setTimeout(b, 2500);
})();
What’s Actually Getting In The Way Of Potty Training? Answer 8 quick questions to find the right approach for your child — takes about 2 minutes.
Skip the quiz → How old is your child?
Age changes what “right” looks like.
18–24 months 2–3 years 3–4 years 4+ years The #1 potty training solution — trusted by parents worldwide