diff --git a/app/ecolyo.347f2c7ea2ff21824df6.js b/app/ecolyo.2c39fadfce0c3616338c.js
similarity index 99%
rename from app/ecolyo.347f2c7ea2ff21824df6.js
rename to app/ecolyo.2c39fadfce0c3616338c.js
index 0dd828e8fd5242f41debdc6ed33ce05f6f01c7e6..e7b19fdce6b90980b6afff8a21e3edcb347a5f82 100644
--- a/app/ecolyo.347f2c7ea2ff21824df6.js
+++ b/app/ecolyo.2c39fadfce0c3616338c.js
@@ -2942,15 +2942,12 @@ var ChallengeView = function ChallengeView() {
       index = _useState8[0],
       setIndex = _useState8[1];
 
-  var _useState9 = (0, _react.useState)(false),
+  var _useState9 = (0, _react.useState)(marginPx),
       _useState10 = (0, _slicedToArray2.default)(_useState9, 2),
-      isLastDuelDone = _useState10[0],
-      setIsLastDuelDone = _useState10[1];
+      containerTranslation = _useState10[0],
+      setContainerTranslation = _useState10[1];
 
-  var _useState11 = (0, _react.useState)(marginPx),
-      _useState12 = (0, _slicedToArray2.default)(_useState11, 2),
-      containerTranslation = _useState12[0],
-      setContainerTranslation = _useState12[1];
+  var isLastDuelDone = userChallengeList[userChallengeList.length - 1].state == _enums.UserChallengeState.DONE;
 
   var resetValues = function resetValues() {
     // Method used to cancel a swipe on a simple click
@@ -2959,7 +2956,7 @@ var ChallengeView = function ChallengeView() {
   };
 
   var moveSliderRight = (0, _react.useCallback)(function () {
-    if (index < userChallengeList.length - 1 || isLastDuelDone && index < userChallengeList.length) {
+    if (index < userChallengeList.length - (isLastDuelDone ? 0 : 1)) {
       setContainerTranslation(function (prev) {
         return prev - cardWidth - marginPx;
       });
@@ -3018,11 +3015,6 @@ var ChallengeView = function ChallengeView() {
     setContainerTranslation(-currentChallengeIndex * (cardWidth + marginPx) + marginPx);
     setIndex(currentChallengeIndex);
   }, [userChallengeList, cardWidth, isLastDuelDone]);
-  (0, _react.useEffect)(function () {
-    if (userChallengeList[userChallengeList.length - 1].state == _enums.UserChallengeState.DONE) {
-      setIsLastDuelDone(true);
-    }
-  }, [userChallengeList]);
   return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_CozyBar.default, {
     titleKey: "common.title_challenge"
   }), /*#__PURE__*/_react.default.createElement(_Header.default, {
@@ -3063,11 +3055,11 @@ var ChallengeView = function ChallengeView() {
       moveToSlide: moveToSlide
     });
   }), isLastDuelDone && /*#__PURE__*/_react.default.createElement(_ChallengeCard.default, {
+    userChallenge: undefined,
     indexSlider: index,
     index: userChallengeList.length,
     cardWidth: cardWidth,
     cardHeight: cardHeight,
-    isChallengeCardLast: true,
     moveToSlide: moveToSlide
   }))), /*#__PURE__*/_react.default.createElement("div", {
     className: "sliderButtons"
@@ -7853,7 +7845,7 @@ var DuelView = function DuelView() {
   };
 
   var renderDuel = function renderDuel(challenge) {
-    switch (challenge.duel.state) {
+    switch (challenge === null || challenge === void 0 ? void 0 : challenge.duel.state) {
       case _enums.UserDuelState.UNLOCKED:
         return /*#__PURE__*/_react.default.createElement(_DuelUnlocked.default, {
           userChallenge: challenge
@@ -7890,7 +7882,7 @@ var DuelView = function DuelView() {
     displayBackArrow: true
   }), /*#__PURE__*/_react.default.createElement(_Content.default, {
     heightOffset: headerHeight
-  }, /*#__PURE__*/_react.default.createElement("div", null, challengeToDisplay && (challengeToDisplay.state === _enums.UserChallengeState.DUEL || challengeToDisplay.state === _enums.UserChallengeState.DONE) ? renderDuel(challengeToDisplay) : /*#__PURE__*/_react.default.createElement(_DuelError.default, null))));
+  }, renderDuel(challengeToDisplay)));
 };
 
 var _default = DuelView;
@@ -8065,15 +8057,15 @@ var LastDuelModal = function LastDuelModal(_ref) {
     className: "icon",
     icon: _star.default,
     size: 48
-  }), /*#__PURE__*/_react.default.createElement("div", {
-    className: "text-28-bold title"
-  }, t('last_duel_modal.title')), /*#__PURE__*/_react.default.createElement("div", {
-    className: "text-22-bold subtitle"
-  }, t('last_duel_modal.subtitle')), /*#__PURE__*/_react.default.createElement("div", {
-    className: "text-18-normal content"
-  }, t('last_duel_modal.message1')), /*#__PURE__*/_react.default.createElement("div", {
-    className: "text-18-normal content"
-  }, t('last_duel_modal.message2'))));
+  }), /*#__PURE__*/_react.default.createElement("h1", {
+    className: "text-28-bold"
+  }, t('last_duel_modal.title')), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("h2", {
+    className: "text-22-bold"
+  }, t('last_duel_modal.subtitle')), /*#__PURE__*/_react.default.createElement("p", {
+    className: "text-18-normal"
+  }, t('last_duel_modal.message1')), /*#__PURE__*/_react.default.createElement("p", {
+    className: "text-18-normal"
+  }, t('last_duel_modal.message2')))));
 };
 
 var _default = LastDuelModal;
@@ -11327,14 +11319,10 @@ var ChallengeCard = function ChallengeCard(_ref) {
       index = _ref.index,
       cardWidth = _ref.cardWidth,
       cardHeight = _ref.cardHeight,
-      _ref$isChallengeCardL = _ref.isChallengeCardLast,
-      isChallengeCardLast = _ref$isChallengeCardL === void 0 ? false : _ref$isChallengeCardL,
       moveToSlide = _ref.moveToSlide;
 
   var renderCard = function renderCard(userChallenge) {
-    if (!userChallenge || isChallengeCardLast) return /*#__PURE__*/_react.default.createElement(_ChallengeCardLast.default, null);
-
-    switch (userChallenge.state) {
+    switch (userChallenge === null || userChallenge === void 0 ? void 0 : userChallenge.state) {
       case _enums.UserChallengeState.LOCKED:
         return /*#__PURE__*/_react.default.createElement(_ChallengeCardLocked.default, {
           userChallenge: userChallenge
@@ -11357,9 +11345,7 @@ var ChallengeCard = function ChallengeCard(_ref) {
         });
 
       default:
-        return /*#__PURE__*/_react.default.createElement(_ChallengeCardLocked.default, {
-          userChallenge: userChallenge
-        });
+        return /*#__PURE__*/_react.default.createElement(_ChallengeCardLast.default, null);
     }
   };
 
@@ -29753,6 +29739,8 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
 function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
 
 var DuelOngoing = function DuelOngoing(_ref) {
+  var _userChallengeList;
+
   var userChallenge = _ref.userChallenge,
       isFinished = _ref.isFinished;
 
@@ -29760,6 +29748,8 @@ var DuelOngoing = function DuelOngoing(_ref) {
       t = _useI18n.t;
 
   var client = (0, _cozyClient.useClient)();
+  var navigate = (0, _reactRouterDom.useNavigate)();
+  var dispatch = (0, _hooks.useAppDispatch)();
 
   var _useAppSelector = (0, _hooks.useAppSelector)(function (state) {
     return state.ecolyo.challenge;
@@ -29767,9 +29757,6 @@ var DuelOngoing = function DuelOngoing(_ref) {
       currentDataload = _useAppSelector.currentDataload,
       userChallengeList = _useAppSelector.userChallengeList;
 
-  var dispatch = (0, _hooks.useAppDispatch)();
-  var navigate = (0, _reactRouterDom.useNavigate)();
-
   var _useState = (0, _react.useState)(false),
       _useState2 = (0, _slicedToArray2.default)(_useState, 2),
       resultModal = _useState2[0],
@@ -29782,8 +29769,8 @@ var DuelOngoing = function DuelOngoing(_ref) {
 
   var _useState5 = (0, _react.useState)(false),
       _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
-      isLastDuel = _useState6[0],
-      setIsLastDuel = _useState6[1];
+      showLastDuelModal = _useState6[0],
+      setShowLastDuelModal = _useState6[1];
 
   var _useState7 = (0, _react.useState)(),
       _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
@@ -29800,8 +29787,7 @@ var DuelOngoing = function DuelOngoing(_ref) {
     return new _challenge.default(client);
   }, [client]);
   var duel = userChallenge.duel;
-  var title = duel.title;
-  var durationInDays = duel.duration.days;
+  var isLastDuel = userChallenge.id == ((_userChallengeList = userChallengeList[userChallengeList.length - 1]) === null || _userChallengeList === void 0 ? void 0 : _userChallengeList.id);
   var userConsumption = (0, _utils.formatNumberValues)(userChallenge.duel.userConsumption).toString();
   var average = (0, _utils.formatNumberValues)(userChallenge.duel.threshold).toString();
   var setResult = (0, _react.useCallback)( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
@@ -29837,8 +29823,8 @@ var DuelOngoing = function DuelOngoing(_ref) {
             dispatch((0, _challenge2.unlockNextUserChallenge)(updatedChallenge));
             dispatch((0, _global.toggleChallengeDuelNotification)(false));
 
-            if (userChallenge.id == userChallengeList[userChallengeList.length - 1].id) {
-              setIsLastDuel(true);
+            if (isLastDuel) {
+              setShowLastDuelModal(true);
             } else {
               navigate('/challenges');
             }
@@ -29849,7 +29835,7 @@ var DuelOngoing = function DuelOngoing(_ref) {
         }
       }
     }, _callee);
-  })), [client, userChallenge, winChallenge, dispatch, userChallengeList, navigate]);
+  })), [client, userChallenge, winChallenge, dispatch, isLastDuel, navigate]);
   (0, _react.useEffect)(function () {
     var subscribed = true;
 
@@ -29946,11 +29932,9 @@ var DuelOngoing = function DuelOngoing(_ref) {
   }, userChallenge.success === _enums.UserChallengeSuccess.WIN ? t('duel.goal_done') : t('duel.goal_failed')) : /*#__PURE__*/_react.default.createElement("div", {
     className: "duel-goal text-18-normal"
   }, t('duel.goal1', {
-    durationInDays: durationInDays,
-    smartCount: durationInDays
+    durationInDays: duel.duration.days
   }), /*#__PURE__*/_react.default.createElement("span", null, " "), t('duel.goal2', {
-    title: title,
-    smartCount: title
+    title: duel.title
   })), /*#__PURE__*/_react.default.createElement("div", {
     className: "duel-consumption text-28-normal"
   }, /*#__PURE__*/_react.default.createElement("span", {
@@ -29995,7 +29979,7 @@ var DuelOngoing = function DuelOngoing(_ref) {
     win: winChallenge,
     handleCloseClick: setResult
   }), /*#__PURE__*/_react.default.createElement(_lastDuelModal.default, {
-    open: isLastDuel,
+    open: showLastDuelModal,
     handleCloseClick: function handleCloseClick() {
       return navigate('/challenges');
     }
@@ -31647,7 +31631,7 @@ var result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WE
 
 exports = module.exports = __webpack_require__("JPst")(false);
 // Module
-exports.push([module.i, "/** BLACK **/\n/** RED **/\n/** YELLOW **/\n/** ORANGE **/\n/** BLUE **/\n/** GREEN **/\n/** WHITE **/\n/** GREY **/\n/** App colors **/\n/** TABS GRADIENT **/\n/** SCROLLBAR **/\n.duel-last-modal-root {\n  text-align: center;\n}\n.duel-last-modal-root .closeIcon {\n  float: right;\n  cursor: pointer;\n}\n.duel-last-modal-root .icon {\n  margin: 2rem 0 0;\n}\n.duel-last-modal-root .title {\n  margin: 1rem 0 1rem;\n}\n.duel-last-modal-root .subtitle {\n  color: #61f0f2;\n  margin: 1rem 0 0.5rem;\n}\n.duel-last-modal-root .content {\n  margin: 0.5rem 0;\n}\n\n#accessibility-title {\n  display: none;\n}", ""]);
+exports.push([module.i, "/** BLACK **/\n/** RED **/\n/** YELLOW **/\n/** ORANGE **/\n/** BLUE **/\n/** GREEN **/\n/** WHITE **/\n/** GREY **/\n/** App colors **/\n/** TABS GRADIENT **/\n/** SCROLLBAR **/\n.duel-last-modal-root {\n  text-align: center;\n  display: flex;\n  flex-direction: column;\n  gap: 1rem;\n}\n.duel-last-modal-root .closeIcon {\n  float: right;\n  cursor: pointer;\n}\n.duel-last-modal-root .icon {\n  margin: auto;\n}\n.duel-last-modal-root h1 {\n  color: #ffffff;\n}\n.duel-last-modal-root h2 {\n  color: #61f0f2;\n  margin: 0;\n}\n.duel-last-modal-root p {\n  color: #e0e0e0;\n}\n\n#accessibility-title {\n  display: none;\n}", ""]);
 
 
 
@@ -34725,7 +34709,7 @@ var ChallengeCardOnGoing = function ChallengeCardOnGoing(_ref) {
 
             case 8:
               setIsLoading(false);
-              navigate('/challenges/duel?id=' + userChallenge.id);
+              navigate("/challenges/duel?id=".concat(userChallenge.id));
               _context.next = 14;
               break;
 
diff --git a/index.html b/index.html
index bee61cd6fce862133ed6ab9dce42ff78cba63213..44994485a67ab61d97255e11b9d7f8911efa1901 100644
--- a/index.html
+++ b/index.html
@@ -1 +1 @@
-<!DOCTYPE html><html lang="{{.Locale}}"><head><meta charset="utf-8"><title>Ecolyo</title><link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32"><link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16"><!-- PWA Manifest --><link rel="manifest" href="/manifest.json" crossorigin="use-credentials"><link rel="mask-icon" href="/safari-pinned-tab.svg" color="#297EF2"><meta name="viewport" content="width=device-width,height=device-height,initial-scale=1,viewport-fit=cover"><!-- PWA Chrome --><link rel="icon" sizes="192x192" href="/android-chrome-192x192.png"><link rel="icon" sizes="512x512" href="/android-chrome-512x512.png"><!-- PWA iOS --><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"><link rel="apple-touch-startup-image" href="/apple-touch-icon.png"><meta name="apple-mobile-web-app-title" content="Ecolyo"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="black"><!-- PWA Colors --><meta name="theme-color" content="#343641"><meta name="background-color" content="#121212">{{.ThemeCSS}} {{.CozyBar}}<script src="//{{.Domain}}/assets/js/piwik.js"></script></head><body><div role="application" class="application" data-cozy="{{.CozyData}}"><script src="vendors/ecolyo.fbf1f65c47dc10085503.js"></script><script src="app/ecolyo.347f2c7ea2ff21824df6.js"></script></div></body></html>
\ No newline at end of file
+<!DOCTYPE html><html lang="{{.Locale}}"><head><meta charset="utf-8"><title>Ecolyo</title><link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32"><link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16"><!-- PWA Manifest --><link rel="manifest" href="/manifest.json" crossorigin="use-credentials"><link rel="mask-icon" href="/safari-pinned-tab.svg" color="#297EF2"><meta name="viewport" content="width=device-width,height=device-height,initial-scale=1,viewport-fit=cover"><!-- PWA Chrome --><link rel="icon" sizes="192x192" href="/android-chrome-192x192.png"><link rel="icon" sizes="512x512" href="/android-chrome-512x512.png"><!-- PWA iOS --><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"><link rel="apple-touch-startup-image" href="/apple-touch-icon.png"><meta name="apple-mobile-web-app-title" content="Ecolyo"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="black"><!-- PWA Colors --><meta name="theme-color" content="#343641"><meta name="background-color" content="#121212">{{.ThemeCSS}} {{.CozyBar}}<script src="//{{.Domain}}/assets/js/piwik.js"></script></head><body><div role="application" class="application" data-cozy="{{.CozyData}}"><script src="vendors/ecolyo.fbf1f65c47dc10085503.js"></script><script src="app/ecolyo.2c39fadfce0c3616338c.js"></script></div></body></html>
\ No newline at end of file