{"id":6806,"date":"2026-02-17T16:13:31","date_gmt":"2026-02-18T00:13:31","guid":{"rendered":"https:\/\/ievolutionclub.com\/?page_id=6806"},"modified":"2026-04-12T18:52:19","modified_gmt":"2026-04-13T01:52:19","slug":"quiz","status":"publish","type":"page","link":"https:\/\/ievolutionclub.com\/es\/quiz\/","title":{"rendered":"Cuestionario"},"content":{"rendered":"        <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Plus+Jakarta+Sans:wght@300;400;500;600;700;800&display=swap\" rel=\"stylesheet\">\n        <style>        .ievolution-quiz-wrap{font-family:'Plus Jakarta Sans',-apple-system,BlinkMacSystemFont,sans-serif;-webkit-font-smoothing:antialiased;display:flex;justify-content:center;padding:20px 0}\n        .ievolution-quiz-wrap *{margin:0;padding:0;box-sizing:border-box}\n        .ievolution-quiz-wrap select.input-field{-webkit-appearance:menulist;appearance:menulist;position:relative;z-index:100}\n        .ievolution-quiz-wrap .input-group{overflow:visible!important}\n        .quiz-container{background:transparent;max-width:800px;width:100%;position:relative;overflow:visible!important}\n        \/* Force Elementor parents to allow dropdown overflow *\/\n        .elementor-widget-container:has(.ievolution-quiz-wrap),\n        .elementor-widget:has(.ievolution-quiz-wrap),\n        .elementor-column:has(.ievolution-quiz-wrap),\n        .elementor-row:has(.ievolution-quiz-wrap),\n        .elementor-section:has(.ievolution-quiz-wrap),\n        .elementor-container:has(.ievolution-quiz-wrap),\n        .elementor-element:has(.ievolution-quiz-wrap),\n        .e-con:has(.ievolution-quiz-wrap),\n        .e-con-inner:has(.ievolution-quiz-wrap){overflow:visible!important}\n        .quiz-header{padding:48px 0 32px;text-align:center}\n        .quiz-title{font-size:32px;font-weight:800;color:#1B2A4A;margin-bottom:12px;letter-spacing:-1.5px;line-height:1.2}\n        .quiz-subtitle{font-size:16px;color:#6B7B8D;font-weight:400;line-height:1.6}\n        .quiz-content{padding:0 0 40px}\n        .progress-bar{height:6px;background:#E8EDF2;border-radius:3px;overflow:hidden;margin-bottom:32px}\n        .progress-fill{height:100%;border-radius:3px;transition:width .6s cubic-bezier(.4,0,.2,1),background .6s ease}\n        \/* Slide transitions *\/\n        .quiz-slide{transition:opacity .35s ease,transform .35s ease}\n        .quiz-slide.slide-enter-next{opacity:0;transform:translateX(60px)}\n        .quiz-slide.slide-enter-prev{opacity:0;transform:translateX(-60px)}\n        .quiz-slide.slide-active{opacity:1;transform:translateX(0)}\n        \/* Loading \/ analyzing screen *\/\n        .quiz-loading-screen{text-align:center;padding:60px 20px}\n        .loading-spinner{width:64px;height:64px;border:4px solid #E8EDF2;border-top:4px solid #2AAFD3;border-radius:50%;animation:spin 1s linear infinite;margin:0 auto 24px}\n        @keyframes spin{to{transform:rotate(360deg)}}\n        .loading-title{font-size:22px;font-weight:700;color:#1B2A4A;margin-bottom:8px}\n        .loading-subtitle{font-size:14px;color:#6B7B8D;margin-bottom:24px}\n        .loading-steps{max-width:300px;margin:0 auto;text-align:left}\n        .loading-step{display:flex;align-items:center;gap:10px;padding:8px 0;font-size:14px;color:#94A3B8;transition:color .3s}\n        .loading-step.active{color:#1B2A4A;font-weight:600}\n        .loading-step.done{color:#2AAFD3}\n        .loading-step-icon{width:24px;text-align:center;font-size:16px;display:flex;align-items:center;justify-content:center}\n        \/* Price summary box *\/\n        .price-summary{background:linear-gradient(135deg,#f0f9ff,#e0f2fe);border:2px solid #bae6fd;border-radius:16px;padding:20px 24px;margin-bottom:20px}\n        .price-summary-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;font-size:15px;color:#1B2A4A}\n        .price-summary-row:last-child{margin-bottom:0}\n        .price-summary-total{font-size:20px;font-weight:800;padding-top:10px;border-top:2px solid rgba(42,175,211,.2);margin-top:10px}\n        .price-original{text-decoration:line-through;color:#94A3B8;font-weight:400;font-size:15px}\n        .price-savings{color:#2AAFD3;font-weight:700}\n        .discount-badge{display:inline-block;background:linear-gradient(135deg,#2AAFD3,#1E8FAD);color:#fff;font-size:11px;font-weight:700;padding:3px 10px;border-radius:20px;margin-left:8px;text-transform:uppercase;letter-spacing:.5px}\n        \/* Social proof *\/\n        .social-proof{text-align:center;margin-bottom:20px;padding:12px 16px;background:rgba(42,175,211,.06);border-radius:16px}\n        .social-proof-text{font-size:13px;color:#6B7B8D}\n        .social-proof-count{font-weight:700;color:#2AAFD3}\n        \/* Disclaimer *\/\n        .quiz-disclaimer{text-align:center;padding:16px 20px;margin-top:16px;font-size:11px;color:#94A3B8;line-height:1.5;border-top:1px solid #E8EDF2}\n        .question-section{margin-bottom:32px}\n        .question-title{font-size:24px;font-weight:700;color:#1B2A4A;margin-bottom:12px;letter-spacing:-.5px}\n        .question-description{font-size:15px;color:#6B7B8D;line-height:1.6;margin-bottom:24px}\n        .options-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;margin-bottom:24px}\n        .option-card{padding:20px;border:2px solid #E8EDF2;border-radius:16px;cursor:pointer;transition:all .2s ease;background:#fff;display:flex;align-items:flex-start;gap:16px}\n        .option-card:hover{border-color:#2AAFD3;transform:translateY(-4px);box-shadow:0 8px 20px -8px rgba(42,175,211,.3)}\n        .option-card.selected{border-color:#2AAFD3;background:rgba(42,175,211,.08)}\n        .option-icon{width:48px;height:48px;min-width:48px;border-radius:10px;background:#F8FAFB;display:flex;align-items:center;justify-content:center;color:#1B2A4A;transition:all .2s ease;margin-top:2px}\n        .option-card.selected .option-icon{background:#2AAFD3;color:#fff}\n        .option-content{flex:1;display:flex;flex-direction:column;gap:4px}\n        .option-label{font-size:15px;font-weight:600;color:#1B2A4A;line-height:1.4}\n        .option-description{font-size:13px;font-weight:400;color:#94A3B8;line-height:1.5}\n        .input-group{margin-bottom:20px}\n        .input-label{display:block;font-size:14px;font-weight:600;color:#1B2A4A;margin-bottom:8px}\n        .input-field{width:100%;padding:14px 16px;border:2px solid #E8EDF2;border-radius:10px;font-size:15px;font-family:inherit;transition:all .2s ease;background:#fff}\n        .input-field:focus{outline:none;border-color:#2AAFD3;box-shadow:0 0 0 3px rgba(42,175,211,.08)}\n        select.input-field{cursor:pointer;height:auto;min-height:50px;line-height:1.4}\n        .button-group{display:flex;gap:12px;margin-top:32px}\n        .btn{flex:1;padding:16px 24px;border:none;border-radius:50px;font-size:15px;font-weight:700;cursor:pointer;transition:all .2s ease;font-family:inherit}\n        .btn-primary{background:#1B2A4A;color:#fff}\n        .btn-primary:hover:not(:disabled){background:#2D3E5F;transform:translateY(-2px)}\n        .btn-primary:disabled{background:#94A3B8;cursor:not-allowed;transform:none}\n        .btn-secondary{background:#F8FAFB;color:#1B2A4A}\n        .btn-secondary:hover{background:#E8EDF2}\n        .results-container{padding:32px 0}\n        .results-header{text-align:center;margin-bottom:32px}\n        .results-header h2{font-size:28px;font-weight:800;color:#1B2A4A;margin-bottom:8px}\n        .results-header h2 span{color:#2AAFD3}\n        .results-description{font-size:15px;color:#6B7B8D}\n        .product-recommendations{display:flex;flex-direction:column;gap:16px;margin-bottom:32px}\n        .product-card{display:flex;gap:20px;padding:24px;border:2px solid #E8EDF2;border-radius:16px;background:#fff;transition:border-color .2s,box-shadow .2s}\n        .product-card:hover{border-color:rgba(42,175,211,.3);box-shadow:0 8px 24px -8px rgba(27,42,74,.08)}\n        .product-card-image{width:100px;min-width:100px;height:100px;border-radius:14px;overflow:hidden;background:#F8FAFB;display:flex;align-items:center;justify-content:center;border:1px solid #E8EDF2}\n        .product-card-image img{width:100%;height:100%;object-fit:contain}\n        .product-card-image .no-image{font-size:32px;color:#cbd5e1}\n        .product-card-body{flex:1;min-width:0;padding-right:90px}\n        .product-card-body h3{font-size:18px;font-weight:700;color:#1B2A4A;margin-bottom:4px}\n        .product-card-body h3 a{color:inherit;text-decoration:none;transition:color .2s}\n        .product-card-body h3 a:hover{color:#2AAFD3}\n        .product-category{font-size:12px;color:#2AAFD3;margin-bottom:10px;font-weight:600}\n        .product-price{font-size:16px;font-weight:700;color:#1B2A4A;margin-bottom:8px}\n        .product-reason{font-size:14px;line-height:1.6;color:#6B7B8D;margin-bottom:12px}\n        .product-reason strong{color:#1B2A4A}\n        .product-kit-box{margin-top:12px;padding:12px;background:rgba(42,175,211,.08);border-radius:8px;border:1px solid rgba(42,175,211,.15)}\n        .product-kit-title{font-size:11px;font-weight:700;color:#1B2A4A;margin-bottom:6px;text-transform:uppercase;letter-spacing:.5px}\n        .product-kit-item{font-size:13px;color:#6B7B8D;margin-bottom:4px;padding-left:8px}\n        \/* Product video thumbnail - top right of card *\/\n        .product-card{position:relative}\n        .product-video-btn{position:absolute;top:12px;right:12px;background:none;border:none;cursor:pointer;padding:0;display:flex;flex-direction:column;align-items:center;gap:4px;z-index:2}\n        .product-video-thumb{width:72px;height:72px;border-radius:12px;object-fit:cover;border:2px solid #E8EDF2;pointer-events:none;display:block}\n        .product-video-play{position:absolute;top:0;left:0;width:72px;height:72px;border-radius:12px;background:rgba(27,42,74,.45);display:flex;align-items:center;justify-content:center;transition:background .2s}\n        .product-video-btn:hover .product-video-play{background:rgba(42,175,211,.7)}\n        .product-video-cta{font-size:9px;font-weight:700;color:#2AAFD3;letter-spacing:.5px;text-transform:uppercase;white-space:nowrap}\n        \/* Video modal *\/\n        .video-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(27,42,74,.85);z-index:99999;display:flex;align-items:center;justify-content:center;padding:20px;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}\n        .video-modal{position:relative;width:100%;max-width:400px;max-height:80vh;border-radius:16px;overflow:hidden;background:#1B2A4A;box-shadow:0 24px 60px rgba(0,0,0,.4)}\n        .video-modal-close{position:absolute;top:8px;right:8px;z-index:10;background:rgba(27,42,74,.6);border:none;border-radius:50%;width:32px;height:32px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s}\n        .video-modal-close:hover{background:rgba(42,175,211,.8)}\n        .video-modal-player{width:100%;max-height:65vh;display:block;border-radius:0}\n        .video-modal-caption{padding:14px 20px;font-size:12px;color:#94A3B8;text-align:center;font-style:italic;letter-spacing:.3px}\n        .results-actions{display:flex;gap:12px;margin-bottom:24px}\n        .btn-cart-large{width:100%;padding:20px 32px;background:#2AAFD3;color:#fff;border:none;border-radius:50px;font-size:18px;font-weight:700;cursor:pointer;transition:all .3s ease;font-family:inherit;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 12px rgba(42,175,211,.3)}\n        .btn-cart-large:hover{background:#1E8FAD;transform:translateY(-3px);box-shadow:0 8px 20px rgba(42,175,211,.4)}\n        .btn-cart-large:active{transform:translateY(-1px)}\n        .btn-cart-large:disabled{background:#94A3B8;cursor:not-allowed;transform:none;box-shadow:none}\n        .btn-cart-large svg{margin-right:12px}\n        .btn-view-cart{width:100%;padding:16px 32px;background:#1B2A4A;color:#fff;border:none;border-radius:50px;font-size:16px;font-weight:700;cursor:pointer;transition:all .3s ease;font-family:inherit;display:flex;align-items:center;justify-content:center;text-decoration:none}\n        .btn-view-cart:hover{background:#2D3E5F;transform:translateY(-2px);color:#fff}\n        .cart-success-msg{text-align:center;padding:16px;background:rgba(42,175,211,0.08);border:1px solid rgba(42,175,211,0.15);border-radius:16px;margin-bottom:16px;color:#1B2A4A;font-weight:600;font-size:15px}\n        .cart-error-msg{text-align:center;padding:12px;background:#fef2f2;border:1px solid #fecaca;border-radius:16px;margin-bottom:16px;color:#991b1b;font-size:13px}\n        .results-footer{text-align:center;padding-top:24px;border-top:1px solid #E8EDF2}\n        .results-footer p{font-size:13px;color:#94A3B8;margin-bottom:8px}\n        .highlight{color:#2AAFD3;font-weight:600}\n        .validation-hint{padding:12px 16px;background:rgba(42,175,211,.08);border:1px solid rgba(42,175,211,.15);border-radius:8px;margin-bottom:16px;text-align:center}\n        .validation-hint p{font-size:14px;color:#1B2A4A;margin:0;font-weight:500}\n        \/* Existing user warning *\/\n        .email-exists-msg{padding:16px 20px;background:#fef3c7;border:2px solid #f59e0b;border-radius:10px;margin-bottom:16px;text-align:center}\n        .email-exists-msg p{font-size:14px;color:#92400e;font-weight:600;margin:0 0 10px}\n        .btn-login-link{display:inline-block;padding:10px 28px;background:#1B2A4A;color:#fff;font-size:15px;font-weight:700;text-decoration:none;border-radius:8px;transition:all .2s}\n        .btn-login-link:hover{background:#2D3E5F;color:#fff;transform:translateY(-1px)}\n        \/* Step header with progress + counter *\/\n        .quiz-step-header{margin-bottom:16px}\n        .step-header-row{display:flex;justify-content:space-between;align-items:center;margin-top:6px}\n        .step-counter{font-size:12px;color:#94A3B8;font-weight:500}\n        .quiz-reset-link{background:none;border:none;color:#94A3B8;font-size:12px;cursor:pointer;font-family:inherit;padding:0;transition:color .2s}\n        .quiz-reset-link:hover{color:#2AAFD3;text-decoration:underline}\n        .quiz-reset-btn{background:none;border:2px solid #E8EDF2;border-radius:10px;padding:12px 24px;font-size:14px;font-weight:600;color:#6B7B8D;cursor:pointer;font-family:inherit;margin-top:16px;transition:all .2s}\n        .quiz-reset-btn:hover{border-color:#2AAFD3;color:#2AAFD3}\n\n        \/* ============ MOBILE: 320px to 600px ============ *\/\n        @media(max-width:600px){\n            \/* Layout *\/\n            .ievolution-quiz-wrap{padding:8px 0}\n            .quiz-header{padding:16px 0}\n            .quiz-title{font-size:22px;letter-spacing:-1px;margin-bottom:6px}\n            .quiz-subtitle{font-size:13px}\n            .quiz-content{padding:0 0 16px}\n            .quiz-step-header{margin-bottom:10px}\n            .step-counter{font-size:11px}\n            .quiz-reset-link{font-size:11px}\n            .quiz-reset-btn{font-size:12px;padding:10px 20px;margin-top:12px}\n            .progress-bar{height:4px;margin-bottom:0}\n\n            \/* Question section *\/\n            .question-section{margin-bottom:12px}\n            .question-title{font-size:18px;margin-bottom:6px;letter-spacing:-.3px}\n            .question-description{font-size:13px;margin-bottom:12px;line-height:1.4}\n\n            \/* Options: 2 columns, compact *\/\n            .options-grid{grid-template-columns:repeat(2,1fr);gap:8px;margin-bottom:12px}\n            .option-card{padding:10px;gap:8px;border-width:1.5px;border-radius:8px}\n            .option-icon{width:32px;height:32px;min-width:32px;border-radius:6px;margin-top:0}\n            .option-icon svg{width:16px;height:16px}\n            .option-label{font-size:12px;line-height:1.3}\n            .option-description{font-size:10px;line-height:1.2;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}\n\n            \/* Input fields *\/\n            .input-group{margin-bottom:12px}\n            .input-label{font-size:13px;margin-bottom:4px}\n            .input-field{padding:10px 12px;font-size:14px;border-radius:8px}\n            select.input-field{min-height:42px}\n\n            \/* Buttons *\/\n            .button-group{margin-top:12px;gap:8px}\n            .btn{padding:12px 16px;font-size:14px;border-radius:8px}\n\n            \/* Validation *\/\n            .validation-hint{padding:8px 12px;margin-bottom:8px;border-radius:6px}\n            .validation-hint p{font-size:12px}\n\n            \/* Results *\/\n            .results-container{padding:12px 0}\n            .results-header{margin-bottom:16px}\n            .results-header h2{font-size:22px}\n            .results-description{font-size:13px}\n            .product-recommendations{gap:10px;margin-bottom:16px}\n            .product-card{flex-direction:row;gap:12px;padding:12px;border-radius:8px}\n            .product-card-image{width:64px;min-width:64px;height:64px;border-radius:8px}\n            .product-card-body h3{font-size:14px;margin-bottom:2px}\n            .product-card-body{padding-right:70px}\n            .product-category{font-size:10px;margin-bottom:4px}\n            .product-price{font-size:14px;margin-bottom:4px}\n            .product-reason{font-size:12px;line-height:1.4;margin-bottom:6px}\n            .product-kit-box{padding:8px;margin-top:6px}\n            .product-kit-title{font-size:10px;margin-bottom:3px}\n            .product-kit-item{font-size:11px;margin-bottom:2px}\n            .product-video-thumb{width:56px;height:56px;border-radius:10px}\n            .product-video-play{width:56px;height:56px;border-radius:10px}\n            .product-video-btn{top:8px;right:8px;gap:2px}\n            .product-video-cta{font-size:8px}\n            .video-modal{max-width:320px;border-radius:12px}\n            .video-modal-close{width:34px;height:34px;top:8px;right:8px}\n            .video-modal-caption{padding:10px 16px;font-size:11px}\n            .btn-cart-large{font-size:15px;padding:14px 20px;border-radius:10px}\n            .btn-view-cart{font-size:14px;padding:12px 20px;border-radius:10px}\n            .cart-success-msg,.cart-error-msg{font-size:13px;padding:10px}\n            .results-footer{padding-top:12px}\n            .results-footer p{font-size:11px}\n            \/* New elements mobile *\/\n            .quiz-loading-screen{padding:40px 16px}\n            .loading-spinner{width:48px;height:48px}\n            .loading-title{font-size:18px}\n            .loading-subtitle{font-size:13px}\n            .loading-step{font-size:12px;padding:6px 0}\n            .price-summary{padding:14px 16px;margin-bottom:14px}\n            .price-summary-row{font-size:13px}\n            .price-summary-total{font-size:17px}\n            .social-proof{padding:8px 12px;margin-bottom:14px}\n            .social-proof-text{font-size:11px}\n            .quiz-disclaimer{font-size:10px;padding:12px 16px;margin-top:12px}\n            .quiz-slide{transition:opacity .25s ease,transform .25s ease}\n            .email-exists-msg{padding:12px 16px;margin-bottom:12px}\n            .email-exists-msg p{font-size:12px;margin-bottom:8px}\n            .btn-login-link{font-size:13px;padding:8px 20px}\n        }\n\n        \/* ============ EXTRA SMALL: 320px ============ *\/\n        @media(max-width:374px){\n            .quiz-title{font-size:20px}\n            .question-title{font-size:16px}\n            .question-description{font-size:12px;margin-bottom:10px}\n            .options-grid{gap:6px}\n            .option-card{padding:8px;gap:6px}\n            .option-icon{width:28px;height:28px;min-width:28px}\n            .option-icon svg{width:14px;height:14px}\n            .option-label{font-size:11px}\n            .option-description{display:none}\n            .btn{padding:10px 12px;font-size:13px}\n            .input-field{padding:8px 10px;font-size:13px}\n            select.input-field{min-height:38px}\n            .results-header h2{font-size:20px}\n            .product-card-image{width:52px;min-width:52px;height:52px}\n            .product-card-body h3{font-size:13px}\n            .product-card-body{padding-right:60px}\n            .product-video-thumb{width:44px;height:44px;border-radius:8px}\n            .product-video-play{width:44px;height:44px;border-radius:8px}\n            .product-video-play svg{width:14px;height:14px}\n            .product-video-btn{top:6px;right:6px}\n            .product-video-cta{font-size:7px}\n            .price-summary{padding:12px 14px}\n            .price-summary-row{font-size:12px}\n            .price-summary-total{font-size:15px}\n        }\n        <\/style>\n\n        <script>\n        var ievolutionQuizConfig = {\"ajaxUrl\":\"https:\\\/\\\/ievolutionclub.com\\\/wp-admin\\\/admin-ajax.php\",\"nonce\":\"0bd7f4ba07\",\"productData\":{\"reto_21d\":{\"woo_id\":1911,\"image_url\":\"https:\\\/\\\/ievolutionclub.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/Result-2026-02-20T070044.576-300x300.webp\",\"price_usd\":189.94,\"prices\":{\"MXN\":3799},\"permalink\":\"https:\\\/\\\/ievolutionclub.com\\\/es\\\/producto\\\/reto21d\\\/\",\"woo_name\":\"21-Day Detox\",\"video_en\":\"https:\\\/\\\/streamable.com\\\/l\\\/6gifki\\\/mp4-high.mp4\",\"video_es\":\"https:\\\/\\\/streamable.com\\\/l\\\/279y6o\\\/mp4-high.mp4\"},\"daily_liver\":{\"woo_id\":2024,\"image_url\":\"https:\\\/\\\/ievolutionclub.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/Result-2026-02-22T090714.235-300x300.webp\",\"price_usd\":49.99,\"prices\":{\"MXN\":999},\"permalink\":\"https:\\\/\\\/ievolutionclub.com\\\/es\\\/producto\\\/daily-liver-plus\\\/\",\"woo_name\":\"Daily Liver Plus\",\"video_en\":\"https:\\\/\\\/streamable.com\\\/l\\\/2gdgdx\\\/mp4-high.mp4\",\"video_es\":\"https:\\\/\\\/streamable.com\\\/l\\\/mlpst5\\\/mp4-high.mp4\"},\"dtx_caps\":{\"woo_id\":4733,\"image_url\":\"https:\\\/\\\/ievolutionclub.com\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/Result-2026-02-22T100542.879-300x300.webp\",\"price_usd\":49.99,\"prices\":{\"MXN\":999},\"permalink\":\"https:\\\/\\\/ievolutionclub.com\\\/es\\\/producto\\\/dtx-caps\\\/\",\"woo_name\":\"DTX Caps\",\"video_en\":\"https:\\\/\\\/streamable.com\\\/l\\\/r87p1u\\\/mp4-high.mp4\",\"video_es\":\"https:\\\/\\\/streamable.com\\\/l\\\/8trxj0\\\/mp4-high.mp4\"},\"proenzi\":{\"woo_id\":1908,\"image_url\":\"https:\\\/\\\/ievolutionclub.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/Result-2026-02-22T101023.333-300x300.webp\",\"price_usd\":49.99,\"prices\":{\"MXN\":999},\"permalink\":\"https:\\\/\\\/ievolutionclub.com\\\/es\\\/producto\\\/proenzi\\\/\",\"woo_name\":\"Proenzi+\",\"video_en\":\"https:\\\/\\\/streamable.com\\\/l\\\/0ney43\\\/mp4-high.mp4\",\"video_es\":\"https:\\\/\\\/streamable.com\\\/l\\\/6gfq7a\\\/mp4-high.mp4\"},\"colon_d\":{\"woo_id\":4932,\"image_url\":\"https:\\\/\\\/ievolutionclub.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/Result-2026-02-21T181147.028-300x300.webp\",\"price_usd\":19.99,\"prices\":{\"MXN\":399},\"permalink\":\"https:\\\/\\\/ievolutionclub.com\\\/es\\\/producto\\\/colon-d\\\/\",\"woo_name\":\"Colon-D\",\"video_en\":\"https:\\\/\\\/streamable.com\\\/l\\\/c1zzt1\\\/mp4-high.mp4\",\"video_es\":\"https:\\\/\\\/streamable.com\\\/l\\\/sas3dl\\\/mp4-high.mp4\"},\"cand_caps\":{\"woo_id\":2071,\"image_url\":\"https:\\\/\\\/ievolutionclub.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/Result-2026-02-22T095132.074-300x300.webp\",\"price_usd\":49.99,\"prices\":{\"MXN\":999},\"permalink\":\"https:\\\/\\\/ievolutionclub.com\\\/es\\\/producto\\\/can-d-caps\\\/\",\"woo_name\":\"Can-D Caps\",\"video_en\":\"https:\\\/\\\/streamable.com\\\/l\\\/mfqd02\\\/mp4-high.mp4\",\"video_es\":\"https:\\\/\\\/streamable.com\\\/l\\\/17h736\\\/mp4-high.mp4\"},\"polen_boost\":{\"woo_id\":2074,\"image_url\":\"https:\\\/\\\/ievolutionclub.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/Result-2026-02-22T090724.010-300x300.webp\",\"price_usd\":59.99,\"prices\":{\"MXN\":1199},\"permalink\":\"https:\\\/\\\/ievolutionclub.com\\\/es\\\/producto\\\/pollen-boost-on-the-go-30-pack\\\/\",\"woo_name\":\"Pollen Boost \\u2013 On the Go\",\"video_en\":\"https:\\\/\\\/streamable.com\\\/l\\\/tcxo1q\\\/mp4-high.mp4\",\"video_es\":\"https:\\\/\\\/streamable.com\\\/l\\\/afvor2\\\/mp4-high.mp4\"},\"fit_caps\":{\"woo_id\":4730,\"image_url\":\"https:\\\/\\\/ievolutionclub.com\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/Result-2026-02-22T100545.948-300x300.webp\",\"price_usd\":49.99,\"prices\":{\"MXN\":999},\"permalink\":\"https:\\\/\\\/ievolutionclub.com\\\/es\\\/producto\\\/fit-caps\\\/\",\"woo_name\":\"Fit Caps\",\"video_en\":\"https:\\\/\\\/streamable.com\\\/l\\\/p26jf3\\\/mp4-high.mp4\",\"video_es\":\"https:\\\/\\\/streamable.com\\\/l\\\/dgjl6d\\\/mp4-high.mp4\"},\"smr\":{\"woo_id\":4736,\"image_url\":\"https:\\\/\\\/ievolutionclub.com\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/MINIATURA-03-2-300x300.webp\",\"price_usd\":69.99,\"prices\":{\"MXN\":1399},\"permalink\":\"https:\\\/\\\/ievolutionclub.com\\\/es\\\/producto\\\/smr-smart-meal-replacement\\\/\",\"woo_name\":\"SMR\",\"video_en\":\"https:\\\/\\\/streamable.com\\\/l\\\/66jusg\\\/mp4-high.mp4\",\"video_es\":\"https:\\\/\\\/streamable.com\\\/l\\\/4es9r9\\\/mp4-high.mp4\"},\"royal_coffee\":{\"woo_id\":1918,\"image_url\":\"https:\\\/\\\/ievolutionclub.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/Result-56-300x300.webp\",\"price_usd\":34.99,\"prices\":{\"MXN\":699},\"permalink\":\"https:\\\/\\\/ievolutionclub.com\\\/es\\\/producto\\\/royal-coffee\\\/\",\"woo_name\":\"Royal Coffee Black\",\"video_en\":\"https:\\\/\\\/streamable.com\\\/l\\\/qakmx7\\\/mp4-high.mp4\",\"video_es\":\"https:\\\/\\\/streamable.com\\\/l\\\/qvimco\\\/mp4-high.mp4\"},\"royal_coffee_gourmet\":{\"woo_id\":2075,\"image_url\":\"https:\\\/\\\/ievolutionclub.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/Result-28-300x300.webp\",\"price_usd\":39.99,\"prices\":{\"MXN\":799},\"permalink\":\"https:\\\/\\\/ievolutionclub.com\\\/es\\\/producto\\\/royal-coffee-gourmet-black-on-the-go\\\/\",\"woo_name\":\"Royal Coffee Black - On The Go\",\"video_en\":\"\",\"video_es\":\"https:\\\/\\\/streamable.com\\\/l\\\/lp8dzo\\\/mp4-high.mp4\"},\"nad\":{\"woo_id\":2110,\"image_url\":\"https:\\\/\\\/ievolutionclub.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/Result-2026-02-19T132617.977-300x300.webp\",\"price_usd\":59.99,\"prices\":{\"MXN\":1199},\"permalink\":\"https:\\\/\\\/ievolutionclub.com\\\/es\\\/producto\\\/nad\\\/\",\"woo_name\":\"NAD+\",\"video_en\":\"https:\\\/\\\/streamable.com\\\/l\\\/veqgd7\\\/mp4-high.mp4\",\"video_es\":\"https:\\\/\\\/streamable.com\\\/l\\\/8gsyqo\\\/mp4-high.mp4\"},\"colloidal_silver\":{\"woo_id\":1917,\"image_url\":\"https:\\\/\\\/ievolutionclub.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/Result-2026-02-22T101800.150-300x300.webp\",\"price_usd\":49.99,\"prices\":{\"MXN\":999},\"permalink\":\"https:\\\/\\\/ievolutionclub.com\\\/es\\\/producto\\\/colloidal-silver-plus\\\/\",\"woo_name\":\"Colloidal Silver Plus\",\"video_en\":\"\",\"video_es\":\"https:\\\/\\\/streamable.com\\\/l\\\/lvvo03\\\/mp4-high.mp4\"},\"multivitaminico_365\":{\"woo_id\":4935,\"image_url\":\"https:\\\/\\\/ievolutionclub.com\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/Result-48-300x300.webp\",\"price_usd\":49.99,\"prices\":{\"MXN\":999},\"permalink\":\"https:\\\/\\\/ievolutionclub.com\\\/es\\\/producto\\\/365-power-performance-family-size\\\/\",\"woo_name\":\"365  \\u2013 Family Size\",\"video_en\":\"https:\\\/\\\/streamable.com\\\/l\\\/lrwtrl\\\/mp4-high.mp4\",\"video_es\":\"https:\\\/\\\/streamable.com\\\/l\\\/jdy9e4\\\/mp4-high.mp4\"},\"omg3\":{\"woo_id\":2112,\"image_url\":\"https:\\\/\\\/ievolutionclub.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/Result-2026-02-19T133306.294-300x300.webp\",\"price_usd\":59.99,\"prices\":{\"MXN\":1199},\"permalink\":\"https:\\\/\\\/ievolutionclub.com\\\/es\\\/producto\\\/omg-3\\\/\",\"woo_name\":\"OMG-3\",\"video_en\":\"https:\\\/\\\/streamable.com\\\/l\\\/p9c7y1\\\/mp4-high.mp4\",\"video_es\":\"https:\\\/\\\/streamable.com\\\/l\\\/wajeg3\\\/mp4-high.mp4\"},\"omega_369\":{\"woo_id\":1914,\"image_url\":\"https:\\\/\\\/ievolutionclub.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/Result-2026-02-22T101020.243-300x300.webp\",\"price_usd\":49.99,\"prices\":{\"MXN\":999},\"permalink\":\"https:\\\/\\\/ievolutionclub.com\\\/es\\\/producto\\\/omega-3-6-9-vitamin-e\\\/\",\"woo_name\":\"Omegas 3 6 9\",\"video_en\":\"https:\\\/\\\/streamable.com\\\/l\\\/gt5ifu\\\/mp4-high.mp4\",\"video_es\":\"https:\\\/\\\/streamable.com\\\/l\\\/egnt2z\\\/mp4-high.mp4\"},\"ss_plus\":{\"woo_id\":1916,\"image_url\":\"https:\\\/\\\/ievolutionclub.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/Result-2026-02-22T092023.260-300x300.webp\",\"price_usd\":49.99,\"prices\":{\"MXN\":999},\"permalink\":\"https:\\\/\\\/ievolutionclub.com\\\/es\\\/producto\\\/ss-blood-sugar-support\\\/\",\"woo_name\":\"SS+\",\"video_en\":\"https:\\\/\\\/streamable.com\\\/l\\\/6xlntp\\\/mp4-high.mp4\",\"video_es\":\"https:\\\/\\\/streamable.com\\\/l\\\/i1utyr\\\/mp4-high.mp4\"},\"bps\":{\"woo_id\":1915,\"image_url\":\"https:\\\/\\\/ievolutionclub.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/Result-2026-02-22T090705.830-300x300.webp\",\"price_usd\":49.99,\"prices\":{\"MXN\":999},\"permalink\":\"https:\\\/\\\/ievolutionclub.com\\\/es\\\/producto\\\/bps-blood-pressure-support\\\/\",\"woo_name\":\"BPS\",\"video_en\":\"https:\\\/\\\/streamable.com\\\/l\\\/cdve0q\\\/mp4-high.mp4\",\"video_es\":\"https:\\\/\\\/streamable.com\\\/l\\\/7axptx\\\/mp4-high.mp4\"},\"thyr\":{\"woo_id\":2113,\"image_url\":\"https:\\\/\\\/ievolutionclub.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/Result-2026-02-22T095910.142-300x300.webp\",\"price_usd\":49.99,\"prices\":{\"MXN\":999},\"permalink\":\"https:\\\/\\\/ievolutionclub.com\\\/es\\\/producto\\\/thyr\\\/\",\"woo_name\":\"THYR+\",\"video_en\":\"https:\\\/\\\/streamable.com\\\/l\\\/z70utt\\\/mp4-high.mp4\",\"video_es\":\"https:\\\/\\\/streamable.com\\\/l\\\/5ge74e\\\/mp4-high.mp4\"},\"royal_coffee_caramel\":{\"woo_id\":2114,\"image_url\":\"https:\\\/\\\/ievolutionclub.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/Result-2026-03-04T133523.543-300x300.webp\",\"price_usd\":39.99,\"prices\":{\"MXN\":799},\"permalink\":\"https:\\\/\\\/ievolutionclub.com\\\/es\\\/producto\\\/royal-coffee-latte-familiar\\\/\",\"woo_name\":\"Royal Coffee Latte\",\"video_en\":\"https:\\\/\\\/streamable.com\\\/l\\\/6nu0wt\\\/mp4-high.mp4\",\"video_es\":\"https:\\\/\\\/streamable.com\\\/l\\\/8nz6wv\\\/mp4-high.mp4\"},\"royal_coffee_latte_otg\":{\"woo_id\":2108,\"image_url\":\"https:\\\/\\\/ievolutionclub.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/Result-29-300x300.webp\",\"price_usd\":39.99,\"prices\":{\"MXN\":799},\"permalink\":\"https:\\\/\\\/ievolutionclub.com\\\/es\\\/producto\\\/royal-coffee-gourmet-latte-on-the-go\\\/\",\"woo_name\":\"Royal Coffee Latte - Satches\",\"video_en\":\"https:\\\/\\\/streamable.com\\\/l\\\/qakmx7\\\/mp4-high.mp4\",\"video_es\":\"https:\\\/\\\/streamable.com\\\/l\\\/qvimco\\\/mp4-high.mp4\"}},\"cartUrl\":\"https:\\\/\\\/ievolutionclub.com\\\/es\\\/cart\\\/\",\"currencyRates\":{\"MXN\":20,\"CAD\":1.44},\"currencySymbols\":{\"USD\":\"$\",\"MXN\":\"MX$\",\"COP\":\"COL$\",\"EUR\":\"\\u20ac\",\"GBP\":\"\\u00a3\"},\"quizCount\":116,\"emailEnabled\":true,\"tokenData\":null};\n        <\/script>\n\n        <script crossorigin src=\"https:\/\/unpkg.com\/react@18\/umd\/react.production.min.js\"><\/script>\n        <script crossorigin src=\"https:\/\/unpkg.com\/react-dom@18\/umd\/react-dom.production.min.js\"><\/script>\n        <script src=\"https:\/\/unpkg.com\/@babel\/standalone\/babel.min.js\"><\/script>\n\n        <div id=\"ievolution-quiz-root-6133\" class=\"notranslate\" translate=\"no\"><\/div>\n        <script type=\"text\/babel\">\n        const { useState, useEffect, useRef } = React;\n\nfunction QuizApp() {\n    \/\/ Restore saved quiz state from localStorage\n    const STORAGE_KEY = 'ievolution_quiz_state';\n    const getSavedState = () => {\n        try {\n            const saved = localStorage.getItem(STORAGE_KEY);\n            if (saved) {\n                const parsed = JSON.parse(saved);\n                \/\/ Check if saved state is less than 24 hours old\n                if (parsed._timestamp && (Date.now() - parsed._timestamp) < 86400000) {\n                    return parsed;\n                }\n                localStorage.removeItem(STORAGE_KEY);\n            }\n        } catch(e) {}\n        return null;\n    };\n    const savedState = getSavedState();\n\n    \/\/ Save quiz state to localStorage on every change (skip if token visit)\n    useEffect(() => {\n        if(tokenData) return; \/\/ Don't overwrite saved state from token visit\n        try {\n            localStorage.setItem(STORAGE_KEY, JSON.stringify({\n                currentStep,\n                formData,\n                _timestamp: Date.now()\n            }));\n        } catch(e) {}\n    }, [currentStep, formData]);\n\n    \/\/ Clear saved state when quiz is completed (results page)\n    const clearSavedState = () => {\n        try { localStorage.removeItem(STORAGE_KEY); } catch(e) {}\n    };\n\n    const resetQuiz = () => {\n        clearSavedState();\n        setCurrentStep(0);\n        setCartStatus('idle');\n        setCartMessage('');\n        setEmailSaved(false);\n        setEmailCheckStatus('idle');\n        setFormData({\n            nombre:'',edad:'',genero:'',email:'',beneficios:'',actividad:'',\n            sue\u00f1o:'',estres:'',alimentacion:'',padecimientos:[],tipoTiroides:'',\n            antojoDulce:'',preferenciaCafe:'',consumeCafe:'',alergias:[],sintomas:[],\n            nivelRecomendacion:''\n        });\n    };\n\n    const config = window.ievolutionQuizConfig || {ajaxUrl:'',nonce:'',productData:{},cartUrl:'',currencyRates:{},currencySymbols:{}};\n    const tokenData = config.tokenData || null;\n\n    \/\/ If loading from email magic link, pre-fill state to jump to results\n    const tokenInitStep = tokenData ? 999 : null; \/\/ 999 = past all questions = show results\n    const [currentStep, setCurrentStep] = useState(tokenInitStep !== null ? tokenInitStep : (savedState ? savedState.currentStep || 0 : 0));\n    const [cartStatus, setCartStatus] = useState('idle');\n    const [cartMessage, setCartMessage] = useState('');\n    const [emailSaved, setEmailSaved] = useState(tokenData ? true : false);\n    const [slideClass, setSlideClass] = useState('slide-active');\n    const [showLoading, setShowLoading] = useState(false);\n    const [loadingStep, setLoadingStep] = useState(0);\n    const [emailCheckStatus, setEmailCheckStatus] = useState('idle');\n    const [activeVideo, setActiveVideo] = useState(null);\n    const quizWrapRef = useRef(null);\n    const defaultFormData = {\n        nombre:'',edad:'',genero:'',email:'',beneficios:'',actividad:'',\n        sue\u00f1o:'',estres:'',alimentacion:'',padecimientos:[],tipoTiroides:'',\n        antojoDulce:'',preferenciaCafe:'',consumeCafe:'',alergias:[],sintomas:[],\n        nivelRecomendacion:''\n    };\n    const tokenFormData = tokenData ? {\n        ...defaultFormData,\n        nombre: tokenData.nombre || '',\n        email: tokenData.email || '',\n        nivelRecomendacion: tokenData.plan_level || 'basico',\n    } : null;\n    const [formData, setFormData] = useState(tokenFormData || (savedState ? {...defaultFormData, ...savedState.formData} : defaultFormData));\n    const getFormattedPrice = (wooData) => {\n        if (!wooData || !wooData.price_usd) return '';\n        const selectedCurrency = (typeof localStorage !== 'undefined' && localStorage.getItem('store_selected_currency')) || 'USD';\n        const symbols = config.currencySymbols || {};\n        const rates = config.currencyRates || {};\n        const symbol = symbols[selectedCurrency] || symbols['USD'] || '$';\n\n        let price = wooData.price_usd;\n        \/\/ Check if product has a fixed custom price for this currency\n        if (wooData.prices && wooData.prices[selectedCurrency]) {\n            price = wooData.prices[selectedCurrency];\n        } else if (selectedCurrency !== 'USD' && rates[selectedCurrency]) {\n            \/\/ Fallback: convert USD price using exchange rate\n            price = wooData.price_usd * rates[selectedCurrency];\n        }\n\n        return symbol + price.toLocaleString(undefined, {minimumFractionDigits:2, maximumFractionDigits:2});\n    };\n\n    \/\/ Language detection \u2014 \/es\/ in URL = Spanish, otherwise English\n    const isES = window.location.pathname.includes('\/es\/');\n    const t = (es, en) => isES ? es : en;\n\n    const productDatabase = {\n        \"reto_21d\":{nombre:\"Reto 21-D Challenge\",categoria:t(\"Programa Detox\",\"Detox Program\"),descripcion:t(\"Programa integral de 21 d\u00edas.\",\"21-day comprehensive program.\"),incluye:[\"Liver-D\",\"Colon-D\",\"Proenzi+\"]},\n        \"daily_liver\":{nombre:\"Daily Liver Plus\",categoria:t(\"Mantenimiento Hep\u00e1tico\",\"Liver Maintenance\"),descripcion:t(\"F\u00f3rmula diaria para el h\u00edgado.\",\"Daily liver support formula.\")},\n        \"dtx_caps\":{nombre:\"DTX CAPS\",categoria:t(\"Digesti\u00f3n y Sue\u00f1o\",\"Digestion & Sleep\"),descripcion:t(\"Citrato de magnesio con aloe vera.\",\"Magnesium citrate with aloe vera.\")},\n        \"proenzi\":{nombre:\"Proenzi+\",categoria:t(\"Enzimas Digestivas\",\"Digestive Enzymes\"),descripcion:t(\"Enzimas digestivas con probi\u00f3ticos.\",\"Digestive enzymes with probiotics.\")},\n        \"colon_d\":{nombre:\"Colon-D\",categoria:t(\"Limpieza Intestinal\",\"Intestinal Cleanse\"),descripcion:t(\"T\u00e9 herbal para limpieza del colon.\",\"Herbal tea for colon cleanse.\")},\n        \"cand_caps\":{nombre:\"Can-D Caps\",categoria:t(\"Salud Digestiva\",\"Digestive Health\"),descripcion:t(\"Control de c\u00e1ndida y fortalecimiento inmune.\",\"Candida control and immune support.\")},\n        \"polen_boost\":{nombre:\"Pollen Boost\",categoria:t(\"Energ\u00eda Natural\",\"Natural Energy\"),descripcion:t(\"Vitaminas B, polen, t\u00e9 verde, cafe\u00edna y col\u00e1geno. \u26a1 KETO-FRIENDLY\",\"B vitamins, pollen, green tea, caffeine & collagen. \u26a1 KETO-FRIENDLY\"),noVegano:true,ketoFriendly:true},\n        \"fit_caps\":{nombre:\"FIT CAPS\",categoria:t(\"Control de Peso\",\"Weight Management\"),descripcion:t(\"L-Carnitina, t\u00e9 verde y guaran\u00e1.\",\"L-Carnitine, green tea & guarana.\")},\n        \"smr\":{nombre:\"SMR (Smart Meal Replacement)\",categoria:t(\"Nutrici\u00f3n Completa\",\"Complete Nutrition\"),descripcion:t(\"Reemplazo de comida con 22g prote\u00edna.\",\"Meal replacement with 22g protein.\"),alergias:[\"lacteos\"],noVegano:true},\n        \"royal_coffee\":{nombre:\"Royal Coffee\",categoria:t(\"Caf\u00e9 Funcional\",\"Functional Coffee\"),descripcion:t(\"Caf\u00e9 con probi\u00f3ticos, ganoderma y ginseng.\",\"Coffee with probiotics, ganoderma & ginseng.\"),alergias:[\"lacteos\"],noVegano:true},\n        \"royal_coffee_gourmet\":{nombre:\"Royal Coffee Gourmet\",categoria:t(\"Caf\u00e9 Funcional Premium\",\"Premium Functional Coffee\"),descripcion:t(\"Caf\u00e9 liofilizado premium. \u2b50 SABOR INTENSO\",\"Premium freeze-dried coffee. \u2b50 BOLD FLAVOR\"),alergias:[\"lacteos\"],noVegano:true},\n        \"nad\":{nombre:\"NAD+\",categoria:\"Anti-aging\",descripcion:t(\"NR 250mg, glutati\u00f3n, resveratrol y ashwagandha.\",\"NR 250mg, glutathione, resveratrol & ashwagandha.\")},\n        \"colloidal_silver\":{nombre:\"Colloidal Silver Plus\",categoria:t(\"Sistema Inmune\",\"Immune System\"),descripcion:t(\"Plata coloidal 20mcg.\",\"Colloidal silver 20mcg.\")},\n        \"multivitaminico_365\":{nombre:\"365 Multivitam\u00ednico\",categoria:t(\"Vitaminas Completas\",\"Complete Vitamins\"),descripcion:t(\"M\u00e1s de 110 nutrientes.\",\"Over 110 nutrients.\")},\n        \"omg3\":{nombre:\"OMG-3\",categoria:t(\"Cardiovascular\",\"Cardiovascular\"),descripcion:t(\"Omega 3 puro (EPA+DHA) con astaxantina.\",\"Pure Omega 3 (EPA+DHA) with astaxanthin.\"),alergias:[\"mariscos\"],noVegano:true},\n        \"omega_369\":{nombre:\"Omega 3,6,9 + Vitamina E\",categoria:t(\"Balance Nutricional\",\"Nutritional Balance\"),descripcion:t(\"Mezcla completa de omegas con vitamina E.\",\"Complete omega blend with vitamin E.\")},\n        \"ss_plus\":{nombre:\"SS-Plus\",categoria:t(\"Control Glucosa\",\"Glucose Control\"),descripcion:t(\"Cromo, canela y gymnema.\",\"Chromium, cinnamon & gymnema.\")},\n        \"bps\":{nombre:\"BPS (Blood Pressure Support)\",categoria:t(\"Presi\u00f3n Arterial\",\"Blood Pressure\"),descripcion:t(\"Extracto de uva y polifenoles.\",\"Grape extract & polyphenols.\")},\n        \"thyr\":{nombre:\"THYR+ (Thyroid Support)\",categoria:t(\"Soporte Tiroideo\",\"Thyroid Support\"),descripcion:t(\"L-Tirosina, ashwagandha, selenio y yodo.\",\"L-Tyrosine, ashwagandha, selenium & iodine.\")},\n        \"royal_coffee_caramel\":{nombre:\"Royal Coffee Latte Caramel\",categoria:t(\"Caf\u00e9 Funcional\",\"Functional Coffee\"),descripcion:t(\"Caf\u00e9 con ashwagandha y hongos adapt\u00f3genos.\",\"Coffee with ashwagandha & adaptogenic mushrooms.\"),alergias:[\"lacteos\"],noVegano:true},\n        \"royal_coffee_latte_otg\":{nombre:\"Royal Coffee Latte On The Go\",categoria:t(\"Caf\u00e9 Funcional\",\"Functional Coffee\"),descripcion:t(\"Caf\u00e9 latte con ganoderma y probi\u00f3ticos. \u26a1 KETO-FRIENDLY\",\"Latte with ganoderma & probiotics. \u26a1 KETO-FRIENDLY\"),alergias:[\"lacteos\"],noVegano:true,ketoFriendly:true}\n    };\n\n    const questions = [\n        {id:'contacto',title:t('Bienvenido! Comencemos con tus datos','Welcome! Let\\'s start with your info'),description:t('Informaci\u00f3n b\u00e1sica para personalizar tu experiencia','Basic info to personalize your experience'),type:'input',fields:[\n            {name:'nombre',label:t('Nombre completo','Full name'),type:'text',required:true},\n            {name:'edad',label:t('Edad','Age'),type:'select',required:true,options:[\n                {value:'18-25',label:t('18-25 a\u00f1os','18-25 years')},{value:'26-35',label:t('26-35 a\u00f1os','26-35 years')},{value:'36-45',label:t('36-45 a\u00f1os','36-45 years')},{value:'46-55',label:t('46-55 a\u00f1os','46-55 years')},{value:'56-65',label:t('56-65 a\u00f1os','56-65 years')},{value:'66+',label:t('66+ a\u00f1os','66+ years')}\n            ]},\n            {name:'genero',label:t('G\u00e9nero','Gender'),type:'select',required:true,options:[\n                {value:'femenino',label:t('Mujer','Female')},{value:'masculino',label:t('Hombre','Male')}\n            ]}\n        ]},\n        {id:'beneficios',title:t('\u00bfCu\u00e1l es tu objetivo de bienestar principal?','What is your main wellness goal?'),description:t('Selecciona la meta que m\u00e1s te interesa','Select the goal that interests you most'),type:'single',options:[\n            {value:'desintoxicacion',label:t('Desintoxicar mi cuerpo','Detox my body'),icon:'leaf',description:t('Limpiar h\u00edgado e intestinos','Cleanse liver & intestines')},\n            {value:'energia',label:t('Tener m\u00e1s energ\u00eda','More energy'),icon:'zap',description:t('Combatir fatiga y mejorar concentraci\u00f3n','Fight fatigue & improve focus')},\n            {value:'digestion',label:t('Mejorar digesti\u00f3n','Improve digestion'),icon:'sprout',description:t('Reducir acidez e hinchaz\u00f3n','Reduce acid reflux & bloating')},\n            {value:'defensas',label:t('Fortalecer mis defensas','Strengthen immunity'),icon:'shield',description:t('Prevenir enfermedades','Prevent illness')},\n            {value:'dormir',label:t('Dormir mejor','Sleep better'),icon:'moon',description:t('Conciliar sue\u00f1o m\u00e1s f\u00e1cil','Fall asleep easier')},\n            {value:'longevidad',label:t('Longevidad celular','Cellular longevity'),icon:'sparkles',description:t('Anti-aging y protecci\u00f3n celular','Anti-aging & cell protection')},\n            {value:'ejercicio',label:t('Mejorar rendimiento f\u00edsico','Improve physical performance'),icon:'dumbbell',description:t('M\u00e1s energ\u00eda para entrenar','More energy for training')},\n            {value:'peso',label:t('Controlar mi peso','Manage my weight'),icon:'scale',description:t('Acelerar metabolismo','Boost metabolism')}\n        ]},\n        {id:'actividad',title:t('\u00bfQu\u00e9 tan activo eres f\u00edsicamente?','How physically active are you?'),description:t('Tu nivel de actividad personaliza las recomendaciones','Your activity level personalizes recommendations'),type:'single',options:[\n            {value:'sedentario',label:t('Poco activo','Sedentary'),icon:'chair'},{value:'moderado',label:t('Moderadamente activo','Moderately active'),icon:'walking'},\n            {value:'activo',label:t('Activo (3-5 veces\/semana)','Active (3-5x\/week)'),icon:'running'},{value:'muy_activo',label:t('Muy activo (intenso diario)','Very active (intense daily)'),icon:'gym'}\n        ]},\n        {id:'sue\u00f1o',title:t('\u00bfC\u00f3mo duermes normalmente?','How do you usually sleep?'),description:t('La calidad del sue\u00f1o afecta tu salud','Sleep quality affects your health'),type:'single',options:[\n            {value:'excelente',label:t('Muy bien (7-9h)','Very well (7-9h)'),icon:'smile'},{value:'bueno',label:t('Bien (6-7h)','Good (6-7h)'),icon:'happy'},\n            {value:'regular',label:t('Regular (5-6h)','Fair (5-6h)'),icon:'neutral'},{value:'malo',label:t('Mal (<5h)','Poor (<5h)'),icon:'tired'}\n        ]},\n        {id:'estres',title:t('\u00bfQu\u00e9 tan estresado te sientes?','How stressed do you feel?'),description:t('El estr\u00e9s afecta tus necesidades nutricionales','Stress affects your nutritional needs'),type:'single',options:[\n            {value:'bajo',label:t('Poco estr\u00e9s','Low stress'),icon:'calm',description:t('Relajado la mayor parte del tiempo','Relaxed most of the time')},\n            {value:'moderado',label:t('Estr\u00e9s normal','Normal stress'),icon:'happy',description:t('Presi\u00f3n ocasional','Occasional pressure')},\n            {value:'alto',label:t('Bastante estresado','Quite stressed'),icon:'worried',description:t('Tensi\u00f3n frecuente','Frequent tension')},\n            {value:'muy_alto',label:t('Muy estresado','Very stressed'),icon:'dizzy',description:t('Ansiedad constante','Constant anxiety')}\n        ]},\n        {id:'alimentacion',title:t('\u00bfQu\u00e9 tipo de alimentos consumes?','What type of diet do you follow?'),description:t('Para recomendarte suplementos compatibles','To recommend compatible supplements'),type:'single',options:[\n            {value:'todo',label:t('Como de todo','I eat everything'),icon:'plate'},{value:'sin_carne',label:t('No como carne','No meat'),icon:'salad'},\n            {value:'vegano',label:t('Vegano','Vegan'),icon:'grain'},{value:'keto',label:t('Dieta keto','Keto diet'),icon:'meat'}\n        ]},\n        {id:'consumeCafe',title:t('\u00bfConsumes caf\u00e9 habitualmente?','Do you drink coffee regularly?'),description:t('Para recomendarte productos adecuados','To recommend suitable products'),type:'single',options:[\n            {value:'si',label:t('S\u00ed, consumo caf\u00e9','Yes, I drink coffee'),icon:'coffee',description:t('Me gusta y lo tomo regularmente','I like it and drink it regularly')},\n            {value:'no',label:t('No consumo caf\u00e9','No, I don\\'t drink coffee'),icon:'x',description:t('No me gusta o lo evito','I don\\'t like it or I avoid it')}\n        ]},\n        {id:'padecimientos',title:t('\u00bfTienes alguno de estos padecimientos?','Do you have any of these conditions?'),description:t('Selecciona todos los que apliquen','Select all that apply'),type:'multiple',options:[\n            {value:'diabetes',label:t('Diabetes','Diabetes'),icon:'pill'},{value:'presion',label:t('Presi\u00f3n arterial alta','High blood pressure'),icon:'pill'},\n            {value:'tiroides',label:t('Problemas de tiroides','Thyroid issues'),icon:'pill'},{value:'estomago',label:t('Problemas estomacales','Stomach problems'),icon:'sprout'},\n            {value:'ansiedad',label:t('Ansiedad\/Depresi\u00f3n','Anxiety\/Depression'),icon:'worried'},{value:'ninguno',label:t('Ninguno','None'),icon:'thumbs-up'}\n        ]},\n        {id:'tipoTiroides',title:t('\u00bfQu\u00e9 tipo de problema de tiroides?','What type of thyroid issue?'),description:t('Para recomendarte el suplemento adecuado','To recommend the right supplement'),type:'single',\n            condition:()=>formData.padecimientos&&formData.padecimientos.includes('tiroides'),options:[\n            {value:'hipotiroidismo',label:t('Hipotiroidismo (lenta)','Hypothyroidism (slow)'),icon:'slow',description:t('Cansancio, aumento de peso','Fatigue, weight gain')},\n            {value:'hipertiroidismo',label:t('Hipertiroidismo (acelerada)','Hyperthyroidism (fast)'),icon:'zap',description:t('Nerviosismo, p\u00e9rdida de peso','Nervousness, weight loss')},\n            {value:'no_se',label:t('No estoy seguro','Not sure'),icon:'question',description:t('Consulta con tu m\u00e9dico','Consult your doctor')}\n        ]},\n        {id:'antojoDulce',title:t('\u00bfTienes antojos de dulces recurrentemente?','Do you frequently crave sweets?'),description:t('Puede indicar desequilibrio digestivo','May indicate digestive imbalance'),type:'single',\n            condition:()=>formData.padecimientos&&formData.padecimientos.includes('estomago'),options:[\n            {value:'si',label:t('S\u00ed, frecuentemente','Yes, frequently'),icon:'candy'},{value:'no',label:t('No realmente','Not really'),icon:'thumbs-up'}\n        ]},\n        {id:'preferenciaCafe',title:t('\u00bfQu\u00e9 buscas en tu caf\u00e9?','What do you look for in your coffee?'),description:t('Dos opciones con la misma f\u00f3rmula funcional','Two options with the same functional formula'),type:'single',\n            condition:()=>{\n                if(formData.beneficios==='energia')return true;\n                if(formData.padecimientos&&formData.padecimientos.includes('estomago')&&formData.antojoDulce==='no')return true;\n                return false;\n            },options:[\n            {value:'sabor',label:t('Sabor y aroma intenso','Bold flavor & aroma'),icon:'sparkles'},{value:'funcional',label:t('Solo funcionalidad','Functionality only'),icon:'target'}\n        ]},\n        {id:'alergias',title:t('\u00bfTienes alguna alergia alimentaria?','Do you have any food allergies?'),description:t('Para evitar ingredientes da\u00f1inos','To avoid harmful ingredients'),type:'multiple',options:[\n            {value:'lacteos',label:t('L\u00e1cteos','Dairy'),icon:'milk'},{value:'nueces',label:t('Nueces','Nuts'),icon:'nut'},\n            {value:'almendras',label:t('Almendras','Almonds'),icon:'almond'},{value:'cacahuates',label:t('Cacahuates','Peanuts'),icon:'peanut'},\n            {value:'soya',label:t('Soya','Soy'),icon:'soy'},{value:'gluten',label:t('Gluten','Gluten'),icon:'wheat'},\n            {value:'mariscos',label:t('Mariscos','Shellfish'),icon:'shrimp'},{value:'ninguna',label:t('Ninguna','None'),icon:'thumbs-up'}\n        ]},\n        {id:'sintomas',title:t('\u00bfExperimentas alguno de estos s\u00edntomas?','Do you experience any of these symptoms?'),description:t('Pueden indicar deficiencias nutricionales','May indicate nutritional deficiencies'),type:'multiple',options:[\n            {value:'dolores_cabeza',label:t('Dolores de cabeza frecuentes','Frequent headaches'),icon:'headache'},{value:'fatiga',label:t('Cansancio constante','Constant fatigue'),icon:'tired'},\n            {value:'piel_seca',label:t('Piel o cabello seco','Dry skin or hair'),icon:'droplet'},{value:'calambres',label:t('Calambres musculares','Muscle cramps'),icon:'muscle'},\n            {value:'ninguno',label:t('Ninguno','None'),icon:'thumbs-up'}\n        ]},\n        {id:'email',title:t('\u00bfCu\u00e1l es tu correo electr\u00f3nico?','What is your email address?'),description:t('Te enviaremos tus recomendaciones','We\\'ll send you your recommendations'),type:'input',fields:[\n            {name:'email',label:t('Correo electr\u00f3nico','Email address'),type:'email',required:true,placeholder:t('tu@email.com','you@email.com')}\n        ]},\n        {id:'nivelRecomendacion',title:t('\u00bfQu\u00e9 tipo de programa prefieres?','What type of program do you prefer?'),description:t('Elige el plan que se adapte a ti','Choose the plan that fits you'),type:'single',options:[\n            {value:'basico',label:t('B\u00e1sico (0-4 productos esenciales)','Basic (0-4 essential products)'),icon:'target'},\n            {value:'completo',label:t('Completo (4-6 productos) \u2014 10% OFF','Complete (4-6 products) \u2014 10% OFF'),icon:'sparkles',description:t('\u00a1Descuento exclusivo del quiz!','Exclusive quiz discount!')}\n        ]}\n    ];\n\n    \/\/ Recommendation reasons\n    const getReasonForRecommendation = (pk) => {\n        const r = [];\n        const bt = {\n            'desintoxicacion':t('desintoxicar tu cuerpo','detox your body'),\n            'energia':t('aumentar tu energ\u00eda','boost your energy'),\n            'digestion':t('mejorar tu digesti\u00f3n','improve your digestion'),\n            'defensas':t('fortalecer tus defensas','strengthen your immunity'),\n            'dormir':t('mejorar tu sue\u00f1o','improve your sleep'),\n            'longevidad':t('tu longevidad celular','your cellular longevity'),\n            'ejercicio':t('mejorar tu rendimiento f\u00edsico','improve your physical performance'),\n            'peso':t('controlar tu peso','manage your weight')\n        };\n        switch(pk){\n            case 'reto_21d':case 'daily_liver':case 'dtx_caps':\n                if(formData.beneficios==='desintoxicacion')r.push(t('Tu objetivo de ','Your goal to ')+bt[formData.beneficios]);\n                if(formData.sue\u00f1o==='regular'||formData.sue\u00f1o==='malo')r.push(t('Duermes poco y necesitas mejorar tu descanso','You sleep too little and need better rest'));break;\n            case 'royal_coffee':case 'royal_coffee_gourmet':\n                if(formData.beneficios==='energia')r.push(t('Buscas ','You\\'re looking for ')+bt[formData.beneficios]);\n                if(formData.padecimientos&&formData.padecimientos.includes('estomago')&&formData.antojoDulce==='no')r.push(t('Este caf\u00e9 cuida tu sistema digestivo','This coffee supports your digestive system'));break;\n            case 'royal_coffee_caramel':case 'royal_coffee_latte_otg':\n                if(formData.estres==='alto'||formData.estres==='muy_alto')r.push(t('Tu estr\u00e9s es alto y necesitas adapt\u00f3genos','Your stress is high and you need adaptogens'));\n                if(formData.padecimientos&&formData.padecimientos.includes('ansiedad'))r.push(t('Te ayuda a reducir la ansiedad','Helps reduce your anxiety'));break;\n            case 'polen_boost':\n                if(formData.beneficios==='energia')r.push(t('Necesitas energ\u00eda inmediata','You need immediate energy'));\n                if(formData.beneficios==='ejercicio')r.push(t('Necesitas m\u00e1s energ\u00eda para entrenar','You need more energy for training'));\n                if(formData.beneficios==='longevidad')r.push(t('Protecci\u00f3n celular y anti-aging','Cell protection & anti-aging'));\n                if(formData.actividad==='activo'||formData.actividad==='muy_activo')r.push(t('Tu actividad f\u00edsica es alta','Your physical activity is high'));break;\n            case 'nad':\n                if(formData.beneficios==='energia')r.push(t('Energ\u00eda celular y concentraci\u00f3n','Cellular energy & focus'));\n                if(formData.beneficios==='longevidad')r.push(t('Tu longevidad requiere NAD+','Your longevity requires NAD+'));break;\n            case 'proenzi':\n                if(formData.beneficios==='digestion')r.push(t('Tu objetivo de ','Your goal to ')+bt[formData.beneficios]);\n                if(formData.beneficios==='dormir')r.push(t('Mejor digesti\u00f3n mejora tu sue\u00f1o','Better digestion improves sleep'));\n                if(formData.padecimientos&&formData.padecimientos.includes('estomago'))r.push(t('Necesitas enzimas digestivas','You need digestive enzymes'));break;\n            case 'colon_d':case 'cand_caps':\n                if(formData.beneficios==='digestion')r.push(t('Limpieza intestinal profunda','Deep intestinal cleanse'));\n                if(formData.padecimientos&&formData.padecimientos.includes('estomago')&&formData.antojoDulce==='si')r.push(t('Antojos de dulces indican desequilibrio','Sweet cravings indicate imbalance'));break;\n            case 'smr':\n                if(formData.beneficios==='ejercicio'||formData.beneficios==='peso')r.push(t('Prote\u00edna completa y nutrici\u00f3n balanceada','Complete protein & balanced nutrition'));\n                if(formData.actividad==='activo'||formData.actividad==='muy_activo')r.push(t('Recuperaci\u00f3n muscular','Muscle recovery'));break;\n            case 'fit_caps':\n                if(formData.beneficios==='peso')r.push(t('Acelerar tu metabolismo','Boost your metabolism'));\n                if(formData.beneficios==='ejercicio')r.push(t('Quemar grasa y m\u00e1s energ\u00eda','Burn fat & more energy'));\n                if(formData.actividad==='activo'||formData.actividad==='muy_activo')r.push(t('L-Carnitina para tu actividad','L-Carnitine for your activity'));break;\n            case 'colloidal_silver':\n                if(formData.beneficios==='defensas')r.push(t('Fortalecer tu sistema inmune','Strengthen your immune system'));break;\n            case 'multivitaminico_365':\n                if(formData.beneficios==='defensas')r.push(t('Nutrici\u00f3n completa para defensas','Complete nutrition for immunity'));\n                if(formData.sintomas&&formData.sintomas.length>0&&!formData.sintomas.includes('ninguno'))r.push(t('Tus s\u00edntomas indican deficiencias','Your symptoms indicate deficiencies'));break;\n            case 'omg3':\n                if(formData.beneficios==='longevidad')r.push(t('Omega-3 esencial para anti-aging','Omega-3 essential for anti-aging'));break;\n            case 'omega_369':\n                if(formData.beneficios==='energia')r.push(t('Omega-3 para funci\u00f3n cerebral','Omega-3 for brain function'));\n                if(formData.beneficios==='defensas')r.push(t('Omegas fortalecen tu sistema inmune','Omegas strengthen your immune system'));\n                if(formData.beneficios==='peso')r.push(t('Omegas regulan metabolismo','Omegas regulate metabolism'));\n                if(formData.beneficios==='digestion')r.push(t('Reduces inflamaci\u00f3n intestinal','Reduce intestinal inflammation'));break;\n            case 'ss_plus':if(formData.padecimientos&&formData.padecimientos.includes('diabetes'))r.push(t('Regular tu glucosa','Regulate your glucose'));break;\n            case 'bps':if(formData.padecimientos&&formData.padecimientos.includes('presion'))r.push(t('Regular tu presi\u00f3n arterial','Regulate your blood pressure'));break;\n            case 'thyr':if(formData.padecimientos&&formData.padecimientos.includes('tiroides')){\n                r.push(formData.tipoTiroides==='hipotiroidismo'?t('Soporte para hipotiroidismo','Support for hypothyroidism'):t('Soporte tiroideo nutricional','Thyroid nutritional support'));}break;\n        }\n        if(r.length===0)r.push(t('Complementa tu programa de ','Complements your program for ')+(bt[formData.beneficios]||t('bienestar','wellness')));\n        return r.join(t(' y ',' & '));\n    };\n\n    \/\/ Recommendation engine\n    const getRecommendations = () => {\n        \/\/ If coming from email magic link, build results from token data\n        if(tokenData && tokenData.product_keys && tokenData.product_keys.length > 0){\n            return tokenData.product_keys.map((key,idx)=>{\n                const db=productDatabase[key]||{nombre:key,categoria:'',descripcion:''};\n                const reason=tokenData.reasons&&tokenData.reasons[idx]?tokenData.reasons[idx]:'';\n                return {...db,key:key,razonPersonalizada:reason,wooData:config.productData[key]||{}};\n            }).filter(Boolean);\n        }\n\n        const p = new Set();\n        switch(formData.beneficios){\n            case 'desintoxicacion':p.add('reto_21d');p.add('daily_liver');p.add('dtx_caps');break;\n            case 'digestion':p.add('proenzi');p.add('colon_d');p.add('cand_caps');p.add('omega_369');break;\n            case 'dormir':p.add('dtx_caps');p.add('proenzi');break;\n            case 'ejercicio':p.add('polen_boost');p.add('fit_caps');p.add('smr');break;\n            case 'energia':p.add('royal_coffee');p.add('nad');p.add('polen_boost');p.add('omega_369');break;\n            case 'defensas':p.add('colloidal_silver');p.add('proenzi');p.add('cand_caps');p.add('multivitaminico_365');p.add('omega_369');break;\n            case 'longevidad':p.add('polen_boost');p.add('nad');p.add('omg3');break;\n            case 'peso':p.add('daily_liver');p.add('smr');p.add('dtx_caps');p.add('fit_caps');p.add('omega_369');break;\n        }\n        if(formData.actividad==='activo'||formData.actividad==='muy_activo'){p.add('smr');p.add('fit_caps');}\n        if(formData.sue\u00f1o==='regular'||formData.sue\u00f1o==='malo')p.add('dtx_caps');\n        if(formData.estres==='alto'||formData.estres==='muy_alto')p.add('royal_coffee_caramel');\n        if(formData.padecimientos){\n            if(formData.padecimientos.includes('diabetes'))p.add('ss_plus');\n            if(formData.padecimientos.includes('presion'))p.add('bps');\n            if(formData.padecimientos.includes('tiroides')&&(formData.tipoTiroides==='hipotiroidismo'||formData.tipoTiroides==='no_se'))p.add('thyr');\n            if(formData.padecimientos.includes('estomago')){p.add('proenzi');if(formData.antojoDulce==='si')p.add('cand_caps');else p.add('royal_coffee');}\n            if(formData.padecimientos.includes('ansiedad'))p.add('royal_coffee_caramel');\n        }\n        if(formData.sintomas&&formData.sintomas.length>0&&!formData.sintomas.includes('ninguno'))p.add('multivitaminico_365');\n        let a=Array.from(p);\n        if(formData.alergias){\n            if(formData.alergias.includes('lacteos'))a=a.filter(x=>x!=='smr'&&x!=='royal_coffee'&&x!=='royal_coffee_gourmet'&&x!=='royal_coffee_caramel'&&x!=='royal_coffee_latte_otg');\n            if(formData.alergias.includes('mariscos'))a=a.filter(x=>x!=='omg3');\n        }\n        if(formData.alimentacion==='vegano')a=a.filter(x=>x!=='polen_boost'&&x!=='omg3'&&x!=='smr'&&x!=='royal_coffee'&&x!=='royal_coffee_gourmet'&&x!=='royal_coffee_caramel'&&x!=='royal_coffee_latte_otg');\n        if(formData.consumeCafe==='no')a=a.filter(x=>x!=='royal_coffee'&&x!=='royal_coffee_gourmet'&&x!=='royal_coffee_caramel'&&x!=='royal_coffee_latte_otg');\n        if(formData.alimentacion==='keto'){const si=a.indexOf('smr');if(si!==-1)a[si]='polen_boost';const ci=a.indexOf('royal_coffee_caramel');if(ci!==-1)a[ci]='royal_coffee_latte_otg';}\n        if(formData.preferenciaCafe==='sabor'&&a.includes('royal_coffee')){const ri=a.indexOf('royal_coffee');if(ri!==-1)a[ri]='royal_coffee_gourmet';}\n        a=[...new Set(a)];\n        if((formData.estres==='alto'||formData.estres==='muy_alto')&&a.includes('royal_coffee_caramel')){a=a.filter(x=>x!=='royal_coffee_caramel');a.unshift('royal_coffee_caramel');}\n        if(formData.alimentacion==='keto'&&(formData.estres==='alto'||formData.estres==='muy_alto')&&a.includes('royal_coffee_latte_otg')){a=a.filter(x=>x!=='royal_coffee_latte_otg');a.unshift('royal_coffee_latte_otg');}\n        if(formData.padecimientos){\n            ['diabetes','presion','tiroides'].forEach(pad=>{const pk=pad==='diabetes'?'ss_plus':pad==='presion'?'bps':'thyr';\n            if(formData.padecimientos.includes(pad)&&a.includes(pk)){a=a.filter(x=>x!==pk);a.unshift(pk);}});\n        }\n        a = formData.nivelRecomendacion==='basico'?a.slice(0,4):a.slice(0,6);\n        return a.map(k=>({...productDatabase[k],key:k,razonPersonalizada:getReasonForRecommendation(k),wooData:config.productData[k]||{}})).filter(Boolean);\n    };\n\n    \/\/ Icons\n    const getIcon=(n)=>{const i={\n        'leaf':'<svg width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path d=\"M17 8C8 10 5.9 16.17 3.82 21.34l1.89.66L7 19c4-5 8-6 13-6V8z\"\/><path d=\"M13 12c-3 2.5-5 5-6 9\"\/><\/svg>',\n        'zap':'<svg width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path d=\"M13 2L3 14h8l-1 8 10-12h-8l1-8z\"\/><\/svg>',\n        'sprout':'<svg width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path d=\"M12 22V10M7 20h10\"\/><path d=\"M12 13C12 9 8 5 2 5c0 6 4 10 10 10z\"\/><path d=\"M12 13c0-4 4-8 10-8 0 6-4 10-10 10z\"\/><\/svg>',\n        'shield':'<svg width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"\/><\/svg>',\n        'moon':'<svg width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path d=\"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z\"\/><\/svg>',\n        'sparkles':'<svg width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path d=\"m12 3-1.912 5.813a2 2 0 0 1-1.275 1.275L3 12l5.813 1.912a2 2 0 0 1 1.275 1.275L12 21l1.912-5.813a2 2 0 0 1 1.275-1.275L21 12l-5.813-1.912a2 2 0 0 1-1.275-1.275L12 3ZM5 3v4M3 5h4M19 17v4M17 19h4\"\/><\/svg>',\n        'dumbbell':'<svg width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path d=\"M14.4 14.4 9.6 9.6M18.657 21.485l2.828-2.828-1.414-1.414-2.828 2.828zM4.929 7.757l2.828-2.828-1.414-1.414-2.828 2.828zM13.5 7.5l3-3M17.5 10.5l3-3M7.5 13.5l-3 3M10.5 17.5l-3 3\"\/><\/svg>',\n        'scale':'<svg width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path d=\"M12 3v17M5 21h14\"\/><path d=\"M5 10l7-7 7 7\"\/><circle cx=\"12\" cy=\"3\" r=\"1\"\/><\/svg>',\n        'chair':'<svg width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path d=\"M5 11a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v2H5zM19 13v5a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2v-5M7 18v3M17 18v3M12 4v5M9 4h6\"\/><\/svg>',\n        'walking':'<svg width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><circle cx=\"14\" cy=\"4\" r=\"2\"\/><path d=\"M10 22l1.5-5.5L14 18v4M15 13l-3-3-2 4-3-1M10 10l5 2 3-3\"\/><\/svg>',\n        'running':'<svg width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><circle cx=\"17\" cy=\"4\" r=\"2\"\/><path d=\"M14 22l-3-6 3-3-2-3-4 2M22 14l-5-2-3 3\"\/><\/svg>',\n        'gym':'<svg width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><rect x=\"2\" y=\"9\" width=\"4\" height=\"6\" rx=\"1\"\/><rect x=\"18\" y=\"9\" width=\"4\" height=\"6\" rx=\"1\"\/><rect x=\"6\" y=\"7\" width=\"3\" height=\"10\" rx=\"1\"\/><rect x=\"15\" y=\"7\" width=\"3\" height=\"10\" rx=\"1\"\/><path d=\"M9 12h6\"\/><\/svg>',\n        'smile':'<svg width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><path d=\"M8 14s1.5 2 4 2 4-2 4-2\"\/><circle cx=\"9\" cy=\"9\" r=\"1.5\" fill=\"currentColor\" stroke=\"none\"\/><circle cx=\"15\" cy=\"9\" r=\"1.5\" fill=\"currentColor\" stroke=\"none\"\/><\/svg>',\n        'happy':'<svg width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><path d=\"M8 14s1.5 1.5 4 1.5 4-1.5 4-1.5\"\/><circle cx=\"9\" cy=\"10\" r=\"1.5\" fill=\"currentColor\" stroke=\"none\"\/><circle cx=\"15\" cy=\"10\" r=\"1.5\" fill=\"currentColor\" stroke=\"none\"\/><\/svg>',\n        'neutral':'<svg width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><line x1=\"8\" y1=\"15\" x2=\"16\" y2=\"15\"\/><circle cx=\"9\" cy=\"10\" r=\"1.5\" fill=\"currentColor\" stroke=\"none\"\/><circle cx=\"15\" cy=\"10\" r=\"1.5\" fill=\"currentColor\" stroke=\"none\"\/><\/svg>',\n        'tired':'<svg width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><path d=\"M8 16s1.5-2 4-2 4 2 4 2\"\/><circle cx=\"9\" cy=\"10\" r=\"1.5\" fill=\"currentColor\" stroke=\"none\"\/><circle cx=\"15\" cy=\"10\" r=\"1.5\" fill=\"currentColor\" stroke=\"none\"\/><path d=\"M7 7.5l3 1.5M17 7.5l-3 1.5\"\/><\/svg>',\n        'calm':'<svg width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><path d=\"M9 14c1.5 1.5 4.5 1.5 6 0\"\/><circle cx=\"9\" cy=\"10\" r=\"1.5\" fill=\"currentColor\" stroke=\"none\"\/><circle cx=\"15\" cy=\"10\" r=\"1.5\" fill=\"currentColor\" stroke=\"none\"\/><\/svg>',\n        'worried':'<svg width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><path d=\"M8 16s1.5-2 4-2 4 2 4 2\"\/><circle cx=\"9\" cy=\"10\" r=\"1.5\" fill=\"currentColor\" stroke=\"none\"\/><circle cx=\"15\" cy=\"10\" r=\"1.5\" fill=\"currentColor\" stroke=\"none\"\/><path d=\"M8 7l3 1.5M16 7l-3 1.5\"\/><\/svg>',\n        'dizzy':'<svg width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><path d=\"M8 16s1.5-2 4-2 4 2 4 2M8 9l2.5 2M10.5 9L8 11M13.5 9l2.5 2M16 9l-2.5 2\"\/><\/svg>',\n        'plate':'<svg width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><ellipse cx=\"12\" cy=\"14\" rx=\"10\" ry=\"6\"\/><path d=\"M12 4c2 0 3 1 3 2s-1.5 2-3 3-3 2-3 3\"\/><\/svg>',\n        'salad':'<svg width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path d=\"M3 14h18M4 14c0 4 3.6 7 8 7s8-3 8-7\"\/><path d=\"M12 3c-3 0-5.5 2-6 5M12 3c3 0 5.5 2 6 5M8 8c-2 .5-3.5 2-4 4M16 8c2 .5 3.5 2 4 4M12 3v5\"\/><\/svg>',\n        'grain':'<svg width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path d=\"M12 2v20M2 12c4-4 7-4 10 0M12 12c3-4 6-4 10 0M2 17c4-4 7-4 10 0M12 17c3-4 6-4 10 0\"\/><\/svg>',\n        'meat':'<svg width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path d=\"M15 11l4.553-2.276A1 1 0 0 1 21 9.618v4.764a1 1 0 0 1-1.447.894L15 13v-2z\"\/><rect x=\"3\" y=\"6\" width=\"12\" height=\"12\" rx=\"2\"\/><\/svg>',\n        'pill':'<svg width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path d=\"M10.5 1.5l-8 14a4.24 4.24 0 0 0 1.56 5.78 4.24 4.24 0 0 0 5.78-1.56l8-14a4.24 4.24 0 0 0-1.56-5.78 4.24 4.24 0 0 0-5.78 1.56zM8.5 8.5l7 4\"\/><\/svg>',\n        'coffee':'<svg width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path d=\"M17 8h1a4 4 0 1 1 0 8h-1M3 8h14v9a4 4 0 0 1-4 4H7a4 4 0 0 1-4-4V8zM6 2v3M10 2v3M14 2v3\"\/><\/svg>',\n        'x':'<svg width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><path d=\"M15 9l-6 6M9 9l6 6\"\/><\/svg>',\n        'cup':'<svg width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path d=\"M5 12h14M7 12a5 5 0 0 0 10 0\"\/><path d=\"M9 2c0 2 2 3 2 5M12 2c0 2 2 3 2 5\"\/><\/svg>',\n        'thumbs-up':'<svg width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path d=\"M7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3m7-2V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3H14Z\"\/><\/svg>',\n        'candy':'<svg width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"6\"\/><path d=\"m6.34 17.66-3.54 3.54M17.66 6.34l3.54-3.54M6.34 6.34 2.8 2.8M17.66 17.66l3.54 3.54\"\/><\/svg>',\n        'target':'<svg width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><circle cx=\"12\" cy=\"12\" r=\"6\"\/><circle cx=\"12\" cy=\"12\" r=\"2\"\/><\/svg>',\n        'slow':'<svg width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><path d=\"M12 6v6l-4 2\"\/><\/svg>',\n        'question':'<svg width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><path d=\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3M12 17h.01\"\/><\/svg>',\n        'milk':'<svg width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path d=\"M8 2h8l2 4v14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2V6l2-4z\"\/><path d=\"M6 6h12M6 12h12\"\/><\/svg>',\n        'nut':'<svg width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><ellipse cx=\"12\" cy=\"13\" rx=\"7\" ry=\"8\"\/><path d=\"M12 5V2M8 6c0-2 1.5-3 4-3s4 1 4 3\"\/><path d=\"M12 9v8M9 13h6\"\/><\/svg>',\n        'almond':'<svg width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path d=\"M12 2C8 6 6 10 6 14c0 4 2.7 8 6 8s6-4 6-8c0-4-2-8-6-12z\"\/><path d=\"M12 8v10\"\/><\/svg>',\n        'peanut':'<svg width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path d=\"M12 2c-3 0-5 2-5 5 0 2 1 3 1 5s-1 3-1 5c0 3 2 5 5 5s5-2 5-5c0-2-1-3-1-5s1-3 1-5c0-3-2-5-5-5z\"\/><path d=\"M7 12h10\"\/><\/svg>',\n        'soy':'<svg width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path d=\"M12 22V12\"\/><path d=\"M8 6c0-2 1.8-4 4-4s4 2 4 4-1.8 4-4 4-4-2-4-4z\"\/><path d=\"M6 14c0-1.5 1.3-3 3-3h6c1.7 0 3 1.5 3 3s-1.3 3-3 3H9c-1.7 0-3-1.5-3-3z\"\/><path d=\"M9 20c0-1 1.3-2 3-2s3 1 3 2\"\/><\/svg>',\n        'wheat':'<svg width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path d=\"M12 22V7\"\/><path d=\"M8 9c0-2 1.8-4 4-4s4 2 4 4\"\/><path d=\"M7 13c0-1.5 2.2-3 5-3s5 1.5 5 3\"\/><path d=\"M8 17c0-1.5 1.8-2.5 4-2.5s4 1 4 2.5\"\/><path d=\"M12 3v2\"\/><\/svg>',\n        'shrimp':'<svg width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path d=\"M18 4c2 0 4 2 4 5s-3 5-6 5H8c-3 0-5 2-5 4\"\/><path d=\"M18 4c0 3-2 5-5 5\"\/><path d=\"M8 14v4c0 2 1 3 3 3M12 14v3c0 2 1 3 3 3\"\/><circle cx=\"19\" cy=\"6\" r=\"1\" fill=\"currentColor\" stroke=\"none\"\/><\/svg>',\n        'headache':'<svg width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><circle cx=\"9\" cy=\"10\" r=\"1.5\" fill=\"currentColor\" stroke=\"none\"\/><circle cx=\"15\" cy=\"10\" r=\"1.5\" fill=\"currentColor\" stroke=\"none\"\/><path d=\"M8 16s1.5-2 4-2 4 2 4 2\"\/><path d=\"M2 4l3 3M22 4l-3 3M1 12h3M20 12h3\"\/><\/svg>',\n        'droplet':'<svg width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path d=\"M12 2.69l5.66 5.66a8 8 0 1 1-11.31 0z\"\/><\/svg>',\n        'muscle':'<svg width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path d=\"M3 12h2l2-4 3 8 3-8 2 4h2\"\/><path d=\"M4 8h16M4 16h16\"\/><\/svg>'\n    };return i[n]||i['pill'];};\n\n    \/\/ Navigation\n    const shouldShowQuestion=(idx)=>{const q=questions[idx];if(!q.condition)return true;return q.condition();};\n    const handleInputChange=(name,value)=>{\n        setFormData(prev=>({...prev,[name]:value}));\n        if(name==='email')setEmailCheckStatus('idle');\n    };\n    const handleMultipleSelect=(name,value)=>{\n        setFormData(prev=>{\n            const c=prev[name]||[];\n            if(value==='ninguno'||value==='ninguna')return{...prev,[name]:[value]};\n            const f=c.filter(v=>v!=='ninguno'&&v!=='ninguna');\n            if(f.includes(value))return{...prev,[name]:f.filter(v=>v!==value)};\n            return{...prev,[name]:[...f,value]};\n        });\n    };\n    const isQuestionValid=()=>{\n        const c=questions[currentStep];if(!c)return false;\n        if(c.type==='input')return c.fields.every(f=>!f.required||(formData[f.name]&&formData[f.name].trim()!==''));\n        if(c.type==='single')return!!formData[c.id];\n        if(c.type==='multiple')return formData[c.id]&&formData[c.id].length>0;\n        return true;\n    };\n    const handleNext=async()=>{\n        if(!isQuestionValid())return;\n\n        \/\/ If on email step, check if email belongs to existing WP user\n        const currentQ=questions[currentStep];\n        if(currentQ&&currentQ.id==='email'&&formData.email){\n            setEmailCheckStatus('checking');\n            try{\n                const body=new FormData();\n                body.append('action','ievolution_check_email');\n                body.append('nonce',config.nonce);\n                body.append('email',formData.email);\n                const res=await fetch(config.ajaxUrl,{method:'POST',body});\n                const result=await res.json();\n                if(result.success&&result.data.exists){\n                    setEmailCheckStatus('exists');\n                    return; \/\/ Block navigation\n                }\n                setEmailCheckStatus('clear');\n            }catch(e){\n                setEmailCheckStatus('clear'); \/\/ Let them through on error\n            }\n        }\n\n        let n=currentStep+1;\n        while(n<questions.length&&!shouldShowQuestion(n))n++;\n        \/\/ If going to results, show loading screen first\n        if(n>=questions.length){\n            setSlideClass('slide-enter-next');\n            setTimeout(()=>{setShowLoading(true);setSlideClass('slide-active');},150);\n            \/\/ Animate loading steps\n            setLoadingStep(0);\n            setTimeout(()=>setLoadingStep(1),800);\n            setTimeout(()=>setLoadingStep(2),1600);\n            setTimeout(()=>setLoadingStep(3),2400);\n            setTimeout(()=>{setShowLoading(false);setCurrentStep(n);scrollToTop();},3200);\n            return;\n        }\n        setSlideClass('slide-enter-next');\n        setTimeout(()=>{setCurrentStep(n);setSlideClass('slide-active');scrollToTop();},150);\n    };\n    const handlePrev=()=>{\n        let pr=currentStep-1;\n        while(pr>=0&&!shouldShowQuestion(pr))pr--;\n        if(pr>=0){\n            setSlideClass('slide-enter-prev');\n            setTimeout(()=>{setCurrentStep(pr);setSlideClass('slide-active');scrollToTop();},150);\n        }\n    };\n    const scrollToTop=()=>{\n        setTimeout(()=>{\n            if(quizWrapRef.current)quizWrapRef.current.scrollIntoView({behavior:'smooth',block:'start'});\n        },50);\n    };\n\n    \/\/ Save email to DB\n    const saveEmailToDb = async (recs) => {\n        if(emailSaved)return;\n        try{\n            const body=new FormData();\n            body.append('action','ievolution_save_email');\n            body.append('nonce',config.nonce);\n            body.append('email',formData.email);\n            body.append('nombre',formData.nombre);\n            body.append('plan_level',formData.nivelRecomendacion||'basico');\n            body.append('lang',isES?'es':'en');\n            recs.forEach(r=>{\n                body.append('products[]',r.nombre);\n                body.append('product_keys[]',r.key||'');\n                body.append('reasons[]',r.razonPersonalizada||'');\n            });\n            await fetch(config.ajaxUrl,{method:'POST',body});\n            setEmailSaved(true);\n        }catch(e){console.error('Email save error',e);}\n    };\n\n    \/\/ Add to cart\n    const handleAddToCart=async()=>{\n        const recs=getRecommendations();\n        const keys=recs.map(p=>p.key).filter(k=>{const w=config.productData[k];return w&&w.woo_id&&w.woo_id>0;});\n        if(keys.length===0){setCartStatus('error');setCartMessage(t('No hay productos configurados.','No products configured.'));return;}\n        setCartStatus('loading');setCartMessage('');\n        try{\n            const body=new FormData();\n            body.append('action','ievolution_add_to_cart');\n            body.append('nonce',config.nonce);\n            body.append('plan_level',formData.nivelRecomendacion||'basico');\n            keys.forEach(k=>body.append('product_keys[]',k));\n            const res=await fetch(config.ajaxUrl,{method:'POST',body});\n            const result=await res.json();\n            if(result.success){\n                const c=result.data.added.length;\n                const hasCoupon=result.data.discount_applied;\n                setCartStatus('success');\n                setCartMessage(hasCoupon\n                    ?'\u2705 '+c+' '+t('producto'+(c!==1?'s':'')+' agregado'+(c!==1?'s':'')+' con 10% de descuento!','product'+(c!==1?'s':'')+' added with 10% discount!')\n                    :'\u2705 '+c+' '+t('producto'+(c!==1?'s':'')+' agregado'+(c!==1?'s':'')+' al carrito','product'+(c!==1?'s':'')+' added to cart'));\n                \/\/ Refresh WooCommerce cart fragments then open drawer\n                if(typeof jQuery!=='undefined'){\n                    if(result.data.fragments){jQuery.each(result.data.fragments,function(key,val){jQuery(key).replaceWith(val);});}\n                    jQuery(document.body).trigger('wc_fragment_refresh');\n                    \/\/ Open cart drawer after fragments finish updating\n                    setTimeout(function(){\n                        if(typeof window.openCartDrawer==='function') window.openCartDrawer();\n                        \/\/ Safeguard: re-open if fragment refresh closes it\n                        setTimeout(function(){\n                            var d=document.getElementById('cartDrawer');\n                            if(d && !d.classList.contains('open') && typeof window.openCartDrawer==='function') window.openCartDrawer();\n                        }, 1000);\n                    }, 800);\n                }\n            }else{setCartStatus('error');setCartMessage(t('Error al agregar. Int\u00e9ntalo de nuevo.','Error adding products. Please try again.'));}\n        }catch(e){setCartStatus('error');setCartMessage(t('Error de conexi\u00f3n.','Connection error.'));}\n    };\n\n    \/\/ Render question\n    const renderQuestion=()=>{\n        if(currentStep>=questions.length)return renderResults();\n        const c=questions[currentStep];\n        if(c.type==='input'){return(\n            <div className=\"question-section\">\n                <h2 className=\"question-title\">{c.title}<\/h2>\n                <p className=\"question-description\">{c.description}<\/p>\n                {c.fields.map(f=>(\n                    <div key={f.name} className=\"input-group\">\n                        <label className=\"input-label\">{f.label} {f.required&&'*'}<\/label>\n                        {f.type==='select'?(\n                            <select className=\"input-field\" value={formData[f.name]||''} onChange={e=>handleInputChange(f.name,e.target.value)}>\n                                <option value=\"\">{t('Seleccionar...','Select...')}<\/option>\n                                {f.options.map(o=><option key={o.value} value={o.value}>{o.label}<\/option>)}\n                            <\/select>\n                        ):(\n                            <input className=\"input-field\" type={f.type} value={formData[f.name]||''} placeholder={f.placeholder||''} onChange={e=>handleInputChange(f.name,e.target.value)}\/>\n                        )}\n                    <\/div>\n                ))}\n            <\/div>\n        );}\n        if(c.type==='single'){return(\n            <div className=\"question-section\">\n                <h2 className=\"question-title\">{c.title}<\/h2>\n                <p className=\"question-description\">{c.description}<\/p>\n                <div className=\"options-grid\">\n                    {c.options.map(o=>(\n                        <div key={o.value} className={`option-card ${formData[c.id]===o.value?'selected':''}`} onClick={()=>handleInputChange(c.id,o.value)}>\n                            <div className=\"option-icon\" dangerouslySetInnerHTML={{__html:getIcon(o.icon)}}><\/div>\n                            <div className=\"option-content\">\n                                <div className=\"option-label\">{o.label}<\/div>\n                                {o.description&&<div className=\"option-description\">{o.description}<\/div>}\n                            <\/div>\n                        <\/div>\n                    ))}\n                <\/div>\n            <\/div>\n        );}\n        if(c.type==='multiple'){return(\n            <div className=\"question-section\">\n                <h2 className=\"question-title\">{c.title}<\/h2>\n                <p className=\"question-description\">{c.description}<\/p>\n                <div className=\"options-grid\">\n                    {c.options.map(o=>(\n                        <div key={o.value} className={`option-card ${(formData[c.id]||[]).includes(o.value)?'selected':''}`} onClick={()=>handleMultipleSelect(c.id,o.value)}>\n                            <div className=\"option-icon\" dangerouslySetInnerHTML={{__html:getIcon(o.icon)}}><\/div>\n                            <div className=\"option-content\">\n                                <div className=\"option-label\">{o.label}<\/div>\n                                {o.description&&<div className=\"option-description\">{o.description}<\/div>}\n                            <\/div>\n                        <\/div>\n                    ))}\n                <\/div>\n            <\/div>\n        );}\n    };\n\n    \/\/ Render results\n    \/\/ Loading screen component\n    const renderLoadingScreen=()=>{\n        const steps=[\n            t('Analizando tus respuestas...','Analyzing your answers...'),\n            t('Evaluando tu perfil de salud...','Evaluating your health profile...'),\n            t('Seleccionando suplementos ideales...','Selecting ideal supplements...'),\n            t('Preparando recomendaciones...','Preparing recommendations...')\n        ];\n        const svgDone='<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"><circle cx=\"10\" cy=\"10\" r=\"10\" fill=\"#2AAFD3\"\/><path d=\"M6 10.5l2.5 2.5 5.5-5.5\" stroke=\"#fff\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>';\n        const svgActive='<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"><circle cx=\"10\" cy=\"10\" r=\"9\" stroke=\"#2AAFD3\" stroke-width=\"2\" stroke-dasharray=\"14 42\" stroke-linecap=\"round\"><animateTransform attributeName=\"transform\" type=\"rotate\" from=\"0 10 10\" to=\"360 10 10\" dur=\"1s\" repeatCount=\"indefinite\"\/><\/circle><\/svg>';\n        const svgPending='<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"><circle cx=\"10\" cy=\"10\" r=\"9\" stroke=\"#E8EDF2\" stroke-width=\"2\"\/><\/svg>';\n        return(\n            <div className=\"quiz-loading-screen\">\n                <div className=\"loading-spinner\"><\/div>\n                <h2 className=\"loading-title\">{t('Personalizando tu plan','Personalizing your plan')}<\/h2>\n                <p className=\"loading-subtitle\">{formData.nombre}{t(', estamos analizando tu perfil...',', we\\'re analyzing your profile...')}<\/p>\n                <div className=\"loading-steps\">\n                    {steps.map((s,i)=>(\n                        <div key={i} className={`loading-step ${i<loadingStep?'done':i===loadingStep?'active':''}`}>\n                            <span className=\"loading-step-icon\" dangerouslySetInnerHTML={{__html:i<loadingStep?svgDone:i===loadingStep?svgActive:svgPending}}><\/span>\n                            <span>{s}<\/span>\n                        <\/div>\n                    ))}\n                <\/div>\n            <\/div>\n        );\n    };\n\n    const renderResults=()=>{\n        const recs=getRecommendations();\n        const isCompleto=formData.nivelRecomendacion==='completo';\n        const discountPct=isCompleto?10:0;\n        const nivelTexto=isCompleto?t('Completo','Complete'):t('B\u00e1sico','Basic');\n\n        \/\/ Calculate prices\n        const selectedCurrency=(typeof localStorage!=='undefined'&&localStorage.getItem('store_selected_currency'))||'USD';\n        const symbols=config.currencySymbols||{};\n        const rates=config.currencyRates||{};\n        const symbol=symbols[selectedCurrency]||'$';\n        let subtotal=0;\n        recs.forEach(p=>{\n            const w=p.wooData||{};\n            if(!w.price_usd)return;\n            let price=w.price_usd;\n            if(w.prices&&w.prices[selectedCurrency])price=w.prices[selectedCurrency];\n            else if(selectedCurrency!=='USD'&&rates[selectedCurrency])price=w.price_usd*rates[selectedCurrency];\n            subtotal+=price;\n        });\n        const discount=isCompleto?subtotal*0.10:0;\n        const total=subtotal-discount;\n        const fmt=(v)=>symbol+v.toLocaleString(undefined,{minimumFractionDigits:2,maximumFractionDigits:2});\n\n        \/\/ Social proof count\n        const quizCount=config.quizCount||0;\n\n        \/\/ Save email on first render of results & clear quiz state\n        if(!emailSaved){saveEmailToDb(recs);clearSavedState();}\n\n        return(\n            <div className=\"results-container\">\n                <div className=\"results-header\">\n                    <h2>{t('Gracias','Thank you')} <span>{formData.nombre}<\/span>!<\/h2>\n                    <p className=\"results-description\">\n                        {t('Plan','Plan')} {nivelTexto} \u2014 {recs.length} {t('productos seleccionados para ti','products selected for you')}\n                    <\/p>\n                <\/div>\n\n                {quizCount>10&&(\n                    <div className=\"social-proof\">\n                        <p className=\"social-proof-text\">\n                            \ud83e\uddec <span className=\"social-proof-count\">{quizCount.toLocaleString()}<\/span> {t('personas han tomado este quiz','people have taken this quiz')}\n                        <\/p>\n                    <\/div>\n                )}\n\n                <div className=\"product-recommendations\">\n                    {recs.map((product,idx)=>{\n                        const w=product.wooData||{};\n                        const hasImg=w.image_url&&w.image_url!=='';\n                        const hasLink=w.permalink&&w.permalink!=='';\n                        const videoUrl=isES?w.video_es:w.video_en;\n                        return(\n                            <div key={idx} className=\"product-card\">\n                                <div className=\"product-card-image\">\n                                    {hasImg?<img src={w.image_url} alt={w.woo_name||product.nombre}\/>:<span className=\"no-image\">\ud83d\udce6<\/span>}\n                                <\/div>\n                                <div className=\"product-card-body\">\n                                    <h3>{hasLink?<a href={w.permalink} target=\"_blank\" rel=\"noopener noreferrer\">{w.woo_name||product.nombre}<\/a>:(w.woo_name||product.nombre)}<\/h3>\n                                    <p className=\"product-category\">{product.categoria}<\/p>\n                                    {getFormattedPrice(w)&&<p className=\"product-price\">{getFormattedPrice(w)}<\/p>}\n                                    <p className=\"product-reason\"><strong>{t('Te lo recomendamos porque: ','We recommend this because: ')}<\/strong>{product.razonPersonalizada}<\/p>\n                                    {product.incluye&&(\n                                        <div className=\"product-kit-box\">\n                                            <p className=\"product-kit-title\">{t('Este kit incluye:','This kit includes:')}<\/p>\n                                            {product.incluye.map((item,i)=><p key={i} className=\"product-kit-item\">\u2022 {item}<\/p>)}\n                                        <\/div>\n                                    )}\n                                <\/div>\n                                {videoUrl&&(\n                                    <button className=\"product-video-btn\" onClick={()=>setActiveVideo(videoUrl)} title={t('Descubre por qu\u00e9 te lo recomendamos','Learn why we recommend this')}>\n                                        <video className=\"product-video-thumb\" preload=\"metadata\" muted playsInline src={videoUrl+'#t=0.1'}\/>\n                                        <div className=\"product-video-play\">\n                                            <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"#fff\"><path d=\"M8 5v14l11-7z\"\/><\/svg>\n                                        <\/div>\n                                        <span className=\"product-video-cta\">{t('Descubre m\u00e1s','Learn more')}<\/span>\n                                    <\/button>\n                                )}\n                            <\/div>\n                        );\n                    })}\n                <\/div>\n\n                {activeVideo&&(\n                    <div className=\"video-modal-overlay\" onClick={()=>setActiveVideo(null)}>\n                        <div className=\"video-modal\" onClick={e=>e.stopPropagation()}>\n                            <button className=\"video-modal-close\" onClick={()=>setActiveVideo(null)}>\n                            <svg width=\"18\" height=\"18\" fill=\"none\" stroke=\"#fff\" strokeWidth=\"2\" viewBox=\"0 0 24 24\"><path d=\"M18 6L6 18M6 6l12 12\"\/><\/svg>\n                            <\/button>\n                            <video className=\"video-modal-player\" controls autoPlay playsInline src={activeVideo}\/>\n                            <p className=\"video-modal-caption\">{t('Formulado por nuestro equipo de cient\u00edficos','Formulated by our team of scientists')}<\/p>\n                        <\/div>\n                    <\/div>\n                )}\n\n                {subtotal>0&&(\n                    <div className=\"price-summary\">\n                        <div className=\"price-summary-row\">\n                            <span>{t('Subtotal','Subtotal')} ({recs.length} {t('productos','products')})<\/span>\n                            <span style={isCompleto?{textDecoration:'line-through',color:'#94A3B8'}:{fontWeight:700}}>{fmt(subtotal)}<\/span>\n                        <\/div>\n                        {isCompleto&&(\n                            <div className=\"price-summary-row price-savings\">\n                                <span>{t('Descuento Quiz','Quiz Discount')} <span className=\"discount-badge\">-10%<\/span><\/span>\n                                <span>-{fmt(discount)}<\/span>\n                            <\/div>\n                        )}\n                        <div className=\"price-summary-row price-summary-total\">\n                            <span>{t('Total','Total')}<\/span>\n                            <span>{fmt(total)}<\/span>\n                        <\/div>\n                    <\/div>\n                )}\n\n                {cartStatus==='success'&&<div className=\"cart-success-msg\">{cartMessage}<\/div>}\n                {cartStatus==='error'&&<div className=\"cart-error-msg\">{cartMessage}<\/div>}\n                <div className=\"results-actions\" style={{flexDirection:'column',gap:'12px'}}>\n                    {cartStatus!=='success'?(\n                        <button className=\"btn-cart-large\" onClick={handleAddToCart} disabled={cartStatus==='loading'}>\n                            <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n                                <circle cx=\"9\" cy=\"21\" r=\"1\"\/><circle cx=\"20\" cy=\"21\" r=\"1\"\/>\n                                <path d=\"M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6\"\/>\n                            <\/svg>\n                            {cartStatus==='loading'?t('Agregando...','Adding...'):(isCompleto\n                                ?t('Agregar '+recs.length+' productos con 10% OFF','Add '+recs.length+' products with 10% OFF')\n                                :t('Agregar '+recs.length+' productos al carrito','Add '+recs.length+' products to cart'))}\n                        <\/button>\n                    ):(\n                        <a href={config.cartUrl} className=\"btn-view-cart\">{t('\ud83d\uded2 Ver mi carrito y finalizar compra','\ud83d\uded2 View my cart & checkout')}<\/a>\n                    )}\n                <\/div>\n                <div className=\"results-footer\">\n                    {tokenData?(\n                        <p>{t('Bienvenido de vuelta','Welcome back')}, <span className=\"highlight\">{formData.nombre||formData.email}<\/span>! {t('Estas son tus recomendaciones personalizadas.','These are your personalized recommendations.')}<\/p>\n                    ):config.emailEnabled?(\n                        <p>{t('Hemos enviado estas recomendaciones a','We\\'ve sent these recommendations to')} <span className=\"highlight\">{formData.email}<\/span><\/p>\n                    ):(\n                        <p>{t('Tus recomendaciones personalizadas para','Your personalized recommendations for')} <span className=\"highlight\">{formData.email}<\/span><\/p>\n                    )}\n                    <button className=\"quiz-reset-btn\" onClick={resetQuiz}>\n                        {t('\ud83d\udd04 Tomar el quiz de nuevo','\ud83d\udd04 Take the quiz again')}\n                    <\/button>\n                <\/div>\n                <div className=\"quiz-disclaimer\">\n                    <p>\u2695\ufe0f {t(\n                        'Estas recomendaciones son orientativas y no sustituyen el consejo m\u00e9dico profesional. Consulta a tu m\u00e9dico antes de iniciar cualquier suplemento, especialmente si tienes condiciones m\u00e9dicas o tomas medicamentos.',\n                        'These recommendations are for guidance only and do not replace professional medical advice. Consult your doctor before starting any supplement, especially if you have medical conditions or take medications.'\n                    )}<\/p>\n                <\/div>\n            <\/div>\n        );\n    };\n\n    const visibleQuestions=questions.filter((_,idx)=>shouldShowQuestion(idx));\n    const progress=currentStep>=questions.length?100:((currentStep+1)\/visibleQuestions.length)*100;\n\n    \/\/ Progress bar color shifts from cyan to green as you approach the end\n    const progressColor=`hsl(${180 + (progress\/100)*40}, 70%, 50%)`;\n    const progressBg=`linear-gradient(90deg, #2AAFD3, ${progressColor})`;\n\n    \/\/ Show loading screen between last question and results\n    if(showLoading) return(\n        <div className=\"ievolution-quiz-wrap\" ref={quizWrapRef}>\n            <div className=\"quiz-container\">\n                {renderLoadingScreen()}\n            <\/div>\n        <\/div>\n    );\n\n    return(\n        <div className=\"ievolution-quiz-wrap\" ref={quizWrapRef}>\n            <div className=\"quiz-container\">\n                {currentStep>=questions.length&&(\n                    <div className=\"quiz-header\">\n                        <h1 className=\"quiz-title\">{t('Encuentra tus suplementos ideales','Find your ideal supplements')}<\/h1>\n                        <p className=\"quiz-subtitle\">{t('Recomendaciones personalizadas en minutos','Personalized recommendations in minutes')}<\/p>\n                    <\/div>\n                )}\n                {currentStep<questions.length&&(\n                    <div className=\"quiz-step-header\">\n                        <div className=\"progress-bar\"><div className=\"progress-fill\" style={{width:progress+'%',background:progressBg}}><\/div><\/div>\n                        <div className=\"step-header-row\">\n                            <span className=\"step-counter\">{t('Paso','Step')} {currentStep+1} \/ {visibleQuestions.length}<\/span>\n                            <button className=\"quiz-reset-link\" onClick={resetQuiz}>{t('Reiniciar quiz','Restart quiz')}<\/button>\n                        <\/div>\n                    <\/div>\n                )}\n                <div className={`quiz-content quiz-slide ${slideClass}`}>\n                    {renderQuestion()}\n                    {currentStep<questions.length&&(\n                        <>\n                            {!isQuestionValid()&&(\n                                <div className=\"validation-hint\"><p>\n                                    {questions[currentStep].type==='input'\n                                        ?t('\u26a0\ufe0f Por favor completa todos los campos requeridos','\u26a0\ufe0f Please fill in all required fields')\n                                        :t('\u26a0\ufe0f Por favor selecciona al menos una opci\u00f3n','\u26a0\ufe0f Please select at least one option')}\n                                <\/p><\/div>\n                            )}\n                            {questions[currentStep]&&questions[currentStep].id==='email'&&emailCheckStatus==='exists'&&(\n                                <div className=\"email-exists-msg\">\n                                    <p>\ud83d\udc64 {t(\n                                        'Ya tienes una cuenta con nosotros. Inicia sesi\u00f3n para continuar.',\n                                        'You already have an account with us. Please log in to continue.'\n                                    )}<\/p>\n                                    <a href=\"\/my-account\" className=\"btn-login-link\">\n                                        {t('Iniciar sesi\u00f3n','Log in')} \u2192\n                                    <\/a>\n                                <\/div>\n                            )}\n                            <div className=\"button-group\">\n                                {currentStep>0&&<button className=\"btn btn-secondary\" onClick={handlePrev}>{t('Anterior','Previous')}<\/button>}\n                                {(()=>{\n                                    const isEmailStep=questions[currentStep]&&questions[currentStep].id==='email';\n                                    const emailBlocked=isEmailStep&&(emailCheckStatus==='checking'||emailCheckStatus==='exists');\n                                    const disabled=!isQuestionValid()||emailBlocked;\n                                    return <button className=\"btn btn-primary\" onClick={handleNext} disabled={disabled}\n                                        style={{opacity:disabled?.5:1,cursor:disabled?'not-allowed':'pointer'}}>\n                                        {isEmailStep&&emailCheckStatus==='checking'?t('Verificando...','Checking...'):(currentStep===questions.length-1?t('Ver recomendaciones','See recommendations'):t('Siguiente','Next'))}\n                                    <\/button>;\n                                })()}\n                            <\/div>\n                        <\/>\n                    )}\n                <\/div>\n            <\/div>\n        <\/div>\n    );\n}\n        ReactDOM.render(<QuizApp \/>, document.getElementById('ievolution-quiz-root-6133'));\n        <\/script>\n        ","protected":false},"excerpt":{"rendered":"","protected":false},"author":102,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"spb-full-width.php","meta":{"footnotes":""},"wf_page_folders":[],"class_list":["post-6806","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/ievolutionclub.com\/es\/wp-json\/wp\/v2\/pages\/6806","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ievolutionclub.com\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/ievolutionclub.com\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/ievolutionclub.com\/es\/wp-json\/wp\/v2\/users\/102"}],"replies":[{"embeddable":true,"href":"https:\/\/ievolutionclub.com\/es\/wp-json\/wp\/v2\/comments?post=6806"}],"version-history":[{"count":19,"href":"https:\/\/ievolutionclub.com\/es\/wp-json\/wp\/v2\/pages\/6806\/revisions"}],"predecessor-version":[{"id":6828,"href":"https:\/\/ievolutionclub.com\/es\/wp-json\/wp\/v2\/pages\/6806\/revisions\/6828"}],"wp:attachment":[{"href":"https:\/\/ievolutionclub.com\/es\/wp-json\/wp\/v2\/media?parent=6806"}],"wp:term":[{"taxonomy":"wf_page_folders","embeddable":true,"href":"https:\/\/ievolutionclub.com\/es\/wp-json\/wp\/v2\/wf_page_folders?post=6806"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}