.elementor-67754 .elementor-element.elementor-element-679110ba{--display:flex;--flex-direction:row;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--align-items:stretch;--gap:10px 10px;--row-gap:10px;--column-gap:10px;--margin-top:5%;--margin-bottom:0%;--margin-left:0%;--margin-right:0%;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-67754 .elementor-element.elementor-element-bdd5b3e{--display:flex;--align-items:center;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--gap:20px 20px;--row-gap:20px;--column-gap:20px;--border-radius:20px 20px 20px 20px;box-shadow:0px 0px 10px 0px rgba(163.20000000000002, 162.13565217391306, 162.13565217391306, 0.26);--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-67754 .elementor-element.elementor-element-bdd5b3e.e-con{--align-self:stretch;}.elementor-67754 .elementor-element.elementor-element-301f178e > .elementor-widget-container{margin:-7px -7px -7px -7px;}.elementor-widget-divider .elementor-divider__text{font-family:var( --e-global-typography-secondary-font-family ), Sans-serif;font-weight:var( --e-global-typography-secondary-font-weight );}.elementor-67754 .elementor-element.elementor-element-4a1e66ef{--divider-border-style:solid;--divider-border-width:1px;}.elementor-67754 .elementor-element.elementor-element-4a1e66ef .elementor-divider-separator{width:75%;margin:0 auto;margin-center:0;}.elementor-67754 .elementor-element.elementor-element-4a1e66ef .elementor-divider{text-align:center;padding-block-start:14px;padding-block-end:14px;}.elementor-67754 .elementor-element.elementor-element-4173652c{width:auto;max-width:auto;font-family:"Brandon PTK", Sans-serif;}.elementor-67754 .elementor-element.elementor-element-4173652c > .elementor-widget-container{margin:0px 20px 20px 20px;padding:0px 0px 0px 0px;}.elementor-67754 .elementor-element.elementor-element-4173652c.elementor-element{--align-self:flex-start;--flex-grow:0;--flex-shrink:1;}.elementor-67754 .elementor-element.elementor-element-4173652c:not(.elementor-woo-meta--view-inline) .product_meta .detail-container:not(:last-child){padding-bottom:calc(30px/2);}.elementor-67754 .elementor-element.elementor-element-4173652c:not(.elementor-woo-meta--view-inline) .product_meta .detail-container:not(:first-child){margin-top:calc(30px/2);}.elementor-67754 .elementor-element.elementor-element-4173652c.elementor-woo-meta--view-inline .product_meta .detail-container{margin-right:calc(30px/2);margin-left:calc(30px/2);}.elementor-67754 .elementor-element.elementor-element-4173652c.elementor-woo-meta--view-inline .product_meta{margin-right:calc(-30px/2);margin-left:calc(-30px/2);}body:not(.rtl) .elementor-67754 .elementor-element.elementor-element-4173652c.elementor-woo-meta--view-inline .detail-container:after{right:calc( (-30px/2) + (-1px/2) );}body:not.rtl .elementor-67754 .elementor-element.elementor-element-4173652c.elementor-woo-meta--view-inline .detail-container:after{left:calc( (-30px/2) - (1px/2) );}.elementor-67754 .elementor-element.elementor-element-a9c4e1c{--display:flex;--margin-top:0px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-widget-woocommerce-product-title .elementor-heading-title{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );}.elementor-67754 .elementor-element.elementor-element-41474d27 > .elementor-widget-container{margin:0px 0px 0px 30px;}.elementor-67754 .elementor-element.elementor-element-41474d27 .elementor-heading-title{font-family:"General SANS", Sans-serif;font-size:36px;font-weight:600;text-transform:uppercase;color:#141414;}.elementor-67754 .elementor-element.elementor-element-20284438 > .elementor-widget-container{margin:0px 0px 0px 30px;}.elementor-67754 .elementor-element.elementor-element-59cef82c{--divider-border-style:solid;--divider-border-width:1px;}.elementor-67754 .elementor-element.elementor-element-59cef82c > .elementor-widget-container{margin:0px 0px 0px 30px;}.elementor-67754 .elementor-element.elementor-element-59cef82c .elementor-divider-separator{width:94%;margin:0 auto;margin-center:0;}.elementor-67754 .elementor-element.elementor-element-59cef82c .elementor-divider{text-align:center;padding-block-start:14px;padding-block-end:14px;}.elementor-67754 .elementor-element.elementor-element-27fd83ae > .elementor-widget-container{margin:0px 0px 0px 30px;}.elementor-widget-woocommerce-product-content{font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );}.elementor-67754 .elementor-element.elementor-element-2b63cb55 > .elementor-widget-container{margin:0px 0px 0px 30px;}.elementor-67754 .elementor-element.elementor-element-7b6d0fe1 .eael-single-product-add-to-cart .elementor-add-to-cart.elementor-product-simple .cart{flex-direction:column;}.elementor-67754 .elementor-element.elementor-element-7b6d0fe1 .eael-single-product-add-to-cart .eael-add-to-cart-wrapper{justify-content:center;}.elementor-67754 .elementor-element.elementor-element-7b6d0fe1 > .elementor-widget-container{margin:0px 0px 10px 0px;}.woocommerce .elementor-67754 .elementor-element.elementor-element-7b6d0fe1 .eael-single-product-add-to-cart .cart .button{width:100%;justify-content:center;color:#FFFFFF;background-color:var( --e-global-color-accent );transition:all 0.2s;}.elementor-67754 .elementor-element.elementor-element-7b6d0fe1 .eael-single-product-add-to-cart .eael-add-to-cart{width:100%;justify-content:center;}.elementor-67754 .elementor-element.elementor-element-7b6d0fe1 .eael-add-to-cart-wrapper .button-text{color:#FFFFFF;}.elementor-67754 .elementor-element.elementor-element-7b6d0fe1 .eael-add-to-cart-wrapper .eael-add-to-cart{background-color:var( --e-global-color-accent );transition:all 0.2s;}.woocommerce div.product .eael-single-product-add-to-cart form.cart input[type=number] .qty, 
					.woocommerce div.product .eael-single-product-add-to-cart form.cart .quantity .qty,
					.eael-add-to-cart-wrapper input[type=number], 
					.eael-add-to-cart-wrapper .quantity-input{height:0px;width:100%;}.woocommerce .elementor-67754 .elementor-element.elementor-element-7b6d0fe1 .eael-single-product-add-to-cart .quantity .qty{color:var( --e-global-color-accent );transition:all 0.2s;}.elementor-67754 .elementor-element.elementor-element-7b6d0fe1 .eael-single-product-add-to-cart .eael-add-to-cart-wrapper .quantity-input{color:var( --e-global-color-accent );transition:all 0.2s;}.woocommerce .elementor-67754 .elementor-element.elementor-element-7b6d0fe1 .eael-single-product-add-to-cart form.cart .variations,
					.elementor-67754 .elementor-element.elementor-element-7b6d0fe1 .eael-variable-product-edit .eael-variable-product{width:100%;}.woocommerce .elementor-67754 .elementor-element.elementor-element-7b6d0fe1 .eael-single-product-add-to-cart .single_add_to_cart_button svg{height:18px;width:18px;margin:2px 10px 0px 0px;}.woocommerce .elementor-67754 .elementor-element.elementor-element-7b6d0fe1 .eael-single-product-add-to-cart .single_add_to_cart_button i{font-size:18px;color:var( --e-global-color-secondary );}.elementor-67754 .elementor-element.elementor-element-7b6d0fe1 .eael-single-product-add-to-cart .eael-add-to-cart svg{height:18px;width:18px;}.elementor-67754 .elementor-element.elementor-element-7b6d0fe1 .eael-single-product-add-to-cart .eael-add-to-cart i{font-size:18px;color:var( --e-global-color-secondary );}.woocommerce .elementor-67754 .elementor-element.elementor-element-7b6d0fe1 .eael-single-product-add-to-cart .single_add_to_cart_button{display:flex;gap:0px;}.elementor-67754 .elementor-element.elementor-element-7b6d0fe1 .eael-single-product-add-to-cart .eael-add-to-cart-wrapper .eael-add-to-cart{gap:0px;}.woocommerce .elementor-67754 .elementor-element.elementor-element-7b6d0fe1 .eael-single-product-add-to-cart .single_add_to_cart_button svg path{fill:var( --e-global-color-secondary );}.elementor-67754 .elementor-element.elementor-element-7b6d0fe1 .eael-single-product-add-to-cart .eael-add-to-cart svg path{fill:var( --e-global-color-secondary );}.elementor-67754 .elementor-element.elementor-element-7b6d0fe1 .eael-single-product-add-to-cart .eael-add-to-cart .cart-icon{margin:2px 10px 0px 0px;}.elementor-widget-eael-creative-button .eael-creative-button .cretive-button-text{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );}.elementor-widget-eael-creative-button .eael-creative-button--rayen::before, 
                                .elementor-widget-eael-creative-button .eael-creative-button--winona::after, 
                                .elementor-widget-eael-creative-button .eael-creative-button--tamaya .eael-creative-button--tamaya-secondary span,
                                .elementor-widget-eael-creative-button .eael-creative-button.eael-creative-button--saqui::after{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );}
                    .elementor-67754 .elementor-element.elementor-element-7a940a3e .eael-creative-button,
                    .elementor-67754 .elementor-element.elementor-element-7a940a3e .eael-creative-button.eael-creative-button--ujarak:hover,
                    .elementor-67754 .elementor-element.elementor-element-7a940a3e .eael-creative-button.eael-creative-button--wayra:hover,
                    .elementor-67754 .elementor-element.elementor-element-7a940a3e .eael-creative-button.eael-creative-button--tamaya::before,
                    .elementor-67754 .elementor-element.elementor-element-7a940a3e .eael-creative-button.eael-creative-button--tamaya::after
                {background-color:#7A7A7A87;}.elementor-67754 .elementor-element.elementor-element-7a940a3e > .elementor-widget-container{margin:0px 0px 36px 0px;}.elementor-67754 .elementor-element.elementor-element-7a940a3e .eael-creative-button-icon-left svg, 
                    .elementor-67754 .elementor-element.elementor-element-7a940a3e .eael-creative-button-icon-right svg{rotate:0deg;}.elementor-67754 .elementor-element.elementor-element-7a940a3e .eael-creative-button-icon-left i,
                    .elementor-67754 .elementor-element.elementor-element-7a940a3e .eael-creative-button-icon-right i{rotate:0deg;}.elementor-67754 .elementor-element.elementor-element-7a940a3e .eael-creative-button i{font-size:0px;color:#ffffff;}.elementor-67754 .elementor-element.elementor-element-7a940a3e .eael-creative-button svg{height:0px;width:0px;fill:#ffffff;}.elementor-67754 .elementor-element.elementor-element-7a940a3e .eael-creative-button-wrapper{justify-content:center;}.elementor-67754 .elementor-element.elementor-element-7a940a3e .eael-creative-button{width:100%;padding:8px 8px 8px 8px;color:#ffffff;border-radius:8px;}.elementor-67754 .elementor-element.elementor-element-7a940a3e .eael-creative-button.eael-creative-button--winona::after{padding:8px 8px 8px 8px;color:#ffffff;}.elementor-67754 .elementor-element.elementor-element-7a940a3e .eael-creative-button.eael-creative-button--winona > .creative-button-inner{padding:8px 8px 8px 8px;}.elementor-67754 .elementor-element.elementor-element-7a940a3e .eael-creative-button.eael-creative-button--tamaya::before{padding:8px 8px 8px 8px;color:#ffffff;}.elementor-67754 .elementor-element.elementor-element-7a940a3e .eael-creative-button.eael-creative-button--rayen::before{padding:8px 8px 8px 8px;}.elementor-67754 .elementor-element.elementor-element-7a940a3e .eael-creative-button.eael-creative-button--rayen > .creative-button-inner{padding:8px 8px 8px 8px;}.elementor-67754 .elementor-element.elementor-element-7a940a3e .eael-creative-button.eael-creative-button--saqui::after{padding:8px 8px 8px 8px;color:#ffffff;}.elementor-67754 .elementor-element.elementor-element-7a940a3e .eael-creative-button .creative-button-inner svg{fill:#ffffff;}.elementor-67754 .elementor-element.elementor-element-7a940a3e .eael-creative-button .eael-creative-button--tamaya-secondary{color:#ffffff;}.elementor-67754 .elementor-element.elementor-element-7a940a3e .eael-creative-button.eael-creative-button--tamaya::after{color:#ffffff;}.elementor-67754 .elementor-element.elementor-element-7a940a3e .eael-creative-button::before{border-radius:8px;}.elementor-67754 .elementor-element.elementor-element-7a940a3e .eael-creative-button::after{border-radius:8px;}.elementor-67754 .elementor-element.elementor-element-7a940a3e .eael-creative-button:hover i{color:#ffffff;}.elementor-67754 .elementor-element.elementor-element-7a940a3e .eael-creative-button:hover .creative-button-inner svg{fill:#ffffff;}.elementor-67754 .elementor-element.elementor-element-7a940a3e .eael-creative-button:hover{color:#ffffff;}.elementor-67754 .elementor-element.elementor-element-7a940a3e .eael-creative-button:hover svg{fill:#ffffff;}.elementor-widget-image .widget-image-caption{font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );}.elementor-67754 .elementor-element.elementor-element-1eedfb0a > .elementor-widget-container{background-color:#E9E9E961;margin:2px 2px 2px 2px;border-radius:20px 20px 20px 20px;}.elementor-67754 .elementor-element.elementor-element-140f2fbb > .elementor-widget-container{margin:0px 0px 81px 0px;}.elementor-67754 .elementor-element.elementor-element-140f2fbb{--alignment:center;--grid-side-margin:45px;--grid-column-gap:45px;--grid-row-gap:4px;--grid-bottom-margin:4px;--e-share-buttons-primary-color:#0A3C2E;}.elementor-67754 .elementor-element.elementor-element-140f2fbb .elementor-share-btn{font-size:calc(0.65px * 10);border-width:2px;}.elementor-67754 .elementor-element.elementor-element-140f2fbb .elementor-share-btn__icon{--e-share-buttons-icon-size:3em;}.elementor-67754 .elementor-element.elementor-element-140f2fbb .elementor-share-btn:hover{--e-share-buttons-primary-color:var( --e-global-color-primary );}.elementor-67754 .elementor-element.elementor-element-140f2fbb .elementor-share-btn__title{font-family:"Brandon PTK", Sans-serif;}.elementor-67754 .elementor-element.elementor-element-70c130db{--display:flex;}.elementor-widget-woocommerce-product-related.elementor-wc-products ul.products li.product .woocommerce-loop-product__title, .elementor-widget-woocommerce-product-related.elementor-wc-products ul.products li.product .woocommerce-loop-category__title{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );}.woocommerce .elementor-widget-woocommerce-product-related.elementor-wc-products .products > h2{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );}.elementor-widget-woocommerce-product-related.elementor-wc-products ul.products li.product .price{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );}.elementor-widget-woocommerce-product-related.elementor-wc-products ul.products li.product .price del {font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );}.elementor-widget-woocommerce-product-related.elementor-wc-products ul.products li.product .button{font-family:var( --e-global-typography-accent-font-family ), Sans-serif;font-weight:var( --e-global-typography-accent-font-weight );}.elementor-widget-woocommerce-product-related.elementor-wc-products .added_to_cart{font-family:var( --e-global-typography-accent-font-family ), Sans-serif;font-weight:var( --e-global-typography-accent-font-weight );}.elementor-67754 .elementor-element.elementor-element-793280bc.elementor-wc-products  ul.products{grid-column-gap:20px;grid-row-gap:40px;}.elementor-67754 .elementor-element.elementor-element-793280bc.elementor-wc-products ul.products li.product span.onsale{display:block;}@media(max-width:1024px){.elementor-67754 .elementor-element.elementor-element-4a1e66ef .elementor-divider{padding-block-start:10px;padding-block-end:10px;}.elementor-67754 .elementor-element.elementor-element-59cef82c .elementor-divider{padding-block-start:10px;padding-block-end:10px;} .elementor-67754 .elementor-element.elementor-element-140f2fbb{--grid-side-margin:45px;--grid-column-gap:45px;--grid-row-gap:4px;--grid-bottom-margin:4px;}.elementor-67754 .elementor-element.elementor-element-793280bc.elementor-wc-products  ul.products{grid-column-gap:20px;grid-row-gap:40px;}}@media(max-width:767px){.elementor-67754 .elementor-element.elementor-element-679110ba{--margin-top:-33%;--margin-bottom:0%;--margin-left:0%;--margin-right:0%;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-67754 .elementor-element.elementor-element-a9c4e1c{--margin-top:0px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;--padding-top:30px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;} .elementor-67754 .elementor-element.elementor-element-140f2fbb{--grid-side-margin:45px;--grid-column-gap:45px;--grid-row-gap:4px;--grid-bottom-margin:4px;}.elementor-67754 .elementor-element.elementor-element-793280bc.elementor-wc-products  ul.products{grid-column-gap:20px;grid-row-gap:40px;}}/* Start custom CSS for container, class: .elementor-element-bdd5b3e */.elementor-67754 .elementor-element.elementor-element-bdd5b3e {
   background: rgba(255, 255, 255,.09);
   
   backdrop-filter: blur(10px);
   -webkit-backdrop-filter: blur(25px); 
  
}/* End custom CSS */
/* Start custom CSS for html, class: .elementor-element-27fd83ae */<script>
(function(){
  const root = document.querySelector('.oportp-quote');
  if(!root) return;

  const PRICE = parseFloat(root.getAttribute('data-pack-price')) || 1140;

  const q  = (sel)=>root.querySelector(sel);
  const qa = (sel)=>Array.from(root.querySelectorAll(sel));

  const phraseInp = q('.oport_phrase');
  const noteInp   = q('.oport_note');
  const detailsTa = q('.oport_details');

  const fileInput  = q('.oport_file');
  const sendBtn    = q('.oport_send_data_btn');
  const readyBox   = q('.oport_woo_ready');
  const errBox     = q('.oport_err');
  const okBox      = q('.oport_ok');

  const preview    = q('.oport_preview');
  const previewImg = q('.oport_preview_img');
  const previewNm  = q('.oport_preview_name');

  const lblTee1 = q('.oport_color_tee1_lbl');
  const lblTee2 = q('.oport_color_tee2_lbl');

  let uploadedFileUrl = '';
  let uploadedFileName = '';

  let size1='', size2='', color1='', color2='';
  let dataSent = false;
  let addToCartBtn = null;

  // === Persistencia por página (se guarda aunque recargues) ===
  const STORE_KEY = 'oport_pack_' + (location.pathname || 'pack');

  const saveStore = ()=>{
    const payload = {
      phrase: (phraseInp?.value || ''),
      note: (noteInp?.value || ''),
      details: (detailsTa?.value || ''),
      size1, size2, color1, color2,
      uploadedFileUrl, uploadedFileName
    };
    try{ sessionStorage.setItem(STORE_KEY, JSON.stringify(payload)); }catch(e){}
  };

  const loadStore = ()=>{
    try{
      const raw = sessionStorage.getItem(STORE_KEY);
      if(!raw) return;
      const p = JSON.parse(raw);

      if(phraseInp) phraseInp.value = p.phrase || '';
      if(noteInp) noteInp.value = p.note || '';
      if(detailsTa) detailsTa.value = p.details || '';

      size1 = p.size1 || '';
      size2 = p.size2 || '';
      color1 = p.color1 || '';
      color2 = p.color2 || '';

      uploadedFileUrl = p.uploadedFileUrl || '';
      uploadedFileName = p.uploadedFileName || '';

      // reactivar UI
      setChipActive('.oport_size_tee1', size1);
      setChipActive('.oport_size_tee2', size2);
      setDotActive('.oport_color_tee1', color1, lblTee1);
      setDotActive('.oport_color_tee2', color2, lblTee2);

      if(uploadedFileUrl){
        // no podemos reconstruir el archivo, pero sí habilitamos enviar
        showOk('Archivo detectado en sesión ✅ (si cambias de archivo, vuelve a subir).');
        enableSend();
      }
    }catch(e){}
  };

  const showErr = (m)=>{ errBox.style.display='block'; errBox.textContent=m; okBox.style.display='none'; };
  const showOk  = (m)=>{ okBox.style.display='block'; okBox.textContent=m; errBox.style.display='none'; };
  const clearMsgs = ()=>{ errBox.style.display='none'; okBox.style.display='none'; };

  // === FIX CLAVE: capturar pointerdown/click y cortar bubbling (Elementor roba clicks) ===
  const stop = (e)=>{ e.preventDefault(); e.stopPropagation(); };
  ['pointerdown','mousedown','touchstart','click'].forEach(evt=>{
    root.addEventListener(evt, (e)=>{
      if(e.target.closest('.chipBtn') || e.target.closest('.dotBtn')){
        stop(e);
      }
    }, true); // CAPTURE = antes que Elementor
  });

  // === Woo: bloquear hasta enviar ===
  document.body.classList.add('oport-hide-woo');

  const watchWoo = setInterval(()=>{
    const btn = document.querySelector('form.cart button[type="submit"], form.cart .single_add_to_cart_button, form.cart .button.alt');
    if(btn && btn !== addToCartBtn){
      addToCartBtn = btn;
      btn.disabled = true;
      btn.classList.add('btn-disabled');
      btn.addEventListener('click', (e)=>{
        if(!dataSent){
          e.preventDefault();
          showErr('⚠️ Primero sube tu archivo y presiona "Enviar datos del cotizador".');
          root.scrollIntoView({behavior:'smooth',block:'center'});
          setTimeout(()=>{ errBox.style.display='none'; }, 4000);
        }
      });
    }
  }, 500);

  function enableSend(){ sendBtn.disabled = !uploadedFileUrl; }

  function showWoo(){
    document.body.classList.remove('oport-hide-woo');
    dataSent = true;
    if(addToCartBtn){
      addToCartBtn.disabled = false;
      addToCartBtn.classList.remove('btn-disabled');
    }
    readyBox.style.display = 'block';
  }

  // ====== UI helpers (chips/dots) ======
  function setChipActive(groupSelector, val){
    const btns = qa(groupSelector + ' .chipBtn');
    btns.forEach(b=>{
      const v = b.getAttribute('data-val') || '';
      b.classList.toggle('active', (val && v === val));
    });
  }

  function setupChipGroup(groupSelector, setter){
    const btns = qa(groupSelector + ' .chipBtn');
    btns.forEach(b=>{
      const handler = (e)=>{
        stop(e);
        const val = b.getAttribute('data-val') || '';
        const active = b.classList.contains('active');
        btns.forEach(x=>x.classList.remove('active'));
        if(!active){ b.classList.add('active'); setter(val); }
        else{ setter(''); }
        saveStore();
      };
      ['pointerdown','click','touchstart','mousedown'].forEach(evt=>{
        b.addEventListener(evt, handler, {passive:false});
      });
    });
  }

  function setDotActive(groupSelector, name, labelEl){
    const dots = qa(groupSelector + ' .dotBtn');
    dots.forEach(d=>{
      d.classList.toggle('active', (name && (d.getAttribute('data-name')||'') === name));
    });
    if(labelEl){
      labelEl.textContent = name ? ('Color: ' + name) : 'Elegir color (opcional)';
    }
  }

  function setupDots(groupSelector, setter, labelEl){
    const dots = qa(groupSelector + ' .dotBtn');
    dots.forEach(d=>{
      const handler = (e)=>{
        stop(e);
        const name = d.getAttribute('data-name') || '';
        const active = d.classList.contains('active');
        dots.forEach(x=>x.classList.remove('active'));
        if(!active){
          d.classList.add('active');
          setter(name);
          if(labelEl) labelEl.textContent = 'Color: ' + name;
        }else{
          setter('');
          if(labelEl) labelEl.textContent = 'Elegir color (opcional)';
        }
        saveStore();
      };
      ['pointerdown','click','touchstart','mousedown'].forEach(evt=>{
        d.addEventListener(evt, handler, {passive:false});
      });
      d.addEventListener('keydown', (e)=>{
        if(e.key==='Enter' || e.key===' '){ handler(e); }
      });
    });
  }

  setupChipGroup('.oport_size_tee1', (v)=> size1 = v);
  setupChipGroup('.oport_size_tee2', (v)=> size2 = v);
  setupDots('.oport_color_tee1', (v)=> color1 = v, lblTee1);
  setupDots('.oport_color_tee2', (v)=> color2 = v, lblTee2);

  // Guardar cuando escriben
  [phraseInp, noteInp, detailsTa].forEach(el=>{
    if(!el) return;
    el.addEventListener('input', saveStore);
  });

  // ====== Upload ======
  fileInput.addEventListener('change', async ()=>{
    clearMsgs();

    const f = fileInput.files && fileInput.files[0];
    uploadedFileUrl = '';
    uploadedFileName = '';
    enableSend();
    preview.style.display='none';

    if(!f) return;

    const okExt = /\.(jpg|jpeg|png|webp|pdf)$/i.test(f.name);
    if(!okExt){
      showErr('Archivo no permitido. Usa JPG/PNG/WebP o PDF.');
      fileInput.value='';
      return;
    }
    if(f.size > 12*1024*1024){
      showErr('El archivo pesa mucho. Máximo 12MB.');
      fileInput.value='';
      return;
    }

    // preview
    if(/^image\//.test(f.type)){
      previewImg.src = URL.createObjectURL(f);
    }else{
      previewImg.src = "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='72' height='72'%3E%3Crect width='72' height='72' rx='14' fill='%23f3f4f6'/%3E%3Ctext x='50%25' y='55%25' text-anchor='middle' font-size='18' font-family='Arial' fill='%23111327'%3EPDF%3C/text%3E%3C/svg%3E";
    }
    previewNm.textContent = f.name;
    preview.style.display='flex';

    try{
      showOk('Subiendo archivo...');

      const fd = new FormData();
      fd.append('action','oport_pack_upload');
      fd.append('file', f);

      const res = await fetch('/wp-admin/admin-ajax.php', { method:'POST', body:fd, credentials:'same-origin' });
      const data = await res.json();

      if(!data || !data.success) throw new Error((data && data.data && data.data.message) ? data.data.message : 'No se pudo subir.');

      uploadedFileUrl = data.data.url;
      uploadedFileName = data.data.name || f.name;

      showOk('Archivo subido ✅ Ahora presiona "Enviar datos del cotizador".');
      enableSend();
      saveStore();

    }catch(ex){
      uploadedFileUrl = '';
      uploadedFileName = '';
      enableSend();
      showErr('Error subiendo archivo: ' + (ex.message || 'intenta otra vez'));
      saveStore();
    }
  });

  // ====== Enviar datos ======
  sendBtn.addEventListener('click', async ()=>{
    clearMsgs();

    if(!uploadedFileUrl){
      showErr('Primero sube tu archivo para continuar.');
      return;
    }

    const phrase = (phraseInp.value || '').trim();
    const note   = (noteInp.value || '').trim();
    const detailsRaw = (detailsTa.value || '').trim();

    const packedDetails =
`Playera 1: ${size1 || '—'} / ${color1 || '—'}
Playera 2: ${size2 || '—'} / ${color2 || '—'}
Frase/Nombres: ${phrase || '—'}
Nota: ${note || '—'}
Detalles: ${detailsRaw || '—'}`.trim();

    // hidden fields en Woo form
    const form = document.querySelector('form.cart');
    if(form){
      const hidden = (name,val)=>{
        let el = form.querySelector('[name="'+name+'"]');
        if(!el){ el=document.createElement('input'); el.type='hidden'; el.name=name; form.appendChild(el); }
        el.value = val;
      };
      hidden('oport_pack_price', String(PRICE));
      hidden('oport_pack_name', 'Juntos x Siempre $1140');
      hidden('oport_pack_includes', '2 Canvas, 2 Playeras, 2 Tazas');

      hidden('oport_pack_phrase', phrase);
      hidden('oport_pack_note', note);
      hidden('oport_pack_details', packedDetails);

      hidden('oport_pack_file_url', uploadedFileUrl);
      hidden('oport_pack_file_name', uploadedFileName);
    }

    try{
      sendBtn.disabled = true;
      sendBtn.textContent = 'Enviando...';

      const fd = new FormData();
      fd.append('action','oport_val_pack_save');

      fd.append('oport_pack_price', String(PRICE));
      fd.append('oport_pack_name', 'Juntos x Siempre $1140');
      fd.append('oport_pack_includes', '2 Canvas, 2 Playeras, 2 Tazas');

      fd.append('oport_pack_phrase', phrase);
      fd.append('oport_pack_note', note);
      fd.append('oport_pack_details', packedDetails);

      fd.append('oport_pack_file_url', uploadedFileUrl);
      fd.append('oport_pack_file_name', uploadedFileName);

      const res = await fetch('/wp-admin/admin-ajax.php', { method:'POST', body:fd, credentials:'same-origin' });
      const data = await res.json();

      if(!data || !data.success) throw new Error((data && data.data && data.data.message) ? data.data.message : 'No se pudo guardar.');

      showOk('Datos enviados ✅ Ya puedes comprar con WooCommerce.');
      sendBtn.textContent = 'Datos enviados ✅';
      showWoo();
      saveStore();

    }catch(ex){
      showErr('Error enviando datos: ' + (ex.message || 'intenta otra vez'));
      sendBtn.disabled = false;
      sendBtn.textContent = 'Enviar datos del cotizador 💘';
      saveStore();
    }
  });

  // Init
  const totalSpan = q('.oport_total');
  if(totalSpan) totalSpan.textContent = String(Math.round(PRICE));

  loadStore();
  enableSend();

})();
</script>































/* === FIX CLICKS CHIPS/DOTS (Elementor/Theme overlays) === */
.oportp-quote,
.oportp-quote *{
  -webkit-tap-highlight-color: transparent;
}

.oportp-quote .chipsRow,
.oportp-quote .dots{
  position:relative !important;
  z-index:999999 !important;
  pointer-events:auto !important;
}

.oportp-quote .chipsRow .chipBtn,
.oportp-quote .dots .dotBtn{
  position:relative !important;
  z-index:999999 !important;
  pointer-events:auto !important;
}

.oportp-quote .row,
.oportp-quote .body{
  position:relative !important;
  z-index:0 !important;
}








































/* ✅ FIX: el header siempre encima del cotizador */
header,
.elementor-location-header,
.elementor-sticky--effects,
.elementor-sticky,
.site-header {
  position: relative;
  z-index: 999999 !important;
}

/* Si tu header es fixed/sticky, esto lo refuerza */
.elementor-location-header {
  isolation: isolate;
}/* End custom CSS */
/* Start Custom Fonts CSS */@font-face {
	font-family: 'Brandon PTK';
	font-style: normal;
	font-weight: bold;
	font-display: auto;
	src: url('https://test.sk33studio.com/wp-content/uploads/2025/03/HvDTrial_Brandon_Grotesque_bold-BF64a625c9151d5.ttf') format('truetype');
}
/* End Custom Fonts CSS */
/* Start Custom Fonts CSS */@font-face {
	font-family: 'General SANS';
	font-style: italic;
	font-weight: bold;
	font-display: auto;
	src: url('https://oport.mx/wp-content/uploads/2025/09/GeneralSans-Variable.ttf') format('truetype');
}
@font-face {
	font-family: 'General SANS';
	font-style: normal;
	font-weight: normal;
	font-display: auto;
	src: ;
}
/* End Custom Fonts CSS */