{"id":123165,"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-04T20:59:03","modified_gmt":"2026-02-04T19:59:03","slug":"calculateur-retour-sur-investissement","status":"publish","type":"page","link":"https:\/\/www.quartix.com\/fr-fr\/calculateur-retour-sur-investissement\/","title":{"rendered":"Calculateur de ROI"},"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-decouvrez-combien-vous-pouvez-economiser-avec-quartix\">D\u00e9couvrez combien vous pouvez \u00e9conomiser avec Quartix<\/h1>\n\n\n\n<p class=\"has-text-align-center\">R\u00e9pondez \u00e0 quelques questions rapides pour estimer vos \u00e9conomies potentielles gr\u00e2ce \u00e0 la g\u00e9olocalisation de v\u00e9hicules Quartix : carburant, kilom\u00e9trage priv\u00e9, gestion du temps et optimisation des itin\u00e9raires.<\/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 - French -->\n<div id=\"quartix-calculator-widget-fr\">\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-fr {\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-fr h1, \n    #quartix-calculator-widget-fr h2, \n    #quartix-calculator-widget-fr h3, \n    #quartix-calculator-widget-fr h4, \n    #quartix-calculator-widget-fr h5, \n    #quartix-calculator-widget-fr h6, \n    #quartix-calculator-widget-fr .section-header label,\n    #quartix-calculator-widget-fr .metrics-title,\n    #quartix-calculator-widget-fr .chart-title {\n      font-family: 'Inter', sans-serif;\n      color: #000000;\n    }\n    \n    #quartix-calculator-widget-fr .form-group {\n      margin-bottom: 15px;\n      background-color: #f9f9f9;\n    }\n    \n    #quartix-calculator-widget-fr 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-fr input[type=\"text\"],\n    #quartix-calculator-widget-fr input[type=\"email\"],\n    #quartix-calculator-widget-fr input[type=\"tel\"],\n    #quartix-calculator-widget-fr input[type=\"number\"],\n    #quartix-calculator-widget-fr 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-fr input[type=\"text\"]:focus,\n    #quartix-calculator-widget-fr input[type=\"email\"]:focus,\n    #quartix-calculator-widget-fr input[type=\"tel\"]:focus,\n    #quartix-calculator-widget-fr input[type=\"number\"]:focus,\n    #quartix-calculator-widget-fr select:focus {\n      border-color: #4EA863;\n      outline: none;\n    }\n    \n    #quartix-calculator-widget-fr input.error {\n      border-color: #e74c3c;\n    }\n    \n    #quartix-calculator-widget-fr .error-message {\n      color: #e74c3c;\n      font-size: 14px;\n      margin-top: 5px;\n      display: none;\n    }\n    \n    #quartix-calculator-widget-fr .email-note {\n      font-size: 14px;\n      color: #666;\n      margin-top: 5px;\n    }\n    \n    #quartix-calculator-widget-fr .currency-input-wrapper {\n      position: relative;\n      display: flex;\n      align-items: center;\n    }\n    \n    #quartix-calculator-widget-fr .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-fr .currency-input {\n      padding-left: 28px !important;\n    }\n    \n    #quartix-calculator-widget-fr .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-fr .business-type-selector {\n      display: flex;\n      gap: 15px;\n      margin-bottom: 25px;\n      background-color: #f9f9f9;\n    }\n    \n    #quartix-calculator-widget-fr .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-fr .business-type-option:hover {\n      border-color: #4EA863;\n      background-color: #f9f9f9;\n    }\n    \n    #quartix-calculator-widget-fr .business-type-option.active {\n      border-color: #4EA863;\n      background-color: #edf7f1;\n    }\n    \n    #quartix-calculator-widget-fr .business-type-option svg {\n      display: block;\n      margin: 0 auto 10px;\n      height: 40px;\n      width: 40px;\n    }\n    \n    #quartix-calculator-widget-fr .business-type-option h4 {\n      margin: 0;\n      font-size: 16px;\n    }\n    \n    #quartix-calculator-widget-fr .progress-steps {\n      display: flex;\n      margin-bottom: 30px;\n      background-color: #ffffff;\n    }\n    \n    #quartix-calculator-widget-fr .progress-step {\n      flex: 1;\n      text-align: center;\n      position: relative;\n    }\n    \n    #quartix-calculator-widget-fr .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-fr .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-fr .progress-step.active .step-circle {\n      background-color: #4EA863;\n    }\n    \n    #quartix-calculator-widget-fr .progress-step.completed .step-circle {\n      background-color: #4EA863;\n    }\n    \n    #quartix-calculator-widget-fr .step-label {\n      font-size: 14px;\n      font-weight: 600;\n      color: #666;\n      white-space: nowrap;\n    }\n    \n    #quartix-calculator-widget-fr .progress-step.active .step-label {\n      color: #000;\n    }\n    \n    #quartix-calculator-widget-fr .progress-step:not(:last-child).completed:after {\n      background-color: #4EA863;\n    }\n    \n    #quartix-calculator-widget-fr .calculator-section {\n      display: none;\n      animation: qcalcFrFadeIn 0.5s ease;\n      background-color: #ffffff;\n    }\n    \n    #quartix-calculator-widget-fr .calculator-section.active {\n      display: block;\n      background-color: #ffffff;\n      padding: 20px;\n      border-radius: 8px;\n    }\n    \n    #quartix-calculator-widget-fr .calculator-card {\n      display: none;\n      background: #f9f9f9;\n      border-radius: 10px;\n      padding: 20px;\n      margin-bottom: 20px;\n      animation: qcalcFrFadeIn 0.5s ease;\n    }\n    \n    #quartix-calculator-widget-fr .calculator-card.active {\n      display: block;\n    }\n    \n    @keyframes qcalcFrFadeIn {\n      from { opacity: 0; }\n      to { opacity: 1; }\n    }\n    \n    #quartix-calculator-widget-fr .contact-form {\n      width: 100%;\n      background-color: #f9f9f9;\n      padding: 20px;\n      border-radius: 8px;\n    }\n    \n    #quartix-calculator-widget-fr .form-row {\n      display: flex;\n      gap: 60px;\n      margin-bottom: 20px;\n      background-color: #f9f9f9;\n    }\n    \n    #quartix-calculator-widget-fr .form-col {\n      flex: 1;\n      background-color: #f9f9f9;\n    }\n    \n    #quartix-calculator-widget-fr .country-code-select {\n      padding: 10px;\n      border: 2px solid #e0e0e0;\n      border-radius: 6px;\n      font-size: 14px;\n      background-color: white;\n      cursor: pointer;\n      width: auto;\n      min-width: 85px;\n      max-width: 100px;\n      flex-shrink: 0;\n    }\n    \n    #quartix-calculator-widget-fr .phone-input-container {\n      display: flex;\n      gap: 10px;\n    }\n    \n    #quartix-calculator-widget-fr .button-group {\n      display: flex;\n      justify-content: space-between;\n      margin-top: 20px;\n    }\n    \n    #quartix-calculator-widget-fr .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-fr .button-prev {\n      background-color: #e0e0e0;\n      color: #444;\n      border: 1px solid #ccc;\n    }\n    \n    #quartix-calculator-widget-fr .button-prev:hover {\n      background-color: #d0d0d0;\n    }\n    \n    #quartix-calculator-widget-fr .button-next,\n    #quartix-calculator-widget-fr .button-submit,\n    #quartix-calculator-widget-fr .button-reset {\n      background-color: #4EA863;\n      color: white;\n    }\n    \n    #quartix-calculator-widget-fr .button-next:hover,\n    #quartix-calculator-widget-fr .button-submit:hover,\n    #quartix-calculator-widget-fr .button-reset:hover {\n      background-color: #3d8a4f;\n    }\n    \n    #quartix-calculator-widget-fr .button-reset {\n      background-color: #e74c3c;\n    }\n    \n    #quartix-calculator-widget-fr .button-reset:hover {\n      background-color: #c0392b;\n    }\n    \n    #quartix-calculator-widget-fr .section-header {\n      display: flex;\n      align-items: center;\n      margin-bottom: 10px;\n    }\n    \n    #quartix-calculator-widget-fr .section-header h3 {\n      margin: 0;\n      margin-right: 8px;\n    }\n    \n    #quartix-calculator-widget-fr .tooltip {\n      position: relative;\n      display: inline-flex;\n      color: #999;\n      cursor: help;\n    }\n    \n    #quartix-calculator-widget-fr .tooltip:hover {\n      color: #4EA863;\n    }\n    \n    #quartix-calculator-widget-fr .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-fr .tooltip:hover::after {\n      opacity: 1;\n    }\n    \n    #quartix-calculator-widget-fr .slider-with-value {\n      display: flex;\n      align-items: center;\n      gap: 15px;\n      margin-bottom: 15px;\n    }\n    \n    #quartix-calculator-widget-fr .slider-container {\n      flex: 3;\n      position: relative;\n    }\n    \n    #quartix-calculator-widget-fr .slider-value {\n      flex: 1;\n      max-width: 80px;\n      text-align: center;\n    }\n    \n    #quartix-calculator-widget-fr 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-fr 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-fr input[type=\"range\"]::-webkit-slider-thumb:hover {\n      transform: scale(1.15);\n    }\n    \n    #quartix-calculator-widget-fr 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-fr input[type=\"range\"]::-moz-range-track {\n      background: #d0eddc;\n      height: 6px;\n      border-radius: 3px;\n    }\n    \n    #quartix-calculator-widget-fr .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-fr .info-note strong {\n      display: block;\n      margin-bottom: 4px;\n      color: #333;\n    }\n    \n    #quartix-calculator-widget-fr .results-section {\n      padding: 20px;\n    }\n    \n    #quartix-calculator-widget-fr .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-fr .results-timestamp {\n      font-size: 14px;\n      color: #777;\n      margin-bottom: 15px;\n    }\n    \n    #quartix-calculator-widget-fr .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-fr .savings-period {\n      display: flex;\n      gap: 20px;\n      justify-content: center;\n      margin-bottom: 20px;\n    }\n    \n    #quartix-calculator-widget-fr .period-item {\n      text-align: center;\n    }\n    \n    #quartix-calculator-widget-fr .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-fr .period-label {\n      font-size: 14px;\n      color: #666;\n    }\n    \n    #quartix-calculator-widget-fr .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-fr .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-fr .savings-item h4 {\n      margin: 0 0 10px 0;\n      font-size: 16px;\n    }\n    \n    #quartix-calculator-widget-fr .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-fr .savings-explanation {\n      font-size: 13px;\n      color: #666;\n      margin-top: 8px;\n      line-height: 1.4;\n    }\n    \n    #quartix-calculator-widget-fr .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-fr .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-fr .share-button:hover {\n      background-color: #f5f5f5;\n    }\n    \n    #quartix-calculator-widget-fr .share-button svg {\n      width: 20px;\n      height: 20px;\n    }\n    \n    #quartix-calculator-widget-fr .copy-link {\n      background-color: #9C27B0;\n      color: white;\n    }\n    \n    #quartix-calculator-widget-fr .copy-link:hover {\n      background-color: #7B1FA2;\n    }\n    \n    #quartix-calculator-widget-fr .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-fr .link-copied-notification.show {\n      opacity: 1;\n    }\n    \n    #quartix-calculator-widget-fr .question-row {\n      display: flex;\n      gap: 60px;\n      margin-bottom: 20px;\n    }\n    \n    #quartix-calculator-widget-fr .question-col {\n      flex: 1;\n    }\n    \n    #quartix-calculator-widget-fr 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-fr 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-fr 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-fr 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-fr .checkbox-group {\n      margin-bottom: 25px;\n    }\n    \n    #quartix-calculator-widget-fr .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-fr .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-fr .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-fr .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-fr .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-fr .pto-instruction.show {\n      display: block;\n    }\n    \n    #quartix-calculator-widget-fr .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-fr .form-row,\n      #quartix-calculator-widget-fr .question-row {\n        flex-direction: column;\n        gap: 15px;\n      }\n      #quartix-calculator-widget-fr .business-type-selector,\n      #quartix-calculator-widget-fr .calculation-type-selector {\n        flex-direction: column;\n      }\n      #quartix-calculator-widget-fr .button-group {\n        flex-direction: column;\n        gap: 10px;\n      }\n      #quartix-calculator-widget-fr .button {\n        width: 100%;\n      }\n      #quartix-calculator-widget-fr .progress-steps {\n        overflow-x: auto;\n      }\n      #quartix-calculator-widget-fr .step-label {\n        font-size: 12px;\n      }\n      #quartix-calculator-widget-fr .savings-period {\n        flex-direction: column;\n        gap: 10px;\n      }\n      #quartix-calculator-widget-fr .checkbox-group {\n        flex-direction: column;\n        gap: 15px;\n      }\n    }\n    \n    #quartix-calculator-widget-fr .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-fr .completion-time svg {\n      margin-right: 8px;\n      color: #4EA863;\n    }\n    \n    #quartix-calculator-widget-fr .personal-greeting {\n      margin: 15px 0;\n      font-size: 18px;\n    }\n    \n    #quartix-calculator-widget-fr .roi-section {\n      margin-top: 40px;\n      background-color: #f8f8f8;\n      padding: 20px;\n      border-radius: 8px;\n    }\n    \n    #quartix-calculator-widget-fr .roi-section h3 {\n      text-align: center;\n      margin-bottom: 20px;\n      color: #333;\n    }\n    \n    #quartix-calculator-widget-fr .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-fr .roi-details {\n        grid-template-columns: 1fr;\n      }\n    }\n    \n    #quartix-calculator-widget-fr .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-fr .roi-item.highlight {\n      background-color: #edf7f1;\n      border: 1px solid #4EA863;\n    }\n    \n    #quartix-calculator-widget-fr .roi-label {\n      font-weight: 600;\n      margin-bottom: 5px;\n      color: #666;\n    }\n    \n    #quartix-calculator-widget-fr .roi-value {\n      font-size: 18px;\n      font-weight: 700;\n      color: #333;\n    }\n    \n    #quartix-calculator-widget-fr .roi-item.highlight .roi-value {\n      color: #4EA863;\n      font-size: 22px;\n    }\n    \n    #quartix-calculator-widget-fr .roi-payback {\n      text-align: center;\n      margin-top: 20px;\n      font-size: 16px;\n    }\n    \n    #quartix-calculator-widget-fr .roi-payback span {\n      font-weight: 700;\n      color: #4EA863;\n    }\n\n    #quartix-calculator-widget-fr .quartix-logo {\n      display: block;\n      margin: 0 auto 20px;\n      height: 45px;\n    }\n    \n    #quartix-calculator-widget-fr .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-fr .calculator-progress.active {\n      display: block;\n    }\n    \n    #quartix-calculator-widget-fr .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-fr .calculator-progress-title {\n      font-size: 14px;\n      font-weight: 600;\n      color: #333;\n    }\n    \n    #quartix-calculator-widget-fr .calculator-progress-percentage {\n      font-size: 14px;\n      font-weight: 700;\n      color: #4EA863;\n    }\n    \n    #quartix-calculator-widget-fr .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-fr .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-fr .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: qcalcFrMove 1s linear infinite;\n      opacity: 0.5;\n    }\n    \n    @keyframes qcalcFrMove {\n      0% { background-position: 0 0; }\n      100% { background-position: 15px 15px; }\n    }\n    \n    #quartix-calculator-widget-fr .private-mileage-cost,\n    #quartix-calculator-widget-fr .reactive-work-cost,\n    #quartix-calculator-widget-fr .billing-disputfr-cost,\n    #quartix-calculator-widget-fr .time-on-site-cost,\n    #quartix-calculator-widget-fr .idle-time-cost,\n    #quartix-calculator-widget-fr .standing-time-cost,\n    #quartix-calculator-widget-fr .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=\"fr-progress-container\">\n    <div class=\"progress-step active\" data-step=\"1\">\n      <div class=\"step-circle\">1<\/div>\n      <div class=\"step-label\">Type d&#8217;Activit\u00e9<\/div>\n    <\/div>\n    <div class=\"progress-step\" data-step=\"2\">\n      <div class=\"step-circle\">2<\/div>\n      <div class=\"step-label\">Calculer les \u00c9conomies<\/div>\n    <\/div>\n    <div class=\"progress-step\" data-step=\"3\">\n      <div class=\"step-circle\">3<\/div>\n      <div class=\"step-label\">Vos Donn\u00e9es<\/div>\n    <\/div>\n    <div class=\"progress-step\" data-step=\"4\">\n      <div class=\"step-circle\">4<\/div>\n      <div class=\"step-label\">R\u00e9sultats<\/div>\n    <\/div>\n  <\/div>\n\n  <!-- Business Type Selection Section -->\n  <div class=\"calculator-section active\" id=\"fr-section-0\">\n    <div class=\"contact-form\">\n      <div class=\"form-group\">\n        <h3>Quel type d&#8217;activit\u00e9 exploitez-vous ?<\/h3>\n        \n        <div class=\"disclaimer-box\">\n          <strong>Avis :<\/strong> Les \u00e9conomies calcul\u00e9es sont des estimations indicatives bas\u00e9es sur les moyennes du secteur. Les \u00e9conomies r\u00e9elles peuvent varier selon vos circonstances sp\u00e9cifiques, vos habitudes de conduite et vos facteurs op\u00e9rationnels. Quartix ne garantit pas que vous atteindrez les \u00e9conomies exactes indiqu\u00e9es.\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          Temps estim\u00e9 : 5 minutes\n        <\/div>\n        \n        <div class=\"business-type-selector\">\n          <div class=\"business-type-option active\" data-type=\"service\" onclick=\"QCalcFR.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>Activit\u00e9 de Services<\/h4>\n            <p>Service technique, construction, maintenance, installation, etc.<\/p>\n          <\/div>\n          <div class=\"business-type-option\" data-type=\"transport\" onclick=\"QCalcFR.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>Activit\u00e9 de Transport<\/h4>\n            <p>Logistique, livraisons, transport de marchandises, 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=\"fr-totalVehicles\">Nombre Total de V\u00e9hicules *<\/label>\n            <input type=\"number\" id=\"fr-totalVehicles\" min=\"1\" value=\"5\" required>\n            <div class=\"error-message\" id=\"fr-totalVehiclfr-error\">Veuillez entrer le nombre de v\u00e9hicules<\/div>\n          <\/div>\n        <\/div>\n        <div class=\"form-col\">\n          <div class=\"form-group\">\n            <label for=\"fr-totalEmployees\">Nombre Total d&#8217;Employ\u00e9s Utilisant des V\u00e9hicules de Soci\u00e9t\u00e9 *<\/label>\n            <input type=\"number\" id=\"fr-totalEmployees\" min=\"1\" value=\"5\" required>\n            <div class=\"error-message\" id=\"fr-totalEmployefr-error\">Veuillez entrer le nombre d&#8217;employ\u00e9s<\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n      \n      <div class=\"button-group\">\n        <div><\/div>\n        <button class=\"button button-next\" id=\"fr-next-to-calculator\" onclick=\"QCalcFR.goToCalculator(event)\">Suivant<\/button>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <!-- Calculator Inputs Section -->\n  <div class=\"calculator-section\" id=\"fr-section-2\">\n    <div class=\"calculator-progress\" id=\"fr-calculator-progress\">\n      <div class=\"calculator-progress-header\">\n        <div class=\"calculator-progress-title\">Progression du Calcul<\/div>\n        <div class=\"calculator-progress-percentage\" id=\"fr-calculator-percentage\">0%<\/div>\n      <\/div>\n      <div class=\"calculator-progress-bar\">\n        <div class=\"calculator-progress-fill\" id=\"fr-calculator-progress-fill\" style=\"width: 0%\"><\/div>\n      <\/div>\n    <\/div>\n    \n    <!-- Service Business Calculator -->\n    <div id=\"fr-service-calculator\">\n      <!-- Private Mileage -->\n      <div class=\"calculator-card active\" id=\"fr-private-mileage-card\">\n        <div class=\"section-header\">\n          <h3>\u00c9conomies sur le Kilom\u00e9trage Priv\u00e9<\/h3>\n          <div class=\"tooltip\" data-tooltip=\"R\u00e9duire le kilom\u00e9trage priv\u00e9 \u00e9conomise du carburant et \u00e9vite l'usure inutile du v\u00e9hicule\">\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>L&#8217;une des diff\u00e9rences les plus notables que vous pouvez attendre en installant le syst\u00e8me de localisation Quartix sera une diminution significative du kilom\u00e9trage priv\u00e9 en dehors des heures de travail. Avant d&#8217;installer le syst\u00e8me Quartix, nos clients observaient typiquement une moyenne de 80 kilom\u00e8tres par v\u00e9hicule par semaine uniquement en kilom\u00e9trage priv\u00e9.<\/p>\n        \n        <div class=\"question-row\">\n          <div class=\"question-col\">\n            <div class=\"form-group\">\n              <label for=\"fr-vehiclesUsedPrivately\">Parmi les v\u00e9hicules sp\u00e9cifi\u00e9s, combien sont utilis\u00e9s \u00e0 titre priv\u00e9 ?<\/label>\n              <div class=\"slider-with-value\">\n                <div class=\"slider-container\">\n                  <input type=\"range\" id=\"fr-vehiclesUsedPrivatelyRange\" min=\"0\" max=\"5\" value=\"2\">\n                <\/div>\n                <input type=\"number\" id=\"fr-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=\"fr-averagePrivateKmPerWeek\">Kilom\u00e8tres priv\u00e9s moyens par semaine, par v\u00e9hicule<\/label>\n              <div class=\"slider-with-value\">\n                <div class=\"slider-container\">\n                  <input type=\"range\" id=\"fr-averagePrivateKmPerWeekRange\" min=\"0\" max=\"500\" value=\"80\">\n                <\/div>\n                <input type=\"number\" id=\"fr-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=\"fr-averageL100km\">Consommation moyenne de carburant (L\/100km)<\/label>\n              <div class=\"slider-with-value\">\n                <div class=\"slider-container\">\n                  <input type=\"range\" id=\"fr-averageL100kmRange\" min=\"4\" max=\"20\" step=\"0.5\" value=\"7.5\">\n                <\/div>\n                <input type=\"number\" id=\"fr-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=\"fr-fuelCostPerLitre\">Co\u00fbt du carburant par litre<\/label>\n              <div class=\"currency-input-wrapper\">\n                <span class=\"currency-symbol\">\u20ac<\/span>\n                <input type=\"number\" id=\"fr-fuelCostPerLitre\" class=\"currency-input\" min=\"1\" max=\"3\" step=\"0.01\" value=\"1.80\">\n              <\/div>\n            <\/div>\n          <\/div>\n        <\/div>\n        \n        <div class=\"private-mileage-cost\">\n          <strong>Co\u00fbt du carburant pour le kilom\u00e9trage priv\u00e9 par an:<\/strong>\n          <span id=\"fr-privateMileageCost\">\u20ac0,00<\/span>\n        <\/div>\n        \n        <div class=\"calculation-note\">\n          Bas\u00e9 sur: <span id=\"fr-privateMileageCalc\"><\/span>\n        <\/div>\n        \n        <div class=\"info-note\">\n          <strong>Avantages suppl\u00e9mentaires :<\/strong>\n          La r\u00e9duction du kilom\u00e9trage priv\u00e9 peut \u00e9galement contribuer aux \u00e9conomies de maintenance en r\u00e9duisant l&#8217;usure de vos v\u00e9hicules. Bien que non inclus dans le calcul ci-dessus, cela peut apporter des avantages suppl\u00e9mentaires pour les op\u00e9rations de votre flotte.\n        <\/div>\n        \n        <div class=\"button-group\">\n          <button class=\"button button-prev\" id=\"fr-full-back-to-contact\" onclick=\"QCalcFR.goToStep(1)\">Pr\u00e9c\u00e9dent<\/button>\n          <button class=\"button button-next next-card\" data-next=\"fr-time-on-site-card\" onclick=\"QCalcFR.nextCard(event, 'service')\">Suivant<\/button>\n        <\/div>\n      <\/div>\n      \n      <!-- Time Accountability -->\n      <div class=\"calculator-card\" id=\"fr-time-on-site-card\">\n        <div class=\"section-header\">\n          <h3>\u00c9conomies sur la Responsabilit\u00e9 Horaire<\/h3>\n          <div class=\"tooltip\" data-tooltip=\"Le suivi assure que vos employ\u00e9s maximisent le temps productif et r\u00e9duit les minutes perdues\">\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>Lorsque les employ\u00e9s arrivent en retard \u00e0 un travail, partent t\u00f4t ou prennent des pauses non autoris\u00e9es, les minutes perdues par jour s&#8217;accumulent rapidement. Avec le syst\u00e8me de localisation Quartix, vous pouvez am\u00e9liorer la responsabilit\u00e9 et r\u00e9duire ces minutes perdues, les transformant en temps productif.<\/p>\n        \n        <div class=\"question-row\">\n          <div class=\"question-col\">\n            <div class=\"form-group\">\n              <label for=\"fr-minutesLostPerDay\">Minutes perdues par jour par employ\u00e9<\/label>\n              <div class=\"slider-with-value\">\n                <div class=\"slider-container\">\n                  <input type=\"range\" id=\"fr-minutesLostPerDayRange\" min=\"5\" max=\"120\" value=\"30\">\n                <\/div>\n                <input type=\"number\" id=\"fr-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=\"fr-employeeHourlyRate\">Tarif horaire moyen de l&#8217;employ\u00e9<\/label>\n              <div class=\"currency-input-wrapper\">\n                <span class=\"currency-symbol\">\u20ac<\/span>\n                <input type=\"number\" id=\"fr-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=\"fr-workingDaysPerWeek\">Jours ouvrables par semaine<\/label>\n          <div class=\"slider-with-value\">\n            <div class=\"slider-container\">\n              <input type=\"range\" id=\"fr-workingDaysPerWeekRange\" min=\"1\" max=\"7\" value=\"5\">\n            <\/div>\n            <input type=\"number\" id=\"fr-workingDaysPerWeek\" class=\"slider-value\" min=\"1\" max=\"7\" value=\"5\">\n          <\/div>\n        <\/div>\n        \n        <div class=\"time-on-site-cost\">\n          <strong>Co\u00fbt de la productivit\u00e9 perdue par an:<\/strong>\n          <span id=\"fr-timeOnSiteCost\">\u20ac0,00<\/span>\n        <\/div>\n        \n        <div class=\"calculation-note\">\n          Bas\u00e9 sur: <span id=\"fr-timeOnSiteCalc\"><\/span>\n        <\/div>\n        \n        <div class=\"button-group\">\n          <button class=\"button button-prev prev-card\" data-prev=\"fr-private-mileage-card\" onclick=\"QCalcFR.prevCard(event, 'service')\">Pr\u00e9c\u00e9dent<\/button>\n          <button class=\"button button-next next-card\" data-next=\"fr-service-idle-time-card\" onclick=\"QCalcFR.nextCard(event, 'service')\">Suivant<\/button>\n        <\/div>\n      <\/div>\n      \n      <!-- Idle Time -->\n      <div class=\"calculator-card\" id=\"fr-service-idle-time-card\">\n        <div class=\"section-header\">\n          <h3>R\u00e9duction du temps de marche au ralenti<\/h3>\n          <div class=\"tooltip\" data-tooltip=\"R\u00e9duire le temps de ralenti du v\u00e9hicule \u00e9conomise du carburant et augmente la productivit\u00e9\">\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>Les v\u00e9hicules avec le moteur en marche \u00e0 l&#8217;arr\u00eat gaspillent du carburant, cr\u00e9ent des \u00e9missions inutiles et repr\u00e9sentent du temps improductif. Le syst\u00e8me de localisation Quartix aide \u00e0 identifier et r\u00e9duire ces cas.<\/p>\n        \n        <div class=\"checkbox-group\">\n          <div class=\"checkbox-item\">\n            <label>\n              <input type=\"checkbox\" id=\"fr-serviceNoStartStop\" onchange=\"QCalcFR.toggleServiceStartStop(event)\">\n              <span>Mes v\u00e9hicules de flotte N&#8217;ONT PAS la technologie start-stop<\/span>\n            <\/label>\n            <div class=\"checkbox-description\">\n              La technologie start-stop \u00e9teint automatiquement le moteur lorsque le v\u00e9hicule est \u00e0 l&#8217;arr\u00eat, r\u00e9duisant la consommation de carburant pendant le temps de ralenti. La plupart des v\u00e9hicules modernes (2015+) ont cette fonction.\n            <\/div>\n          <\/div>\n          \n          <div class=\"checkbox-item\">\n            <label>\n              <input type=\"checkbox\" id=\"fr-serviceUsesPTO\" onchange=\"QCalcFR.toggleServicePTO(event)\">\n              <span>Ma flotte utilise des syst\u00e8mes PDF (Prise de Force)<\/span>\n            <\/label>\n            <div class=\"checkbox-description\">\n              Les syst\u00e8mes PDF alimentent des \u00e9quipements auxiliaires pendant que le v\u00e9hicule est \u00e0 l&#8217;arr\u00eat. Les exemples incluent les b\u00e9tonni\u00e8res, les \u00e9l\u00e9vateurs de charge, les parois basculantes ou les unit\u00e9s de r\u00e9frig\u00e9ration.\n            <\/div>\n            <div class=\"pto-instruction\" id=\"fr-servicePTOInstruction\">\n              Veuillez vous assurer que les minutes en mode PDF NE sont PAS incluses dans le temps de ralenti quotidien que vous entrez ci-dessous. Les donn\u00e9es de suivi afficheront les \u00e9v\u00e9nements PDF s\u00e9par\u00e9ment, mais cette calculatrice n&#8217;estime que le carburant utilis\u00e9 pendant le ralenti r\u00e9el.\n            <\/div>\n          <\/div>\n        <\/div>\n        \n        <div class=\"form-group\">\n          <label for=\"fr-serviceMinutesIdlePerDay\">Minutes de ralenti par jour par v\u00e9hicule<\/label>\n          <div class=\"slider-with-value\">\n            <div class=\"slider-container\">\n              <input type=\"range\" id=\"fr-serviceMinutesIdlePerDayRange\" min=\"0\" max=\"120\" value=\"20\">\n            <\/div>\n            <input type=\"number\" id=\"fr-serviceMinutesIdlePerDay\" class=\"slider-value\" min=\"0\" value=\"20\">\n          <\/div>\n        <\/div>\n        \n        <div class=\"idle-time-cost\">\n          <strong>Co\u00fbt du temps de ralenti par an:<\/strong>\n          <span id=\"fr-serviceIdleTimeCost\">\u20ac0,00<\/span>\n        <\/div>\n        \n        <div class=\"calculation-note\">\n          Bas\u00e9 sur: <span id=\"fr-serviceIdleTimeCalc\"><\/span>\n        <\/div>\n        \n        <div class=\"button-group\">\n          <button class=\"button button-prev prev-card\" data-prev=\"fr-time-on-site-card\" onclick=\"QCalcFR.prevCard(event, 'service')\">Pr\u00e9c\u00e9dent<\/button>\n          <button class=\"button button-next next-card\" data-next=\"fr-reactive-work-card\" onclick=\"QCalcFR.nextCard(event, 'service')\">Suivant<\/button>\n        <\/div>\n      <\/div>\n      \n      <!-- Reactive Work -->\n      <div class=\"calculator-card\" id=\"fr-reactive-work-card\">\n        <div class=\"section-header\">\n          <h3>Opportunit\u00e9s d&#8217;Intervention R\u00e9active<\/h3>\n          <div class=\"tooltip\" data-tooltip=\"Le suivi des v\u00e9hicules vous aide \u00e0 identifier le technicien le plus proche d'un lieu de travail\">\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>G\u00e9rer votre flotte sans syst\u00e8me de localisation peut vous laisser sans savoir o\u00f9 sont vos v\u00e9hicules sur la route. En essayant d&#8217;affecter des conducteurs \u00e0 un travail, il peut \u00eatre inutilement difficile de contacter vos conducteurs, et par cons\u00e9quent vous pouvez perdre des interventions.<\/p>\n        \n        <div class=\"question-row\">\n          <div class=\"question-col\">\n            <div class=\"form-group\">\n              <label for=\"fr-missedJobsPerWeek\">Combien d&#8217;interventions perdez-vous par semaine ?<\/label>\n              <div class=\"slider-with-value\">\n                <div class=\"slider-container\">\n                  <input type=\"range\" id=\"fr-missedJobsPerWeekRange\" min=\"0\" max=\"50\" value=\"3\">\n                <\/div>\n                <input type=\"number\" id=\"fr-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=\"fr-averageJobPrice\">Quel serait le prix moyen d&#8217;une intervention ?<\/label>\n              <div class=\"currency-input-wrapper\">\n                <span class=\"currency-symbol\">\u20ac<\/span>\n                <input type=\"number\" id=\"fr-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>Co\u00fbt des interventions perdues par an:<\/strong>\n          <span id=\"fr-reactiveWorkCost\">\u20ac0,00<\/span>\n        <\/div>\n        \n        <div class=\"calculation-note\">\n          Bas\u00e9 sur: <span id=\"fr-reactiveWorkCalc\"><\/span>\n        <\/div>\n        \n        <div class=\"button-group\">\n          <button class=\"button button-prev prev-card\" data-prev=\"fr-service-idle-time-card\" onclick=\"QCalcFR.prevCard(event, 'service')\">Pr\u00e9c\u00e9dent<\/button>\n          <button class=\"button button-next next-card\" data-next=\"fr-billing-disputfr-card\" onclick=\"QCalcFR.nextCard(event, 'service')\">Suivant<\/button>\n        <\/div>\n      <\/div>\n      \n      <!-- Billing Disputes -->\n      <div class=\"calculator-card\" id=\"fr-billing-disputfr-card\">\n        <div class=\"section-header\">\n          <h3>Pr\u00e9vention des Litiges de Facturation<\/h3>\n          <div class=\"tooltip\" data-tooltip=\"Le suivi des v\u00e9hicules fournit la preuve du temps pass\u00e9 sur place pour r\u00e9soudre les litiges\">\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>Prouver que votre conducteur ou employ\u00e9 a assist\u00e9 \u00e0 un travail que vous avez factur\u00e9 peut g\u00e9n\u00e9rer des litiges. Avec les rapports de suivi Quartix, vous \u00eates soutenu en pouvant d\u00e9montrer avec pr\u00e9cision les heures d&#8217;arriv\u00e9e et de fin. Nos clients re\u00e7oivent g\u00e9n\u00e9ralement une moyenne d&#8217;une demande de facturation par semaine.<\/p>\n        \n        <div class=\"question-row\">\n          <div class=\"question-col\">\n            <div class=\"form-group\">\n              <label for=\"fr-disputesPerMonth\">Combien de litiges avez-vous par mois ?<\/label>\n              <div class=\"slider-with-value\">\n                <div class=\"slider-container\">\n                  <input type=\"range\" id=\"fr-disputesPerMonthRange\" min=\"0\" max=\"20\" value=\"2\">\n                <\/div>\n                <input type=\"number\" id=\"fr-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=\"fr-averageDisputeCost\">Combien vous co\u00fbterait chaque litige ?<\/label>\n              <div class=\"currency-input-wrapper\">\n                <span class=\"currency-symbol\">\u20ac<\/span>\n                <input type=\"number\" id=\"fr-averageDisputeCost\" class=\"currency-input\" min=\"50\" value=\"80\">\n              <\/div>\n            <\/div>\n          <\/div>\n        <\/div>\n        \n        <div class=\"billing-disputfr-cost\">\n          <strong>Co\u00fbt des litiges par an:<\/strong>\n          <span id=\"fr-billingDisputesCost\">\u20ac0,00<\/span>\n        <\/div>\n        \n        <div class=\"calculation-note\">\n          Bas\u00e9 sur: <span id=\"fr-billingDisputesCalc\"><\/span>\n        <\/div>\n        \n        <div class=\"button-group\">\n          <button class=\"button button-prev prev-card\" data-prev=\"fr-reactive-work-card\" onclick=\"QCalcFR.prevCard(event, 'service')\">Pr\u00e9c\u00e9dent<\/button>\n          <button class=\"button button-next\" id=\"fr-service-calculate-results\" onclick=\"QCalcFR.goToContactForm(event)\">Calculer les \u00c9conomies<\/button>\n        <\/div>\n      <\/div>\n    <\/div>\n    \n    <!-- Transport Business Calculator -->\n    <div id=\"fr-transport-calculator\" style=\"display: none;\">\n      <!-- Private Mileage -->\n      <div class=\"calculator-card active\" id=\"fr-transport-private-mileage-card\">\n        <div class=\"section-header\">\n          <h3>\u00c9conomies sur le Kilom\u00e9trage Priv\u00e9<\/h3>\n          <div class=\"tooltip\" data-tooltip=\"R\u00e9duire le kilom\u00e9trage priv\u00e9 \u00e9conomise du carburant et \u00e9vite l'usure inutile du v\u00e9hicule\">\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>L&#8217;une des diff\u00e9rences les plus notables que vous pouvez attendre en installant le syst\u00e8me de localisation Quartix sera une diminution significative du kilom\u00e9trage priv\u00e9 en dehors des heures de travail. Avant d&#8217;installer le syst\u00e8me Quartix, nos clients observaient typiquement une moyenne de 80 kilom\u00e8tres par v\u00e9hicule par semaine uniquement en kilom\u00e9trage priv\u00e9.<\/p>\n        \n        <div class=\"question-row\">\n          <div class=\"question-col\">\n            <div class=\"form-group\">\n              <label for=\"fr-transportVehiclesUsedPrivately\">Parmi les v\u00e9hicules sp\u00e9cifi\u00e9s, combien sont utilis\u00e9s \u00e0 titre priv\u00e9 ?<\/label>\n              <div class=\"slider-with-value\">\n                <div class=\"slider-container\">\n                  <input type=\"range\" id=\"fr-transportVehiclesUsedPrivatelyRange\" min=\"0\" max=\"5\" value=\"2\">\n                <\/div>\n                <input type=\"number\" id=\"fr-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=\"fr-transportAveragePrivateKmPerWeek\">Kilom\u00e8tres priv\u00e9s moyens par semaine, par v\u00e9hicule<\/label>\n              <div class=\"slider-with-value\">\n                <div class=\"slider-container\">\n                  <input type=\"range\" id=\"fr-transportAveragePrivateKmPerWeekRange\" min=\"0\" max=\"500\" value=\"80\">\n                <\/div>\n                <input type=\"number\" id=\"fr-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=\"fr-transportAverageL100km\">Consommation moyenne de carburant (L\/100km)<\/label>\n              <div class=\"slider-with-value\">\n                <div class=\"slider-container\">\n                  <input type=\"range\" id=\"fr-transportAverageL100kmRange\" min=\"4\" max=\"20\" step=\"0.5\" value=\"7.5\">\n                <\/div>\n                <input type=\"number\" id=\"fr-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=\"fr-transportFuelCostPerLitre\">Co\u00fbt du carburant par litre<\/label>\n              <div class=\"currency-input-wrapper\">\n                <span class=\"currency-symbol\">\u20ac<\/span>\n                <input type=\"number\" id=\"fr-transportFuelCostPerLitre\" class=\"currency-input\" min=\"1\" max=\"3\" step=\"0.01\" value=\"1.80\">\n              <\/div>\n            <\/div>\n          <\/div>\n        <\/div>\n        \n        <div class=\"private-mileage-cost\">\n          <strong>Co\u00fbt du carburant pour le kilom\u00e9trage priv\u00e9 par an:<\/strong>\n          <span id=\"fr-transportPrivateMileageCost\">\u20ac0,00<\/span>\n        <\/div>\n        \n        <div class=\"calculation-note\">\n          Bas\u00e9 sur: <span id=\"fr-transportPrivateMileageCalc\"><\/span>\n        <\/div>\n        \n        <div class=\"info-note\">\n          <strong>Avantages suppl\u00e9mentaires :<\/strong>\n          La r\u00e9duction du kilom\u00e9trage priv\u00e9 peut \u00e9galement contribuer aux \u00e9conomies de maintenance en r\u00e9duisant l&#8217;usure de vos v\u00e9hicules. Bien que non inclus dans le calcul ci-dessus, cela peut apporter des avantages suppl\u00e9mentaires pour les op\u00e9rations de votre flotte.\n        <\/div>\n        \n        <div class=\"button-group\">\n          <button class=\"button button-prev\" id=\"fr-transport-back-to-business\" onclick=\"QCalcFR.goToStep(1)\">Pr\u00e9c\u00e9dent<\/button>\n          <button class=\"button button-next next-card\" data-next=\"fr-standing-time-card\" onclick=\"QCalcFR.nextCard(event, 'transport')\">Suivant<\/button>\n        <\/div>\n      <\/div>\n      \n      <!-- Standing Time \/ Demoras -->\n      <div class=\"calculator-card\" id=\"fr-standing-time-card\">\n        <div class=\"section-header\">\n          <h3>R\u00e9cup\u00e9ration des Temps d&#8217;Attente<\/h3>\n          <div class=\"tooltip\" data-tooltip=\"Les temps d'attente co\u00fbtent \u00e0 votre entreprise en termes de productivit\u00e9 et d'opportunit\u00e9s perdues\">\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>Les temps d&#8217;attente (attentes inutiles) co\u00fbtent \u00e0 votre entreprise en termes de productivit\u00e9 des employ\u00e9s et d&#8217;opportunit\u00e9s perdues. Le syst\u00e8me de localisation Quartix aide \u00e0 identifier ce temps perdu, et nos rapports peuvent \u00eatre utilis\u00e9s pour r\u00e9cup\u00e9rer des fonds des entrep\u00f4ts selon votre accord de niveau de service.<\/p>\n        \n        <div class=\"question-row\">\n          <div class=\"question-col\">\n            <div class=\"form-group\">\n              <label for=\"fr-minutesStandingPerDay\">Minutes d&#8217;attente par jour par v\u00e9hicule<\/label>\n              <div class=\"slider-with-value\">\n                <div class=\"slider-container\">\n                  <input type=\"range\" id=\"fr-minutesStandingPerDayRange\" min=\"0\" max=\"120\" value=\"30\">\n                <\/div>\n                <input type=\"number\" id=\"fr-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=\"fr-averageRatePerHour\">Quel est votre tarif horaire moyen ?<\/label>\n              <div class=\"currency-input-wrapper\">\n                <span class=\"currency-symbol\">\u20ac<\/span>\n                <input type=\"number\" id=\"fr-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=\"fr-transportWorkingDaysPerWeek\">Combien de jours par semaine vos v\u00e9hicules op\u00e8rent-ils ?<\/label>\n          <div class=\"slider-with-value\">\n            <div class=\"slider-container\">\n              <input type=\"range\" id=\"fr-transportWorkingDaysPerWeekRange\" min=\"1\" max=\"7\" value=\"5\">\n            <\/div>\n            <input type=\"number\" id=\"fr-transportWorkingDaysPerWeek\" class=\"slider-value\" min=\"1\" max=\"7\" value=\"5\">\n          <\/div>\n        <\/div>\n        \n        <div class=\"standing-time-cost\">\n          <strong>Co\u00fbt des temps d&#8217;attente par an:<\/strong>\n          <span id=\"fr-standingTimeCost\">\u20ac0,00<\/span>\n        <\/div>\n        \n        <div class=\"calculation-note\">\n          Bas\u00e9 sur: <span id=\"fr-standingTimeCalc\"><\/span>\n        <\/div>\n        \n        <div class=\"button-group\">\n          <button class=\"button button-prev prev-card\" data-prev=\"fr-transport-private-mileage-card\" onclick=\"QCalcFR.prevCard(event, 'transport')\">Pr\u00e9c\u00e9dent<\/button>\n          <button class=\"button button-next next-card\" data-next=\"fr-idle-time-card\" onclick=\"QCalcFR.nextCard(event, 'transport')\">Suivant<\/button>\n        <\/div>\n      <\/div>\n      \n      <!-- Idle Time -->\n      <div class=\"calculator-card\" id=\"fr-idle-time-card\">\n        <div class=\"section-header\">\n          <h3>R\u00e9duction du temps de marche au ralenti<\/h3>\n          <div class=\"tooltip\" data-tooltip=\"R\u00e9duire le temps de ralenti du v\u00e9hicule \u00e9conomise du carburant et augmente la productivit\u00e9\">\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>Les v\u00e9hicules avec le moteur en marche \u00e0 l&#8217;arr\u00eat gaspillent du carburant, cr\u00e9ent des \u00e9missions inutiles et repr\u00e9sentent du temps improductif. Le syst\u00e8me de localisation Quartix aide \u00e0 identifier et r\u00e9duire ces cas.<\/p>\n        \n        <div class=\"checkbox-group\">\n          <div class=\"checkbox-item\">\n            <label>\n              <input type=\"checkbox\" id=\"fr-noStartStop\" onchange=\"QCalcFR.toggleFuelCostQuestion(event)\">\n              <span>Mes v\u00e9hicules de flotte N&#8217;ONT PAS la technologie start-stop<\/span>\n            <\/label>\n            <div class=\"checkbox-description\">\n              La technologie start-stop \u00e9teint automatiquement le moteur lorsque le v\u00e9hicule est \u00e0 l&#8217;arr\u00eat, r\u00e9duisant la consommation de carburant pendant le temps de ralenti. La plupart des v\u00e9hicules modernes (2015+) ont cette fonction.\n            <\/div>\n          <\/div>\n          \n          <div class=\"checkbox-item\">\n            <label>\n              <input type=\"checkbox\" id=\"fr-usesPTO\" onchange=\"QCalcFR.togglePTOStatus(event)\">\n              <span>Ma flotte utilise des syst\u00e8mes PDF (Prise de Force)<\/span>\n            <\/label>\n            <div class=\"checkbox-description\">\n              Les syst\u00e8mes PDF alimentent des \u00e9quipements auxiliaires pendant que le v\u00e9hicule est \u00e0 l&#8217;arr\u00eat. Les exemples incluent les b\u00e9tonni\u00e8res, les \u00e9l\u00e9vateurs de charge, les parois basculantes ou les compresseurs.\n            <\/div>\n            <div class=\"pto-instruction\" id=\"fr-transportPTOInstruction\">\n              Veuillez vous assurer que les minutes en mode PDF NE sont PAS incluses dans le temps de ralenti quotidien que vous entrez ci-dessous. Les donn\u00e9es de suivi afficheront les \u00e9v\u00e9nements PDF s\u00e9par\u00e9ment, mais cette calculatrice n&#8217;estime que le carburant utilis\u00e9 pendant le ralenti r\u00e9el.\n            <\/div>\n          <\/div>\n        <\/div>\n        \n        <div class=\"form-group\">\n          <label for=\"fr-minutesIdlePerDay\">Minutes de ralenti par jour par v\u00e9hicule<\/label>\n          <div class=\"slider-with-value\">\n            <div class=\"slider-container\">\n              <input type=\"range\" id=\"fr-minutesIdlePerDayRange\" min=\"0\" max=\"120\" value=\"20\">\n            <\/div>\n            <input type=\"number\" id=\"fr-minutesIdlePerDay\" class=\"slider-value\" min=\"0\" value=\"20\">\n          <\/div>\n        <\/div>\n        \n        <div class=\"idle-time-cost\">\n          <strong>Co\u00fbt du temps de ralenti par an:<\/strong>\n          <span id=\"fr-idleTimeCost\">\u20ac0,00<\/span>\n        <\/div>\n        \n        <div class=\"calculation-note\">\n          Bas\u00e9 sur: <span id=\"fr-idleTimeCalc\"><\/span>\n        <\/div>\n        \n        <div class=\"button-group\">\n          <button class=\"button button-prev prev-card\" data-prev=\"fr-standing-time-card\" onclick=\"QCalcFR.prevCard(event, 'transport')\">Pr\u00e9c\u00e9dent<\/button>\n          <button class=\"button button-next next-card\" data-next=\"fr-extra-jobs-card\" onclick=\"QCalcFR.nextCard(event, 'transport')\">Suivant<\/button>\n        <\/div>\n      <\/div>\n      \n      <!-- Extra Jobs -->\n      <div class=\"calculator-card\" id=\"fr-extra-jobs-card\">\n        <div class=\"section-header\">\n          <h3>Opportunit\u00e9s de Livraisons Suppl\u00e9mentaires<\/h3>\n          <div class=\"tooltip\" data-tooltip=\"Perdre des livraisons suppl\u00e9mentaires \u00e0 cause de conducteurs inefficaces signifie une perte de revenus\">\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>Perdre des livraisons suppl\u00e9mentaires \u00e0 cause de conducteurs improductifs et inefficaces peut signifier perdre des centaines, voire des milliers d&#8217;euros. Le syst\u00e8me de localisation Quartix vous aide \u00e0 optimiser les itin\u00e9raires et les affectations de conducteurs.<\/p>\n        \n        <div class=\"question-row\">\n          <div class=\"question-col\">\n            <div class=\"form-group\">\n              <label for=\"fr-potentialExtraJobsPerWeek\">Combien de livraisons suppl\u00e9mentaires pourriez-vous faire par semaine ?<\/label>\n              <div class=\"slider-with-value\">\n                <div class=\"slider-container\">\n                  <input type=\"range\" id=\"fr-potentialExtraJobsPerWeekRange\" min=\"0\" max=\"20\" value=\"2\">\n                <\/div>\n                <input type=\"number\" id=\"fr-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=\"fr-extraJobValue\">Combien vaut une livraison moyenne ?<\/label>\n              <div class=\"currency-input-wrapper\">\n                <span class=\"currency-symbol\">\u20ac<\/span>\n                <input type=\"number\" id=\"fr-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>Co\u00fbt des interventions perdues par an:<\/strong>\n          <span id=\"fr-extraJobsCost\">\u20ac0,00<\/span>\n        <\/div>\n        \n        <div class=\"calculation-note\">\n          Bas\u00e9 sur: <span id=\"fr-extraJobsCalc\"><\/span>\n        <\/div>\n        \n        <div class=\"button-group\">\n          <button class=\"button button-prev prev-card\" data-prev=\"fr-idle-time-card\" onclick=\"QCalcFR.prevCard(event, 'transport')\">Pr\u00e9c\u00e9dent<\/button>\n          <button class=\"button button-next\" id=\"fr-transport-calculate-results\" onclick=\"QCalcFR.goToContactForm(event)\">Calculer les \u00c9conomies<\/button>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <!-- Contact Form -->\n  <div class=\"calculator-section\" id=\"fr-section-3\">\n    <div class=\"contact-form\">\n      <h3>Vos Coordonn\u00e9es<\/h3>\n      <p>Veuillez fournir vos coordonn\u00e9es pour recevoir votre rapport d&#8217;\u00e9conomies personnalis\u00e9.<\/p>\n      \n      <div class=\"form-row\">\n        <div class=\"form-col\">\n          <div class=\"form-group\">\n            <label for=\"fr-firstName\">Pr\u00e9nom *<\/label>\n            <input type=\"text\" id=\"fr-firstName\" required>\n            <div class=\"error-message\" id=\"fr-firstName-error\">Veuillez entrer votre pr\u00e9nom<\/div>\n          <\/div>\n        <\/div>\n        <div class=\"form-col\">\n          <div class=\"form-group\">\n            <label for=\"fr-lastName\">Nom *<\/label>\n            <input type=\"text\" id=\"fr-lastName\" required>\n            <div class=\"error-message\" id=\"fr-lastName-error\">Veuillez entrer votre nom<\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n      \n      <div class=\"form-group\">\n        <label for=\"fr-companyName\">Nom de l&#8217;Entreprise *<\/label>\n        <input type=\"text\" id=\"fr-companyName\" required>\n        <div class=\"error-message\" id=\"fr-companyName-error\">Veuillez entrer le nom de votre entreprise<\/div>\n      <\/div>\n      \n      <div class=\"form-row\">\n        <div class=\"form-col\">\n          <div class=\"form-group\">\n            <label for=\"fr-email\">Email Professionnel *<\/label>\n            <input type=\"email\" id=\"fr-email\" required>\n            <div class=\"error-message\" id=\"fr-email-error\">Veuillez entrer une adresse email valide<\/div>\n            <div class=\"email-note\">Nous avons besoin de votre adresse e-mail pour vous envoyer les r\u00e9sultats<\/div>\n          <\/div>\n        <\/div>\n        <div class=\"form-col\">\n          <div class=\"form-group\">\n            <label for=\"fr-phone\">Num\u00e9ro de T\u00e9l\u00e9phone (Optionnel)<\/label>\n            <div class=\"phone-input-container\">\n              <select id=\"fr-countryCodeSelect\" class=\"country-code-select\" onchange=\"QCalcFR.updateCountryCode(this)\">\n                <option value=\"+33\" selected>\ud83c\uddeb\ud83c\uddf7 +33<\/option>\n                <option value=\"+44\">\ud83c\uddec\ud83c\udde7 +44<\/option>\n                <option value=\"+1\">\ud83c\uddfa\ud83c\uddf8 +1<\/option>\n                <option value=\"+49\">\ud83c\udde9\ud83c\uddea +49<\/option>\n                <option value=\"+39\">\ud83c\uddee\ud83c\uddf9 +39<\/option>\n                <option value=\"+34\">\ud83c\uddea\ud83c\uddf8 +34<\/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=\"fr-countryCode\" value=\"+33\">\n              <input type=\"hidden\" id=\"fr-currencySymbol\" value=\"\u20ac\">\n              <input type=\"hidden\" id=\"fr-unformattedPhoneNumber\" value=\"\">\n              <input type=\"tel\" id=\"fr-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=\"fr-referralSource\">Comment nous avez-vous connu ? *<\/label>\n        <select id=\"fr-referralSource\" required>\n          <option value=\"\">Veuillez s\u00e9lectionner&#8230;<\/option>\n          <option value=\"google\">Recherche 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 (ancien Twitter)<\/option>\n          <option value=\"ai\">Recherche IA (Chat GPT, Perplexity, Mistral, Grok)<\/option>\n          <option value=\"word-of-mouth\">Recommandation<\/option>\n          <option value=\"tiktok\">TikTok<\/option>\n          <option value=\"youtube\">YouTube<\/option>\n          <option value=\"trade-show\">Salon \/ Ev\u00e9nement<\/option>\n          <option value=\"magazine\">Magazine \/ Publication<\/option>\n          <option value=\"partner\">R\u00e9f\u00e9rence Partenaire<\/option>\n          <option value=\"other\">Autre<\/option>\n        <\/select>\n        <div class=\"error-message\" id=\"fr-referralSource-error\">Veuillez s\u00e9lectionner comment vous nous avez connu<\/div>\n      <\/div>\n      \n      <div class=\"button-group\">\n        <button class=\"button button-prev\" id=\"fr-back-to-calculator\" onclick=\"QCalcFR.goToStep(2)\">Retour au Calculateur<\/button>\n        <button class=\"button button-next\" id=\"fr-submit-form\" onclick=\"QCalcFR.submitForm(event)\">Voir R\u00e9sultats<\/button>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <!-- Results Section -->\n  <div class=\"calculator-section\" id=\"fr-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>Votre Potentiel d&#8217;\u00c9conomies avec Quartix<\/h2>\n      \n      <div class=\"results-timestamp\" id=\"fr-resultsTimestamp\">\n        R\u00e9sultats calcul\u00e9s le [Date Actuelle]\n      <\/div>\n      \n      <div class=\"personal-greeting\">\n        <p>Bonjour <span id=\"fr-resultName\">cher client<\/span>, en nous basant sur les informations que vous avez fournies pour <span id=\"fr-resultCompany\">votre entreprise<\/span>, voici ce que vous pourriez \u00e9conomiser avec le syst\u00e8me de localisation Quartix :<\/p>\n      <\/div>\n      \n      <div class=\"total-savings\" id=\"fr-totalSavings\">\u20ac0,00<\/div>\n      <p>\u00c9conomies Annuelles Totales<\/p>\n      \n      <div class=\"savings-period\">\n        <div class=\"period-item\">\n          <div class=\"period-value\" id=\"fr-weeklySavings\">\u20ac0,00<\/div>\n          <div class=\"period-label\">\u00c9conomies Hebdomadaires<\/div>\n        <\/div>\n        <div class=\"period-item\">\n          <div class=\"period-value\" id=\"fr-dailySavings\">\u20ac0,00<\/div>\n          <div class=\"period-label\">\u00c9conomies Quotidiennes<\/div>\n        <\/div>\n      <\/div>\n      \n      <div class=\"roi-section\">\n        <h3>Analyse du Retour sur Investissement<\/h3>\n        <div class=\"roi-details\">\n          <div class=\"roi-item\">\n            <div class=\"roi-label\">Co\u00fbt moyen par v\u00e9hicule :<\/div>\n            <div class=\"roi-value\"><span id=\"fr-costPerVehicle\">\u20ac10,00<\/span> par mois (plus TVA)<\/div>\n          <\/div>\n          <div class=\"roi-item\">\n            <div class=\"roi-label\">Co\u00fbt mensuel total pour votre flotte :<\/div>\n            <div class=\"roi-value\"><span id=\"fr-totalMonthlyCost\">\u20ac0,00<\/span> (plus TVA)<\/div>\n          <\/div>\n          <div class=\"roi-item\">\n            <div class=\"roi-label\">\u00c9conomies mensuelles :<\/div>\n            <div class=\"roi-value\"><span id=\"fr-monthlySavings\">\u20ac0,00<\/span><\/div>\n          <\/div>\n          <div class=\"roi-item highlight\">\n            <div class=\"roi-label\">Retour sur investissement :<\/div>\n            <div class=\"roi-value\"><span id=\"fr-roiValue\">0%<\/span><\/div>\n          <\/div>\n        <\/div>\n        <div class=\"roi-payback\">\n          <p>En moyenne, nos clients souscrivent pour une p\u00e9riode de 36 mois. En fonction de vos \u00e9conomies, le syst\u00e8me serait amorti en environ <span id=\"fr-paybackPeriod\">0<\/span> mois de la dur\u00e9e totale.<\/p>\n        <\/div>\n      <\/div>\n      \n      <div class=\"savings-breakdown\" id=\"fr-savingsBreakdown\">\n      <\/div>\n      \n      <div class=\"share-results\">\n        <button class=\"share-button copy-link\" id=\"fr-copyResultsLink\" onclick=\"QCalcFR.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          Copier le Lien des R\u00e9sultats\n        <\/button>\n      <\/div>\n    <\/div>\n    \n    <div class=\"link-copied-notification\" id=\"fr-linkCopiedNotification\">\n      R\u00e9sultats copi\u00e9s dans le presse-papier !\n    <\/div>\n    \n    <div class=\"button-group\">\n      <button class=\"button button-prev\" id=\"fr-back-to-contact-form\" onclick=\"QCalcFR.goToStep(3)\">Retour au Formulaire<\/button>\n      <button class=\"button button-reset\" id=\"fr-reset-calculator\" onclick=\"QCalcFR.resetCalculator(event)\">R\u00e9initialiser la Calculatrice<\/button>\n    <\/div>\n  <\/div>\n\n  <!-- Hidden CF7 Form Container - Replace XXXXXXX with actual French CF7 form ID -->\n  <div id=\"hidden-cf7-forms\" style=\"display: none;\">\n    <div id=\"fr-cf7-form\">\n      \n<div class=\"wpcf7 no-js\" id=\"wpcf7-f128613-o1\" lang=\"fr-FR\" dir=\"ltr\" data-wpcf7-id=\"128613\">\n<div class=\"screen-reader-response\"><p role=\"status\" aria-live=\"polite\" aria-atomic=\"true\"><\/p> <ul><\/ul><\/div>\n<form action=\"\/fr-fr\/wp-json\/wp\/v2\/pages\/123165#wpcf7-f128613-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=\"128613\" \/><input type=\"hidden\" name=\"_wpcf7_version\" value=\"6.1.5\" \/><input type=\"hidden\" name=\"_wpcf7_locale\" value=\"fr_FR\" \/><input type=\"hidden\" name=\"_wpcf7_unit_tag\" value=\"wpcf7-f128613-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;:128613,&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 QCalcFR = (function() {\n      var businessType = 'service';\n      var currentServiceCard = 'fr-private-mileage-card';\n      var currentTransportCard = 'fr-transport-private-mileage-card';\n      var resultTimestamp = new Date();\n      var currencySymbol = '\u20ac';\n      var costPerVehicle = 12;\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.80\n          },\n          reactiveWork: {\n            missedJobsPerWeek: 3,\n            averageJobPrice: 120\n          },\n          billingDisputes: {\n            disputesPerMonth: 2,\n            averageDisputeCost: 80\n          },\n          timeOnSite: {\n            employeeHourlyRate: 15,\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.80\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        setupPhoneNumberFormatting();\n        updateAllSliders();\n        calculateAllCosts();\n        checkForResultsInURL();\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('fr-countryCode').value = selectElement.value;\n      }\n      \n      \/\/ Strip leading zero from phone input and store original\n      function setupPhoneNumberFormatting() {\n        var phoneInput = document.getElementById('fr-phone');\n        var unformattedPhoneInput = document.getElementById('fr-unformattedPhoneNumber');\n        if (!phoneInput || !unformattedPhoneInput) return;\n        \n        phoneInput.addEventListener('input', function() {\n          unformattedPhoneInput.value = this.value;\n          if (this.value.startsWith('0')) {\n            this.value = this.value.substring(1);\n          }\n        });\n      }\n      \n      function updateAllSliders() {\n        updateSliderPair('fr-vehiclesUsedPrivately', calculatorData.service.privateMileage.vehiclesUsedPrivately);\n        updateSliderPair('fr-averagePrivateKmPerWeek', calculatorData.service.privateMileage.averagePrivateKmPerWeek);\n        updateSliderPair('fr-averageL100km', calculatorData.service.privateMileage.averageL100km);\n        updateSliderPair('fr-missedJobsPerWeek', calculatorData.service.reactiveWork.missedJobsPerWeek);\n        updateSliderPair('fr-disputesPerMonth', calculatorData.service.billingDisputes.disputesPerMonth);\n        updateSliderPair('fr-minutesLostPerDay', calculatorData.service.timeOnSite.minutesLostPerDay);\n        updateSliderPair('fr-workingDaysPerWeek', calculatorData.service.timeOnSite.workingDaysPerWeek);\n        updateSliderPair('fr-serviceMinutesIdlePerDay', calculatorData.service.idleTime.minutesIdlePerDay);\n        \n        updateSliderPair('fr-transportVehiclesUsedPrivately', calculatorData.transport.privateMileage.vehiclesUsedPrivately);\n        updateSliderPair('fr-transportAveragePrivateKmPerWeek', calculatorData.transport.privateMileage.averagePrivateKmPerWeek);\n        updateSliderPair('fr-transportAverageL100km', calculatorData.transport.privateMileage.averageL100km);\n        updateSliderPair('fr-minutesIdlePerDay', calculatorData.transport.idleTime.minutesIdlePerDay);\n        updateSliderPair('fr-minutesStandingPerDay', calculatorData.transport.standingTime.minutesStandingPerDay);\n        updateSliderPair('fr-transportWorkingDaysPerWeek', calculatorData.transport.standingTime.workingDaysPerWeek);\n        updateSliderPair('fr-potentialExtraJobsPerWeek', calculatorData.transport.extraJobs.potentialExtraJobsPerWeek);\n        \n        var currencyInputs = [\n          { id: 'fr-employeeHourlyRate', value: calculatorData.service.timeOnSite.employeeHourlyRate },\n          { id: 'fr-fuelCostPerLitre', value: calculatorData.service.privateMileage.fuelCostPerLitre },\n          { id: 'fr-averageJobPrice', value: calculatorData.service.reactiveWork.averageJobPrice },\n          { id: 'fr-averageDisputeCost', value: calculatorData.service.billingDisputes.averageDisputeCost },\n          { id: 'fr-transportFuelCostPerLitre', value: calculatorData.transport.privateMileage.fuelCostPerLitre },\n          { id: 'fr-averageRatePerHour', value: calculatorData.transport.standingTime.averageRatePerHour },\n          { id: 'fr-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('fr-', '');\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('fr-privateMileageCost', cost);\n            updateCalculationNote('fr-privateMileageCalc', \n              vehiclesUsedPrivately + ' v\u00e9hicules \u00d7 ' + averagePrivateKmPerWeek + ' km\/semaine \u00d7 ' + averageL100km + ' L\/100km \u00d7 \u20ac' + fuelCostPerLitre + '\/litre \u00d7 52 semaines');\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('fr-reactiveWorkCost', cost);\n            updateCalculationNote('fr-reactiveWorkCalc', \n              missedJobsPerWeek + ' interventions\/semaine \u00d7 \u20ac' + averageJobPrice + '\/intervention \u00d7 52 semaines');\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('fr-billingDisputesCost', cost);\n            updateCalculationNote('fr-billingDisputesCalc', \n              disputesPerMonth + ' litiges\/mes \u00d7 \u20ac' + averageDisputeCost + '\/disputa \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('fr-timeOnSiteCost', cost);\n            updateCalculationNote('fr-timeOnSiteCalc', \n              totalEmployees + ' employ\u00e9s \u00d7 ' + minutesLostPerDay + ' min\/jour \u00f7 60 \u00d7 \u20ac' + employeeHourlyRate + '\/heure \u00d7 ' + workingDaysPerWeek + ' jours \u00d7 52 semaines');\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('fr-serviceIdleTimeCalc', \n                'Main-d-oeuvre : ' + serviceTotalEmployees + ' employes x ' + serviceMinutesIdlePerDay + ' min\/jour. Combustible: ' + serviceTotalVehicles + ' vehicules x 1,9 L\/heure au ralenti');\n            } else {\n              updateCalculationNote('fr-serviceIdleTimeCalc', \n                serviceTotalEmployees + ' employ\u00e9s \u00d7 ' + serviceMinutesIdlePerDay + ' min\/jour \u00f7 60 \u00d7 \u20ac' + serviceHourlyRate + '\/heure \u00d7 ' + serviceWorkingDays + ' jours \u00d7 52 semaines (sans carburant - technologie start-stop)');\n            }\n            \n            cost = totalIdleCost;\n            updateCostDisplay('fr-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('fr-transportPrivateMileageCost', cost);\n            updateCalculationNote('fr-transportPrivateMileageCalc', \n              tVehiclesUsedPrivately + ' v\u00e9hicules \u00d7 ' + tAveragePrivateKmPerWeek + ' km\/semaine \u00d7 ' + tAverageL100km + ' L\/100km \u00d7 \u20ac' + tFuelCostPerLitre + '\/litre \u00d7 52 semaines');\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('fr-idleTimeCalc', \n                'Main-d-oeuvre : ' + totalEmployeesIdle + ' employes x ' + minutesIdlePerDay + ' min\/jour. Combustible: ' + totalVehiclesIdle + ' vehicules x 1,9 L\/heure au ralenti');\n            } else {\n              updateCalculationNote('fr-idleTimeCalc', \n                totalEmployeesIdle + ' employ\u00e9s \u00d7 ' + minutesIdlePerDay + ' min\/jour \u00f7 60 \u00d7 \u20ac' + transportHourlyRate + '\/heure \u00d7 ' + transportWorkingDays + ' jours \u00d7 52 semaines (sans carburant - technologie start-stop)');\n            }\n            \n            cost = tTotalIdleCost;\n            updateCostDisplay('fr-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('fr-standingTimeCost', cost);\n            updateCalculationNote('fr-standingTimeCalc', \n              standingTotalVehicles + ' v\u00e9hicules \u00d7 ' + minutesStandingPerDay + ' min\/jour \u00f7 60 \u00d7 \u20ac' + averageRatePerHour + '\/heure \u00d7 ' + standingWorkingDays + ' jours \u00d7 52 semaines');\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('fr-extraJobsCost', cost);\n            updateCalculationNote('fr-extraJobsCalc', \n              potentialExtraJobsPerWeek + ' interventions\/semaine \u00d7 \u20ac' + extraJobValue + '\/intervention \u00d7 52 semaines');\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-fr .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('fr-calculator-percentage');\n        if (percentageElement) {\n          percentageElement.textContent = percentage + '%';\n        }\n        \n        var progressFill = document.getElementById('fr-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-fr .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('fr-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('fr-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-fr .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('fr-totalVehicles');\n        if (!totalVehiclesInput.value || parseInt(totalVehiclesInput.value) < 1) {\n          showError(totalVehiclesInput, 'fr-totalVehiclfr-error');\n          isValid = false;\n        } else {\n          hideError(totalVehiclesInput, 'fr-totalVehiclfr-error');\n          calculatorData.common.totalVehicles = parseInt(totalVehiclesInput.value);\n        }\n        \n        var totalEmployeesInput = document.getElementById('fr-totalEmployees');\n        if (!totalEmployeesInput.value || parseInt(totalEmployeesInput.value) < 1) {\n          showError(totalEmployeesInput, 'fr-totalEmployefr-error');\n          isValid = false;\n        } else {\n          hideError(totalEmployeesInput, 'fr-totalEmployefr-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('fr-firstName');\n        var lastNameInput = document.getElementById('fr-lastName');\n        var companyNameInput = document.getElementById('fr-companyName');\n        var emailInput = document.getElementById('fr-email');\n        var referralSourceInput = document.getElementById('fr-referralSource');\n        \n        if (!firstNameInput.value.trim()) {\n          showError(firstNameInput, 'fr-firstName-error');\n          isValid = false;\n        } else {\n          hideError(firstNameInput, 'fr-firstName-error');\n        }\n        \n        if (!lastNameInput.value.trim()) {\n          showError(lastNameInput, 'fr-lastName-error');\n          isValid = false;\n        } else {\n          hideError(lastNameInput, 'fr-lastName-error');\n        }\n        \n        if (!companyNameInput.value.trim()) {\n          showError(companyNameInput, 'fr-companyName-error');\n          isValid = false;\n        } else {\n          hideError(companyNameInput, 'fr-companyName-error');\n        }\n        \n        if (!validateEmail(emailInput.value)) {\n          showError(emailInput, 'fr-email-error');\n          isValid = false;\n        } else {\n          hideError(emailInput, 'fr-email-error');\n        }\n        \n        if (!referralSourceInput.value) {\n          showError(referralSourceInput, 'fr-referralSource-error');\n          isValid = false;\n        } else {\n          hideError(referralSourceInput, 'fr-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('fr-firstName').value,\n          'last_name': document.getElementById('fr-lastName').value,\n          'company_name': document.getElementById('fr-companyName').value,\n          'email': document.getElementById('fr-email').value,\n          'country_code': document.getElementById('fr-countryCode').value,\n          'phone': document.getElementById('fr-phone').value,\n          'unformatted_phone_number': document.getElementById('fr-unformattedPhoneNumber').value,\n          'referral_source': document.getElementById('fr-referralSource').options[document.getElementById('fr-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': 'fr',\n          'country': 'France'\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.quartixCalculatorDataFR = {\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('fr-resultsTimestamp');\n        if (timestampElement) {\n          timestampElement.textContent = 'R\u00e9sultats calcul\u00e9s le ' + resultTimestamp.toLocaleDateString('fr-FR', {\n            day: 'numeric',\n            month: 'long',\n            year: 'numeric'\n          });\n        }\n        \n        var nameElement = document.getElementById('fr-resultName');\n        var companyElement = document.getElementById('fr-resultCompany');\n        \n        if (nameElement && document.getElementById('fr-firstName')) {\n          nameElement.textContent = document.getElementById('fr-firstName').value || 'cher client';\n        }\n        \n        if (companyElement && document.getElementById('fr-companyName')) {\n          companyElement.textContent = document.getElementById('fr-companyName').value || 'votre entreprise';\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('fr-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('fr-weeklySavings');\n        if (weeklySavingsElement) {\n          weeklySavingsElement.textContent = formatCurrency(weeklySavings);\n        }\n        \n        var dailySavingsElement = document.getElementById('fr-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('fr-costPerVehicle');\n        if (costPerVehicleElement) {\n          costPerVehicleElement.textContent = formatCurrency(costPerVehicle);\n        }\n        \n        var totalMonthlyCostElement = document.getElementById('fr-totalMonthlyCost');\n        if (totalMonthlyCostElement) {\n          totalMonthlyCostElement.textContent = formatCurrency(totalMonthlyCost);\n        }\n        \n        var monthlySavingsElement = document.getElementById('fr-monthlySavings');\n        if (monthlySavingsElement) {\n          monthlySavingsElement.textContent = formatCurrency(monthlySavings);\n        }\n        \n        var roiValueElement = document.getElementById('fr-roiValue');\n        if (roiValueElement) {\n          roiValueElement.textContent = Math.round(roi) + '%';\n        }\n        \n        var paybackPeriodElement = document.getElementById('fr-paybackPeriod');\n        if (paybackPeriodElement) {\n          paybackPeriodElement.textContent = paybackPeriodMonths.toString();\n        }\n        \n        var savingsBreakdownElement = document.getElementById('fr-savingsBreakdown');\n        if (savingsBreakdownElement) {\n          savingsBreakdownElement.innerHTML = '';\n          \n          if (businessType === 'service') {\n            addSavingsBreakdownItem(savingsBreakdownElement, 'Kilom\u00e9trage Priv\u00e9', savingsBreakdown.privateMileage,\n              '\u00c9conomies de carburant par r\u00e9duction de l\\'usage priv\u00e9 des v\u00e9hicules, calcul\u00e9 pour ' + calculatorData.service.privateMileage.averageL100km + ' L\/100km');\n            addSavingsBreakdownItem(savingsBreakdownElement, 'Responsabilit\u00e9 Horaire', savingsBreakdown.timeOnSite,\n              'Bas\u00e9 sur ' + calculatorData.service.timeOnSite.minutesLostPerDay + ' minutes perdues par employ\u00e9 par jour sur ' + calculatorData.common.totalEmployees + ' employ\u00e9s');\n            addSavingsBreakdownItem(savingsBreakdownElement, 'Temps de Ralenti', savingsBreakdown.idleTime,\n              'Bas\u00e9 sur la productivit\u00e9 perdue de ' + calculatorData.common.totalEmployees + ' employ\u00e9s et les co\u00fbts de carburant de ' + calculatorData.common.totalVehicles + ' v\u00e9hicules au ralenti');\n            addSavingsBreakdownItem(savingsBreakdownElement, 'Intervention R\u00e9active', savingsBreakdown.reactiveWork,\n              'Revenus de ' + calculatorData.service.reactiveWork.missedJobsPerWeek + ' interventions suppl\u00e9mentaires par semaine gr\u00e2ce \u00e0 une meilleure visibilit\u00e9 de la flotte');\n            addSavingsBreakdownItem(savingsBreakdownElement, 'Litiges de Facturation', savingsBreakdown.billingDisputes,\n              'Pertes \u00e9vit\u00e9es de ' + calculatorData.service.billingDisputes.disputesPerMonth + ' litiges par mois avec preuves de suivi');\n          } else {\n            addSavingsBreakdownItem(savingsBreakdownElement, 'Kilom\u00e9trage Priv\u00e9', savingsBreakdown.privateMileage,\n              '\u00c9conomies de carburant par r\u00e9duction de l\\'usage priv\u00e9 des v\u00e9hicules, calcul\u00e9 pour ' + calculatorData.transport.privateMileage.averageL100km + ' L\/100km');\n            addSavingsBreakdownItem(savingsBreakdownElement, 'R\u00e9duction des Temps d\\'Attente', savingsBreakdown.standingTime,\n              '\u00c9conomies par r\u00e9duction de ' + calculatorData.transport.standingTime.minutesStandingPerDay + ' minutes d\\'attente par v\u00e9hicule par jour');\n            addSavingsBreakdownItem(savingsBreakdownElement, 'Temps de Ralenti', savingsBreakdown.idleTime,\n              'Bas\u00e9 sur la productivit\u00e9 perdue de ' + calculatorData.common.totalEmployees + ' employ\u00e9s et les co\u00fbts de carburant de ' + calculatorData.common.totalVehicles + ' v\u00e9hicules au ralenti');\n            addSavingsBreakdownItem(savingsBreakdownElement, 'Livraisons Suppl\u00e9mentaires', savingsBreakdown.extraJobs,\n              'Revenus de ' + calculatorData.transport.extraJobs.potentialExtraJobsPerWeek + ' livraisons suppl\u00e9mentaires par semaine gr\u00e2ce \u00e0 l\\'optimisation des itin\u00e9raires');\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') || 'votre entreprise',\n            prospectName: urlParams.get('person') || 'cher client'\n          };\n          \n          document.getElementById('fr-totalSavings').textContent = formatCurrency(savedData.totalSavings);\n          document.getElementById('fr-weeklySavings').textContent = formatCurrency(savedData.totalSavings \/ 52);\n          document.getElementById('fr-dailySavings').textContent = formatCurrency(savedData.totalSavings \/ 365);\n          document.getElementById('fr-monthlySavings').textContent = formatCurrency(savedData.monthlySavings);\n          \n          document.getElementById('fr-resultName').textContent = savedData.prospectName;\n          document.getElementById('fr-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('fr-costPerVehicle').textContent = formatCurrency(costPerVehicle);\n          document.getElementById('fr-totalMonthlyCost').textContent = formatCurrency(totalMonthlyCost);\n          document.getElementById('fr-roiValue').textContent = Math.round(roi) + '%';\n          document.getElementById('fr-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('fr-resultsTimestamp');\n          if (timestampElement) {\n            if (daysSince > 0) {\n              var additionalSavings = (savedData.totalSavings \/ 365) * daysSince;\n              timestampElement.innerHTML = 'Bon retour ! D\\'apr\u00e8s votre calcul du ' + submissionDate.toLocaleDateString('fr-FR', {\n                day: 'numeric',\n                month: 'long',\n                year: 'numeric'\n              }) + ', vous auriez pu \u00e9conomiser <strong>' + formatCurrency(additionalSavings) + '<\/strong> suppl\u00e9mentaires jusqu\\'\u00e0 pr\u00e9sent avec Quartix.';\n            } else {\n              timestampElement.textContent = 'R\u00e9sultats calcul\u00e9s le ' + submissionDate.toLocaleDateString('fr-FR', {\n                day: 'numeric',\n                month: 'long',\n                year: 'numeric'\n              });\n            }\n          }\n          \n          var backToFormButton = document.getElementById('fr-back-to-contact-form');\n          if (backToFormButton) {\n            backToFormButton.style.display = 'none';\n          }\n          \n          var savingsBreakdownElement = document.getElementById('fr-savingsBreakdown');\n          if (savingsBreakdownElement) {\n            savingsBreakdownElement.innerHTML = \n              '<div class=\"savings-item\"><h4>Potentiel d\\'\u00c9conomies Total<\/h4><div class=\"savings-amount\">' + formatCurrency(savedData.totalSavings) + '<\/div><\/div>' +\n              '<div class=\"savings-item\"><h4>Taille de la Flotte<\/h4><div class=\"savings-amount\">' + savedData.totalVehicles + ' v\u00e9hicules<\/div><\/div>' +\n              '<div class=\"savings-item\"><h4>Type d\\x27Activit\u00e9<\/h4><div class=\"savings-amount\">' + (savedData.businessType === 'service' ? 'Services' : 'Transport') + '<\/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-fr .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('fr-firstName').value = '';\n        document.getElementById('fr-lastName').value = '';\n        document.getElementById('fr-companyName').value = '';\n        document.getElementById('fr-email').value = '';\n        document.getElementById('fr-phone').value = '';\n        document.getElementById('fr-unformattedPhoneNumber').value = '';\n        document.getElementById('fr-totalVehicles').value = '5';\n        document.getElementById('fr-totalEmployees').value = '5';\n        document.getElementById('fr-referralSource').value = '';\n        \n        \/\/ Reset checkboxes to unchecked\n        var checkboxIds = ['fr-serviceNoStartStop', 'fr-serviceUsesPTO', 'fr-noStartStop', 'fr-usesPTO'];\n        checkboxIds.forEach(function(id) {\n          var cb = document.getElementById(id);\n          if (cb) cb.checked = false;\n        });\n        \n        \/\/ Hide PTO instruction messages\n        var ptoIds = ['fr-servicePTOInstruction', 'fr-transportPTOInstruction'];\n        ptoIds.forEach(function(id) {\n          var el = document.getElementById(id);\n          if (el) el.classList.remove('show');\n        });\n        \n        \/\/ Reset calculatorData flags to defaults\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-fr .error-message').forEach(function(element) {\n          element.style.display = 'none';\n        });\n        \n        document.querySelectorAll('#quartix-calculator-widget-fr 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-fr .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('fr-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('fr-vehiclesUsedPrivatelyRange');\n            var vehiclesUsedPrivately = document.getElementById('fr-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('fr-transportVehiclesUsedPrivatelyRange');\n            var transportVehiclesUsedPrivately = document.getElementById('fr-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('fr-service-calculator').style.display = 'block';\n              document.getElementById('fr-transport-calculator').style.display = 'none';\n              currentCardIndex.service = 0;\n              showCard('service', currentServiceCard);\n            } else {\n              document.getElementById('fr-service-calculator').style.display = 'none';\n              document.getElementById('fr-transport-calculator').style.display = 'block';\n              currentCardIndex.transport = 0;\n              showCard('transport', currentTransportCard);\n            }\n            \n            var calcProgress = document.getElementById('fr-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('fr-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('fr-resultName');\n          var resultCompanyElement = document.getElementById('fr-resultCompany');\n          var prospectName = resultNameElement ? resultNameElement.textContent : 'Client';\n          var companyName = resultCompanyElement ? resultCompanyElement.textContent : 'Entreprise';\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          function showCopiedNotification() {\n            var notification = document.getElementById('fr-linkCopiedNotification');\n            if (notification) {\n              notification.classList.add('show');\n              setTimeout(function() {\n                notification.classList.remove('show');\n              }, 3000);\n            }\n          }\n          \n          function fallbackCopy(text) {\n            var textArea = document.createElement('textarea');\n            textArea.value = text;\n            textArea.style.position = 'fixed';\n            textArea.style.left = '-9999px';\n            textArea.style.top = '-9999px';\n            textArea.style.opacity = '0';\n            document.body.appendChild(textArea);\n            textArea.focus();\n            textArea.select();\n            try {\n              document.execCommand('copy');\n              showCopiedNotification();\n            } catch (err) {}\n            document.body.removeChild(textArea);\n          }\n          \n          if (navigator.clipboard && navigator.clipboard.writeText) {\n            navigator.clipboard.writeText(fullUrl).then(function() {\n              showCopiedNotification();\n            }).catch(function() {\n              fallbackCopy(fullUrl);\n            });\n          } else {\n            fallbackCopy(fullUrl);\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('fr-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('fr-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 - French -->\n<\/div>\n\n\n\n<div style=\"height:60px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n","protected":false},"excerpt":{"rendered":"<p>D\u00e9couvrez combien vous pouvez \u00e9conomiser avec Quartix R\u00e9pondez \u00e0 quelques questions rapides pour estimer vos \u00e9conomies potentielles gr\u00e2ce \u00e0 la g\u00e9olocalisation de v\u00e9hicules Quartix : carburant, kilom\u00e9trage priv\u00e9, gestion du temps et optimisation des itin\u00e9raires. 1 Type d&#8217;Activit\u00e9 2 Calculer les \u00c9conomies 3 Vos Donn\u00e9es 4 R\u00e9sultats Quel type d&#8217;activit\u00e9 exploitez-vous ? Avis : Les [&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-123165","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>Calculez le ROI du suivi de flotte | Outil d&#039;\u00e9conomies Quartix - FR<\/title>\n<meta name=\"description\" content=\"D\u00e9couvrez combien votre entreprise pourrait \u00e9conomiser avec la g\u00e9olocalisation de v\u00e9hicules Quartix. Utilisez notre calculateur de ROI gratuit pour estimer vos \u00e9conomies en carburant, temps et productivit\u00e9.\" \/>\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\/fr-fr\/calculateur-retour-sur-investissement\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Calculateur de ROI\" \/>\n<meta property=\"og:description\" content=\"D\u00e9couvrez combien votre entreprise pourrait \u00e9conomiser avec la g\u00e9olocalisation de v\u00e9hicules Quartix. Utilisez notre calculateur de ROI gratuit pour estimer vos \u00e9conomies en carburant, temps et productivit\u00e9.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.quartix.com\/fr-fr\/calculateur-retour-sur-investissement\/\" \/>\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-04T19:59:03+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":"Calculez le ROI du suivi de flotte | Outil d'\u00e9conomies Quartix - FR","description":"D\u00e9couvrez combien votre entreprise pourrait \u00e9conomiser avec la g\u00e9olocalisation de v\u00e9hicules Quartix. Utilisez notre calculateur de ROI gratuit pour estimer vos \u00e9conomies en carburant, temps et productivit\u00e9.","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\/fr-fr\/calculateur-retour-sur-investissement\/","og_locale":"fr_FR","og_type":"article","og_title":"Calculateur de ROI","og_description":"D\u00e9couvrez combien votre entreprise pourrait \u00e9conomiser avec la g\u00e9olocalisation de v\u00e9hicules Quartix. Utilisez notre calculateur de ROI gratuit pour estimer vos \u00e9conomies en carburant, temps et productivit\u00e9.","og_url":"https:\/\/www.quartix.com\/fr-fr\/calculateur-retour-sur-investissement\/","og_site_name":"Quartix","article_publisher":"https:\/\/www.facebook.com\/Quartix-USA-374426386097401\/","article_modified_time":"2026-02-04T19:59:03+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\/fr-fr\/calculateur-retour-sur-investissement\/","url":"https:\/\/www.quartix.com\/fr-fr\/calculateur-retour-sur-investissement\/","name":"Calculez le ROI du suivi de flotte | Outil d'\u00e9conomies Quartix","isPartOf":{"@id":"https:\/\/www.quartix.com\/fr-fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.quartix.com\/fr-fr\/calculateur-retour-sur-investissement\/#primaryimage"},"image":{"@id":"https:\/\/www.quartix.com\/fr-fr\/calculateur-retour-sur-investissement\/#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-04T19:59:03+00:00","description":"D\u00e9couvrez combien votre entreprise pourrait \u00e9conomiser avec la g\u00e9olocalisation de v\u00e9hicules Quartix. Utilisez notre calculateur de ROI gratuit pour estimer vos \u00e9conomies en carburant, temps et productivit\u00e9.","breadcrumb":{"@id":"https:\/\/www.quartix.com\/fr-fr\/calculateur-retour-sur-investissement\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.quartix.com\/fr-fr\/calculateur-retour-sur-investissement\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.quartix.com\/fr-fr\/calculateur-retour-sur-investissement\/#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\/fr-fr\/calculateur-retour-sur-investissement\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.quartix.com\/fr-fr\/quartix-suivi-de-vehicules-en-temps-reel\/"},{"@type":"ListItem","position":2,"name":"Calculateur de ROI"}]},{"@type":"WebSite","@id":"https:\/\/www.quartix.com\/fr-fr\/#website","url":"https:\/\/www.quartix.com\/fr-fr\/","name":"Quartix","description":"Real-time vehicle tracking","publisher":{"@id":"https:\/\/www.quartix.com\/fr-fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.quartix.com\/fr-fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/www.quartix.com\/fr-fr\/#organization","name":"Quartix","url":"https:\/\/www.quartix.com\/fr-fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.quartix.com\/fr-fr\/#\/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\/fr-fr\/#\/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\/fr-fr\/wp-json\/wp\/v2\/pages\/123165","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.quartix.com\/fr-fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.quartix.com\/fr-fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.quartix.com\/fr-fr\/wp-json\/wp\/v2\/users\/219"}],"replies":[{"embeddable":true,"href":"https:\/\/www.quartix.com\/fr-fr\/wp-json\/wp\/v2\/comments?post=123165"}],"version-history":[{"count":8,"href":"https:\/\/www.quartix.com\/fr-fr\/wp-json\/wp\/v2\/pages\/123165\/revisions"}],"predecessor-version":[{"id":128782,"href":"https:\/\/www.quartix.com\/fr-fr\/wp-json\/wp\/v2\/pages\/123165\/revisions\/128782"}],"wp:attachment":[{"href":"https:\/\/www.quartix.com\/fr-fr\/wp-json\/wp\/v2\/media?parent=123165"}],"wp:term":[{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.quartix.com\/fr-fr\/wp-json\/wp\/v2\/topic?post=123165"},{"taxonomy":"qtx_campaign","embeddable":true,"href":"https:\/\/www.quartix.com\/fr-fr\/wp-json\/wp\/v2\/qtx_campaign?post=123165"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}