{"id":123164,"date":"2025-06-06T03:12:11","date_gmt":"2025-06-06T02:12:11","guid":{"rendered":"https:\/\/www.quartix.com\/roi-calculator-2\/"},"modified":"2026-02-12T00:56:21","modified_gmt":"2026-02-11T23:56:21","slug":"calculadora-retorno-inversion","status":"publish","type":"page","link":"https:\/\/www.quartix.com\/es-es\/calculadora-retorno-inversion\/","title":{"rendered":"ROI Calculator"},"content":{"rendered":"\n<div style=\"height:60px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h1 class=\"wp-block-heading has-text-align-center\" id=\"h-descubre-cuanto-puedes-ahorrar-con-quartix\">Descubre cu\u00e1nto puedes ahorrar con Quartix<\/h1>\n\n\n\n<p class=\"has-text-align-center\">Responde a unas pocas preguntas r\u00e1pidas para calcular tu ahorro potencial con la localizaci\u00f3n GPS de veh\u00edculos de Quartix: desde combustible y kilometraje privado hasta control del tiempo y optimizaci\u00f3n de rutas.<\/p>\n\n\n\n<div class=\"wp-block-group is-layout-constrained wp-container-core-group-is-layout-309a3165 wp-block-group-is-layout-constrained\">\n<!-- Start: Quartix Partner Earnings Calculator Widget - Spanish -->\n<div id=\"quartix-calculator-widget-es\">\n  <style nonce=\"\">\n    @import url('https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700&display=swap');\n    \n    #quartix-calculator-widget-es {\n      width: 100%;\n      font-family: 'Inter', sans-serif;\n      color: #1F2121;\n      line-height: 1.6;\n      background-color: #ffffff;\n      position: relative;\n      z-index: 1;\n    }\n    \n    #quartix-calculator-widget-es h1, \n    #quartix-calculator-widget-es h2, \n    #quartix-calculator-widget-es h3, \n    #quartix-calculator-widget-es h4, \n    #quartix-calculator-widget-es h5, \n    #quartix-calculator-widget-es h6, \n    #quartix-calculator-widget-es .section-header label,\n    #quartix-calculator-widget-es .metrics-title,\n    #quartix-calculator-widget-es .chart-title {\n      font-family: 'Inter', sans-serif;\n      color: #000000;\n    }\n    \n    #quartix-calculator-widget-es .form-group {\n      margin-bottom: 15px;\n      background-color: #f9f9f9;\n    }\n    \n    #quartix-calculator-widget-es label {\n      display: block;\n      font-weight: 600;\n      margin-bottom: 8px;\n      font-family: 'Inter', sans-serif;\n      background-color: #f9f9f9;\n    }\n    \n    #quartix-calculator-widget-es input[type=\"text\"],\n    #quartix-calculator-widget-es input[type=\"email\"],\n    #quartix-calculator-widget-es input[type=\"tel\"],\n    #quartix-calculator-widget-es input[type=\"number\"],\n    #quartix-calculator-widget-es select {\n      width: 100%;\n      padding: 12px;\n      border: 2px solid #e0e0e0;\n      border-radius: 6px;\n      font-size: 16px;\n      transition: border-color 0.2s ease;\n    }\n    \n    #quartix-calculator-widget-es input[type=\"text\"]:focus,\n    #quartix-calculator-widget-es input[type=\"email\"]:focus,\n    #quartix-calculator-widget-es input[type=\"tel\"]:focus,\n    #quartix-calculator-widget-es input[type=\"number\"]:focus,\n    #quartix-calculator-widget-es select:focus {\n      border-color: #4EA863;\n      outline: none;\n    }\n    \n    #quartix-calculator-widget-es input.error {\n      border-color: #e74c3c;\n    }\n    \n    #quartix-calculator-widget-es .error-message {\n      color: #e74c3c;\n      font-size: 14px;\n      margin-top: 5px;\n      display: none;\n    }\n    \n    #quartix-calculator-widget-es .email-note {\n      font-size: 14px;\n      color: #666;\n      margin-top: 5px;\n    }\n    \n    #quartix-calculator-widget-es .currency-input-wrapper {\n      position: relative;\n      display: flex;\n      align-items: center;\n    }\n    \n    #quartix-calculator-widget-es .currency-symbol {\n      position: absolute;\n      left: 12px;\n      font-weight: 600;\n      color: #666;\n      pointer-events: none;\n    }\n    \n    #quartix-calculator-widget-es .currency-input {\n      padding-left: 28px !important;\n    }\n    \n    #quartix-calculator-widget-es .disclaimer-box {\n      background-color: #f8f8f8;\n      padding: 15px;\n      margin-bottom: 25px;\n      border-radius: 4px;\n      font-size: 14px;\n      color: #666;\n      border: none;\n    }\n    \n    #quartix-calculator-widget-es .business-type-selector {\n      display: flex;\n      gap: 15px;\n      margin-bottom: 25px;\n      background-color: #f9f9f9;\n    }\n    \n    #quartix-calculator-widget-es .business-type-option {\n      flex: 1;\n      text-align: center;\n      padding: 15px;\n      border: 2px solid #e0e0e0;\n      border-radius: 8px;\n      cursor: pointer;\n      transition: all 0.2s ease;\n    }\n    \n    #quartix-calculator-widget-es .business-type-option:hover {\n      border-color: #4EA863;\n      background-color: #f9f9f9;\n    }\n    \n    #quartix-calculator-widget-es .business-type-option.active {\n      border-color: #4EA863;\n      background-color: #edf7f1;\n    }\n    \n    #quartix-calculator-widget-es .business-type-option svg {\n      display: block;\n      margin: 0 auto 10px;\n      height: 40px;\n      width: 40px;\n    }\n    \n    #quartix-calculator-widget-es .business-type-option h4 {\n      margin: 0;\n      font-size: 16px;\n    }\n    \n    #quartix-calculator-widget-es .progress-steps {\n      display: flex;\n      margin-bottom: 30px;\n      background-color: #ffffff;\n    }\n    \n    #quartix-calculator-widget-es .progress-step {\n      flex: 1;\n      text-align: center;\n      position: relative;\n    }\n    \n    #quartix-calculator-widget-es .progress-step:not(:last-child):after {\n      content: '';\n      position: absolute;\n      top: 14px;\n      left: 50%;\n      width: 100%;\n      height: 2px;\n      background-color: #e0e0e0;\n      z-index: 1;\n    }\n    \n    #quartix-calculator-widget-es .step-circle {\n      width: 30px;\n      height: 30px;\n      border-radius: 50%;\n      background-color: #e0e0e0;\n      color: white;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      margin: 0 auto 8px;\n      font-weight: bold;\n      position: relative;\n      z-index: 2;\n    }\n    \n    #quartix-calculator-widget-es .progress-step.active .step-circle {\n      background-color: #4EA863;\n    }\n    \n    #quartix-calculator-widget-es .progress-step.completed .step-circle {\n      background-color: #4EA863;\n    }\n    \n    #quartix-calculator-widget-es .step-label {\n      font-size: 14px;\n      font-weight: 600;\n      color: #666;\n      white-space: nowrap;\n    }\n    \n    #quartix-calculator-widget-es .progress-step.active .step-label {\n      color: #000;\n    }\n    \n    #quartix-calculator-widget-es .progress-step:not(:last-child).completed:after {\n      background-color: #4EA863;\n    }\n    \n    #quartix-calculator-widget-es .calculator-section {\n      display: none;\n      animation: qcalcEsFadeIn 0.5s ease;\n      background-color: #ffffff;\n    }\n    \n    #quartix-calculator-widget-es .calculator-section.active {\n      display: block;\n      background-color: #ffffff;\n      padding: 20px;\n      border-radius: 8px;\n    }\n    \n    #quartix-calculator-widget-es .calculator-card {\n      display: none;\n      background: #f9f9f9;\n      border-radius: 10px;\n      padding: 20px;\n      margin-bottom: 20px;\n      animation: qcalcEsFadeIn 0.5s ease;\n    }\n    \n    #quartix-calculator-widget-es .calculator-card.active {\n      display: block;\n    }\n    \n    @keyframes qcalcEsFadeIn {\n      from { opacity: 0; }\n      to { opacity: 1; }\n    }\n    \n    #quartix-calculator-widget-es .contact-form {\n      width: 100%;\n      background-color: #f9f9f9;\n      padding: 20px;\n      border-radius: 8px;\n    }\n    \n    #quartix-calculator-widget-es .form-row {\n      display: flex;\n      gap: 60px;\n      margin-bottom: 20px;\n      background-color: #f9f9f9;\n    }\n    \n    #quartix-calculator-widget-es .form-col {\n      flex: 1;\n      background-color: #f9f9f9;\n    }\n    \n    #quartix-calculator-widget-es .country-code-select {\n      width: auto;\n      flex-shrink: 0;\n      padding: 10px;\n      border: 2px solid #e0e0e0;\n      border-radius: 6px;\n      font-size: 14px;\n      background-color: white;\n      cursor: pointer;\n      min-width: 100px;\n    }\n    \n    #quartix-calculator-widget-es .phone-input-container {\n      display: flex;\n      gap: 10px;\n    }\n    \n    #quartix-calculator-widget-es .button-group {\n      display: flex;\n      justify-content: space-between;\n      margin-top: 20px;\n    }\n    \n    #quartix-calculator-widget-es .button {\n      height: 56px;\n      padding: 0 24px;\n      border: none;\n      border-radius: 6px;\n      font-size: 16px;\n      font-weight: 400;\n      cursor: pointer;\n      font-family: 'Inter', sans-serif;\n      transition: all 0.2s ease;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n    \n    #quartix-calculator-widget-es .button-prev {\n      background-color: #e0e0e0;\n      color: #444;\n      border: 1px solid #ccc;\n    }\n    \n    #quartix-calculator-widget-es .button-prev:hover {\n      background-color: #d0d0d0;\n    }\n    \n    #quartix-calculator-widget-es .button-next,\n    #quartix-calculator-widget-es .button-submit,\n    #quartix-calculator-widget-es .button-reset {\n      background-color: #4EA863;\n      color: white;\n    }\n    \n    #quartix-calculator-widget-es .button-next:hover,\n    #quartix-calculator-widget-es .button-submit:hover,\n    #quartix-calculator-widget-es .button-reset:hover {\n      background-color: #3d8a4f;\n    }\n    \n    #quartix-calculator-widget-es .button-reset {\n      background-color: #e74c3c;\n    }\n    \n    #quartix-calculator-widget-es .button-reset:hover {\n      background-color: #c0392b;\n    }\n    \n    #quartix-calculator-widget-es .section-header {\n      display: flex;\n      align-items: center;\n      margin-bottom: 10px;\n    }\n    \n    #quartix-calculator-widget-es .section-header h3 {\n      margin: 0;\n      margin-right: 8px;\n    }\n    \n    #quartix-calculator-widget-es .tooltip {\n      position: relative;\n      display: inline-flex;\n      color: #999;\n      cursor: help;\n    }\n    \n    #quartix-calculator-widget-es .tooltip:hover {\n      color: #4EA863;\n    }\n    \n    #quartix-calculator-widget-es .tooltip::after {\n      content: attr(data-tooltip);\n      position: absolute;\n      bottom: 125%;\n      left: 50%;\n      transform: translateX(-50%);\n      background: #333;\n      color: white;\n      padding: 8px 12px;\n      border-radius: 4px;\n      font-size: 14px;\n      opacity: 0;\n      pointer-events: none;\n      transition: opacity 0.2s ease;\n      z-index: 10;\n      width: 200px;\n      white-space: normal;\n      text-align: center;\n    }\n    \n    #quartix-calculator-widget-es .tooltip:hover::after {\n      opacity: 1;\n    }\n    \n    #quartix-calculator-widget-es .slider-with-value {\n      display: flex;\n      align-items: center;\n      gap: 15px;\n      margin-bottom: 15px;\n    }\n    \n    #quartix-calculator-widget-es .slider-container {\n      flex: 3;\n      position: relative;\n    }\n    \n    #quartix-calculator-widget-es .slider-value {\n      flex: 1;\n      max-width: 80px;\n      text-align: center;\n    }\n    \n    #quartix-calculator-widget-es input[type=\"range\"] {\n      -webkit-appearance: none;\n      width: 100%;\n      height: 6px;\n      background: #d0eddc;\n      border-radius: 3px;\n      outline: none;\n      cursor: pointer;\n    }\n    \n    #quartix-calculator-widget-es input[type=\"range\"]::-webkit-slider-thumb {\n      -webkit-appearance: none;\n      height: 18px;\n      width: 18px;\n      background: #4EA863;\n      border-radius: 50%;\n      cursor: pointer;\n      border: 2px solid white;\n      box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);\n      transition: transform 0.15s ease;\n    }\n    \n    #quartix-calculator-widget-es input[type=\"range\"]::-webkit-slider-thumb:hover {\n      transform: scale(1.15);\n    }\n    \n    #quartix-calculator-widget-es input[type=\"range\"]::-moz-range-thumb {\n      height: 18px;\n      width: 18px;\n      background: #4EA863;\n      border-radius: 50%;\n      cursor: pointer;\n      border: 2px solid white;\n      box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);\n      transition: transform 0.15s ease;\n    }\n    \n    #quartix-calculator-widget-es input[type=\"range\"]::-moz-range-track {\n      background: #d0eddc;\n      height: 6px;\n      border-radius: 3px;\n    }\n    \n    #quartix-calculator-widget-es .info-note {\n      background-color: #f5f5f5;\n      border: 1px solid #e0e0e0;\n      padding: 12px 15px;\n      margin-top: 15px;\n      font-size: 14px;\n      color: #666;\n      border-radius: 4px;\n    }\n    \n    #quartix-calculator-widget-es .info-note strong {\n      display: block;\n      margin-bottom: 4px;\n      color: #333;\n    }\n    \n    #quartix-calculator-widget-es .results-section {\n      padding: 20px;\n    }\n    \n    #quartix-calculator-widget-es .results-card {\n      background: #f9f9f9;\n      border-radius: 10px;\n      padding: 25px;\n      margin-bottom: 20px;\n      text-align: center;\n    }\n    \n    #quartix-calculator-widget-es .results-timestamp {\n      font-size: 14px;\n      color: #777;\n      margin-bottom: 15px;\n    }\n    \n    #quartix-calculator-widget-es .total-savings {\n      font-size: 36px;\n      font-weight: 700;\n      color: #4EA863;\n      margin: 20px 0;\n      font-family: 'Inter', sans-serif;\n    }\n    \n    #quartix-calculator-widget-es .savings-period {\n      display: flex;\n      gap: 20px;\n      justify-content: center;\n      margin-bottom: 20px;\n    }\n    \n    #quartix-calculator-widget-es .period-item {\n      text-align: center;\n    }\n    \n    #quartix-calculator-widget-es .period-value {\n      font-size: 24px;\n      font-weight: 600;\n      color: #4EA863;\n      font-family: 'Inter', sans-serif;\n    }\n    \n    #quartix-calculator-widget-es .period-label {\n      font-size: 14px;\n      color: #666;\n    }\n    \n    #quartix-calculator-widget-es .savings-breakdown {\n      display: grid;\n      grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n      gap: 20px;\n      margin-top: 30px;\n      margin-bottom: 30px;\n    }\n    \n    #quartix-calculator-widget-es .savings-item {\n      background: white;\n      padding: 15px;\n      border-radius: 8px;\n      box-shadow: 0 2px 5px rgba(0, 0, 0, 0.05);\n    }\n    \n    #quartix-calculator-widget-es .savings-item h4 {\n      margin: 0 0 10px 0;\n      font-size: 16px;\n    }\n    \n    #quartix-calculator-widget-es .savings-amount {\n      font-size: 24px;\n      font-weight: 700;\n      color: #1F2121;\n      font-family: 'Inter', sans-serif;\n    }\n    \n    #quartix-calculator-widget-es .savings-explanation {\n      font-size: 13px;\n      color: #666;\n      margin-top: 8px;\n      line-height: 1.4;\n    }\n    \n    #quartix-calculator-widget-es .share-results {\n      display: flex;\n      justify-content: center;\n      gap: 20px;\n      margin-top: 25px;\n      margin-bottom: 25px;\n      flex-wrap: wrap;\n    }\n    \n    #quartix-calculator-widget-es .share-button {\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      gap: 10px;\n      padding: 12px 20px;\n      border-radius: 6px;\n      font-size: 16px;\n      font-weight: 400;\n      cursor: pointer;\n      transition: all 0.2s ease;\n      background-color: #fff;\n      color: #333;\n      border: 1px solid #e0e0e0;\n    }\n    \n    #quartix-calculator-widget-es .share-button:hover {\n      background-color: #f5f5f5;\n    }\n    \n    #quartix-calculator-widget-es .share-button svg {\n      width: 20px;\n      height: 20px;\n    }\n    \n    #quartix-calculator-widget-es .copy-link {\n      background-color: #9C27B0;\n      color: white;\n    }\n    \n    #quartix-calculator-widget-es .copy-link:hover {\n      background-color: #7B1FA2;\n    }\n    \n    #quartix-calculator-widget-es .link-copied-notification {\n      position: fixed;\n      top: 20px;\n      left: 50%;\n      transform: translateX(-50%);\n      background-color: #333;\n      color: white;\n      padding: 10px 20px;\n      border-radius: 4px;\n      font-size: 14px;\n      opacity: 0;\n      pointer-events: none;\n      transition: opacity 0.3s ease;\n      z-index: 1000;\n    }\n    \n    #quartix-calculator-widget-es .link-copied-notification.show {\n      opacity: 1;\n    }\n    \n    #quartix-calculator-widget-es .question-row {\n      display: flex;\n      gap: 60px;\n      margin-bottom: 20px;\n    }\n    \n    #quartix-calculator-widget-es .question-col {\n      flex: 1;\n    }\n    \n    #quartix-calculator-widget-es input[type=\"checkbox\"] {\n      -webkit-appearance: none;\n      appearance: none;\n      width: 22px;\n      height: 22px;\n      border: 2px solid #d0d0d0;\n      border-radius: 5px;\n      background-color: white;\n      cursor: pointer;\n      position: relative;\n      transition: all 0.3s ease;\n      flex-shrink: 0;\n      box-shadow: 0 1px 3px rgba(0,0,0,0.1);\n    }\n    \n    #quartix-calculator-widget-es input[type=\"checkbox\"]:hover {\n      border-color: #4EA863;\n      box-shadow: 0 2px 5px rgba(78,168,99,0.2);\n      transform: scale(1.05);\n    }\n    \n    #quartix-calculator-widget-es input[type=\"checkbox\"]:checked {\n      background-color: #4EA863;\n      border-color: #4EA863;\n      box-shadow: 0 2px 5px rgba(78,168,99,0.3);\n    }\n    \n    #quartix-calculator-widget-es input[type=\"checkbox\"]:checked::after {\n      content: '';\n      position: absolute;\n      left: 7px;\n      top: 4px;\n      width: 5px;\n      height: 10px;\n      border: solid white;\n      border-width: 0 2.5px 2.5px 0;\n      transform: rotate(45deg);\n    }\n    \n    #quartix-calculator-widget-es .checkbox-group {\n      margin-bottom: 25px;\n    }\n    \n    #quartix-calculator-widget-es .checkbox-item {\n      margin-bottom: 18px;\n      padding: 16px;\n      background-color: #ffffff;\n      border: 1px solid #e5e5e5;\n      border-radius: 8px;\n      transition: all 0.2s ease;\n    }\n    \n    #quartix-calculator-widget-es .checkbox-item:hover {\n      border-color: #d0eddc;\n      background-color: #fafafa;\n      box-shadow: 0 2px 4px rgba(0,0,0,0.05);\n    }\n    \n    #quartix-calculator-widget-es .checkbox-item label {\n      display: flex;\n      align-items: flex-start;\n      gap: 12px;\n      margin-bottom: 0;\n      background-color: transparent;\n      font-weight: 500;\n      cursor: pointer;\n      color: #333;\n    }\n    \n    #quartix-calculator-widget-es .checkbox-description {\n      font-size: 13px;\n      color: #666;\n      margin-top: 8px;\n      margin-left: 34px;\n      line-height: 1.5;\n    }\n    \n    #quartix-calculator-widget-es .pto-instruction {\n      display: none;\n      background-color: #fef8e8;\n      border: 1px solid #f5e1a6;\n      padding: 12px 14px;\n      margin-top: 10px;\n      margin-left: 34px;\n      border-radius: 6px;\n      font-size: 13px;\n      color: #8b6914;\n      line-height: 1.5;\n    }\n    \n    #quartix-calculator-widget-es .pto-instruction.show {\n      display: block;\n    }\n    \n    #quartix-calculator-widget-es .calculation-note {\n      font-size: 13px;\n      color: #666;\n      margin-top: 10px;\n      font-style: italic;\n    }\n    \n    @media (max-width: 768px) {\n      #quartix-calculator-widget-es .form-row,\n      #quartix-calculator-widget-es .question-row {\n        flex-direction: column;\n        gap: 15px;\n      }\n      #quartix-calculator-widget-es .business-type-selector,\n      #quartix-calculator-widget-es .calculation-type-selector {\n        flex-direction: column;\n      }\n      #quartix-calculator-widget-es .button-group {\n        flex-direction: column;\n        gap: 10px;\n      }\n      #quartix-calculator-widget-es .button {\n        width: 100%;\n      }\n      #quartix-calculator-widget-es .progress-steps {\n        overflow-x: auto;\n      }\n      #quartix-calculator-widget-es .step-label {\n        font-size: 12px;\n      }\n      #quartix-calculator-widget-es .savings-period {\n        flex-direction: column;\n        gap: 10px;\n      }\n      #quartix-calculator-widget-es .checkbox-group {\n        flex-direction: column;\n        gap: 15px;\n      }\n    }\n    \n    #quartix-calculator-widget-es .completion-time {\n      display: flex;\n      align-items: center;\n      margin-bottom: 20px;\n      color: #666;\n      font-size: 14px;\n    }\n    \n    #quartix-calculator-widget-es .completion-time svg {\n      margin-right: 8px;\n      color: #4EA863;\n    }\n    \n    #quartix-calculator-widget-es .personal-greeting {\n      margin: 15px 0;\n      font-size: 18px;\n    }\n    \n    #quartix-calculator-widget-es .roi-section {\n      margin-top: 40px;\n      background-color: #f8f8f8;\n      padding: 20px;\n      border-radius: 8px;\n    }\n    \n    #quartix-calculator-widget-es .roi-section h3 {\n      text-align: center;\n      margin-bottom: 20px;\n      color: #333;\n    }\n    \n    #quartix-calculator-widget-es .roi-details {\n      display: grid;\n      grid-template-columns: 1fr 1fr;\n      gap: 15px;\n      margin-bottom: 25px;\n    }\n    \n    @media (max-width: 768px) {\n      #quartix-calculator-widget-es .roi-details {\n        grid-template-columns: 1fr;\n      }\n    }\n    \n    #quartix-calculator-widget-es .roi-item {\n      background-color: white;\n      padding: 15px;\n      border-radius: 6px;\n      box-shadow: 0 2px 4px rgba(0,0,0,0.05);\n    }\n    \n    #quartix-calculator-widget-es .roi-item.highlight {\n      background-color: #edf7f1;\n      border: 1px solid #4EA863;\n    }\n    \n    #quartix-calculator-widget-es .roi-label {\n      font-weight: 600;\n      margin-bottom: 5px;\n      color: #666;\n    }\n    \n    #quartix-calculator-widget-es .roi-value {\n      font-size: 18px;\n      font-weight: 700;\n      color: #333;\n    }\n    \n    #quartix-calculator-widget-es .roi-item.highlight .roi-value {\n      color: #4EA863;\n      font-size: 22px;\n    }\n    \n    #quartix-calculator-widget-es .roi-payback {\n      text-align: center;\n      margin-top: 20px;\n      font-size: 16px;\n    }\n    \n    #quartix-calculator-widget-es .roi-payback span {\n      font-weight: 700;\n      color: #4EA863;\n    }\n\n    #quartix-calculator-widget-es .quartix-logo {\n      display: block;\n      margin: 0 auto 20px;\n      height: 45px;\n    }\n    \n    #quartix-calculator-widget-es .calculator-progress {\n      display: none;\n      margin-bottom: 25px;\n      background-color: #f5f5f5;\n      padding: 20px;\n      border-radius: 8px;\n    }\n    \n    #quartix-calculator-widget-es .calculator-progress.active {\n      display: block;\n    }\n    \n    #quartix-calculator-widget-es .calculator-progress-header {\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n      margin-bottom: 12px;\n    }\n    \n    #quartix-calculator-widget-es .calculator-progress-title {\n      font-size: 14px;\n      font-weight: 600;\n      color: #333;\n    }\n    \n    #quartix-calculator-widget-es .calculator-progress-percentage {\n      font-size: 14px;\n      font-weight: 700;\n      color: #4EA863;\n    }\n    \n    #quartix-calculator-widget-es .calculator-progress-bar {\n      width: 100%;\n      height: 8px;\n      background-color: #e0e0e0;\n      border-radius: 4px;\n      overflow: hidden;\n      position: relative;\n    }\n    \n    #quartix-calculator-widget-es .calculator-progress-fill {\n      height: 100%;\n      background-color: #4EA863;\n      border-radius: 4px;\n      transition: width 0.3s ease;\n      position: relative;\n    }\n    \n    #quartix-calculator-widget-es .calculator-progress-fill::after {\n      content: '';\n      position: absolute;\n      top: 0;\n      left: 0;\n      bottom: 0;\n      right: 0;\n      background: linear-gradient(\n        45deg,\n        rgba(255, 255, 255, 0.15) 25%,\n        transparent 25%,\n        transparent 50%,\n        rgba(255, 255, 255, 0.15) 50%,\n        rgba(255, 255, 255, 0.15) 75%,\n        transparent 75%,\n        transparent\n      );\n      background-size: 15px 15px;\n      animation: qcalcEsMove 1s linear infinite;\n      opacity: 0.5;\n    }\n    \n    @keyframes qcalcEsMove {\n      0% { background-position: 0 0; }\n      100% { background-position: 15px 15px; }\n    }\n    \n    #quartix-calculator-widget-es .private-mileage-cost,\n    #quartix-calculator-widget-es .reactive-work-cost,\n    #quartix-calculator-widget-es .billing-disputes-cost,\n    #quartix-calculator-widget-es .time-on-site-cost,\n    #quartix-calculator-widget-es .idle-time-cost,\n    #quartix-calculator-widget-es .standing-time-cost,\n    #quartix-calculator-widget-es .extra-jobs-cost {\n      font-size: 18px;\n      margin-top: 20px;\n      padding: 15px;\n      background-color: #edf7f1;\n      border-radius: 6px;\n      text-align: center;\n    }\n  <\/style>\n  \n  <!-- Progress Steps -->\n  <div class=\"progress-steps\" id=\"es-progress-container\">\n    <div class=\"progress-step active\" data-step=\"1\">\n      <div class=\"step-circle\">1<\/div>\n      <div class=\"step-label\">Tipo de Empresa<\/div>\n    <\/div>\n    <div class=\"progress-step\" data-step=\"2\">\n      <div class=\"step-circle\">2<\/div>\n      <div class=\"step-label\">Calcular Ahorro<\/div>\n    <\/div>\n    <div class=\"progress-step\" data-step=\"3\">\n      <div class=\"step-circle\">3<\/div>\n      <div class=\"step-label\">Sus Datos<\/div>\n    <\/div>\n    <div class=\"progress-step\" data-step=\"4\">\n      <div class=\"step-circle\">4<\/div>\n      <div class=\"step-label\">Resultados<\/div>\n    <\/div>\n  <\/div>\n\n  <!-- Business Type Selection Section -->\n  <div class=\"calculator-section active\" id=\"es-section-0\">\n    <div class=\"contact-form\">\n      <div class=\"form-group\">\n        <h3>\u00bfQu\u00e9 tipo de negocio opera?<\/h3>\n        \n        <div class=\"disclaimer-box\">\n          <strong>Aviso:<\/strong> Los ahorros calculados son estimaciones orientativas basadas en medias del sector. Los ahorros reales pueden variar seg\u00fan sus circunstancias espec\u00edficas, patrones de conducci\u00f3n y factores operativos. Quartix no garantiza que alcanzar\u00e1 los ahorros exactos mostrados.\n        <\/div>\n        \n        <div class=\"completion-time\">\n          <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <circle cx=\"12\" cy=\"12\" r=\"10\"><\/circle>\n            <polyline points=\"12 6 12 12 16 14\"><\/polyline>\n          <\/svg>\n          Tiempo estimado para completar: 5 minutos\n        <\/div>\n        \n        <div class=\"business-type-selector\">\n          <div class=\"business-type-option active\" data-type=\"service\" onclick=\"QCalcES.selectBusinessType(event, 'service')\">\n            <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n              <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0h5M9 7h1m-1 4h1m4-4h1m-1 4h1m-5 10v-5a1 1 0 011-1h2a1 1 0 011 1v5m-4 0h4\"><\/path>\n            <\/svg>\n            <h4>Negocio de Servicios<\/h4>\n            <p>Servicio t\u00e9cnico, construcci\u00f3n, mantenimiento, instalaci\u00f3n, etc.<\/p>\n          <\/div>\n          <div class=\"business-type-option\" data-type=\"transport\" onclick=\"QCalcES.selectBusinessType(event, 'transport')\">\n            <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n              <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 7h12m0 0l-4-4m4 4l-4 4m0 6H4m0 0l4 4m-4-4l4-4\"><\/path>\n            <\/svg>\n            <h4>Negocio de Transporte<\/h4>\n            <p>Log\u00edstica, entregas, transporte de mercanc\u00edas, etc.<\/p>\n          <\/div>\n        <\/div>\n      <\/div>\n      \n      <div class=\"form-row\">\n        <div class=\"form-col\">\n          <div class=\"form-group\">\n            <label for=\"es-totalVehicles\">N\u00famero Total de Veh\u00edculos *<\/label>\n            <input type=\"number\" id=\"es-totalVehicles\" min=\"1\" value=\"5\" required>\n            <div class=\"error-message\" id=\"es-totalVehicles-error\">Por favor, introduzca el n\u00famero de veh\u00edculos<\/div>\n          <\/div>\n        <\/div>\n        <div class=\"form-col\">\n          <div class=\"form-group\">\n            <label for=\"es-totalEmployees\">N\u00famero de empleados que utilizan veh\u00edculos de empresa *<\/label>\n            <input type=\"number\" id=\"es-totalEmployees\" min=\"1\" value=\"5\" required>\n            <div class=\"error-message\" id=\"es-totalEmployees-error\">Por favor, introduzca el n\u00famero de empleados<\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n      \n      <div class=\"button-group\">\n        <div><\/div>\n        <button class=\"button button-next\" id=\"es-next-to-calculator\" onclick=\"QCalcES.goToCalculator(event)\">Siguiente<\/button>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <!-- Calculator Inputs Section -->\n  <div class=\"calculator-section\" id=\"es-section-2\">\n    <div class=\"calculator-progress\" id=\"es-calculator-progress\">\n      <div class=\"calculator-progress-header\">\n        <div class=\"calculator-progress-title\">Progreso del C\u00e1lculo<\/div>\n        <div class=\"calculator-progress-percentage\" id=\"es-calculator-percentage\">0%<\/div>\n      <\/div>\n      <div class=\"calculator-progress-bar\">\n        <div class=\"calculator-progress-fill\" id=\"es-calculator-progress-fill\" style=\"width: 0%\"><\/div>\n      <\/div>\n    <\/div>\n    \n    <!-- Service Business Calculator -->\n    <div id=\"es-service-calculator\">\n      <!-- Private Mileage -->\n      <div class=\"calculator-card active\" id=\"es-private-mileage-card\">\n        <div class=\"section-header\">\n          <h3>Ahorro por uso privado del veh\u00edculo<\/h3>\n          <div class=\"tooltip\" data-tooltip=\"Reducir el kilometraje privado ahorra costes de combustible y evita el desgaste innecesario del veh\u00edculo\">\n            <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n              <circle cx=\"12\" cy=\"12\" r=\"10\"><\/circle>\n              <path d=\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\"><\/path>\n              <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\"><\/line>\n            <\/svg>\n          <\/div>\n        <\/div>\n        \n        <p>Una de las diferencias m\u00e1s notables que notar\u00e1 al instalar el sistema de localizaci\u00f3n Quartix ser\u00e1 una disminuci\u00f3n significativa del kilometraje privado fuera del horario laboral. Antes de instalar el sistema Quartix, nuestros clientes observaban t\u00edpicamente un media de 80 kil\u00f3metros por veh\u00edculo por semana solo en kilometraje privado.<\/p>\n        \n        <div class=\"question-row\">\n          <div class=\"question-col\">\n            <div class=\"form-group\">\n              <label for=\"es-vehiclesUsedPrivately\">De los veh\u00edculos que especific\u00f3, \u00bfCu\u00e1ntos se utilizan para uso privado?<\/label>\n              <div class=\"slider-with-value\">\n                <div class=\"slider-container\">\n                  <input type=\"range\" id=\"es-vehiclesUsedPrivatelyRange\" min=\"0\" max=\"5\" value=\"2\">\n                <\/div>\n                <input type=\"number\" id=\"es-vehiclesUsedPrivately\" class=\"slider-value\" min=\"0\" max=\"5\" value=\"2\">\n              <\/div>\n            <\/div>\n          <\/div>\n          <div class=\"question-col\">\n            <div class=\"form-group\">\n              <label for=\"es-averagePrivateKmPerWeek\">Kil\u00f3metros privados media por semana, por veh\u00edculo<\/label>\n              <div class=\"slider-with-value\">\n                <div class=\"slider-container\">\n                  <input type=\"range\" id=\"es-averagePrivateKmPerWeekRange\" min=\"0\" max=\"500\" value=\"80\">\n                <\/div>\n                <input type=\"number\" id=\"es-averagePrivateKmPerWeek\" class=\"slider-value\" min=\"0\" value=\"80\">\n              <\/div>\n            <\/div>\n          <\/div>\n        <\/div>\n        \n        <div class=\"question-row\">\n          <div class=\"question-col\">\n            <div class=\"form-group\">\n              <label for=\"es-averageL100km\">Consumo medio de combustible (L\/100 km)<\/label>\n              <div class=\"slider-with-value\">\n                <div class=\"slider-container\">\n                  <input type=\"range\" id=\"es-averageL100kmRange\" min=\"4\" max=\"20\" step=\"0.5\" value=\"7.5\">\n                <\/div>\n                <input type=\"number\" id=\"es-averageL100km\" class=\"slider-value\" min=\"4\" step=\"0.1\" value=\"7.5\">\n              <\/div>\n            <\/div>\n          <\/div>\n          <div class=\"question-col\">\n            <div class=\"form-group\">\n              <label for=\"es-fuelCostPerLitre\">Coste del combustible por litro<\/label>\n              <div class=\"currency-input-wrapper\">\n                <span class=\"currency-symbol\">\u20ac<\/span>\n                <input type=\"number\" id=\"es-fuelCostPerLitre\" class=\"currency-input\" min=\"1\" max=\"3\" step=\"0.01\" value=\"1.60\">\n              <\/div>\n            <\/div>\n          <\/div>\n        <\/div>\n        \n        <div class=\"private-mileage-cost\">\n          <strong>Coste anual del combustible por uso privado:<\/strong>\n          <span id=\"es-privateMileageCost\">\u20ac0,00<\/span>\n        <\/div>\n        \n        <div class=\"calculation-note\">\n          Basado en: <span id=\"es-privateMileageCalc\"><\/span>\n        <\/div>\n        \n        <div class=\"info-note\">\n          <strong>Beneficios Adicionales:<\/strong>\n          La reducci\u00f3n del kilometraje privado tambi\u00e9n puede contribuir al ahorro en mantenimiento mediante la reducci\u00f3n del desgaste de sus veh\u00edculos. Aunque no se incluye en el c\u00e1lculo anterior, esto puede proporcionar beneficios adicionales para las operaciones de su flota.\n        <\/div>\n        \n        <div class=\"button-group\">\n          <button class=\"button button-prev\" id=\"es-full-back-to-contact\" onclick=\"QCalcES.goToStep(1)\">Anterior<\/button>\n          <button class=\"button button-next next-card\" data-next=\"es-time-on-site-card\" onclick=\"QCalcES.nextCard(event, 'service')\">Siguiente<\/button>\n        <\/div>\n      <\/div>\n      \n      <!-- Time Accountability -->\n      <div class=\"calculator-card\" id=\"es-time-on-site-card\">\n        <div class=\"section-header\">\n          <h3>Ahorro en productividad<\/h3>\n          <div class=\"tooltip\" data-tooltip=\"El seguimiento asegura que sus empleados maximicen el tiempo productivo y reduce los minutos perdidos\">\n            <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n              <circle cx=\"12\" cy=\"12\" r=\"10\"><\/circle>\n              <path d=\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\"><\/path>\n              <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\"><\/line>\n            <\/svg>\n          <\/div>\n        <\/div>\n        \n        <p>Cuando los empleados llegan tarde a un trabajo, se van temprano o hacen pausas no autorizadas, los minutos perdidos por d\u00eda se acumulan r\u00e1pidamente. Con el sistema de localizaci\u00f3n Quartix, puede mejorar la responsabilidad y reducir estos minutos perdidos, convirti\u00e9ndolos en tiempo productivo.<\/p>\n        \n        <div class=\"question-row\">\n          <div class=\"question-col\">\n            <div class=\"form-group\">\n              <label for=\"es-minutesLostPerDay\">Minutos perdidos por d\u00eda por empleado<\/label>\n              <div class=\"slider-with-value\">\n                <div class=\"slider-container\">\n                  <input type=\"range\" id=\"es-minutesLostPerDayRange\" min=\"5\" max=\"120\" value=\"30\">\n                <\/div>\n                <input type=\"number\" id=\"es-minutesLostPerDay\" class=\"slider-value\" min=\"5\" value=\"30\">\n              <\/div>\n            <\/div>\n          <\/div>\n          <div class=\"question-col\">\n            <div class=\"form-group\">\n              <label for=\"es-employeeHourlyRate\">Tarifa media por hora del empleado<\/label>\n              <div class=\"currency-input-wrapper\">\n                <span class=\"currency-symbol\">\u20ac<\/span>\n                <input type=\"number\" id=\"es-employeeHourlyRate\" class=\"currency-input\" min=\"10\" value=\"12\">\n              <\/div>\n            <\/div>\n          <\/div>\n        <\/div>\n        \n        <div class=\"form-group\">\n          <label for=\"es-workingDaysPerWeek\">D\u00edas laborables por semana<\/label>\n          <div class=\"slider-with-value\">\n            <div class=\"slider-container\">\n              <input type=\"range\" id=\"es-workingDaysPerWeekRange\" min=\"1\" max=\"7\" value=\"5\">\n            <\/div>\n            <input type=\"number\" id=\"es-workingDaysPerWeek\" class=\"slider-value\" min=\"1\" max=\"7\" value=\"5\">\n          <\/div>\n        <\/div>\n        \n        <div class=\"time-on-site-cost\">\n          <strong>Coste de productividad perdida al a\u00f1o:<\/strong>\n          <span id=\"es-timeOnSiteCost\">\u20ac0,00<\/span>\n        <\/div>\n        \n        <div class=\"calculation-note\">\n          Basado en: <span id=\"es-timeOnSiteCalc\"><\/span>\n        <\/div>\n        \n        <div class=\"button-group\">\n          <button class=\"button button-prev prev-card\" data-prev=\"es-private-mileage-card\" onclick=\"QCalcES.prevCard(event, 'service')\">Anterior<\/button>\n          <button class=\"button button-next next-card\" data-next=\"es-service-idle-time-card\" onclick=\"QCalcES.nextCard(event, 'service')\">Siguiente<\/button>\n        <\/div>\n      <\/div>\n      \n      <!-- Idle Time -->\n      <div class=\"calculator-card\" id=\"es-service-idle-time-card\">\n        <div class=\"section-header\">\n          <h3>Ahorro por reducci\u00f3n del ralent\u00ed<\/h3>\n          <div class=\"tooltip\" data-tooltip=\"Reducir el tiempo de ralent\u00ed del veh\u00edculo ahorra combustible y aumenta la productividad\">\n            <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n              <circle cx=\"12\" cy=\"12\" r=\"10\"><\/circle>\n              <path d=\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\"><\/path>\n              <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\"><\/line>\n            <\/svg>\n          <\/div>\n        <\/div>\n        \n        <p>Los veh\u00edculos con el motor en marcha mientras est\u00e1n detenidos desperdician combustible, generan emisiones innecesarias y representan tiempo improductivo. El sistema de localizaci\u00f3n Quartix ayuda a identificar y reducir estos casos.<\/p>\n        \n        <div class=\"checkbox-group\">\n          <div class=\"checkbox-item\">\n            <label>\n              <input type=\"checkbox\" id=\"es-serviceNoStartStop\" onchange=\"QCalcES.toggleServiceStartStop(event)\">\n              <span>Mis veh\u00edculos NO cuentan con tecnolog\u00eda start-stop<\/span>\n            <\/label>\n            <div class=\"checkbox-description\">\n              La tecnolog\u00eda start-stop apaga autom\u00e1ticamente el motor cuando el veh\u00edculo est\u00e1 parado, reduciendo el consumo de combustible durante el tiempo de ralent\u00ed. La mayor\u00eda de los veh\u00edculos modernos (2015+) tienen esta funci\u00f3n.\n            <\/div>\n          <\/div>\n          \n          <div class=\"checkbox-item\">\n            <label>\n              <input type=\"checkbox\" id=\"es-serviceUsesPTO\" onchange=\"QCalcES.toggleServicePTO(event)\">\n              <span>Mi flota utiliza sistemas PTO (Toma de Fuerza)<\/span>\n            <\/label>\n            <div class=\"checkbox-description\">\n              Los sistemas PTO alimentan equipos auxiliares mientras el veh\u00edculo est\u00e1 parado. Ejemplos incluyen hormigoneras, elevadores de carga, cajas basculantes o unidades de refrigeraci\u00f3n.\n            <\/div>\n            <div class=\"pto-instruction\" id=\"es-servicePTOInstruction\">\n              Por favor, aseg\u00farese de que los minutos en modo PTO NO se incluyan en el tiempo de ralent\u00ed diario que introduzca a continuaci\u00f3n. Los datos de seguimiento mostrar\u00e1n los eventos PTO por separado, pero esta calculadora solo estima el combustible utilizado durante el ralent\u00ed real.\n            <\/div>\n          <\/div>\n        <\/div>\n        \n        <div class=\"form-group\">\n          <label for=\"es-serviceMinutesIdlePerDay\">Minutos de ralent\u00ed por d\u00eda por veh\u00edculo<\/label>\n          <div class=\"slider-with-value\">\n            <div class=\"slider-container\">\n              <input type=\"range\" id=\"es-serviceMinutesIdlePerDayRange\" min=\"0\" max=\"120\" value=\"20\">\n            <\/div>\n            <input type=\"number\" id=\"es-serviceMinutesIdlePerDay\" class=\"slider-value\" min=\"0\" value=\"20\">\n          <\/div>\n        <\/div>\n        \n        <div class=\"idle-time-cost\">\n          <strong>Coste anual del tiempo de ralent\u00ed:<\/strong>\n          <span id=\"es-serviceIdleTimeCost\">\u20ac0,00<\/span>\n        <\/div>\n        \n        <div class=\"calculation-note\">\n          Basado en: <span id=\"es-serviceIdleTimeCalc\"><\/span>\n        <\/div>\n        \n        <div class=\"button-group\">\n          <button class=\"button button-prev prev-card\" data-prev=\"es-time-on-site-card\" onclick=\"QCalcES.prevCard(event, 'service')\">Anterior<\/button>\n          <button class=\"button button-next next-card\" data-next=\"es-reactive-work-card\" onclick=\"QCalcES.nextCard(event, 'service')\">Siguiente<\/button>\n        <\/div>\n      <\/div>\n      \n      <!-- Reactive Work -->\n      <div class=\"calculator-card\" id=\"es-reactive-work-card\">\n        <div class=\"section-header\">\n          <h3>Oportunidades perdidas por gesti\u00f3n reactiva<\/h3>\n          <div class=\"tooltip\" data-tooltip=\"El seguimiento de veh\u00edculos le ayuda a identificar al t\u00e9cnico m\u00e1s cercano a un lugar de trabajo\">\n            <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n              <circle cx=\"12\" cy=\"12\" r=\"10\"><\/circle>\n              <path d=\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\"><\/path>\n              <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\"><\/line>\n            <\/svg>\n          <\/div>\n        <\/div>\n        \n        <p>Gestionar su flota sin un sistema de localizaci\u00f3n puede hacer que no sepa d\u00f3nde est\u00e1n sus veh\u00edculos en ruta. Al intentar asignar conductores a un trabajo, puede resultar innecesariamente dif\u00edcil contactar con sus conductores, y como resultado puede perder trabajos.<\/p>\n        \n        <div class=\"question-row\">\n          <div class=\"question-col\">\n            <div class=\"form-group\">\n              <label for=\"es-missedJobsPerWeek\">\u00bfCu\u00e1ntos trabajos pierde por semana?<\/label>\n              <div class=\"slider-with-value\">\n                <div class=\"slider-container\">\n                  <input type=\"range\" id=\"es-missedJobsPerWeekRange\" min=\"0\" max=\"50\" value=\"3\">\n                <\/div>\n                <input type=\"number\" id=\"es-missedJobsPerWeek\" class=\"slider-value\" min=\"0\" value=\"3\">\n              <\/div>\n            <\/div>\n          <\/div>\n          <div class=\"question-col\">\n            <div class=\"form-group\">\n              <label for=\"es-averageJobPrice\">\u00bfCu\u00e1l ser\u00eda el precio medio de un trabajo?<\/label>\n              <div class=\"currency-input-wrapper\">\n                <span class=\"currency-symbol\">\u20ac<\/span>\n                <input type=\"number\" id=\"es-averageJobPrice\" class=\"currency-input\" min=\"50\" value=\"120\">\n              <\/div>\n            <\/div>\n          <\/div>\n        <\/div>\n        \n        <div class=\"reactive-work-cost\">\n          <strong>Coste de trabajos perdidos al a\u00f1o:<\/strong>\n          <span id=\"es-reactiveWorkCost\">\u20ac0,00<\/span>\n        <\/div>\n        \n        <div class=\"calculation-note\">\n          Basado en: <span id=\"es-reactiveWorkCalc\"><\/span>\n        <\/div>\n        \n        <div class=\"button-group\">\n          <button class=\"button button-prev prev-card\" data-prev=\"es-service-idle-time-card\" onclick=\"QCalcES.prevCard(event, 'service')\">Anterior<\/button>\n          <button class=\"button button-next next-card\" data-next=\"es-billing-disputes-card\" onclick=\"QCalcES.nextCard(event, 'service')\">Siguiente<\/button>\n        <\/div>\n      <\/div>\n      \n      <!-- Billing Disputes -->\n      <div class=\"calculator-card\" id=\"es-billing-disputes-card\">\n        <div class=\"section-header\">\n          <h3>Prevenci\u00f3n de Reclamaciones de Facturaci\u00f3n<\/h3>\n          <div class=\"tooltip\" data-tooltip=\"El seguimiento de veh\u00edculos proporciona evidencia del tiempo pasado en el lugar para resolver reclamaciones\">\n            <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n              <circle cx=\"12\" cy=\"12\" r=\"10\"><\/circle>\n              <path d=\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\"><\/path>\n              <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\"><\/line>\n            <\/svg>\n          <\/div>\n        <\/div>\n        \n        <p>Demostrar que su conductor o empleado asisti\u00f3 a un trabajo que ha facturado puede generar reclamaciones. Con los informes de seguimiento de Quartix, usted est\u00e1 respaldado al poder demostrar con precisi\u00f3n las horas de llegada y finalizaci\u00f3n. Nuestros clientes suelen recibir una media de una consulta de facturaci\u00f3n por semana.<\/p>\n        \n        <div class=\"question-row\">\n          <div class=\"question-col\">\n            <div class=\"form-group\">\n              <label for=\"es-disputesPerMonth\">\u00bfCu\u00e1ntas reclamaciones tiene al mes?<\/label>\n              <div class=\"slider-with-value\">\n                <div class=\"slider-container\">\n                  <input type=\"range\" id=\"es-disputesPerMonthRange\" min=\"0\" max=\"20\" value=\"2\">\n                <\/div>\n                <input type=\"number\" id=\"es-disputesPerMonth\" class=\"slider-value\" min=\"0\" value=\"2\">\n              <\/div>\n            <\/div>\n          <\/div>\n          <div class=\"question-col\">\n            <div class=\"form-group\">\n              <label for=\"es-averageDisputeCost\">\u00bfCu\u00e1nto le costar\u00eda cada reclamaci\u00f3n?<\/label>\n              <div class=\"currency-input-wrapper\">\n                <span class=\"currency-symbol\">\u20ac<\/span>\n                <input type=\"number\" id=\"es-averageDisputeCost\" class=\"currency-input\" min=\"50\" value=\"80\">\n              <\/div>\n            <\/div>\n          <\/div>\n        <\/div>\n        \n        <div class=\"billing-disputes-cost\">\n          <strong>Coste anual de las reclamaciones:<\/strong>\n          <span id=\"es-billingDisputesCost\">\u20ac0,00<\/span>\n        <\/div>\n        \n        <div class=\"calculation-note\">\n          Basado en: <span id=\"es-billingDisputesCalc\"><\/span>\n        <\/div>\n        \n        <div class=\"button-group\">\n          <button class=\"button button-prev prev-card\" data-prev=\"es-reactive-work-card\" onclick=\"QCalcES.prevCard(event, 'service')\">Anterior<\/button>\n          <button class=\"button button-next\" id=\"es-service-calculate-results\" onclick=\"QCalcES.goToContactForm(event)\">Calcular Ahorro<\/button>\n        <\/div>\n      <\/div>\n    <\/div>\n    \n    <!-- Transport Business Calculator -->\n    <div id=\"es-transport-calculator\" style=\"display: none;\">\n      <!-- Private Mileage -->\n      <div class=\"calculator-card active\" id=\"es-transport-private-mileage-card\">\n        <div class=\"section-header\">\n          <h3>Ahorro por uso privado del veh\u00edculo<\/h3>\n          <div class=\"tooltip\" data-tooltip=\"Reducir el kilometraje privado ahorra costes de combustible y evita el desgaste innecesario del veh\u00edculo\">\n            <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n              <circle cx=\"12\" cy=\"12\" r=\"10\"><\/circle>\n              <path d=\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\"><\/path>\n              <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\"><\/line>\n            <\/svg>\n          <\/div>\n        <\/div>\n        \n        <p>Una de las diferencias m\u00e1s notables que notar\u00e1 al instalar el sistema de localizaci\u00f3n Quartix ser\u00e1 una disminuci\u00f3n significativa del kilometraje privado fuera del horario laboral. Antes de instalar el sistema Quartix, nuestros clientes observaban t\u00edpicamente un media de 80 kil\u00f3metros por veh\u00edculo por semana solo en kilometraje privado.<\/p>\n        \n        <div class=\"question-row\">\n          <div class=\"question-col\">\n            <div class=\"form-group\">\n              <label for=\"es-transportVehiclesUsedPrivately\">De los veh\u00edculos que especific\u00f3, \u00bfCu\u00e1ntos se utilizan para uso privado?<\/label>\n              <div class=\"slider-with-value\">\n                <div class=\"slider-container\">\n                  <input type=\"range\" id=\"es-transportVehiclesUsedPrivatelyRange\" min=\"0\" max=\"5\" value=\"2\">\n                <\/div>\n                <input type=\"number\" id=\"es-transportVehiclesUsedPrivately\" class=\"slider-value\" min=\"0\" max=\"5\" value=\"2\">\n              <\/div>\n            <\/div>\n          <\/div>\n          <div class=\"question-col\">\n            <div class=\"form-group\">\n              <label for=\"es-transportAveragePrivateKmPerWeek\">Kil\u00f3metros privados media por semana, por veh\u00edculo<\/label>\n              <div class=\"slider-with-value\">\n                <div class=\"slider-container\">\n                  <input type=\"range\" id=\"es-transportAveragePrivateKmPerWeekRange\" min=\"0\" max=\"500\" value=\"80\">\n                <\/div>\n                <input type=\"number\" id=\"es-transportAveragePrivateKmPerWeek\" class=\"slider-value\" min=\"0\" value=\"80\">\n              <\/div>\n            <\/div>\n          <\/div>\n        <\/div>\n        \n        <div class=\"question-row\">\n          <div class=\"question-col\">\n            <div class=\"form-group\">\n              <label for=\"es-transportAverageL100km\">Consumo medio de combustible (L\/100 km)<\/label>\n              <div class=\"slider-with-value\">\n                <div class=\"slider-container\">\n                  <input type=\"range\" id=\"es-transportAverageL100kmRange\" min=\"4\" max=\"20\" step=\"0.5\" value=\"7.5\">\n                <\/div>\n                <input type=\"number\" id=\"es-transportAverageL100km\" class=\"slider-value\" min=\"4\" step=\"0.1\" value=\"7.5\">\n              <\/div>\n            <\/div>\n          <\/div>\n          <div class=\"question-col\">\n            <div class=\"form-group\">\n              <label for=\"es-transportFuelCostPerLitre\">Coste del combustible por litro<\/label>\n              <div class=\"currency-input-wrapper\">\n                <span class=\"currency-symbol\">\u20ac<\/span>\n                <input type=\"number\" id=\"es-transportFuelCostPerLitre\" class=\"currency-input\" min=\"1\" max=\"3\" step=\"0.01\" value=\"1.60\">\n              <\/div>\n            <\/div>\n          <\/div>\n        <\/div>\n        \n        <div class=\"private-mileage-cost\">\n          <strong>Coste anual del combustible por uso privado:<\/strong>\n          <span id=\"es-transportPrivateMileageCost\">\u20ac0,00<\/span>\n        <\/div>\n        \n        <div class=\"calculation-note\">\n          Basado en: <span id=\"es-transportPrivateMileageCalc\"><\/span>\n        <\/div>\n        \n        <div class=\"info-note\">\n          <strong>Beneficios Adicionales:<\/strong>\n          La reducci\u00f3n del kilometraje privado tambi\u00e9n puede contribuir al ahorro en mantenimiento mediante la reducci\u00f3n del desgaste de sus veh\u00edculos. Aunque no se incluye en el c\u00e1lculo anterior, esto puede proporcionar beneficios adicionales para las operaciones de su flota.\n        <\/div>\n        \n        <div class=\"button-group\">\n          <button class=\"button button-prev\" id=\"es-transport-back-to-business\" onclick=\"QCalcES.goToStep(1)\">Anterior<\/button>\n          <button class=\"button button-next next-card\" data-next=\"es-standing-time-card\" onclick=\"QCalcES.nextCard(event, 'transport')\">Siguiente<\/button>\n        <\/div>\n      <\/div>\n      \n      <!-- Standing Time \/ Demoras -->\n      <div class=\"calculator-card\" id=\"es-standing-time-card\">\n        <div class=\"section-header\">\n          <h3>Recuperaci\u00f3n de Demoras<\/h3>\n          <div class=\"tooltip\" data-tooltip=\"Las demoras cuestan a su negocio en t\u00e9rminos de productividad y oportunidades perdidas\">\n            <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n              <circle cx=\"12\" cy=\"12\" r=\"10\"><\/circle>\n              <path d=\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\"><\/path>\n              <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\"><\/line>\n            <\/svg>\n          <\/div>\n        <\/div>\n        \n        <p>Las demoras (tiempo de espera innecesario) cuestan a su negocio en t\u00e9rminos de productividad de los empleados y oportunidades perdidas. El sistema de localizaci\u00f3n Quartix ayuda a identificar este tiempo perdido, y nuestros informes pueden utilizarse para recuperar fondos de los almacenes seg\u00fan su acuerdo de nivel de servicio.<\/p>\n        \n        <div class=\"question-row\">\n          <div class=\"question-col\">\n            <div class=\"form-group\">\n              <label for=\"es-minutesStandingPerDay\">Minutos de demora por d\u00eda por veh\u00edculo<\/label>\n              <div class=\"slider-with-value\">\n                <div class=\"slider-container\">\n                  <input type=\"range\" id=\"es-minutesStandingPerDayRange\" min=\"0\" max=\"120\" value=\"30\">\n                <\/div>\n                <input type=\"number\" id=\"es-minutesStandingPerDay\" class=\"slider-value\" min=\"0\" value=\"30\">\n              <\/div>\n            <\/div>\n          <\/div>\n          <div class=\"question-col\">\n            <div class=\"form-group\">\n              <label for=\"es-averageRatePerHour\">\u00bfCu\u00e1l es su tarifa media por hora?<\/label>\n              <div class=\"currency-input-wrapper\">\n                <span class=\"currency-symbol\">\u20ac<\/span>\n                <input type=\"number\" id=\"es-averageRatePerHour\" class=\"currency-input\" min=\"10\" value=\"18\">\n              <\/div>\n            <\/div>\n          <\/div>\n        <\/div>\n        \n        <div class=\"form-group\">\n          <label for=\"es-transportWorkingDaysPerWeek\">\u00bfCu\u00e1ntos d\u00edas a la semana operan sus veh\u00edculos?<\/label>\n          <div class=\"slider-with-value\">\n            <div class=\"slider-container\">\n              <input type=\"range\" id=\"es-transportWorkingDaysPerWeekRange\" min=\"1\" max=\"7\" value=\"5\">\n            <\/div>\n            <input type=\"number\" id=\"es-transportWorkingDaysPerWeek\" class=\"slider-value\" min=\"1\" max=\"7\" value=\"5\">\n          <\/div>\n        <\/div>\n        \n        <div class=\"standing-time-cost\">\n          <strong>Coste de demoras al a\u00f1o:<\/strong>\n          <span id=\"es-standingTimeCost\">\u20ac0,00<\/span>\n        <\/div>\n        \n        <div class=\"calculation-note\">\n          Basado en: <span id=\"es-standingTimeCalc\"><\/span>\n        <\/div>\n        \n        <div class=\"button-group\">\n          <button class=\"button button-prev prev-card\" data-prev=\"es-transport-private-mileage-card\" onclick=\"QCalcES.prevCard(event, 'transport')\">Anterior<\/button>\n          <button class=\"button button-next next-card\" data-next=\"es-idle-time-card\" onclick=\"QCalcES.nextCard(event, 'transport')\">Siguiente<\/button>\n        <\/div>\n      <\/div>\n      \n      <!-- Idle Time -->\n      <div class=\"calculator-card\" id=\"es-idle-time-card\">\n        <div class=\"section-header\">\n          <h3>Ahorro por reducci\u00f3n del ralent\u00ed<\/h3>\n          <div class=\"tooltip\" data-tooltip=\"Reducir el tiempo de ralent\u00ed del veh\u00edculo ahorra combustible y aumenta la productividad\">\n            <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n              <circle cx=\"12\" cy=\"12\" r=\"10\"><\/circle>\n              <path d=\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\"><\/path>\n              <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\"><\/line>\n            <\/svg>\n          <\/div>\n        <\/div>\n        \n        <p>Los veh\u00edculos con el motor en marcha mientras est\u00e1n detenidos desperdician combustible, generan emisiones innecesarias y representan tiempo improductivo. El sistema de localizaci\u00f3n Quartix ayuda a identificar y reducir estos casos.<\/p>\n        \n        <div class=\"checkbox-group\">\n          <div class=\"checkbox-item\">\n            <label>\n              <input type=\"checkbox\" id=\"es-noStartStop\" onchange=\"QCalcES.toggleFuelCostQuestion(event)\">\n              <span>Mis veh\u00edculos NO cuentan con tecnolog\u00eda start-stop<\/span>\n            <\/label>\n            <div class=\"checkbox-description\">\n              La tecnolog\u00eda start-stop apaga autom\u00e1ticamente el motor cuando el veh\u00edculo est\u00e1 parado, reduciendo el consumo de combustible durante el tiempo de ralent\u00ed. La mayor\u00eda de los veh\u00edculos modernos (2015+) tienen esta funci\u00f3n.\n            <\/div>\n          <\/div>\n          \n          <div class=\"checkbox-item\">\n            <label>\n              <input type=\"checkbox\" id=\"es-usesPTO\" onchange=\"QCalcES.togglePTOStatus(event)\">\n              <span>Mi flota utiliza sistemas PTO (Toma de Fuerza)<\/span>\n            <\/label>\n            <div class=\"checkbox-description\">\n              Los sistemas PTO alimentan equipos auxiliares mientras el veh\u00edculo est\u00e1 parado. Ejemplos incluyen hormigoneras, elevadores de carga, cajas basculantes o compresores.\n            <\/div>\n            <div class=\"pto-instruction\" id=\"es-transportPTOInstruction\">\n              Por favor, aseg\u00farese de que los minutos en modo PTO NO se incluyan en el tiempo de ralent\u00ed diario que introduzca a continuaci\u00f3n. Los datos de seguimiento mostrar\u00e1n los eventos PTO por separado, pero esta calculadora solo estima el combustible utilizado durante el ralent\u00ed real.\n            <\/div>\n          <\/div>\n        <\/div>\n        \n        <div class=\"form-group\">\n          <label for=\"es-minutesIdlePerDay\">Minutos de ralent\u00ed por d\u00eda por veh\u00edculo<\/label>\n          <div class=\"slider-with-value\">\n            <div class=\"slider-container\">\n              <input type=\"range\" id=\"es-minutesIdlePerDayRange\" min=\"0\" max=\"120\" value=\"20\">\n            <\/div>\n            <input type=\"number\" id=\"es-minutesIdlePerDay\" class=\"slider-value\" min=\"0\" value=\"20\">\n          <\/div>\n        <\/div>\n        \n        <div class=\"idle-time-cost\">\n          <strong>Coste anual del tiempo de ralent\u00ed:<\/strong>\n          <span id=\"es-idleTimeCost\">\u20ac0,00<\/span>\n        <\/div>\n        \n        <div class=\"calculation-note\">\n          Basado en: <span id=\"es-idleTimeCalc\"><\/span>\n        <\/div>\n        \n        <div class=\"button-group\">\n          <button class=\"button button-prev prev-card\" data-prev=\"es-standing-time-card\" onclick=\"QCalcES.prevCard(event, 'transport')\">Anterior<\/button>\n          <button class=\"button button-next next-card\" data-next=\"es-extra-jobs-card\" onclick=\"QCalcES.nextCard(event, 'transport')\">Siguiente<\/button>\n        <\/div>\n      <\/div>\n      \n      <!-- Extra Jobs -->\n      <div class=\"calculator-card\" id=\"es-extra-jobs-card\">\n        <div class=\"section-header\">\n          <h3>Oportunidades de Trabajos Adicionales<\/h3>\n          <div class=\"tooltip\" data-tooltip=\"Perder trabajos adicionales debido a conductores ineficientes significa p\u00e9rdida de ingresos\">\n            <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n              <circle cx=\"12\" cy=\"12\" r=\"10\"><\/circle>\n              <path d=\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\"><\/path>\n              <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\"><\/line>\n            <\/svg>\n          <\/div>\n        <\/div>\n        \n        <p>Perder trabajos adicionales debido a conductores improductivos e ineficientes puede significar perder cientos, si no miles de euros. El sistema de localizaci\u00f3n Quartix le ayuda a optimizar rutas y asignaciones de conductores.<\/p>\n        \n        <div class=\"question-row\">\n          <div class=\"question-col\">\n            <div class=\"form-group\">\n              <label for=\"es-potentialExtraJobsPerWeek\">\u00bfCu\u00e1ntos trabajos adicionales podr\u00eda hacer por semana?<\/label>\n              <div class=\"slider-with-value\">\n                <div class=\"slider-container\">\n                  <input type=\"range\" id=\"es-potentialExtraJobsPerWeekRange\" min=\"0\" max=\"20\" value=\"2\">\n                <\/div>\n                <input type=\"number\" id=\"es-potentialExtraJobsPerWeek\" class=\"slider-value\" min=\"0\" value=\"2\">\n              <\/div>\n            <\/div>\n          <\/div>\n          <div class=\"question-col\">\n            <div class=\"form-group\">\n              <label for=\"es-extraJobValue\">\u00bfCu\u00e1nto vale un trabajo medio?<\/label>\n              <div class=\"currency-input-wrapper\">\n                <span class=\"currency-symbol\">\u20ac<\/span>\n                <input type=\"number\" id=\"es-extraJobValue\" class=\"currency-input\" min=\"50\" value=\"120\">\n              <\/div>\n            <\/div>\n          <\/div>\n        <\/div>\n        \n        <div class=\"extra-jobs-cost\">\n          <strong>Coste de trabajos perdidos al a\u00f1o:<\/strong>\n          <span id=\"es-extraJobsCost\">\u20ac0,00<\/span>\n        <\/div>\n        \n        <div class=\"calculation-note\">\n          Basado en: <span id=\"es-extraJobsCalc\"><\/span>\n        <\/div>\n        \n        <div class=\"button-group\">\n          <button class=\"button button-prev prev-card\" data-prev=\"es-idle-time-card\" onclick=\"QCalcES.prevCard(event, 'transport')\">Anterior<\/button>\n          <button class=\"button button-next\" id=\"es-transport-calculate-results\" onclick=\"QCalcES.goToContactForm(event)\">Calcular Ahorro<\/button>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <!-- Contact Form -->\n  <div class=\"calculator-section\" id=\"es-section-3\">\n    <div class=\"contact-form\">\n      <h3>Su Informaci\u00f3n de Contacto<\/h3>\n      <p>Por favor, proporcione sus datos para recibir su informe de ahorro personalizado.<\/p>\n      \n      <div class=\"form-row\">\n        <div class=\"form-col\">\n          <div class=\"form-group\">\n            <label for=\"es-firstName\">Nombre *<\/label>\n            <input type=\"text\" id=\"es-firstName\" required>\n            <div class=\"error-message\" id=\"es-firstName-error\">Por favor, introduzca su nombre<\/div>\n          <\/div>\n        <\/div>\n        <div class=\"form-col\">\n          <div class=\"form-group\">\n            <label for=\"es-lastName\">Apellidos *<\/label>\n            <input type=\"text\" id=\"es-lastName\" required>\n            <div class=\"error-message\" id=\"es-lastName-error\">Por favor, introduzca sus apellidos<\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n      \n      <div class=\"form-group\">\n        <label for=\"es-companyName\">Nombre de la Empresa *<\/label>\n        <input type=\"text\" id=\"es-companyName\" required>\n        <div class=\"error-message\" id=\"es-companyName-error\">Por favor, introduzca el nombre de su empresa<\/div>\n      <\/div>\n      \n      <div class=\"form-row\">\n        <div class=\"form-col\">\n          <div class=\"form-group\">\n            <label for=\"es-email\">Correo Electr\u00f3nico Empresarial *<\/label>\n            <input type=\"email\" id=\"es-email\" required>\n            <div class=\"error-message\" id=\"es-email-error\">Por favor, introduzca una direcci\u00f3n de correo v\u00e1lida<\/div>\n            <div class=\"email-note\">Necesitamos su correo electr\u00f3nico para enviarle los resultados<\/div>\n          <\/div>\n        <\/div>\n        <div class=\"form-col\">\n          <div class=\"form-group\">\n            <label for=\"es-phone\">N\u00famero de Tel\u00e9fono (Opcional)<\/label>\n            <div class=\"phone-input-container\">\n              <select id=\"es-countryCodeSelect\" class=\"country-code-select\" onchange=\"QCalcES.updateCountryCode(this)\">\n                <option value=\"+34\" selected>\ud83c\uddea\ud83c\uddf8 +34<\/option>\n                <option value=\"+44\">\ud83c\uddec\ud83c\udde7 +44<\/option>\n                <option value=\"+1\">\ud83c\uddfa\ud83c\uddf8 +1<\/option>\n                <option value=\"+33\">\ud83c\uddeb\ud83c\uddf7 +33<\/option>\n                <option value=\"+49\">\ud83c\udde9\ud83c\uddea +49<\/option>\n                <option value=\"+39\">\ud83c\uddee\ud83c\uddf9 +39<\/option>\n                <option value=\"+48\">\ud83c\uddf5\ud83c\uddf1 +48<\/option>\n                <option value=\"+353\">\ud83c\uddee\ud83c\uddea +353<\/option>\n                <option value=\"+351\">\ud83c\uddf5\ud83c\uddf9 +351<\/option>\n              <\/select>\n              <input type=\"hidden\" id=\"es-countryCode\" value=\"+34\">\n              <input type=\"hidden\" id=\"es-currencySymbol\" value=\"\u20ac\">\n              <input type=\"hidden\" id=\"es-unformattedPhoneNumber\" value=\"\">\n              <input type=\"tel\" id=\"es-phone\" placeholder=\"612 345 678\" style=\"flex: 1;\">\n            <\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n      \n      <div class=\"form-group\">\n        <label for=\"es-referralSource\">\u00bfC\u00f3mo nos conoci\u00f3? *<\/label>\n        <select id=\"es-referralSource\" required>\n          <option value=\"\">Por favor seleccione&#8230;<\/option>\n          <option value=\"google\">B\u00fasqueda en Google<\/option>\n          <option value=\"bing\">Bing<\/option>\n          <option value=\"facebook\">Facebook<\/option>\n          <option value=\"linkedin\">LinkedIn<\/option>\n          <option value=\"twitter\">X (antes Twitter)<\/option>\n          <option value=\"ai\">B\u00fasqueda IA (ChatGPT, Perplexity, Mistral, Grok)<\/option>\n          <option value=\"word-of-mouth\">Recomendaci\u00f3n<\/option>\n          <option value=\"tiktok\">TikTok<\/option>\n          <option value=\"youtube\">YouTube<\/option>\n          <option value=\"trade-show\">Feria \/ Exposici\u00f3n<\/option>\n          <option value=\"magazine\">Revista \/ Publicaci\u00f3n<\/option>\n          <option value=\"partner\">Referencia de Socio<\/option>\n          <option value=\"other\">Otro<\/option>\n        <\/select>\n        <div class=\"error-message\" id=\"es-referralSource-error\">Por favor seleccione c\u00f3mo nos conoci\u00f3<\/div>\n      <\/div>\n      \n      <div class=\"button-group\">\n        <button class=\"button button-prev\" id=\"es-back-to-calculator\" onclick=\"QCalcES.goToStep(2)\">Volver a la Calculadora<\/button>\n        <button class=\"button button-next\" id=\"es-submit-form\" onclick=\"QCalcES.submitForm(event)\">Ver Resultados<\/button>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <!-- Results Section -->\n  <div class=\"calculator-section\" id=\"es-section-4\">\n    <div class=\"results-card\">\n      <img decoding=\"async\" src=\"https:\/\/www.quartix.com\/content\/uploads\/2019\/02\/quartix-logo-eur.svg\" alt=\"Logo Quartix\" class=\"quartix-logo\">\n      <h2>Su Ahorro Potencial con Quartix<\/h2>\n      \n      <div class=\"results-timestamp\" id=\"es-resultsTimestamp\">\n        Resultados calculados el [Fecha Actual]\n      <\/div>\n      \n      <div class=\"personal-greeting\">\n        <p>Hola <span id=\"es-resultName\">estimado cliente<\/span>, bas\u00e1ndonos en la informaci\u00f3n que proporcion\u00f3 para <span id=\"es-resultCompany\">su empresa<\/span>, esto es lo que podr\u00eda ahorrar con el sistema de localizaci\u00f3n Quartix:<\/p>\n      <\/div>\n      \n      <div class=\"total-savings\" id=\"es-totalSavings\">\u20ac0,00<\/div>\n      <p>Ahorro Anual Total<\/p>\n      \n      <div class=\"savings-period\">\n        <div class=\"period-item\">\n          <div class=\"period-value\" id=\"es-weeklySavings\">\u20ac0,00<\/div>\n          <div class=\"period-label\">Ahorro Semanal<\/div>\n        <\/div>\n        <div class=\"period-item\">\n          <div class=\"period-value\" id=\"es-dailySavings\">\u20ac0,00<\/div>\n          <div class=\"period-label\">Ahorro Diario<\/div>\n        <\/div>\n      <\/div>\n      \n      <div class=\"roi-section\">\n        <h3>An\u00e1lisis del Retorno de Inversi\u00f3n<\/h3>\n        <div class=\"roi-details\">\n          <div class=\"roi-item\">\n            <div class=\"roi-label\">Coste medio por veh\u00edculo:<\/div>\n            <div class=\"roi-value\"><span id=\"es-costPerVehicle\">\u20ac10,00<\/span> al mes (m\u00e1s IVA)<\/div>\n          <\/div>\n          <div class=\"roi-item\">\n            <div class=\"roi-label\">Coste mensual total para su flota:<\/div>\n            <div class=\"roi-value\"><span id=\"es-totalMonthlyCost\">\u20ac0,00<\/span> (m\u00e1s IVA)<\/div>\n          <\/div>\n          <div class=\"roi-item\">\n            <div class=\"roi-label\">Ahorro mensual:<\/div>\n            <div class=\"roi-value\"><span id=\"es-monthlySavings\">\u20ac0,00<\/span><\/div>\n          <\/div>\n          <div class=\"roi-item highlight\">\n            <div class=\"roi-label\">Retorno de Inversi\u00f3n:<\/div>\n            <div class=\"roi-value\"><span id=\"es-roiValue\">0%<\/span><\/div>\n          <\/div>\n        <\/div>\n        <div class=\"roi-payback\">\n          <p>De media, nuestros clientes contratan un periodo de 36 meses. Bas\u00e1ndose en su ahorro, el sistema se amortizar\u00eda en aproximadamente <span id=\"es-paybackPeriod\">0<\/span> mes del plazo total.<\/p>\n        <\/div>\n      <\/div>\n      \n      <div class=\"savings-breakdown\" id=\"es-savingsBreakdown\">\n      <\/div>\n      \n      <div class=\"share-results\">\n        <button class=\"share-button copy-link\" id=\"es-copyResultsLink\" onclick=\"QCalcES.copyResultsLink(event)\">\n          <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <path d=\"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\"><\/path>\n            <path d=\"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\"><\/path>\n          <\/svg>\n          Copiar Enlace de Resultados\n        <\/button>\n      <\/div>\n    <\/div>\n    \n    <div class=\"link-copied-notification\" id=\"es-linkCopiedNotification\">\n      \u00a1Enlace de resultados copiado al portapapeles!\n    <\/div>\n    \n    <div class=\"button-group\">\n      <button class=\"button button-prev\" id=\"es-back-to-contact-form\" onclick=\"QCalcES.goToStep(3)\">Volver al Formulario<\/button>\n      <button class=\"button button-reset\" id=\"es-reset-calculator\" onclick=\"QCalcES.resetCalculator(event)\">Reiniciar Calculadora<\/button>\n    <\/div>\n  <\/div>\n\n  <!-- Hidden CF7 Form Container -->\n  <div id=\"hidden-cf7-forms\" style=\"display: none;\">\n    <div id=\"es-cf7-form\">\n      \n<div class=\"wpcf7 no-js\" id=\"wpcf7-f128616-o1\" lang=\"es-ES\" dir=\"ltr\" data-wpcf7-id=\"128616\">\n<div class=\"screen-reader-response\"><p role=\"status\" aria-live=\"polite\" aria-atomic=\"true\"><\/p> <ul><\/ul><\/div>\n<form action=\"\/es-es\/wp-json\/wp\/v2\/pages\/123164#wpcf7-f128616-o1\" method=\"post\" class=\"wpcf7-form init\" aria-label=\"Contact form\" novalidate=\"novalidate\" data-status=\"init\">\n<fieldset class=\"hidden-fields-container\"><input type=\"hidden\" name=\"_wpcf7\" value=\"128616\" \/><input type=\"hidden\" name=\"_wpcf7_version\" value=\"6.1.5\" \/><input type=\"hidden\" name=\"_wpcf7_locale\" value=\"es_ES\" \/><input type=\"hidden\" name=\"_wpcf7_unit_tag\" value=\"wpcf7-f128616-o1\" \/><input type=\"hidden\" name=\"_wpcf7_container_post\" value=\"0\" \/><input type=\"hidden\" name=\"_wpcf7_posted_data_hash\" value=\"\" \/><input type=\"hidden\" name=\"_wpcf7cf_hidden_group_fields\" value=\"[]\" \/><input type=\"hidden\" name=\"_wpcf7cf_hidden_groups\" value=\"[]\" \/><input type=\"hidden\" name=\"_wpcf7cf_visible_groups\" value=\"[]\" \/><input type=\"hidden\" name=\"_wpcf7cf_repeaters\" value=\"[]\" \/><input type=\"hidden\" name=\"_wpcf7cf_steps\" value=\"{}\" \/><input type=\"hidden\" name=\"_wpcf7cf_options\" value=\"{&quot;form_id&quot;:128616,&quot;conditions&quot;:[],&quot;settings&quot;:{&quot;animation&quot;:&quot;yes&quot;,&quot;animation_intime&quot;:200,&quot;animation_outtime&quot;:200,&quot;conditions_ui&quot;:&quot;normal&quot;,&quot;notice_dismissed&quot;:false,&quot;notice_dismissed_update-cf7-6.0&quot;:true,&quot;notice_dismissed_update-cf7-6.0.1&quot;:true,&quot;notice_dismissed_update-cf7-6.0.2&quot;:true,&quot;notice_dismissed_rollback-cf7-6.0.5&quot;:true}}\" \/><input type=\"hidden\" name=\"_wpcf7_recaptcha_response\" value=\"\" \/>\n<\/fieldset>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"first_name\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"First Name\" value=\"\" type=\"text\" name=\"first_name\" \/><\/span>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"last_name\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Last Name\" value=\"\" type=\"text\" name=\"last_name\" \/><\/span>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"company_name\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Company Name\" value=\"\" type=\"text\" name=\"company_name\" \/><\/span>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"email\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-email wpcf7-validates-as-required wpcf7-text wpcf7-validates-as-email\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Business Email\" value=\"\" type=\"email\" name=\"email\" \/><\/span>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"country_code\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text\" aria-invalid=\"false\" placeholder=\"Country Code\" value=\"\" type=\"text\" name=\"country_code\" \/><\/span>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"phone\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-tel wpcf7-text wpcf7-validates-as-tel\" aria-invalid=\"false\" placeholder=\"Phone Number\" value=\"\" type=\"tel\" name=\"phone\" \/><\/span>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"unformatted_phone_number\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"total_vehicles\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"total_employees\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"referral_source\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"business_type\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"total_annual_savings\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"monthly_savings\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"weekly_savings\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"daily_savings\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"monthly_cost\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"cost_per_vehicle\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"roi_percentage\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"payback_period_months\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"currency\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"calculation_date\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"private_mileage_savings\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"time_accountability_savings\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"idle_time_savings\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"reactive_work_savings\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"billing_disputes_savings\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"demurrage_savings\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"extra_jobs_savings\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"result_parameters\" \/>\n<input class=\"wpcf7-form-control wpcf7-submit has-spinner\" type=\"submit\" value=\"Send Results\" \/><div class=\"wpcf7-response-output\" aria-hidden=\"true\"><\/div>\n<\/form>\n<\/div>\n\n    <\/div>\n  <\/div>\n\n  <script nonce=\"\">\n    var QCalcES = (function() {\n      var businessType = 'service';\n      var currentServiceCard = 'es-private-mileage-card';\n      var currentTransportCard = 'es-transport-private-mileage-card';\n      var resultTimestamp = new Date();\n      var currencySymbol = '\u20ac';\n      var costPerVehicle = 10;\n      \n      var totalCardsInSection = {\n        service: 5,\n        transport: 4\n      };\n      \n      var currentCardIndex = {\n        service: 0,\n        transport: 0\n      };\n      \n      var calculatorData = {\n        service: {\n          privateMileage: {\n            vehiclesUsedPrivately: 2,\n            averagePrivateKmPerWeek: 80,\n            averageL100km: 7.5,\n            fuelCostPerLitre: 1.60\n          },\n          reactiveWork: {\n            missedJobsPerWeek: 3,\n            averageJobPrice: 120\n          },\n          billingDisputes: {\n            disputesPerMonth: 2,\n            averageDisputeCost: 80\n          },\n          timeOnSite: {\n            employeeHourlyRate: 12,\n            minutesLostPerDay: 30,\n            workingDaysPerWeek: 5\n          },\n          idleTime: {\n            minutesIdlePerDay: 20,\n            hasStartStop: true,\n            usesPTO: false\n          }\n        },\n        transport: {\n          privateMileage: {\n            vehiclesUsedPrivately: 2,\n            averagePrivateKmPerWeek: 80,\n            averageL100km: 7.5,\n            fuelCostPerLitre: 1.60\n          },\n          idleTime: {\n            minutesIdlePerDay: 20,\n            hasStartStop: true,\n            usesPTO: false\n          },\n          standingTime: {\n            minutesStandingPerDay: 30,\n            averageRatePerHour: 18,\n            workingDaysPerWeek: 5\n          },\n          extraJobs: {\n            potentialExtraJobsPerWeek: 2,\n            extraJobValue: 120\n          }\n        },\n        common: {\n          totalVehicles: 5,\n          totalEmployees: 5\n        }\n      };\n      \n      var currentStep = 1;\n      \n      document.addEventListener('DOMContentLoaded', initialize);\n      \n      function initialize() {\n        updateAllSliders();\n        calculateAllCosts();\n        setupPhoneNumberFormatting();\n        checkForResultsInURL();\n      }\n      \n      function setupPhoneNumberFormatting() {\n        var phoneInput = document.getElementById('es-phone');\n        if (phoneInput) {\n          phoneInput.addEventListener('input', function() {\n            var value = this.value.replace(\/^0+\/, '');\n            document.getElementById('es-unformattedPhoneNumber').value = this.value;\n            this.value = value;\n          });\n        }\n      }\n      \n      function formatNumber(num) {\n        return num.toString().replace(\/\\B(?=(\\d{3})+(?!\\d))\/g, \".\");\n      }\n      \n      function formatCurrency(amount) {\n        return formatNumber(amount.toFixed(2).replace('.', ',')) + ' ' + currencySymbol;\n      }\n      \n      function updateCountryCode(selectElement) {\n        document.getElementById('es-countryCode').value = selectElement.value;\n      }\n      \n      function updateAllSliders() {\n        updateSliderPair('es-vehiclesUsedPrivately', calculatorData.service.privateMileage.vehiclesUsedPrivately);\n        updateSliderPair('es-averagePrivateKmPerWeek', calculatorData.service.privateMileage.averagePrivateKmPerWeek);\n        updateSliderPair('es-averageL100km', calculatorData.service.privateMileage.averageL100km);\n        updateSliderPair('es-missedJobsPerWeek', calculatorData.service.reactiveWork.missedJobsPerWeek);\n        updateSliderPair('es-disputesPerMonth', calculatorData.service.billingDisputes.disputesPerMonth);\n        updateSliderPair('es-minutesLostPerDay', calculatorData.service.timeOnSite.minutesLostPerDay);\n        updateSliderPair('es-workingDaysPerWeek', calculatorData.service.timeOnSite.workingDaysPerWeek);\n        updateSliderPair('es-serviceMinutesIdlePerDay', calculatorData.service.idleTime.minutesIdlePerDay);\n        \n        updateSliderPair('es-transportVehiclesUsedPrivately', calculatorData.transport.privateMileage.vehiclesUsedPrivately);\n        updateSliderPair('es-transportAveragePrivateKmPerWeek', calculatorData.transport.privateMileage.averagePrivateKmPerWeek);\n        updateSliderPair('es-transportAverageL100km', calculatorData.transport.privateMileage.averageL100km);\n        updateSliderPair('es-minutesIdlePerDay', calculatorData.transport.idleTime.minutesIdlePerDay);\n        updateSliderPair('es-minutesStandingPerDay', calculatorData.transport.standingTime.minutesStandingPerDay);\n        updateSliderPair('es-transportWorkingDaysPerWeek', calculatorData.transport.standingTime.workingDaysPerWeek);\n        updateSliderPair('es-potentialExtraJobsPerWeek', calculatorData.transport.extraJobs.potentialExtraJobsPerWeek);\n        \n        var currencyInputs = [\n          { id: 'es-employeeHourlyRate', value: calculatorData.service.timeOnSite.employeeHourlyRate },\n          { id: 'es-fuelCostPerLitre', value: calculatorData.service.privateMileage.fuelCostPerLitre },\n          { id: 'es-averageJobPrice', value: calculatorData.service.reactiveWork.averageJobPrice },\n          { id: 'es-averageDisputeCost', value: calculatorData.service.billingDisputes.averageDisputeCost },\n          { id: 'es-transportFuelCostPerLitre', value: calculatorData.transport.privateMileage.fuelCostPerLitre },\n          { id: 'es-averageRatePerHour', value: calculatorData.transport.standingTime.averageRatePerHour },\n          { id: 'es-extraJobValue', value: calculatorData.transport.extraJobs.extraJobValue }\n        ];\n        \n        currencyInputs.forEach(function(input) {\n          var element = document.getElementById(input.id);\n          if (element) {\n            element.value = input.value;\n            element.addEventListener('input', function() {\n              updateCalculatorData(input.id);\n            });\n          }\n        });\n      }\n      \n      function updateSliderPair(fieldName, value) {\n        var rangeInput = document.getElementById(fieldName + 'Range');\n        var numberInput = document.getElementById(fieldName);\n        \n        if (rangeInput) rangeInput.value = value;\n        if (numberInput) numberInput.value = value;\n        \n        if (rangeInput) {\n          rangeInput.addEventListener('input', function() {\n            if (numberInput) numberInput.value = this.value;\n            updateCalculatorData(fieldName);\n          });\n        }\n        \n        if (numberInput) {\n          numberInput.addEventListener('input', function() {\n            var val = parseFloat(this.value) || 0;\n            if (rangeInput) rangeInput.value = val;\n            updateCalculatorData(fieldName);\n          });\n        }\n      }\n      \n      function updateCalculatorData(fieldName) {\n        var input = document.getElementById(fieldName);\n        if (!input) return;\n        \n        var value = parseFloat(input.value) || 0;\n        var cleanFieldName = fieldName.replace('es-', '');\n        \n        if (cleanFieldName === 'vehiclesUsedPrivately' || cleanFieldName === 'averagePrivateKmPerWeek' || \n            cleanFieldName === 'averageL100km' || cleanFieldName === 'fuelCostPerLitre') {\n          calculatorData.service.privateMileage[cleanFieldName] = value;\n          calculateSectionCost('privateMileage');\n        } else if (cleanFieldName === 'missedJobsPerWeek' || cleanFieldName === 'averageJobPrice') {\n          calculatorData.service.reactiveWork[cleanFieldName] = value;\n          calculateSectionCost('reactiveWork');\n        } else if (cleanFieldName === 'disputesPerMonth' || cleanFieldName === 'averageDisputeCost') {\n          calculatorData.service.billingDisputes[cleanFieldName] = value;\n          calculateSectionCost('billingDisputes');\n        } else if (cleanFieldName === 'minutesLostPerDay' || cleanFieldName === 'employeeHourlyRate' || cleanFieldName === 'workingDaysPerWeek') {\n          calculatorData.service.timeOnSite[cleanFieldName] = value;\n          calculateSectionCost('timeOnSite');\n          calculateSectionCost('serviceIdleTime');\n        } else if (cleanFieldName === 'serviceMinutesIdlePerDay') {\n          calculatorData.service.idleTime.minutesIdlePerDay = value;\n          calculateSectionCost('serviceIdleTime');\n        } else if (cleanFieldName === 'transportVehiclesUsedPrivately' || cleanFieldName === 'transportAveragePrivateKmPerWeek' || \n                   cleanFieldName === 'transportAverageL100km' || cleanFieldName === 'transportFuelCostPerLitre') {\n          var transportFieldName = cleanFieldName.replace('transport', '');\n          transportFieldName = transportFieldName.charAt(0).toLowerCase() + transportFieldName.slice(1);\n          calculatorData.transport.privateMileage[transportFieldName] = value;\n          calculateSectionCost('transportPrivateMileage');\n        } else if (cleanFieldName === 'minutesIdlePerDay') {\n          calculatorData.transport.idleTime.minutesIdlePerDay = value;\n          calculateSectionCost('idleTime');\n        } else if (cleanFieldName === 'minutesStandingPerDay' || cleanFieldName === 'averageRatePerHour' || cleanFieldName === 'transportWorkingDaysPerWeek') {\n          if (cleanFieldName === 'transportWorkingDaysPerWeek') {\n            calculatorData.transport.standingTime.workingDaysPerWeek = value;\n          } else {\n            calculatorData.transport.standingTime[cleanFieldName] = value;\n          }\n          calculateSectionCost('standingTime');\n          calculateSectionCost('idleTime');\n        } else if (cleanFieldName === 'potentialExtraJobsPerWeek' || cleanFieldName === 'extraJobValue') {\n          calculatorData.transport.extraJobs[cleanFieldName] = value;\n          calculateSectionCost('extraJobs');\n        } else if (cleanFieldName === 'totalVehicles' || cleanFieldName === 'totalEmployees') {\n          calculatorData.common[cleanFieldName] = value;\n          calculateAllCosts();\n        }\n      }\n      \n      function calculateAllCosts() {\n        calculateSectionCost('privateMileage');\n        calculateSectionCost('reactiveWork');\n        calculateSectionCost('billingDisputes');\n        calculateSectionCost('timeOnSite');\n        calculateSectionCost('serviceIdleTime');\n        calculateSectionCost('transportPrivateMileage');\n        calculateSectionCost('idleTime');\n        calculateSectionCost('standingTime');\n        calculateSectionCost('extraJobs');\n      }\n      \n      function calculateSectionCost(section) {\n        var cost = 0;\n        \n        switch (section) {\n          case 'privateMileage':\n            var vehiclesUsedPrivately = calculatorData.service.privateMileage.vehiclesUsedPrivately;\n            var averagePrivateKmPerWeek = calculatorData.service.privateMileage.averagePrivateKmPerWeek;\n            var averageL100km = calculatorData.service.privateMileage.averageL100km;\n            var fuelCostPerLitre = calculatorData.service.privateMileage.fuelCostPerLitre;\n            \n            var litresPerWeek = (vehiclesUsedPrivately * averagePrivateKmPerWeek * averageL100km) \/ 100;\n            cost = litresPerWeek * fuelCostPerLitre * 52;\n            \n            updateCostDisplay('es-privateMileageCost', cost);\n            updateCalculationNote('es-privateMileageCalc', \n              vehiclesUsedPrivately + ' veh\u00edculos \u00d7 ' + averagePrivateKmPerWeek + ' km\/semana \u00d7 ' + averageL100km + ' L\/100 km \u00d7 \u20ac' + fuelCostPerLitre + '\/litro \u00d7 52 semanas');\n            break;\n            \n          case 'reactiveWork':\n            var missedJobsPerWeek = calculatorData.service.reactiveWork.missedJobsPerWeek;\n            var averageJobPrice = calculatorData.service.reactiveWork.averageJobPrice;\n            cost = missedJobsPerWeek * averageJobPrice * 52;\n            updateCostDisplay('es-reactiveWorkCost', cost);\n            updateCalculationNote('es-reactiveWorkCalc', \n              missedJobsPerWeek + ' trabajos\/semana \u00d7 \u20ac' + averageJobPrice + '\/trabajo \u00d7 52 semanas');\n            break;\n            \n          case 'billingDisputes':\n            var disputesPerMonth = calculatorData.service.billingDisputes.disputesPerMonth;\n            var averageDisputeCost = calculatorData.service.billingDisputes.averageDisputeCost;\n            cost = disputesPerMonth * averageDisputeCost * 12;\n            updateCostDisplay('es-billingDisputesCost', cost);\n            updateCalculationNote('es-billingDisputesCalc', \n              disputesPerMonth + ' reclamaciones\/mes \u00d7 \u20ac' + averageDisputeCost + '\/reclamaci\u00f3n \u00d7 12 meses');\n            break;\n            \n          case 'timeOnSite':\n            var minutesLostPerDay = calculatorData.service.timeOnSite.minutesLostPerDay;\n            var employeeHourlyRate = calculatorData.service.timeOnSite.employeeHourlyRate;\n            var workingDaysPerWeek = calculatorData.service.timeOnSite.workingDaysPerWeek;\n            var totalEmployees = calculatorData.common.totalEmployees;\n            cost = totalEmployees * (minutesLostPerDay \/ 60) * employeeHourlyRate * workingDaysPerWeek * 52;\n            updateCostDisplay('es-timeOnSiteCost', cost);\n            updateCalculationNote('es-timeOnSiteCalc', \n              totalEmployees + ' empleados \u00d7 ' + minutesLostPerDay + ' min\/d\u00eda \u00f7 60 \u00d7 \u20ac' + employeeHourlyRate + '\/hora \u00d7 ' + workingDaysPerWeek + ' d\u00edas \u00d7 52 semanas');\n            break;\n            \n          case 'serviceIdleTime':\n            var serviceMinutesIdlePerDay = calculatorData.service.idleTime.minutesIdlePerDay;\n            var serviceTotalVehicles = calculatorData.common.totalVehicles;\n            var serviceTotalEmployees = calculatorData.common.totalEmployees;\n            var serviceFuelCostPerLitre = calculatorData.service.privateMileage.fuelCostPerLitre;\n            var serviceHourlyRate = calculatorData.service.timeOnSite.employeeHourlyRate;\n            var serviceWorkingDays = calculatorData.service.timeOnSite.workingDaysPerWeek;\n            \n            var hoursLostPerDay = serviceMinutesIdlePerDay \/ 60;\n            var dailyLabourCost = hoursLostPerDay * serviceHourlyRate * serviceTotalEmployees;\n            var annualLabourCost = dailyLabourCost * serviceWorkingDays * 52;\n            \n            var fuelCost = 0;\n            var totalIdleCost = annualLabourCost;\n            \n            if (!calculatorData.service.idleTime.hasStartStop) {\n              var IDLE_LITRES_PER_HOUR = 1.9;\n              var hoursIdlePerDay = serviceMinutesIdlePerDay \/ 60;\n              var litresPerDay = hoursIdlePerDay * IDLE_LITRES_PER_HOUR * serviceTotalVehicles;\n              fuelCost = litresPerDay * serviceFuelCostPerLitre * serviceWorkingDays * 52;\n              totalIdleCost += fuelCost;\n              \n              updateCalculationNote('es-serviceIdleTimeCalc', \n                'Mano de obra: ' + serviceTotalEmployees + ' empleados \u00d7 ' + serviceMinutesIdlePerDay + ' min\/d\u00eda. Combustible: ' + serviceTotalVehicles + ' veh\u00edculos \u00d7 1,9 L\/hora ralent\u00ed');\n            } else {\n              updateCalculationNote('es-serviceIdleTimeCalc', \n                serviceTotalEmployees + ' empleados \u00d7 ' + serviceMinutesIdlePerDay + ' min\/d\u00eda \u00f7 60 \u00d7 \u20ac' + serviceHourlyRate + '\/hora \u00d7 ' + serviceWorkingDays + ' d\u00edas \u00d7 52 semanas (sin incluir combustible \u2013 con tecnolog\u00eda start-stop)');\n            }\n            \n            cost = totalIdleCost;\n            updateCostDisplay('es-serviceIdleTimeCost', cost);\n            break;\n            \n          case 'transportPrivateMileage':\n            var tVehiclesUsedPrivately = calculatorData.transport.privateMileage.vehiclesUsedPrivately;\n            var tAveragePrivateKmPerWeek = calculatorData.transport.privateMileage.averagePrivateKmPerWeek;\n            var tAverageL100km = calculatorData.transport.privateMileage.averageL100km;\n            var tFuelCostPerLitre = calculatorData.transport.privateMileage.fuelCostPerLitre;\n            \n            var tLitresPerWeek = (tVehiclesUsedPrivately * tAveragePrivateKmPerWeek * tAverageL100km) \/ 100;\n            cost = tLitresPerWeek * tFuelCostPerLitre * 52;\n            \n            updateCostDisplay('es-transportPrivateMileageCost', cost);\n            updateCalculationNote('es-transportPrivateMileageCalc', \n              tVehiclesUsedPrivately + ' veh\u00edculos \u00d7 ' + tAveragePrivateKmPerWeek + ' km\/semana \u00d7 ' + tAverageL100km + ' L\/100 km \u00d7 \u20ac' + tFuelCostPerLitre + '\/litro \u00d7 52 semanas');\n            break;\n            \n          case 'idleTime':\n            var minutesIdlePerDay = calculatorData.transport.idleTime.minutesIdlePerDay;\n            var totalVehiclesIdle = calculatorData.common.totalVehicles;\n            var totalEmployeesIdle = calculatorData.common.totalEmployees;\n            var idleFuelCostPerLitre = calculatorData.transport.privateMileage.fuelCostPerLitre;\n            var transportHourlyRate = calculatorData.transport.standingTime.averageRatePerHour;\n            var transportWorkingDays = calculatorData.transport.standingTime.workingDaysPerWeek;\n            \n            var tHoursLostPerDay = minutesIdlePerDay \/ 60;\n            var tDailyLabourCost = tHoursLostPerDay * transportHourlyRate * totalEmployeesIdle;\n            var tAnnualLabourCost = tDailyLabourCost * transportWorkingDays * 52;\n            \n            var tFuelCost = 0;\n            var tTotalIdleCost = tAnnualLabourCost;\n            \n            if (!calculatorData.transport.idleTime.hasStartStop) {\n              var T_IDLE_LITRES_PER_HOUR = 1.9;\n              var tHoursIdlePerDay = minutesIdlePerDay \/ 60;\n              var tLitresPerDay = tHoursIdlePerDay * T_IDLE_LITRES_PER_HOUR * totalVehiclesIdle;\n              tFuelCost = tLitresPerDay * idleFuelCostPerLitre * transportWorkingDays * 52;\n              tTotalIdleCost += tFuelCost;\n              \n              updateCalculationNote('es-idleTimeCalc', \n                'Mano de obra: ' + totalEmployeesIdle + ' empleados \u00d7 ' + minutesIdlePerDay + ' min\/d\u00eda. Combustible: ' + totalVehiclesIdle + ' veh\u00edculos \u00d7 1,9 L\/hora ralent\u00ed');\n            } else {\n              updateCalculationNote('es-idleTimeCalc', \n                totalEmployeesIdle + ' empleados \u00d7 ' + minutesIdlePerDay + ' min\/d\u00eda \u00f7 60 \u00d7 \u20ac' + transportHourlyRate + '\/hora \u00d7 ' + transportWorkingDays + ' d\u00edas \u00d7 52 semanas (sin incluir combustible \u2013 con tecnolog\u00eda start-stop)');\n            }\n            \n            cost = tTotalIdleCost;\n            updateCostDisplay('es-idleTimeCost', cost);\n            break;\n            \n          case 'standingTime':\n            var minutesStandingPerDay = calculatorData.transport.standingTime.minutesStandingPerDay;\n            var averageRatePerHour = calculatorData.transport.standingTime.averageRatePerHour;\n            var standingTotalVehicles = calculatorData.common.totalVehicles;\n            var standingWorkingDays = calculatorData.transport.standingTime.workingDaysPerWeek;\n            cost = (minutesStandingPerDay \/ 60) * averageRatePerHour * standingTotalVehicles * standingWorkingDays * 52;\n            updateCostDisplay('es-standingTimeCost', cost);\n            updateCalculationNote('es-standingTimeCalc', \n              standingTotalVehicles + ' veh\u00edculos \u00d7 ' + minutesStandingPerDay + ' min\/d\u00eda \u00f7 60 \u00d7 \u20ac' + averageRatePerHour + '\/hora \u00d7 ' + standingWorkingDays + ' d\u00edas \u00d7 52 semanas');\n            break;\n            \n          case 'extraJobs':\n            var potentialExtraJobsPerWeek = calculatorData.transport.extraJobs.potentialExtraJobsPerWeek;\n            var extraJobValue = calculatorData.transport.extraJobs.extraJobValue;\n            cost = potentialExtraJobsPerWeek * extraJobValue * 52;\n            updateCostDisplay('es-extraJobsCost', cost);\n            updateCalculationNote('es-extraJobsCalc', \n              potentialExtraJobsPerWeek + ' trabajos\/semana \u00d7 \u20ac' + extraJobValue + '\/trabajo \u00d7 52 semanas');\n            break;\n        }\n        \n        return cost;\n      }\n      \n      function updateCostDisplay(elementId, cost) {\n        var element = document.getElementById(elementId);\n        if (element) {\n          element.textContent = formatCurrency(cost);\n        }\n      }\n      \n      function updateCalculationNote(elementId, text) {\n        var element = document.getElementById(elementId);\n        if (element) {\n          element.textContent = text;\n        }\n      }\n      \n      function showCard(type, cardId) {\n        var cards = document.querySelectorAll('#quartix-calculator-widget-es .calculator-card');\n        cards.forEach(function(card) {\n          card.classList.remove('active');\n        });\n        document.getElementById(cardId).classList.add('active');\n        \n        if (type === 'service') {\n          currentServiceCard = cardId;\n        } else {\n          currentTransportCard = cardId;\n        }\n        \n        updateCalculatorProgress();\n      }\n      \n      function updateCalculatorProgress() {\n        var currentType = businessType;\n        var currentIdx = currentCardIndex[currentType];\n        var totalCards = totalCardsInSection[currentType];\n        \n        var percentage = Math.round(((currentIdx + 1) \/ totalCards) * 100);\n        \n        var percentageElement = document.getElementById('es-calculator-percentage');\n        if (percentageElement) {\n          percentageElement.textContent = percentage + '%';\n        }\n        \n        var progressFill = document.getElementById('es-calculator-progress-fill');\n        if (progressFill) {\n          progressFill.style.width = percentage + '%';\n        }\n      }\n      \n      function updateMainProgressBar() {\n        var progressSteps = document.querySelectorAll('#quartix-calculator-widget-es .progress-step');\n        \n        progressSteps.forEach(function(step) {\n          step.classList.remove('active', 'completed');\n        });\n        \n        if (currentStep > 1) {\n          progressSteps[0].classList.add('completed');\n        } else {\n          progressSteps[0].classList.add('active');\n        }\n        \n        if (currentStep === 2) {\n          progressSteps[1].classList.add('active');\n          var calcProgress = document.getElementById('es-calculator-progress');\n          if (calcProgress) {\n            calcProgress.classList.add('active');\n          }\n          updateCalculatorProgress();\n        } else if (currentStep > 2) {\n          progressSteps[1].classList.add('completed');\n          var calcProgress = document.getElementById('es-calculator-progress');\n          if (calcProgress) {\n            calcProgress.classList.remove('active');\n          }\n        }\n        \n        if (currentStep === 3) {\n          progressSteps[2].classList.add('active');\n        } else if (currentStep > 3) {\n          progressSteps[2].classList.add('completed');\n        }\n        \n        if (currentStep === 4) {\n          progressSteps[3].classList.add('active');\n        }\n      }\n      \n      function goToStep(stepNumber) {\n        currentStep = stepNumber;\n        \n        document.querySelectorAll('#quartix-calculator-widget-es .calculator-section').forEach(function(section, index) {\n          if (index + 1 === stepNumber) {\n            section.classList.add('active');\n          } else {\n            section.classList.remove('active');\n          }\n        });\n        \n        updateMainProgressBar();\n      }\n      \n      function validateInitialForm() {\n        var isValid = true;\n        \n        var totalVehiclesInput = document.getElementById('es-totalVehicles');\n        if (!totalVehiclesInput.value || parseInt(totalVehiclesInput.value) < 1) {\n          showError(totalVehiclesInput, 'es-totalVehicles-error');\n          isValid = false;\n        } else {\n          hideError(totalVehiclesInput, 'es-totalVehicles-error');\n          calculatorData.common.totalVehicles = parseInt(totalVehiclesInput.value);\n        }\n        \n        var totalEmployeesInput = document.getElementById('es-totalEmployees');\n        if (!totalEmployeesInput.value || parseInt(totalEmployeesInput.value) < 1) {\n          showError(totalEmployeesInput, 'es-totalEmployees-error');\n          isValid = false;\n        } else {\n          hideError(totalEmployeesInput, 'es-totalEmployees-error');\n          calculatorData.common.totalEmployees = parseInt(totalEmployeesInput.value);\n        }\n        \n        return isValid;\n      }\n      \n      function validateContactForm() {\n        var isValid = true;\n        \n        var firstNameInput = document.getElementById('es-firstName');\n        var lastNameInput = document.getElementById('es-lastName');\n        var companyNameInput = document.getElementById('es-companyName');\n        var emailInput = document.getElementById('es-email');\n        var referralSourceInput = document.getElementById('es-referralSource');\n        \n        if (!firstNameInput.value.trim()) {\n          showError(firstNameInput, 'es-firstName-error');\n          isValid = false;\n        } else {\n          hideError(firstNameInput, 'es-firstName-error');\n        }\n        \n        if (!lastNameInput.value.trim()) {\n          showError(lastNameInput, 'es-lastName-error');\n          isValid = false;\n        } else {\n          hideError(lastNameInput, 'es-lastName-error');\n        }\n        \n        if (!companyNameInput.value.trim()) {\n          showError(companyNameInput, 'es-companyName-error');\n          isValid = false;\n        } else {\n          hideError(companyNameInput, 'es-companyName-error');\n        }\n        \n        if (!validateEmail(emailInput.value)) {\n          showError(emailInput, 'es-email-error');\n          isValid = false;\n        } else {\n          hideError(emailInput, 'es-email-error');\n        }\n        \n        if (!referralSourceInput.value) {\n          showError(referralSourceInput, 'es-referralSource-error');\n          isValid = false;\n        } else {\n          hideError(referralSourceInput, 'es-referralSource-error');\n        }\n        \n        return isValid;\n      }\n      \n      function validateEmail(email) {\n        var re = \/^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$\/;\n        return re.test(String(email).toLowerCase());\n      }\n      \n      function showError(inputElement, errorElementId) {\n        inputElement.classList.add('error');\n        var errorElement = document.getElementById(errorElementId);\n        if (errorElement) {\n          errorElement.style.display = 'block';\n        }\n      }\n      \n      function hideError(inputElement, errorElementId) {\n        inputElement.classList.remove('error');\n        var errorElement = document.getElementById(errorElementId);\n        if (errorElement) {\n          errorElement.style.display = 'none';\n        }\n      }\n      \n      \/\/ Transfer data to CF7 form (field names in English for mapping)\n      function transferDataToCF7() {\n        var totalSavings = 0;\n        var monthlySavings = 0;\n        var savingsBreakdown = {};\n        \n        if (businessType === 'service') {\n          savingsBreakdown.privateMileage = calculateSectionCost('privateMileage');\n          savingsBreakdown.reactiveWork = calculateSectionCost('reactiveWork');\n          savingsBreakdown.billingDisputes = calculateSectionCost('billingDisputes');\n          savingsBreakdown.timeOnSite = calculateSectionCost('timeOnSite');\n          savingsBreakdown.idleTime = calculateSectionCost('serviceIdleTime');\n          \n          totalSavings = savingsBreakdown.privateMileage + savingsBreakdown.reactiveWork + \n                         savingsBreakdown.billingDisputes + savingsBreakdown.timeOnSite + \n                         savingsBreakdown.idleTime;\n        } else {\n          savingsBreakdown.privateMileage = calculateSectionCost('transportPrivateMileage');\n          savingsBreakdown.idleTime = calculateSectionCost('idleTime');\n          savingsBreakdown.standingTime = calculateSectionCost('standingTime');\n          savingsBreakdown.extraJobs = calculateSectionCost('extraJobs');\n          \n          totalSavings = savingsBreakdown.privateMileage + savingsBreakdown.idleTime + \n                         savingsBreakdown.standingTime + savingsBreakdown.extraJobs;\n        }\n        \n        monthlySavings = totalSavings \/ 12;\n        \n        var totalVehicles = calculatorData.common.totalVehicles;\n        var totalMonthlyCost = costPerVehicle * totalVehicles;\n        var roi = (monthlySavings \/ totalMonthlyCost) * 100;\n        var paybackPeriodMonths = Math.ceil(totalMonthlyCost \/ monthlySavings);\n        \n        \/\/ Form data with English field names for mapping\n        var formData = {\n          'first_name': document.getElementById('es-firstName').value,\n          'last_name': document.getElementById('es-lastName').value,\n          'company_name': document.getElementById('es-companyName').value,\n          'email': document.getElementById('es-email').value,\n          'country_code': document.getElementById('es-countryCode').value,\n          'phone': document.getElementById('es-phone').value,\n          'unformatted_phone_number': document.getElementById('es-unformattedPhoneNumber').value,\n          'referral_source': document.getElementById('es-referralSource').options[document.getElementById('es-referralSource').selectedIndex].text,\n          'business_type': businessType === 'service' ? 'Service\/Site-Based' : 'Transport',\n          'total_vehicles': calculatorData.common.totalVehicles.toString(),\n          'total_employees': calculatorData.common.totalEmployees.toString(),\n          'total_annual_savings': totalSavings.toFixed(2),\n          'monthly_savings': monthlySavings.toFixed(2),\n          'weekly_savings': (totalSavings \/ 52).toFixed(2),\n          'daily_savings': (totalSavings \/ 365).toFixed(2),\n          'monthly_cost': totalMonthlyCost.toFixed(2),\n          'cost_per_vehicle': costPerVehicle.toFixed(2),\n          'roi_percentage': Math.round(roi).toString(),\n          'payback_period_months': paybackPeriodMonths.toString(),\n          'currency': currencySymbol,\n          'calculation_date': resultTimestamp.toISOString(),\n          'language': 'es',\n          'country': 'Spain'\n        };\n        \n        \/\/ Add individual savings breakdown fields\n        if (businessType === 'service') {\n          formData['private_mileage_savings'] = savingsBreakdown.privateMileage.toFixed(2);\n          formData['time_accountability_savings'] = savingsBreakdown.timeOnSite.toFixed(2);\n          formData['idle_time_savings'] = savingsBreakdown.idleTime.toFixed(2);\n          formData['reactive_work_savings'] = savingsBreakdown.reactiveWork.toFixed(2);\n          formData['billing_disputes_savings'] = savingsBreakdown.billingDisputes.toFixed(2);\n        } else {\n          formData['private_mileage_savings'] = savingsBreakdown.privateMileage.toFixed(2);\n          formData['demurrage_savings'] = savingsBreakdown.standingTime.toFixed(2);\n          formData['idle_time_savings'] = savingsBreakdown.idleTime.toFixed(2);\n          formData['extra_jobs_savings'] = savingsBreakdown.extraJobs.toFixed(2);\n        }\n        \n        \/\/ Generate query parameters for shareable URL\n        var queryParams = new URLSearchParams({\n          savings: Math.round(totalSavings),\n          monthly: Math.round(monthlySavings),\n          vehicles: calculatorData.common.totalVehicles,\n          type: businessType,\n          date: resultTimestamp.toISOString(),\n          company: formData['company_name'],\n          person: formData['first_name']\n        });\n        \n        \/\/ Store data in window object for CF7 integration\n        window.quartixCalculatorDataES = {\n          formData: formData,\n          queryParams: '?' + queryParams.toString()\n        };\n        \n        \/\/ Find and populate CF7 forms\n        var cf7Forms = document.querySelectorAll('.wpcf7 form');\n        cf7Forms.forEach(function(form) {\n          Object.keys(formData).forEach(function(fieldName) {\n            var field = form.querySelector('[name=\"' + fieldName + '\"]');\n            if (field) {\n              field.value = formData[fieldName];\n            } else {\n              var hiddenField = document.createElement('input');\n              hiddenField.type = 'hidden';\n              hiddenField.name = fieldName;\n              hiddenField.value = formData[fieldName];\n              form.appendChild(hiddenField);\n            }\n          });\n          \n          \/\/ Add result parameters as hidden field\n          var resultParamsField = form.querySelector('[name=\"result_parameters\"]');\n          if (!resultParamsField) {\n            resultParamsField = document.createElement('input');\n            resultParamsField.type = 'hidden';\n            resultParamsField.name = 'result_parameters';\n            form.appendChild(resultParamsField);\n          }\n          resultParamsField.value = '?' + queryParams.toString();\n        });\n        \n        \/\/ Fire custom event for external integrations\n        var event = new CustomEvent('quartixCalculatorComplete', {\n          detail: {\n            formData: formData,\n            queryParams: '?' + queryParams.toString()\n          }\n        });\n        document.dispatchEvent(event);\n        \n        \/\/ Submit CF7 form via AJAX if wpcf7 is available\n        setTimeout(function() {\n          var cf7Form = document.querySelector('.wpcf7 form');\n          if (cf7Form && typeof wpcf7 !== 'undefined') {\n            wpcf7.submit(cf7Form);\n          }\n        }, 100);\n      }\n      \n      function calculateResults() {\n        var totalSavings = 0;\n        var savingsBreakdown = {};\n        \n        var timestampElement = document.getElementById('es-resultsTimestamp');\n        if (timestampElement) {\n          timestampElement.textContent = 'Resultados calculados el ' + resultTimestamp.toLocaleDateString('es-ES', {\n            day: 'numeric',\n            month: 'long',\n            year: 'numeric'\n          });\n        }\n        \n        var nameElement = document.getElementById('es-resultName');\n        var companyElement = document.getElementById('es-resultCompany');\n        \n        if (nameElement && document.getElementById('es-firstName')) {\n          nameElement.textContent = document.getElementById('es-firstName').value || 'estimado cliente';\n        }\n        \n        if (companyElement && document.getElementById('es-companyName')) {\n          companyElement.textContent = document.getElementById('es-companyName').value || 'su empresa';\n        }\n        \n        if (businessType === 'service') {\n          savingsBreakdown.privateMileage = calculateSectionCost('privateMileage');\n          savingsBreakdown.reactiveWork = calculateSectionCost('reactiveWork');\n          savingsBreakdown.billingDisputes = calculateSectionCost('billingDisputes');\n          savingsBreakdown.timeOnSite = calculateSectionCost('timeOnSite');\n          savingsBreakdown.idleTime = calculateSectionCost('serviceIdleTime');\n          \n          totalSavings = savingsBreakdown.privateMileage + savingsBreakdown.reactiveWork + \n                         savingsBreakdown.billingDisputes + savingsBreakdown.timeOnSite + \n                         savingsBreakdown.idleTime;\n        } else {\n          savingsBreakdown.privateMileage = calculateSectionCost('transportPrivateMileage');\n          savingsBreakdown.idleTime = calculateSectionCost('idleTime');\n          savingsBreakdown.standingTime = calculateSectionCost('standingTime');\n          savingsBreakdown.extraJobs = calculateSectionCost('extraJobs');\n          \n          totalSavings = savingsBreakdown.privateMileage + savingsBreakdown.idleTime + \n                         savingsBreakdown.standingTime + savingsBreakdown.extraJobs;\n        }\n        \n        var totalSavingsElement = document.getElementById('es-totalSavings');\n        if (totalSavingsElement) {\n          totalSavingsElement.textContent = formatCurrency(totalSavings);\n        }\n        \n        var weeklySavings = totalSavings \/ 52;\n        var dailySavings = totalSavings \/ 365;\n        var monthlySavings = totalSavings \/ 12;\n        \n        var weeklySavingsElement = document.getElementById('es-weeklySavings');\n        if (weeklySavingsElement) {\n          weeklySavingsElement.textContent = formatCurrency(weeklySavings);\n        }\n        \n        var dailySavingsElement = document.getElementById('es-dailySavings');\n        if (dailySavingsElement) {\n          dailySavingsElement.textContent = formatCurrency(dailySavings);\n        }\n        \n        var totalVehicles = calculatorData.common.totalVehicles;\n        var totalMonthlyCost = costPerVehicle * totalVehicles;\n        var roi = (monthlySavings \/ totalMonthlyCost) * 100;\n        var paybackPeriodMonths = Math.ceil(totalMonthlyCost \/ monthlySavings);\n        \n        var costPerVehicleElement = document.getElementById('es-costPerVehicle');\n        if (costPerVehicleElement) {\n          costPerVehicleElement.textContent = formatCurrency(costPerVehicle);\n        }\n        \n        var totalMonthlyCostElement = document.getElementById('es-totalMonthlyCost');\n        if (totalMonthlyCostElement) {\n          totalMonthlyCostElement.textContent = formatCurrency(totalMonthlyCost);\n        }\n        \n        var monthlySavingsElement = document.getElementById('es-monthlySavings');\n        if (monthlySavingsElement) {\n          monthlySavingsElement.textContent = formatCurrency(monthlySavings);\n        }\n        \n        var roiValueElement = document.getElementById('es-roiValue');\n        if (roiValueElement) {\n          roiValueElement.textContent = Math.round(roi) + '%';\n        }\n        \n        var paybackPeriodElement = document.getElementById('es-paybackPeriod');\n        if (paybackPeriodElement) {\n          paybackPeriodElement.textContent = paybackPeriodMonths.toString();\n        }\n        \n        var savingsBreakdownElement = document.getElementById('es-savingsBreakdown');\n        if (savingsBreakdownElement) {\n          savingsBreakdownElement.innerHTML = '';\n          \n          if (businessType === 'service') {\n            addSavingsBreakdownItem(savingsBreakdownElement, 'Kilometraje Privado', savingsBreakdown.privateMileage,\n              'Ahorro de combustible por reducci\u00f3n del uso privado de veh\u00edculos, calculado a ' + calculatorData.service.privateMileage.averageL100km + ' L\/100 km');\n            addSavingsBreakdownItem(savingsBreakdownElement, 'Responsabilidad Horaria', savingsBreakdown.timeOnSite,\n              'Basado en ' + calculatorData.service.timeOnSite.minutesLostPerDay + ' minutos perdidos por empleado al d\u00eda en ' + calculatorData.common.totalEmployees + ' empleados');\n            addSavingsBreakdownItem(savingsBreakdownElement, 'Tiempo de Ralent\u00ed', savingsBreakdown.idleTime,\n              'Basado en la productividad perdida de ' + calculatorData.common.totalEmployees + ' empleados y costes de combustible de ' + calculatorData.common.totalVehicles + ' veh\u00edculos en ralent\u00ed');\n            addSavingsBreakdownItem(savingsBreakdownElement, 'Trabajo Reactivo', savingsBreakdown.reactiveWork,\n              'Ingresos de ' + calculatorData.service.reactiveWork.missedJobsPerWeek + ' trabajos adicionales por semana mediante mejor visibilidad de la flota');\n            addSavingsBreakdownItem(savingsBreakdownElement, 'Reclamaciones de Facturaci\u00f3n', savingsBreakdown.billingDisputes,\n              'P\u00e9rdidas evitadas de ' + calculatorData.service.billingDisputes.disputesPerMonth + ' reclamaciones al mes con evidencia de seguimiento');\n          } else {\n            addSavingsBreakdownItem(savingsBreakdownElement, 'Kilometraje Privado', savingsBreakdown.privateMileage,\n              'Ahorro de combustible por reducci\u00f3n del uso privado de veh\u00edculos, calculado a ' + calculatorData.transport.privateMileage.averageL100km + ' L\/100 km');\n            addSavingsBreakdownItem(savingsBreakdownElement, 'Reducci\u00f3n de Demoras', savingsBreakdown.standingTime,\n              'Ahorro por reducci\u00f3n de ' + calculatorData.transport.standingTime.minutesStandingPerDay + ' minutos de demora por veh\u00edculo al d\u00eda');\n            addSavingsBreakdownItem(savingsBreakdownElement, 'Tiempo de Ralent\u00ed', savingsBreakdown.idleTime,\n              'Basado en la productividad perdida de ' + calculatorData.common.totalEmployees + ' empleados y costes de combustible de ' + calculatorData.common.totalVehicles + ' veh\u00edculos en ralent\u00ed');\n            addSavingsBreakdownItem(savingsBreakdownElement, 'Trabajos Adicionales', savingsBreakdown.extraJobs,\n              'Ingresos de ' + calculatorData.transport.extraJobs.potentialExtraJobsPerWeek + ' trabajos adicionales por semana mediante optimizaci\u00f3n de rutas');\n          }\n        }\n      }\n      \n      function addSavingsBreakdownItem(container, title, amount, explanation) {\n        var itemElement = document.createElement('div');\n        itemElement.className = 'savings-item';\n        \n        var titleElement = document.createElement('h4');\n        titleElement.textContent = title;\n        \n        var amountElement = document.createElement('div');\n        amountElement.className = 'savings-amount';\n        amountElement.textContent = formatCurrency(amount);\n        \n        var explanationElement = document.createElement('div');\n        explanationElement.className = 'savings-explanation';\n        explanationElement.textContent = explanation;\n        \n        itemElement.appendChild(titleElement);\n        itemElement.appendChild(amountElement);\n        itemElement.appendChild(explanationElement);\n        container.appendChild(itemElement);\n      }\n      \n      function checkForResultsInURL() {\n        var urlParams = new URLSearchParams(window.location.search);\n        \n        if (urlParams.has('savings')) {\n          var savedData = {\n            totalSavings: parseFloat(urlParams.get('savings')) || 0,\n            monthlySavings: parseFloat(urlParams.get('monthly')) || 0,\n            totalVehicles: parseInt(urlParams.get('vehicles')) || 5,\n            businessType: urlParams.get('type') || 'service',\n            calculationDate: urlParams.get('date') || new Date().toISOString(),\n            companyName: urlParams.get('company') || 'su empresa',\n            prospectName: urlParams.get('person') || 'estimado cliente'\n          };\n          \n          document.getElementById('es-totalSavings').textContent = formatCurrency(savedData.totalSavings);\n          document.getElementById('es-weeklySavings').textContent = formatCurrency(savedData.totalSavings \/ 52);\n          document.getElementById('es-dailySavings').textContent = formatCurrency(savedData.totalSavings \/ 365);\n          document.getElementById('es-monthlySavings').textContent = formatCurrency(savedData.monthlySavings);\n          \n          document.getElementById('es-resultName').textContent = savedData.prospectName;\n          document.getElementById('es-resultCompany').textContent = savedData.companyName;\n          \n          var totalMonthlyCost = costPerVehicle * savedData.totalVehicles;\n          var roi = (savedData.monthlySavings \/ totalMonthlyCost) * 100;\n          var paybackPeriodMonths = Math.ceil(totalMonthlyCost \/ savedData.monthlySavings);\n          \n          document.getElementById('es-costPerVehicle').textContent = formatCurrency(costPerVehicle);\n          document.getElementById('es-totalMonthlyCost').textContent = formatCurrency(totalMonthlyCost);\n          document.getElementById('es-roiValue').textContent = Math.round(roi) + '%';\n          document.getElementById('es-paybackPeriod').textContent = paybackPeriodMonths.toString();\n          \n          var submissionDate = new Date(savedData.calculationDate);\n          var daysSince = Math.floor((new Date() - submissionDate) \/ (1000 * 60 * 60 * 24));\n          \n          var timestampElement = document.getElementById('es-resultsTimestamp');\n          if (timestampElement) {\n            if (daysSince > 0) {\n              var additionalSavings = (savedData.totalSavings \/ 365) * daysSince;\n              timestampElement.innerHTML = '\u00a1Bienvenido de nuevo! Bas\u00e1ndose en su c\u00e1lculo del ' + submissionDate.toLocaleDateString('es-ES', {\n                day: 'numeric',\n                month: 'long',\n                year: 'numeric'\n              }) + ', podr\u00eda haber ahorrado <strong>' + formatCurrency(additionalSavings) + '<\/strong> adicionales hasta ahora con Quartix.';\n            } else {\n              timestampElement.textContent = 'Resultados calculados el ' + submissionDate.toLocaleDateString('es-ES', {\n                day: 'numeric',\n                month: 'long',\n                year: 'numeric'\n              });\n            }\n          }\n          \n          var backToFormButton = document.getElementById('es-back-to-contact-form');\n          if (backToFormButton) {\n            backToFormButton.style.display = 'none';\n          }\n          \n          var savingsBreakdownElement = document.getElementById('es-savingsBreakdown');\n          if (savingsBreakdownElement) {\n            savingsBreakdownElement.innerHTML = \n              '<div class=\"savings-item\"><h4>Oportunidad de Ahorro Total<\/h4><div class=\"savings-amount\">' + formatCurrency(savedData.totalSavings) + '<\/div><\/div>' +\n              '<div class=\"savings-item\"><h4>Tama\u00f1o de Flota<\/h4><div class=\"savings-amount\">' + savedData.totalVehicles + ' veh\u00edculos<\/div><\/div>' +\n              '<div class=\"savings-item\"><h4>Tipo de Empresa<\/h4><div class=\"savings-amount\">' + (savedData.businessType === 'service' ? 'Servicios' : 'Transporte') + '<\/div><\/div>';\n          }\n          \n          setTimeout(function() {\n            goToStep(4);\n          }, 500);\n          \n          return true;\n        }\n        return false;\n      }\n      \n      function resetCalculator() {\n        businessType = 'service';\n        currentStep = 1;\n        currentCardIndex.service = 0;\n        currentCardIndex.transport = 0;\n        \n        document.querySelectorAll('#quartix-calculator-widget-es .business-type-option').forEach(function(option) {\n          if (option.getAttribute('data-type') === 'service') {\n            option.classList.add('active');\n          } else {\n            option.classList.remove('active');\n          }\n        });\n        \n        document.getElementById('es-firstName').value = '';\n        document.getElementById('es-lastName').value = '';\n        document.getElementById('es-companyName').value = '';\n        document.getElementById('es-email').value = '';\n        document.getElementById('es-phone').value = '';\n        document.getElementById('es-totalVehicles').value = '5';\n        document.getElementById('es-totalEmployees').value = '5';\n        document.getElementById('es-referralSource').value = '';\n        \n        var checkboxIds = ['es-serviceNoStartStop', 'es-serviceUsesPTO', 'es-noStartStop', 'es-usesPTO'];\n        checkboxIds.forEach(function(id) {\n          var cb = document.getElementById(id);\n          if (cb) cb.checked = false;\n        });\n        \n        var ptoInstructions = document.querySelectorAll('#quartix-calculator-widget-es .pto-instruction');\n        ptoInstructions.forEach(function(el) { el.classList.remove('show'); });\n        \n        calculatorData.service.idleTime.hasStartStop = true;\n        calculatorData.service.idleTime.usesPTO = false;\n        calculatorData.transport.idleTime.hasStartStop = true;\n        calculatorData.transport.idleTime.usesPTO = false;\n        \n        calculatorData.common.totalVehicles = 5;\n        calculatorData.common.totalEmployees = 5;\n        \n        updateAllSliders();\n        calculateAllCosts();\n        \n        document.querySelectorAll('#quartix-calculator-widget-es .error-message').forEach(function(element) {\n          element.style.display = 'none';\n        });\n        \n        document.querySelectorAll('#quartix-calculator-widget-es input.error').forEach(function(input) {\n          input.classList.remove('error');\n        });\n      }\n      \n      return {\n        selectBusinessType: function(e, type) {\n          e.preventDefault();\n          \n          document.querySelectorAll('#quartix-calculator-widget-es .business-type-option').forEach(function(opt) {\n            opt.classList.remove('active');\n          });\n          e.currentTarget.classList.add('active');\n          \n          businessType = type;\n          return false;\n        },\n        \n        selectCountryCode: function(e, code, flag) {\n          \/\/ Deprecated - using native select now\n        },\n        \n        updateCountryCode: function(selectElement) {\n          document.getElementById('es-countryCode').value = selectElement.value;\n        },\n        \n        goToCalculator: function(e) {\n          e.preventDefault();\n          \n          if (validateInitialForm()) {\n            var totalVehicles = calculatorData.common.totalVehicles;\n            \n            var vehiclesUsedPrivatelyRange = document.getElementById('es-vehiclesUsedPrivatelyRange');\n            var vehiclesUsedPrivately = document.getElementById('es-vehiclesUsedPrivately');\n            \n            if (vehiclesUsedPrivatelyRange && vehiclesUsedPrivately) {\n              vehiclesUsedPrivatelyRange.max = totalVehicles;\n              if (parseInt(vehiclesUsedPrivately.value) > totalVehicles) {\n                vehiclesUsedPrivately.value = totalVehicles;\n                vehiclesUsedPrivatelyRange.value = totalVehicles;\n              }\n            }\n            \n            var transportVehiclesUsedPrivatelyRange = document.getElementById('es-transportVehiclesUsedPrivatelyRange');\n            var transportVehiclesUsedPrivately = document.getElementById('es-transportVehiclesUsedPrivately');\n            \n            if (transportVehiclesUsedPrivatelyRange && transportVehiclesUsedPrivately) {\n              transportVehiclesUsedPrivatelyRange.max = totalVehicles;\n              if (parseInt(transportVehiclesUsedPrivately.value) > totalVehicles) {\n                transportVehiclesUsedPrivately.value = totalVehicles;\n                transportVehiclesUsedPrivatelyRange.value = totalVehicles;\n              }\n            }\n            \n            goToStep(2);\n            \n            if (businessType === 'service') {\n              document.getElementById('es-service-calculator').style.display = 'block';\n              document.getElementById('es-transport-calculator').style.display = 'none';\n              currentCardIndex.service = 0;\n              showCard('service', currentServiceCard);\n            } else {\n              document.getElementById('es-service-calculator').style.display = 'none';\n              document.getElementById('es-transport-calculator').style.display = 'block';\n              currentCardIndex.transport = 0;\n              showCard('transport', currentTransportCard);\n            }\n            \n            var calcProgress = document.getElementById('es-calculator-progress');\n            if (calcProgress) {\n              calcProgress.classList.add('active');\n            }\n            updateMainProgressBar();\n            updateCalculatorProgress();\n          }\n          \n          return false;\n        },\n        \n        nextCard: function(e, type) {\n          e.preventDefault();\n          var nextCardId = e.currentTarget.getAttribute('data-next');\n          \n          currentCardIndex[type]++;\n          showCard(type, nextCardId);\n          updateMainProgressBar();\n          updateCalculatorProgress();\n          \n          return false;\n        },\n        \n        prevCard: function(e, type) {\n          e.preventDefault();\n          var prevCardId = e.currentTarget.getAttribute('data-prev');\n          \n          currentCardIndex[type]--;\n          showCard(type, prevCardId);\n          updateMainProgressBar();\n          updateCalculatorProgress();\n          \n          return false;\n        },\n        \n        goToContactForm: function(e) {\n          e.preventDefault();\n          resultTimestamp = new Date();\n          \n          \/\/ Sales demo bypass - skip contact form and go directly to results\n          var urlParams = new URLSearchParams(window.location.search);\n          if (urlParams.has('sales-demo')) {\n            calculateResults();\n            goToStep(4);\n            return false;\n          }\n          \n          goToStep(3);\n          return false;\n        },\n        \n        submitForm: function(e) {\n          e.preventDefault();\n          \n          if (validateContactForm()) {\n            calculateResults();\n            goToStep(4);\n            \n            \/\/ Check for sales-demo bypass\n            var urlParams = new URLSearchParams(window.location.search);\n            if (!urlParams.has('sales-demo')) {\n              setTimeout(transferDataToCF7, 500);\n            }\n          }\n          \n          return false;\n        },\n        \n        goToStep: function(step) {\n          goToStep(step);\n        },\n        \n        copyResultsLink: function(e) {\n          e.preventDefault();\n          \n          var totalSavingsText = document.getElementById('es-totalSavings').textContent;\n          var totalSavings = parseFloat(totalSavingsText.replace(\/[^\\d,]\/g, '').replace(',', '.')) || 0;\n          var monthlySavings = Math.round(totalSavings \/ 12);\n          \n          var resultNameElement = document.getElementById('es-resultName');\n          var resultCompanyElement = document.getElementById('es-resultCompany');\n          var prospectName = resultNameElement ? resultNameElement.textContent : 'Cliente';\n          var companyName = resultCompanyElement ? resultCompanyElement.textContent : 'Empresa';\n          \n          var queryParams = new URLSearchParams({\n            savings: totalSavings,\n            monthly: monthlySavings,\n            vehicles: calculatorData.common.totalVehicles,\n            type: businessType,\n            date: resultTimestamp.toISOString(),\n            company: companyName,\n            person: prospectName\n          });\n          \n          var currentUrl = window.location.href.split('?')[0];\n          var fullUrl = currentUrl + '?' + queryParams.toString();\n          \n          if (navigator.clipboard && navigator.clipboard.writeText) {\n            navigator.clipboard.writeText(fullUrl).then(function() {\n              var notification = document.getElementById('es-linkCopiedNotification');\n              notification.classList.add('show');\n              \n              setTimeout(function() {\n                notification.classList.remove('show');\n              }, 3000);\n            });\n          }\n          \n          return false;\n        },\n        \n        resetCalculator: function(e) {\n          e.preventDefault();\n          resetCalculator();\n          goToStep(1);\n          return false;\n        },\n        \n        toggleFuelCostQuestion: function(e) {\n          calculatorData.transport.idleTime.hasStartStop = !e.target.checked;\n          calculateSectionCost('idleTime');\n        },\n        \n        togglePTOStatus: function(e) {\n          calculatorData.transport.idleTime.usesPTO = e.target.checked;\n          \n          var ptoInstruction = document.getElementById('es-transportPTOInstruction');\n          if (ptoInstruction) {\n            if (e.target.checked) {\n              ptoInstruction.classList.add('show');\n            } else {\n              ptoInstruction.classList.remove('show');\n            }\n          }\n        },\n        \n        toggleServiceStartStop: function(e) {\n          calculatorData.service.idleTime.hasStartStop = !e.target.checked;\n          calculateSectionCost('serviceIdleTime');\n        },\n        \n        toggleServicePTO: function(e) {\n          calculatorData.service.idleTime.usesPTO = e.target.checked;\n          \n          var ptoInstruction = document.getElementById('es-servicePTOInstruction');\n          if (ptoInstruction) {\n            if (e.target.checked) {\n              ptoInstruction.classList.add('show');\n            } else {\n              ptoInstruction.classList.remove('show');\n            }\n          }\n          \n          calculateSectionCost('serviceIdleTime');\n        }\n      };\n    })();\n  <\/script>\n<\/div>\n<!-- End: Quartix Partner Earnings Calculator Widget - Spanish -->\n<\/div>\n\n\n\n<div style=\"height:60px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Descubre cu\u00e1nto puedes ahorrar con Quartix Responde a unas pocas preguntas r\u00e1pidas para calcular tu ahorro potencial con la localizaci\u00f3n GPS de veh\u00edculos de Quartix: desde combustible y kilometraje privado hasta control del tiempo y optimizaci\u00f3n de rutas. 1 Tipo de Empresa 2 Calcular Ahorro 3 Sus Datos 4 Resultados \u00bfQu\u00e9 tipo de negocio opera? [&hellip;]<\/p>\n","protected":false},"author":219,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"templates\/landing-pagebuilder.php","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"topic":[],"qtx_campaign":[],"class_list":["post-123164","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Calcula el ROI de la localizaci\u00f3n GPS de veh\u00edculos | Herramienta de ahorro Quartix - ES<\/title>\n<meta name=\"description\" content=\"Descubre cu\u00e1nto podr\u00eda ahorrar tu empresa con la localizaci\u00f3n GPS de veh\u00edculos de Quartix. Usa nuestra calculadora gratuita de ROI para estimar ahorros en combustible, tiempo y productividad.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.quartix.com\/es-es\/calculadora-retorno-inversion\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"ROI Calculator\" \/>\n<meta property=\"og:description\" content=\"Descubre cu\u00e1nto podr\u00eda ahorrar tu empresa con la localizaci\u00f3n GPS de veh\u00edculos de Quartix. Usa nuestra calculadora gratuita de ROI para estimar ahorros en combustible, tiempo y productividad.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.quartix.com\/es-es\/calculadora-retorno-inversion\/\" \/>\n<meta property=\"og:site_name\" content=\"Quartix\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Quartix-USA-374426386097401\/\" \/>\n<meta property=\"article:modified_time\" content=\"2026-02-11T23:56:21+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.quartix.com\/content\/uploads\/2019\/02\/quartix-logo-eur.svg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@QuartixUSA\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"7 minutes\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Calcula el ROI de la localizaci\u00f3n GPS de veh\u00edculos | Herramienta de ahorro Quartix - ES","description":"Descubre cu\u00e1nto podr\u00eda ahorrar tu empresa con la localizaci\u00f3n GPS de veh\u00edculos de Quartix. Usa nuestra calculadora gratuita de ROI para estimar ahorros en combustible, tiempo y productividad.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.quartix.com\/es-es\/calculadora-retorno-inversion\/","og_locale":"es_ES","og_type":"article","og_title":"ROI Calculator","og_description":"Descubre cu\u00e1nto podr\u00eda ahorrar tu empresa con la localizaci\u00f3n GPS de veh\u00edculos de Quartix. Usa nuestra calculadora gratuita de ROI para estimar ahorros en combustible, tiempo y productividad.","og_url":"https:\/\/www.quartix.com\/es-es\/calculadora-retorno-inversion\/","og_site_name":"Quartix","article_publisher":"https:\/\/www.facebook.com\/Quartix-USA-374426386097401\/","article_modified_time":"2026-02-11T23:56:21+00:00","og_image":[{"url":"https:\/\/www.quartix.com\/content\/uploads\/2019\/02\/quartix-logo-eur.svg","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_site":"@QuartixUSA","twitter_misc":{"Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.quartix.com\/es-es\/calculadora-retorno-inversion\/","url":"https:\/\/www.quartix.com\/es-es\/calculadora-retorno-inversion\/","name":"Calcula el ROI de la localizaci\u00f3n GPS de veh\u00edculos | Herramienta de ahorro Quartix","isPartOf":{"@id":"https:\/\/www.quartix.com\/es-es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.quartix.com\/es-es\/calculadora-retorno-inversion\/#primaryimage"},"image":{"@id":"https:\/\/www.quartix.com\/es-es\/calculadora-retorno-inversion\/#primaryimage"},"thumbnailUrl":"https:\/\/www.quartix.com\/content\/uploads\/2019\/02\/quartix-logo-eur.svg","datePublished":"2025-06-06T02:12:11+00:00","dateModified":"2026-02-11T23:56:21+00:00","description":"Descubre cu\u00e1nto podr\u00eda ahorrar tu empresa con la localizaci\u00f3n GPS de veh\u00edculos de Quartix. Usa nuestra calculadora gratuita de ROI para estimar ahorros en combustible, tiempo y productividad.","breadcrumb":{"@id":"https:\/\/www.quartix.com\/es-es\/calculadora-retorno-inversion\/#breadcrumb"},"inLanguage":"es-ES","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.quartix.com\/es-es\/calculadora-retorno-inversion\/"]}]},{"@type":"ImageObject","inLanguage":"es-ES","@id":"https:\/\/www.quartix.com\/es-es\/calculadora-retorno-inversion\/#primaryimage","url":"https:\/\/www.quartix.com\/content\/uploads\/2019\/02\/quartix-logo-eur.svg","contentUrl":"https:\/\/www.quartix.com\/content\/uploads\/2019\/02\/quartix-logo-eur.svg"},{"@type":"BreadcrumbList","@id":"https:\/\/www.quartix.com\/es-es\/calculadora-retorno-inversion\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Inicio","item":"https:\/\/www.quartix.com\/es-es\/quartix-localizacion-de-vehiculos-en-tiempo-real\/"},{"@type":"ListItem","position":2,"name":"ROI Calculator"}]},{"@type":"WebSite","@id":"https:\/\/www.quartix.com\/es-es\/#website","url":"https:\/\/www.quartix.com\/es-es\/","name":"Quartix","description":"Real-time vehicle tracking","publisher":{"@id":"https:\/\/www.quartix.com\/es-es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.quartix.com\/es-es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es-ES"},{"@type":"Organization","@id":"https:\/\/www.quartix.com\/es-es\/#organization","name":"Quartix","url":"https:\/\/www.quartix.com\/es-es\/","logo":{"@type":"ImageObject","inLanguage":"es-ES","@id":"https:\/\/www.quartix.com\/es-es\/#\/schema\/logo\/image\/","url":"https:\/\/www.quartix.com\/content\/uploads\/2019\/02\/quartix-logo-eur.svg","contentUrl":"https:\/\/www.quartix.com\/content\/uploads\/2019\/02\/quartix-logo-eur.svg","width":1,"height":1,"caption":"Quartix"},"image":{"@id":"https:\/\/www.quartix.com\/es-es\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Quartix-USA-374426386097401\/","https:\/\/x.com\/QuartixUSA","https:\/\/www.linkedin.com\/company\/5346733\/","https:\/\/www.youtube.com\/channel\/UCzS-_GMfHF4kWiCheyIRrAQ"]}]}},"_links":{"self":[{"href":"https:\/\/www.quartix.com\/es-es\/wp-json\/wp\/v2\/pages\/123164","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.quartix.com\/es-es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.quartix.com\/es-es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.quartix.com\/es-es\/wp-json\/wp\/v2\/users\/219"}],"replies":[{"embeddable":true,"href":"https:\/\/www.quartix.com\/es-es\/wp-json\/wp\/v2\/comments?post=123164"}],"version-history":[{"count":6,"href":"https:\/\/www.quartix.com\/es-es\/wp-json\/wp\/v2\/pages\/123164\/revisions"}],"predecessor-version":[{"id":128780,"href":"https:\/\/www.quartix.com\/es-es\/wp-json\/wp\/v2\/pages\/123164\/revisions\/128780"}],"wp:attachment":[{"href":"https:\/\/www.quartix.com\/es-es\/wp-json\/wp\/v2\/media?parent=123164"}],"wp:term":[{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.quartix.com\/es-es\/wp-json\/wp\/v2\/topic?post=123164"},{"taxonomy":"qtx_campaign","embeddable":true,"href":"https:\/\/www.quartix.com\/es-es\/wp-json\/wp\/v2\/qtx_campaign?post=123164"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}