{"id":1240,"date":"2026-07-01T16:11:11","date_gmt":"2026-07-01T21:11:11","guid":{"rendered":"https:\/\/www.lleraslaundry.com\/w\/?post_type=product&#038;p=1240"},"modified":"2026-07-01T16:11:12","modified_gmt":"2026-07-01T21:11:12","slug":"wash-pro","status":"publish","type":"product","link":"https:\/\/www.lleraslaundry.com\/w\/product\/wash-pro\/","title":{"rendered":"Wash Pro"},"content":{"rendered":"<p>[et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.16&#8243; custom_padding=&#8221;0px||||false|false&#8221; da_disable_devices=&#8221;off|off|off&#8221; global_colors_info=&#8221;{}&#8221; da_is_popup=&#8221;off&#8221; da_exit_intent=&#8221;off&#8221; da_has_close=&#8221;on&#8221; da_alt_close=&#8221;off&#8221; da_dark_close=&#8221;off&#8221; da_not_modal=&#8221;on&#8221; da_is_singular=&#8221;off&#8221; da_with_loader=&#8221;off&#8221; da_has_shadow=&#8221;on&#8221;][et_pb_row _builder_version=&#8221;4.16&#8243; background_size=&#8221;initial&#8221; background_position=&#8221;top_left&#8221; background_repeat=&#8221;repeat&#8221; width=&#8221;100%&#8221; custom_padding=&#8221;0px||0px||false|false&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.16&#8243; custom_padding=&#8221;|||&#8221; global_colors_info=&#8221;{}&#8221; custom_padding__hover=&#8221;|||&#8221;][et_pb_wc_breadcrumb _builder_version=&#8221;4.16&#8243; global_colors_info=&#8221;{}&#8221;][\/et_pb_wc_breadcrumb][et_pb_wc_cart_notice _builder_version=&#8221;4.16&#8243; global_colors_info=&#8221;{}&#8221;][\/et_pb_wc_cart_notice][\/et_pb_column][\/et_pb_row][et_pb_row column_structure=&#8221;1_2,1_2&#8243; _builder_version=&#8221;4.16&#8243; background_size=&#8221;initial&#8221; background_position=&#8221;top_left&#8221; background_repeat=&#8221;repeat&#8221; width=&#8221;100%&#8221; custom_padding=&#8221;0px||||false|false&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;1_2&#8243; _builder_version=&#8221;4.16&#8243; custom_padding=&#8221;|||&#8221; global_colors_info=&#8221;{}&#8221; custom_padding__hover=&#8221;|||&#8221;][et_pb_wc_images _builder_version=&#8221;4.16&#8243; global_colors_info=&#8221;{}&#8221;][\/et_pb_wc_images][\/et_pb_column][et_pb_column type=&#8221;1_2&#8243; _builder_version=&#8221;4.16&#8243; custom_padding=&#8221;|||&#8221; global_colors_info=&#8221;{}&#8221; custom_padding__hover=&#8221;|||&#8221;][et_pb_wc_title _builder_version=&#8221;4.16&#8243; global_colors_info=&#8221;{}&#8221;][\/et_pb_wc_title][et_pb_wc_rating _builder_version=&#8221;4.16&#8243; global_colors_info=&#8221;{}&#8221;][\/et_pb_wc_rating][et_pb_wc_price _builder_version=&#8221;4.16&#8243; global_colors_info=&#8221;{}&#8221;][\/et_pb_wc_price][et_pb_wc_description _builder_version=&#8221;4.16&#8243; global_colors_info=&#8221;{}&#8221;][\/et_pb_wc_description][et_pb_wc_add_to_cart _builder_version=&#8221;4.16&#8243; global_colors_info=&#8221;{}&#8221;][\/et_pb_wc_add_to_cart][et_pb_wc_meta _builder_version=&#8221;4.16&#8243; global_colors_info=&#8221;{}&#8221;][\/et_pb_wc_meta][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.16&#8243; background_size=&#8221;initial&#8221; background_position=&#8221;top_left&#8221; background_repeat=&#8221;repeat&#8221; width=&#8221;100%&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.16&#8243; custom_padding=&#8221;|||&#8221; global_colors_info=&#8221;{}&#8221; custom_padding__hover=&#8221;|||&#8221;][et_pb_wc_tabs _builder_version=&#8221;4.16&#8243; global_colors_info=&#8221;{}&#8221;] [\/et_pb_wc_tabs][et_pb_wc_upsells _builder_version=&#8221;4.16&#8243; global_colors_info=&#8221;{}&#8221;][\/et_pb_wc_upsells][et_pb_wc_related_products _builder_version=&#8221;4.16&#8243; global_colors_info=&#8221;{}&#8221;][\/et_pb_wc_related_products][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"    <div class=\"crilav-box\" id=\"crilav-box\">\r\n      <div class=\"crilav-header\">\r\n        <h3>Calculate your laundry<\/h3>\r\n        <p>Tell us how many kilograms of clothing you want washed.<\/p>\r\n        <p class=\"crilav-nota\">The laundry checks that the load contains only clothing. If any non-clothing item is found, we will notify you and offer an additional price to wash it.<\/p>\r\n      <\/div>\r\n\r\n      <div class=\"crilav-kg-row\">\r\n        <label for=\"crilav-kg\">Kilograms (kg)<\/label>\r\n        <input type=\"number\" id=\"crilav-kg\" min=\"1\" step=\"1\" placeholder=\"E.g.: 5\">\r\n      <\/div>\r\n\r\n      <input type=\"range\" id=\"crilav-kg-slider\" class=\"crilav-kg-slider\" min=\"1\" max=\"60\" step=\"1\" value=\"1\">\r\n\r\n      <div class=\"crilav-cargas crilav-oculto\" id=\"crilav-cargas-wrap\">\r\n        <div class=\"crilav-cargas-texto\">Washing loads needed: <strong id=\"crilav-cargas-valor\"><\/strong><\/div>\r\n        <div class=\"crilav-cargas-iconos\" id=\"crilav-cargas-iconos\"><\/div>\r\n      <\/div>\r\n\r\n      <div class=\"crilav-delivery-row crilav-oculto\" id=\"crilav-delivery-row\">\r\n        <label for=\"crilav-delivery\">\r\n          <input type=\"checkbox\" id=\"crilav-delivery\">\r\n          Add delivery (+$20,000)\r\n        <\/label>\r\n      <\/div>\r\n\r\n      <div class=\"crilav-total crilav-oculto\" id=\"crilav-total-wrap\">\r\n        <div>Service type: <strong id=\"crilav-modalidad-valor\"><\/strong><\/div>\r\n        <div>Total: <strong id=\"crilav-total-valor\"><\/strong><\/div>\r\n      <\/div>\r\n\r\n      <button type=\"button\" class=\"crilav-toggle-ia\" id=\"crilav-toggle-ia\">\r\n        Hide photo calculator\r\n      <\/button>\r\n\r\n      <div class=\"crilav-ia-panel\" id=\"crilav-ia-panel\">\r\n        <div class=\"crilav-dropzone\" id=\"crilav-dropzone\">\r\n          <svg width=\"28\" height=\"28\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n            <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"\/>\r\n            <polyline points=\"17 8 12 3 7 8\"\/>\r\n            <line x1=\"12\" y1=\"3\" x2=\"12\" y2=\"15\"\/>\r\n          <\/svg>\r\n          <p><strong>Tap to upload<\/strong> or take a photo<\/p>\r\n        <\/div>\r\n\r\n        <p class=\"crilav-nota\">Take the photo with good lighting and make sure the clothes are clearly visible, for a more accurate estimate.<\/p>\r\n\r\n            <div class=\"cria-guide-wrap\">\r\n      <button type=\"button\" class=\"cria-guide-btn\" aria-expanded=\"false\"\r\n              onclick=\"var p=document.getElementById('criaguide1');var h=p.hidden;p.hidden=!h;this.setAttribute('aria-expanded',h);\">\r\n        <svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\r\n          <path d=\"M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z\"\/>\r\n          <circle cx=\"12\" cy=\"13\" r=\"4\"\/>\r\n        <\/svg>\r\n        How to take a good photo\r\n        <span class=\"cria-guide-arrow\" aria-hidden=\"true\">\u203a<\/span>\r\n      <\/button>\r\n      <div id=\"criaguide1\" class=\"cria-guide-panel\" hidden>\r\n        <div class=\"cria-guide-grid\">\r\n\r\n          <!-- 1. Lighting -->\r\n          <div class=\"cria-guide-row\">\r\n            <div class=\"cria-guide-col cria-guide-bad\">\r\n              <img decoding=\"async\" class=\"cria-guide-img\" src=\"https:\/\/www.lleraslaundry.com\/w\/wp-content\/uploads\/cria-guia\/Buena%20Iluminacion%20Mala.webp\" alt=\"Poor lighting example\">\r\n              <p><b>\u2715<\/b> Poor lighting<\/p>\r\n            <\/div>\r\n            <div class=\"cria-guide-col cria-guide-good\">\r\n              <img decoding=\"async\" class=\"cria-guide-img\" src=\"https:\/\/www.lleraslaundry.com\/w\/wp-content\/uploads\/cria-guia\/Buena%20Iluminacion%20Buena.webp\" alt=\"Good lighting example\">\r\n              <p><b>\u2713<\/b> Good lighting<\/p>\r\n            <\/div>\r\n          <\/div>\r\n\r\n          <!-- 3. Contents -->\r\n          <div class=\"cria-guide-row\">\r\n            <div class=\"cria-guide-col cria-guide-bad\">\r\n              <img decoding=\"async\" class=\"cria-guide-img\" src=\"https:\/\/www.lleraslaundry.com\/w\/wp-content\/uploads\/cria-guia\/Convinar%20con%20otros%20objetos%20Mala.webp\" alt=\"Mixed with other items example\">\r\n              <p><b>\u2715<\/b> Mixed with other items<\/p>\r\n            <\/div>\r\n            <div class=\"cria-guide-col cria-guide-good\">\r\n              <img decoding=\"async\" class=\"cria-guide-img\" src=\"https:\/\/www.lleraslaundry.com\/w\/wp-content\/uploads\/cria-guia\/Convinar%20con%20otros%20objetos%20Buena.webp\" alt=\"Clothing only example\">\r\n              <p><b>\u2713<\/b> Clothing only<\/p>\r\n            <\/div>\r\n          <\/div>\r\n\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n    \r\n        <input type=\"file\" id=\"crilav-input-imagen\" accept=\"image\/jpeg,image\/png,image\/webp\" capture=\"environment\">\r\n\r\n        <div class=\"crilav-preview-wrap\" id=\"crilav-preview-wrap\">\r\n          <img decoding=\"async\" id=\"crilav-preview-img\" src=\"\" alt=\"Preview\">\r\n          <button type=\"button\" class=\"crilav-btn-cambiar\" id=\"crilav-btn-cambiar\">Change image<\/button>\r\n        <\/div>\r\n\r\n        <button type=\"button\" class=\"crilav-btn-analizar\" id=\"crilav-btn-analizar\" disabled>\r\n          <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\r\n            <path d=\"M12 3l1.5 4.5L18 9l-4.5 1.5L12 15l-1.5-4.5L6 9l4.5-1.5z\"\/>\r\n            <path d=\"M19 13l.75 2.25L22 16l-2.25.75L19 19l-.75-2.25L16 16l2.25-.75z\"\/>\r\n          <\/svg>\r\n          Analyze image with AI\r\n        <\/button>\r\n\r\n        <div class=\"crilav-status\" id=\"crilav-status\"><\/div>\r\n\r\n        <div class=\"crilav-resultado\" id=\"crilav-resultado\">\r\n          <div class=\"crilav-kg-estimado\" id=\"crilav-kg-estimado\"><\/div>\r\n          <div class=\"crilav-rango\" id=\"crilav-kg-rango\"><\/div>\r\n          <div class=\"crilav-descripcion\" id=\"crilav-descripcion\"><\/div>\r\n          <div class=\"crilav-fuente\" id=\"crilav-fuente\"><\/div>\r\n          <p class=\"cria-aviso-aprox\">This is an approximate estimate. Actual weight may vary depending on clothing type and fabric density.<\/p>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <style>\r\n      .crilav-box {\r\n        max-width: 480px;\r\n        margin: 1.25rem 0;\r\n        padding: 1.25rem;\r\n        background: #f7faff;\r\n        border: 1px solid #d6e4ff;\r\n        border-radius: 12px;\r\n        font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;\r\n        color: #333;\r\n      }\r\n\r\n      .crilav-header h3 { font-size: 16px; font-weight: 600; color: #111; margin: 0; }\r\n      .crilav-header p  { font-size: 13px; color: #777; margin: 3px 0 0; }\r\n\r\n      .crilav-kg-row {\r\n        display: flex;\r\n        align-items: center;\r\n        justify-content: space-between;\r\n        gap: 10px;\r\n        margin-top: 1rem;\r\n      }\r\n\r\n      .crilav-kg-row label {\r\n        font-size: 13px;\r\n        font-weight: 500;\r\n        color: #555;\r\n      }\r\n\r\n      .crilav-kg-row input[type=\"number\"] {\r\n        width: 90px;\r\n        padding: 8px 10px;\r\n        font-size: 14px;\r\n        text-align: center;\r\n        border: 1px solid #ccd6e6;\r\n        border-radius: 8px;\r\n        font-family: inherit;\r\n      }\r\n\r\n      .crilav-kg-slider {\r\n        width: 100%;\r\n        margin-top: .75rem;\r\n        -webkit-appearance: none;\r\n        appearance: none;\r\n        height: 6px;\r\n        border-radius: 4px;\r\n        background: #d6e4ff;\r\n        outline: none;\r\n        cursor: pointer;\r\n      }\r\n\r\n      .crilav-kg-slider::-webkit-slider-thumb {\r\n        -webkit-appearance: none;\r\n        appearance: none;\r\n        width: 20px;\r\n        height: 20px;\r\n        border-radius: 50%;\r\n        background: #4f8ef7;\r\n        border: 3px solid #fff;\r\n        box-shadow: 0 1px 3px rgba(0,0,0,.25);\r\n        cursor: pointer;\r\n      }\r\n\r\n      .crilav-kg-slider::-moz-range-thumb {\r\n        width: 20px;\r\n        height: 20px;\r\n        border-radius: 50%;\r\n        background: #4f8ef7;\r\n        border: 3px solid #fff;\r\n        box-shadow: 0 1px 3px rgba(0,0,0,.25);\r\n        cursor: pointer;\r\n      }\r\n\r\n      .crilav-cargas {\r\n        margin-top: .75rem;\r\n        padding: .65rem .75rem;\r\n        background: #fff;\r\n        border: 1px solid #d6e4ff;\r\n        border-radius: 10px;\r\n      }\r\n\r\n      .crilav-cargas-texto {\r\n        font-size: 13px;\r\n        color: #555;\r\n      }\r\n\r\n      .crilav-cargas-texto strong { color: #15803d; }\r\n\r\n      .crilav-cargas-iconos {\r\n        display: flex;\r\n        flex-wrap: wrap;\r\n        gap: 6px;\r\n        margin-top: 6px;\r\n      }\r\n\r\n      .crilav-cargas-iconos svg {\r\n        width: 22px;\r\n        height: 22px;\r\n        color: #4f8ef7;\r\n      }\r\n\r\n      .crilav-oculto { display: none; }\r\n\r\n      .crilav-delivery-row {\r\n        margin-top: .6rem;\r\n      }\r\n\r\n      .crilav-delivery-row label {\r\n        display: flex;\r\n        align-items: center;\r\n        gap: 6px;\r\n        font-size: 13px;\r\n        color: #555;\r\n        cursor: pointer;\r\n      }\r\n\r\n      .crilav-delivery-row input[type=\"checkbox\"] {\r\n        width: 16px;\r\n        height: 16px;\r\n        cursor: pointer;\r\n      }\r\n\r\n      .crilav-delivery-row.crilav-disabled {\r\n        opacity: .5;\r\n        pointer-events: none;\r\n      }\r\n\r\n      .crilav-total {\r\n        margin-top: .75rem;\r\n        font-size: 14px;\r\n        color: #444;\r\n      }\r\n\r\n      .crilav-total div + div { margin-top: 4px; }\r\n\r\n      .crilav-total strong { color: #15803d; font-size: 16px; }\r\n\r\n      .crilav-toggle-ia {\r\n        display: block;\r\n        width: 100%;\r\n        margin-top: 1rem;\r\n        padding: 8px 10px;\r\n        font-size: 12px;\r\n        text-align: left;\r\n        color: #4f8ef7;\r\n        background: none;\r\n        border: none;\r\n        border-top: 1px dashed #d6e4ff;\r\n        cursor: pointer;\r\n        font-family: inherit;\r\n      }\r\n\r\n      .crilav-ia-panel { display: block; margin-top: .5rem; }\r\n\r\n      .crilav-dropzone {\r\n        border: 2px dashed #ddd;\r\n        border-radius: 10px;\r\n        padding: 1.25rem;\r\n        text-align: center;\r\n        cursor: pointer;\r\n        transition: border-color .15s, background .15s;\r\n        background: #fff;\r\n      }\r\n\r\n      .crilav-dropzone:hover { border-color: #4f8ef7; background: #f7faff; }\r\n      .crilav-dropzone svg { color: #999; margin-bottom: 8px; }\r\n      .crilav-dropzone p   { font-size: 13px; color: #777; margin: 0; }\r\n      .crilav-dropzone p strong { color: #4f8ef7; }\r\n\r\n      .crilav-nota {\r\n        font-size: 12px;\r\n        color: #888;\r\n        line-height: 1.5;\r\n        margin-top: 6px;\r\n      }\r\n\r\n      \/* \u2500\u2500 Photo Guide (crilav context) \u2500\u2500 *\/\r\n      .crilav-ia-panel .cria-guide-wrap { margin-top: 10px; }\r\n      .crilav-ia-panel .cria-guide-btn {\r\n        display: inline-flex;\r\n        align-items: center;\r\n        gap: 5px;\r\n        background: none;\r\n        border: none;\r\n        padding: 0;\r\n        font-size: 12px;\r\n        color: #4f8ef7;\r\n        cursor: pointer;\r\n        font-family: inherit;\r\n      }\r\n      .crilav-ia-panel .cria-guide-btn:hover { text-decoration: underline; }\r\n      .crilav-ia-panel .cria-guide-arrow {\r\n        display: inline-block;\r\n        font-size: 14px;\r\n        line-height: 1;\r\n        transition: transform .2s;\r\n      }\r\n      .crilav-ia-panel .cria-guide-btn[aria-expanded=\"true\"] .cria-guide-arrow { transform: rotate(90deg); }\r\n      .crilav-ia-panel .cria-guide-panel { margin-top: 10px; }\r\n      .crilav-ia-panel .cria-guide-grid { display: grid; gap: 8px; }\r\n      .crilav-ia-panel .cria-guide-row {\r\n        display: grid;\r\n        grid-template-columns: 1fr 1fr;\r\n        gap: 8px;\r\n        background: #eef3fb;\r\n        border: 1px solid #d6e4ff;\r\n        border-radius: 8px;\r\n        padding: 10px;\r\n      }\r\n      .crilav-ia-panel .cria-guide-col {\r\n        display: flex;\r\n        flex-direction: column;\r\n        align-items: center;\r\n        gap: 5px;\r\n      }\r\n      .crilav-ia-panel .cria-guide-img {\r\n        width: 100%;\r\n        max-width: 88px;\r\n        aspect-ratio: 4\/5;\r\n        object-fit: cover;\r\n        border-radius: 4px;\r\n        display: block;\r\n        box-shadow: 0 1px 3px rgba(0,0,0,.12);\r\n      }\r\n      .crilav-ia-panel .cria-guide-col p {\r\n        font-size: 11px;\r\n        color: #555;\r\n        text-align: center;\r\n        margin: 0;\r\n        line-height: 1.3;\r\n        text-justify: auto;\r\n      }\r\n      .crilav-ia-panel .cria-guide-bad p b { color: #e53e3e; }\r\n      .crilav-ia-panel .cria-guide-good p b { color: #2a9d63; }\r\n\r\n      #crilav-input-imagen { display: none; }\r\n\r\n      .crilav-preview-wrap {\r\n        margin-top: .75rem;\r\n        display: none;\r\n        text-align: center;\r\n      }\r\n\r\n      .crilav-preview-wrap img {\r\n        max-width: 100%;\r\n        max-height: 220px;\r\n        border-radius: 8px;\r\n        border: 1px solid #e5e5e5;\r\n      }\r\n\r\n      .crilav-btn-cambiar {\r\n        display: block;\r\n        margin: 8px auto 0;\r\n        font-size: 12px;\r\n        color: #4f8ef7;\r\n        background: none;\r\n        border: none;\r\n        cursor: pointer;\r\n        font-family: inherit;\r\n      }\r\n\r\n      .crilav-btn-analizar {\r\n        display: inline-flex;\r\n        align-items: center;\r\n        justify-content: center;\r\n        gap: 6px;\r\n        width: 100%;\r\n        margin-top: .75rem;\r\n        padding: 10px 16px;\r\n        font-size: 14px;\r\n        font-weight: 600;\r\n        background: #4f8ef7;\r\n        color: #fff;\r\n        border: none;\r\n        border-radius: 8px;\r\n        cursor: pointer;\r\n        font-family: inherit;\r\n        transition: background .15s;\r\n      }\r\n\r\n      .crilav-btn-analizar:hover    { background: #3d7ce0; }\r\n      .crilav-btn-analizar:disabled { opacity: .6; cursor: wait; }\r\n\r\n      .crilav-status {\r\n        font-size: 12px;\r\n        color: #777;\r\n        margin-top: 10px;\r\n        min-height: 16px;\r\n        display: flex;\r\n        align-items: center;\r\n        gap: 5px;\r\n      }\r\n\r\n      .crilav-status.ok  { color: #16a34a; }\r\n      .crilav-status.err { color: #dc2626; }\r\n\r\n      @keyframes crilav-spin { to { transform: rotate(360deg); } }\r\n      .crilav-spinner {\r\n        display: inline-block;\r\n        width: 12px; height: 12px;\r\n        border: 2px solid #4f8ef7;\r\n        border-top-color: transparent;\r\n        border-radius: 50%;\r\n        animation: crilav-spin .7s linear infinite;\r\n      }\r\n\r\n      .crilav-resultado {\r\n        margin-top: 1rem;\r\n        display: none;\r\n        padding: .85rem;\r\n        background: #f0fdf4;\r\n        border: 1px solid #bbf7d0;\r\n        border-radius: 10px;\r\n      }\r\n\r\n      .crilav-kg-estimado { font-size: 14px; color: #15803d; }\r\n      .crilav-rango       { font-size: 12px; color: #777; margin-top: 2px; }\r\n      .crilav-descripcion { font-size: 13px; color: #444; margin-top: 8px; line-height: 1.5; }\r\n      .crilav-fuente      { font-size: 11px; color: #999; margin-top: 8px; }\r\n\r\n      .crilav-ia-panel .cria-aviso-aprox {\r\n        margin: 8px 0 0;\r\n        font-size: 11px;\r\n        color: #888;\r\n        line-height: 1.4;\r\n        padding-top: 8px;\r\n        border-top: 1px solid #d1fae5;\r\n        text-align: left;\r\n        text-justify: auto;\r\n      }\r\n    <\/style>\r\n\r\n    <script>\r\n    document.addEventListener('DOMContentLoaded', function () {\r\n      const KG_MEDIUM      = 9;\r\n      const KG_FULL        = 15;\r\n      const PRECIO_MEDIUM  = 70000;\r\n      const PRECIO_FULL    = 100000;\r\n      const PRECIO_KG      = 9000;\r\n\r\n      const kgInput         = document.getElementById('crilav-kg');\r\n      const kgSlider        = document.getElementById('crilav-kg-slider');\r\n      const cargasWrap       = document.getElementById('crilav-cargas-wrap');\r\n      const cargasValor      = document.getElementById('crilav-cargas-valor');\r\n      const cargasIconos     = document.getElementById('crilav-cargas-iconos');\r\n      const deliveryRow      = document.getElementById('crilav-delivery-row');\r\n      const deliveryCheckbox = document.getElementById('crilav-delivery');\r\n      const totalWrap       = document.getElementById('crilav-total-wrap');\r\n      const modalidadValor  = document.getElementById('crilav-modalidad-valor');\r\n      const totalValor      = document.getElementById('crilav-total-valor');\r\n      const toggleIa        = document.getElementById('crilav-toggle-ia');\r\n      const iaPanel         = document.getElementById('crilav-ia-panel');\r\n      const dropzone        = document.getElementById('crilav-dropzone');\r\n      const inputImagen     = document.getElementById('crilav-input-imagen');\r\n      const previewWrap     = document.getElementById('crilav-preview-wrap');\r\n      const previewImg      = document.getElementById('crilav-preview-img');\r\n      const btnCambiar      = document.getElementById('crilav-btn-cambiar');\r\n      const btnAnalizar     = document.getElementById('crilav-btn-analizar');\r\n      const status          = document.getElementById('crilav-status');\r\n      const resultado       = document.getElementById('crilav-resultado');\r\n\r\n      iaPanel.style.display = 'block';\r\n\r\n      function formatearPrecio(valor) {\r\n        return '$ ' + Math.round(valor).toLocaleString('en-US');\r\n      }\r\n\r\n      const PRECIO_DELIVERY = 20000;\r\n\r\n      \/\/ Instant preview only. The price actually charged is recalculated on the\r\n      \/\/ server from crilav_kg\/crilav_delivery (see cria_lavado_calcular_precio).\r\n      function calcularPrecio(kg, delivery) {\r\n        let resultado;\r\n        if (kg <= KG_MEDIUM) {\r\n          resultado = { modalidad: 'Medium Service', precio: PRECIO_MEDIUM };\r\n        } else if (kg <= KG_FULL) {\r\n          resultado = { modalidad: 'Full Service', precio: PRECIO_FULL };\r\n        } else {\r\n          resultado = { modalidad: 'Per-kg charge ($' + PRECIO_KG.toLocaleString('en-US') + '\/kg)', precio: kg * PRECIO_KG };\r\n        }\r\n        if (delivery) {\r\n          resultado.precio    += PRECIO_DELIVERY;\r\n          resultado.modalidad += ' + Delivery';\r\n        }\r\n        return resultado;\r\n      }\r\n\r\n      const ICONO_LAVADORA = '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\"\/><circle cx=\"12\" cy=\"13\" r=\"5\"\/><circle cx=\"7\" cy=\"6.5\" r=\".6\" fill=\"currentColor\" stroke=\"none\"\/><circle cx=\"10\" cy=\"6.5\" r=\".6\" fill=\"currentColor\" stroke=\"none\"\/><\/svg>';\r\n\r\n      function calcularCargas(kg) {\r\n        return Math.ceil(kg \/ KG_MEDIUM);\r\n      }\r\n\r\n      function actualizarCargas(kg) {\r\n        const cargas = calcularCargas(kg);\r\n        cargasValor.textContent = cargas + (cargas === 1 ? ' load' : ' loads') + ' (up to ' + KG_MEDIUM + ' kg each)';\r\n        cargasIconos.innerHTML  = ICONO_LAVADORA.repeat(cargas);\r\n        cargasWrap.classList.remove('crilav-oculto');\r\n      }\r\n\r\n      function setHiddenInput(nombre, valor) {\r\n        const form = document.querySelector('form.cart');\r\n        if (!form) return;\r\n        let el = form.querySelector('input[name=\"' + nombre + '\"]');\r\n        if (!el) {\r\n          el = document.createElement('input');\r\n          el.type = 'hidden';\r\n          el.name = nombre;\r\n          form.appendChild(el);\r\n        }\r\n        el.value = valor;\r\n      }\r\n\r\n      function habilitarBotonAgregar(habilitar) {\r\n        const boton = document.querySelector('form.cart .single_add_to_cart_button, form.cart button[type=\"submit\"]');\r\n        if (boton) boton.disabled = !habilitar;\r\n      }\r\n\r\n      function actualizarPrecio() {\r\n        const kg = parseInt(kgInput.value, 10);\r\n\r\n        if (!kgInput.value.trim() || isNaN(kg) || kg < 1) {\r\n          deliveryRow.classList.add('crilav-oculto');\r\n          totalWrap.classList.add('crilav-oculto');\r\n          cargasWrap.classList.add('crilav-oculto');\r\n          setHiddenInput('crilav_kg', '');\r\n          habilitarBotonAgregar(false);\r\n          return;\r\n        }\r\n\r\n        if (Number(kgSlider.max) < kg) kgSlider.max = kg;\r\n        if (Number(kgSlider.value) !== kg) kgSlider.value = kg;\r\n\r\n        deliveryRow.classList.remove('crilav-oculto');\r\n\r\n        const { modalidad, precio } = calcularPrecio(kg, deliveryCheckbox.checked);\r\n\r\n        modalidadValor.textContent = modalidad;\r\n        totalValor.textContent     = formatearPrecio(precio);\r\n        totalWrap.classList.remove('crilav-oculto');\r\n\r\n        actualizarCargas(kg);\r\n\r\n        setHiddenInput('crilav_kg', kg);\r\n        setHiddenInput('crilav_delivery', deliveryCheckbox.checked ? '1' : '0');\r\n        habilitarBotonAgregar(true);\r\n\r\n        const qtyInput = document.querySelector('form.cart input.qty');\r\n        if (qtyInput) {\r\n          qtyInput.value    = 1;\r\n          qtyInput.readOnly = true;\r\n          qtyInput.dispatchEvent(new Event('change', { bubbles: true }));\r\n          qtyInput.dispatchEvent(new Event('input', { bubbles: true }));\r\n        }\r\n      }\r\n\r\n      kgInput.addEventListener('input', actualizarPrecio);\r\n      kgSlider.addEventListener('input', () => {\r\n        kgInput.value = kgSlider.value;\r\n        actualizarPrecio();\r\n      });\r\n      deliveryCheckbox.addEventListener('change', actualizarPrecio);\r\n      actualizarPrecio();\r\n\r\n      toggleIa.addEventListener('click', () => {\r\n        const visible = iaPanel.style.display === 'block';\r\n        iaPanel.style.display = visible ? 'none' : 'block';\r\n        toggleIa.textContent  = visible\r\n          ? 'Not sure how many kg? Upload a photo and the AI will help you estimate'\r\n          : 'Hide photo calculator';\r\n      });\r\n\r\n      dropzone.addEventListener('click', () => inputImagen.click());\r\n\r\n      inputImagen.addEventListener('change', () => {\r\n        const archivo = inputImagen.files[0];\r\n        if (!archivo) return;\r\n\r\n        const reader = new FileReader();\r\n        reader.onload = e => {\r\n          previewImg.src = e.target.result;\r\n          dropzone.style.display    = 'none';\r\n          previewWrap.style.display = 'block';\r\n          btnAnalizar.disabled      = false;\r\n          resultado.style.display   = 'none';\r\n          status.textContent        = '';\r\n          status.className          = 'crilav-status';\r\n        };\r\n        reader.readAsDataURL(archivo);\r\n      });\r\n\r\n      btnCambiar.addEventListener('click', () => {\r\n        inputImagen.value = '';\r\n        dropzone.style.display    = 'block';\r\n        previewWrap.style.display = 'none';\r\n        btnAnalizar.disabled       = true;\r\n        resultado.style.display    = 'none';\r\n      });\r\n\r\n      btnAnalizar.addEventListener('click', async () => {\r\n        const archivo = inputImagen.files[0];\r\n        if (!archivo) return;\r\n\r\n        btnAnalizar.disabled    = true;\r\n        resultado.style.display = 'none';\r\n        status.innerHTML        = '<span class=\"crilav-spinner\"><\/span> Analyzing image with AI...';\r\n        status.className        = 'crilav-status';\r\n\r\n        const fd = new FormData();\r\n        fd.append('action', 'cria_analizar_ropa');\r\n        fd.append('nonce', '3fe9e95cae');\r\n        fd.append('imagen', archivo);\r\n\r\n        try {\r\n          const res  = await fetch('https:\/\/www.lleraslaundry.com\/w\/wp-admin\/admin-ajax.php', { method: 'POST', body: fd });\r\n          const data = await res.json();\r\n\r\n          if (data.success && data.data && data.data.kg_estimado !== undefined) {\r\n            const d = data.data;\r\n            const kgRedondeado = Math.max(1, Math.ceil(d.kg_estimado));\r\n\r\n            document.getElementById('crilav-kg-estimado').innerHTML =\r\n              'Estimated: ' + d.kg_estimado + ' kg \u2192 you will be charged for <strong>' + kgRedondeado + ' kg<\/strong>';\r\n\r\n            const rango = document.getElementById('crilav-kg-rango');\r\n            if (d.kg_min !== null && d.kg_max !== null) {\r\n              rango.textContent = 'Estimated range: ' + d.kg_min + ' kg \u2013 ' + d.kg_max + ' kg';\r\n            } else {\r\n              rango.textContent = '';\r\n            }\r\n\r\n            document.getElementById('crilav-descripcion').textContent = d.descripcion || '';\r\n            document.getElementById('crilav-fuente').textContent      = 'Calculated with: ' + d.fuente;\r\n\r\n            resultado.style.display = 'block';\r\n            status.textContent      = '\u2713 Analysis complete';\r\n            status.className        = 'crilav-status ok';\r\n\r\n            kgInput.value = kgRedondeado;\r\n            actualizarPrecio();\r\n          } else {\r\n            const msg = (data.data && data.data.error) || 'Could not analyze the image.';\r\n            status.textContent = msg;\r\n            status.className   = 'crilav-status err';\r\n          }\r\n        } catch (e) {\r\n          status.textContent = 'Network error.';\r\n          status.className   = 'crilav-status err';\r\n        }\r\n\r\n        btnAnalizar.disabled = false;\r\n      });\r\n    });\r\n    <\/script>\r\n    \n","protected":false},"featured_media":1241,"comment_status":"open","ping_status":"closed","template":"","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","_joinchat":[]},"product_brand":[],"product_cat":[15],"product_tag":[],"class_list":["post-1240","product","type-product","status-publish","has-post-thumbnail","product_cat-uncategorized","first","instock","shipping-taxable","purchasable","product-type-simple"],"_links":{"self":[{"href":"https:\/\/www.lleraslaundry.com\/w\/wp-json\/wp\/v2\/product\/1240","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lleraslaundry.com\/w\/wp-json\/wp\/v2\/product"}],"about":[{"href":"https:\/\/www.lleraslaundry.com\/w\/wp-json\/wp\/v2\/types\/product"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lleraslaundry.com\/w\/wp-json\/wp\/v2\/comments?post=1240"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lleraslaundry.com\/w\/wp-json\/wp\/v2\/media\/1241"}],"wp:attachment":[{"href":"https:\/\/www.lleraslaundry.com\/w\/wp-json\/wp\/v2\/media?parent=1240"}],"wp:term":[{"taxonomy":"product_brand","embeddable":true,"href":"https:\/\/www.lleraslaundry.com\/w\/wp-json\/wp\/v2\/product_brand?post=1240"},{"taxonomy":"product_cat","embeddable":true,"href":"https:\/\/www.lleraslaundry.com\/w\/wp-json\/wp\/v2\/product_cat?post=1240"},{"taxonomy":"product_tag","embeddable":true,"href":"https:\/\/www.lleraslaundry.com\/w\/wp-json\/wp\/v2\/product_tag?post=1240"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}