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=Fraunces:opsz,wght@9..144,500;9..144,600;9..144,700&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:#f4efe6!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:#fdfbf6!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:#e2dac9;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:#fdfbf6;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:'Fraunces',serif!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:'Fraunces',serif!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 #fdfbf6;}#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 #fdfbf6;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:'Fraunces',serif!important;font-size:19px!important;font-weight:600!important;color:#4e8a3c!important;background:#f4f1e6;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:#f4f1e6;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 #e7dec9!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:#f1ead9;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 #ddd3bd;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 #e7dec9!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%,#f7f2e4 0%,#efe7d3 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:'Fraunces',serif!important;font-weight:700!important;font-size:76px!important;line-height:1!important;background:linear-gradient(160deg,#d3ac60 10%,#a8813a 90%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:#b08c42;display:inline-block;}#upairyqz .uq-scoreof{font-family:'Fraunces',serif!important;font-size:28px!important;font-weight:500!important;color:#b3a88e!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 #e7dec9;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:'Fraunces',serif!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:#efe8d6;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 #eee6d4;}#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 #ddd3bd;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:#e7dec9;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 #e7dec9;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:#fdfbf3;border-left:3px solid #d3ac60;border-radius:0 16px 16px 0;padding:14px 16px;margin:4px 0 16px;}#upairyqz .uq-covered .uq-ct{font-family:'Fraunces',serif!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 #e7dec9;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:'Fraunces',serif!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%,#f7f2e4 0%,#efe7d3 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:'Fraunces',serif!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:linear-gradient(100deg,#fdf6e1 0%,#fbeade 100%);border:1px solid #f0e2c4;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:#b98a2e!important;margin:0 0 6px;line-height:1!important;}#upairyqz .uq-reward .uq-rw2{font-family:'Fraunces',serif!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:'Fraunces',serif!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(244,239,230,.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-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:#faf7ef;border:1px solid #eee6d4;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.9", /* set the REAL figure */
LAUREL_LINE: "America’s #1 potty training underwear", /* 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"
],
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 h = '<div class="uq-card uq-center">'
+ '<div class="uq-ratebar">'
+ '<span class="uq-avs"><span class="uq-av uq-av1"></span><span class="uq-av uq-av2"></span><span class="uq-av uq-av3"></span><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">What’s Actually Getting In The Way Of Potty Training?</h1>'
+ '<p class="uq-sub">Answer 8 quick questions to find the right approach for your child — takes about 2 minutes.</p>'
+ '<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);
};
}
},
/* 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 isUnder = (A.wear === "under");
var h = '<div class="uq-card">'
+ '<span class="uq-pill">Why most potty advice falls short</span>'
+ '<h2 class="uq-h2">It’s not the method. It’s the material.</h2>'
+ '<p class="uq-p">' + trio + ' — they all quietly assume one thing: that your child can <b>feel</b> when they need to go.</p>'
+ '<p class="uq-p">Most can’t. Not yet. Not reliably.</p>'
+ '<p class="uq-p">Occupational therapists have a name for that skill — <b>interoception</b>. The brain learning to read signals from inside the body. The full bladder. The “uh-oh” moment. The wet.</p>';
if(isUnder){
h += '<p class="uq-p">You’ve gone straight to regular underwear — so you’ve seen the other side of it: all signal, no safety net. Every miss is a puddle, so most families retreat to disposables within a week… and lose the progress. The fix isn’t less feeling. It’s feeling <b>with a floor under it</b>.</p>';
} else {
h += '<p class="uq-p">Here’s the problem: modern disposables are engineered to erase exactly that. Wetness gets pulled away from the skin in seconds. The one signal your child needs to practice on — gone before they notice it.</p>'
+ '<p class="uq-p">So your child isn’t ignoring you. They’re not being stubborn. Their body just never gets the memo.</p>';
}
h += '<div class="uq-callout">In 1957 — before disposables took over — <b>92% of children were out of diapers by 18 months.</b> Kids haven’t changed. What they wear all day has.</div>'
+ '<div class="uq-helps"><p class="uq-ht">What actually helps:</p><p class="uq-hb">A signal <b>clear enough for your child 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>'
+ '<p class="uq-tease">That’s everything we need.</p>'
+ '<button type="button" class="uq-btn" id="uq-next">Build My Child’s Plan →</button></div>';
stage.innerHTML = h;
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 uq-center">They don’t need more pressure or another restart. They need to <b>feel the signal, connect it, and build confidence</b> — one step at a time.</p>'
+ '<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>"
+ "</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 }); };
}
];
/* ---------------- 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);
})();
+1M★★★★★4.9 · Excellent
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.
How old is your child?
Age changes what “right” looks like.
America’s #1 potty training underwear
PRODUCT DISCLAIMER & LIMITATION OF LIABILITY: UpAiry Potty Training Underwear is a training tool, not a diaper. It is designed to hold small accidents while providing a sensory "wet" cue to the child. UpAiry makes no guarantee of specific results or timeline to achieve potty training success. UpAiry Potty Training Underwear is designed to help reduce leaks, but no product is completely leakproof in all situations (Even diapers can leak!). UpAiry is not liable for any incidental or consequential damages, including damage to furniture, bedding, flooring, clothing, or other property resulting from leakage.
SAFETY & SKIN HEALTH: Intended for use under adult supervision. Unlike diapers, this product does not wick moisture away. Prolonged contact with wet or soiled fabric may cause skin irritation or diaper rash. Please change your child immediately upon soiling.
RESULTS DISCLAIMER: *Individual results may vary. Timelines and outcomes shown in testimonials are exceptional results and are not guaranteed. Success depends on multiple factors including child's developmental readiness, consistency, and parental involvement. UpAiry makes no guarantee of specific potty training timelines. Always consult your pediatrician regarding your child's developmental readiness.
* FDA DisclaimerThese statements have not been evaluated by the Food and Drug Administration. This product is not intended to diagnose, treat, cure, or prevent any disease.
Choosing a selection results in a full page refresh.