"})),r.innerHTML=l,r.querySelectorAll(".category-header").forEach((function(e){e.addEventListener("click",(function(){var t=e.getAttribute("data-cat"),a=r.querySelector('[data-cat-body="'+t+'"]');e.classList.toggle("collapsed"),a.classList.toggle("collapsed")}))})),r.querySelectorAll(".btn-add-part").forEach((function(t){t.addEventListener("click",(function(){var n,r,i;n=parseInt(t.getAttribute("data-group-id")),r=document.querySelector('[data-group-parts="'+n+'"]'),(i=document.createElement("div")).className="part-row",i.innerHTML='',r.appendChild(i),i.querySelector(".pr-oem").focus(),i.querySelector(".pr-oem").addEventListener("blur",(function(){var e=this.value.trim();e&&c("/api/captura/parts/check-oem?oem="+encodeURIComponent(e)).then((function(e){e.exists&&(i.querySelector(".pr-name").value=e.part.name_part||"",i.querySelector(".pr-name").style.borderColor="var(--success)",i.dataset.existingPartId=e.part.id_part)}))})),i.querySelector(".pr-save").addEventListener("click",(function(){!function(t,n){var r=t.querySelector(".pr-oem").value.trim(),i=t.querySelector(".pr-name").value.trim(),d=parseInt(t.querySelector(".pr-qty").value)||1;if(!r)return o("Ingresa el numero OEM","error"),void t.querySelector(".pr-oem").focus();var l=t.querySelector(".pr-save");l.disabled=!0,l.textContent="...";var s=t.dataset.existingPartId;function u(s){c("/api/admin/fitment",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model_year_engine_id:e,part_id:s,quantity_required:d})}).then((function(e){var l={id_vehicle_part:e.id,part_id:s,oem_part_number:r,name_part:i,quantity_required:d,group_id:n};a.push(l),t.outerHTML=v(l),f(),o("Parte guardada: "+r),document.querySelectorAll(".part-row.saved .pr-delete").forEach((function(e){e.onclick=function(){var t=e.closest(".part-row"),n=t.getAttribute("data-fitment-id");n?c("/api/admin/fitment/"+n,{method:"DELETE"}).then((function(){a=a.filter((function(e){return e.id_vehicle_part!==parseInt(n)})),t.remove(),f(),o("Parte eliminada")})).catch((function(e){o(e.message,"error")})):t.remove()}}))})).catch((function(e){o(e.message,"error"),l.disabled=!1,l.textContent="✓"}))}s?u(parseInt(s)):c("/api/admin/parts",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({oem_part_number:r,name:i||r,group_id:n})}).then((function(e){u(e.id)})).catch((function(e){o(e.message,"error"),l.disabled=!1,l.textContent="✓"}))}(i,n)})),i.querySelector(".pr-delete").addEventListener("click",(function(){i.remove()}))}))}))}(n.groups,a),f()}))}(r)}))})),u("oem-vehicle-pagination",n.pagination,(function(e){i=e,s()}))}))}function u(e,t,a){var n=document.getElementById(e);!t||t.total_pages<=1?n.innerHTML="":(n.innerHTML="Pag '+t.page+" de "+t.total_pages+" ("+t.total+" total)',n.querySelectorAll("button").forEach((function(e){e.addEventListener("click",(function(){a(parseInt(e.getAttribute("data-p")))}))})))}function p(){document.getElementById("oem-vehicle-select").style.display="block",document.getElementById("oem-part-entry").style.display="none",e=null,s()}function m(){0!==a.length?c("/api/captura/vehicles/"+e+"/status",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({status:"completed"})}).then((function(){o("Vehiculo completado"),p()})):o("Registra al menos una parte antes de marcar como terminado","error")}function v(e){return''}function f(){var e=a.length,t=Math.min(100,Math.round(e/63*100));document.getElementById("oem-progress-fill").style.width=t+"%",document.getElementById("oem-progress-text").textContent=e+" partes registradas",document.querySelectorAll(".category-header h3").forEach((function(e){var t=e.closest(".category-section").querySelectorAll(".part-row.saved"),a=e.textContent.replace(/\s*\(\d+\)$/,"");e.textContent=a+" ("+t.length+")"}))}document.getElementById("oem-model-filter").addEventListener("input",(function(){clearTimeout(l),l=setTimeout((function(){i=1,s()}),400)}));function g(e){e=e||1;var t=document.getElementById("aftermarket-search").value,a=document.getElementById("aftermarket-list");a.innerHTML='
'})).join(""),t.forEach((function(e){y(e.id_part)})),a.querySelectorAll(".af-save-btn").forEach((function(e){e.addEventListener("click",(function(){!function(e){var t=e.getAttribute("data-part-id"),a=e.querySelector(".af-manufacturer").value,n=e.querySelector(".af-partnum").value.trim(),r=e.querySelector(".af-name").value.trim(),i=e.querySelector(".af-quality").value,d=e.querySelector(".af-price").value,l=e.querySelector(".af-warranty").value;if(!n)return void o("Ingresa el numero de parte aftermarket","error");c("/api/admin/aftermarket",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({oem_part_id:parseInt(t),manufacturer_id:parseInt(a),part_number:n,name:r,quality_tier:i,price_usd:d?parseFloat(d):null,warranty_months:l?parseInt(l):null})}).then((function(){o("Intercambio guardado: "+n),e.querySelector(".af-partnum").value="",e.querySelector(".af-name").value="",e.querySelector(".af-price").value="",e.querySelector(".af-warranty").value="",y(parseInt(t))})).catch((function(e){o(e.message,"error")}))}(e.closest(".part-detail-card"))}))})),u("aftermarket-pagination",e.pagination,(function(e){g(e)}))}))}function y(e){c("/api/captura/parts/"+e+"/aftermarket").then((function(t){var a=document.querySelector('[data-af-list="'+e+'"]');if(0!==t.length){var n='