diff --git a/manifest.webapp b/manifest.webapp
index 42da9006536ea11fa56462b407064458145f79af..620578ab4191080c76345fe9792f2d6232356d6f 100644
--- a/manifest.webapp
+++ b/manifest.webapp
@@ -2,8 +2,8 @@
   "name": "Ecolyo",
   "slug": "ecolyo",
   "icon": "icon.svg",
-  "categories": [],
-  "version": "0.1.3",
+  "categories": ["energy"],
+  "version": "0.1.4",
   "licence": "AGPL-3.0",
   "editor": "Métropole de Lyon",
   "default_locale": "fr",
diff --git a/package.json b/package.json
index 0f25d3a4aff0ed8df7a914abc7c36e446c5db17a..35fc72bef446d891eec2824a148b3261fd3a6579 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "ecolyo",
-  "version": "0.1.3",
+  "version": "0.1.4",
   "scripts": {
     "tx": "tx pull --all || true",
     "lint": "yarn lint:js && yarn lint:styles",
@@ -15,6 +15,7 @@
     "watch:mobile": "cs watch --mobile",
     "start:cs": "cs start --hot --browser --no-stack",
     "deploy": "git-directory-deploy --directory build/ --branch ${DEPLOY_BRANCH:-build} --repo=${DEPLOY_REPOSITORY:-https://forge.grandlyon.com/web-et-numerique/llle_project/ecolyo.git}",
+    "deploy-dev": "git-directory-deploy --directory build/ --branch ${DEPLOY_BRANCH:-build-dev} --repo=${DEPLOY_REPOSITORY:-https://forge.grandlyon.com/web-et-numerique/llle_project/ecolyo.git}",
     "test": "cs test --verbose --coverage",
     "cozyPublish": "git fetch origin ${DEPLOY_BRANCH:-build}:${DEPLOY_BRANCH:-build} && cs publish --token $REGISTRY_TOKEN --build-commit $(git rev-parse ${DEPLOY_BRANCH:-build})",
     "build:css": "node-sass -c ./src/styles -o src/styles",
@@ -85,6 +86,7 @@
     "cozy-scripts": "2.0.2",
     "cozy-ui": "21.7.0",
     "d3": "^5.15.0",
+    "detect-browser": "^5.1.1",
     "eslint-config-cozy-app": "1.1.12",
     "global": "^4.4.0",
     "lodash": "^4.17.15",
diff --git a/src/assets/png/badges/locked.png b/src/assets/png/badges/locked.png
index eb5b58b0cdcab03bad8c2bd4bfa236e3440744cb..842906ab28059dadbf8f9b0a97e250fe506a661c 100644
Binary files a/src/assets/png/badges/locked.png and b/src/assets/png/badges/locked.png differ
diff --git a/src/components/CommonKit/Button/StyledButton.tsx b/src/components/CommonKit/Button/StyledButton.tsx
index a460cc4f76c47539cd0f81538bfea522450211ed..cf3c8b34e45724d2cb6c433c6851e2ad1b4c362f 100644
--- a/src/components/CommonKit/Button/StyledButton.tsx
+++ b/src/components/CommonKit/Button/StyledButton.tsx
@@ -59,7 +59,6 @@ const SecondaryButton = withStyles({
     border: '1px solid #121212',
   },
   label: {
-    color: '#E0E0E0',
     fontWeight: 'normal',
   },
 })(BaseButton)
diff --git a/src/components/CommonKit/Card/StyledBorderCard.tsx b/src/components/CommonKit/Card/StyledBorderCard.tsx
index b68b3beb0a6770c8b973638af2bc69c9e7cc7ee5..9d123793449dffd2a89a7190ec26751403dd3776 100644
--- a/src/components/CommonKit/Card/StyledBorderCard.tsx
+++ b/src/components/CommonKit/Card/StyledBorderCard.tsx
@@ -7,13 +7,12 @@ import { withStyles } from '@material-ui/core/styles'
 
 const CardBase = withStyles({
   root: {
-    // background: 'var(--darkLight)',
     border: '1px solid var(--textDark)',
     boxSizing: 'border-box',
-    // boxShadow: '0px 4px 16px',
     borderRadius: '4px',
     width: '100hv',
     margin: '1.25rem 0',
+    cursor: 'default',
   },
 })(CardActionArea)
 
diff --git a/src/components/CommonKit/Tabs/StyledBlueTab.tsx b/src/components/CommonKit/Tabs/StyledBlueTab.tsx
index 99228aee3d2e57890a614b9df5264e6cc01f7998..2cd74cecbe37b17649f9c800ef09c3ebe1c3e58b 100644
--- a/src/components/CommonKit/Tabs/StyledBlueTab.tsx
+++ b/src/components/CommonKit/Tabs/StyledBlueTab.tsx
@@ -8,10 +8,7 @@ const TabBase = withStyles({
     minHeight: '36px',
   },
   selected: {
-    background: 'var(--blueRadialGradient)',
-    backgroundClip: 'text',
-    WebkitBackgroundClip: 'text',
-    WebkitTextFillColor: 'transparent',
+    color: 'var(--blue)',
   },
 })(Tab)
 
diff --git a/src/components/CommonKit/Tabs/StyledTab.tsx b/src/components/CommonKit/Tabs/StyledTab.tsx
index 1d2dec1a707ee338fb958fa801f00b7fab655e32..850e305832af1d9b7379e826c55f158c13c059d1 100644
--- a/src/components/CommonKit/Tabs/StyledTab.tsx
+++ b/src/components/CommonKit/Tabs/StyledTab.tsx
@@ -9,37 +9,25 @@ const TabBase = withStyles({
     minHeight: '36px',
   },
   selected: {
-    background: 'var(--multiColorRadialGradient)',
-    backgroundClip: 'text',
-    WebkitBackgroundClip: 'text',
-    WebkitTextFillColor: 'transparent',
+    color: 'var(--multiColor)',
   },
 })(Tab)
 
 const TabElec = withStyles({
   selected: {
-    background: 'var(--elecColorRadialGradient)',
-    backgroundClip: 'text',
-    WebkitBackgroundClip: 'text',
-    WebkitTextFillColor: 'transparent',
+    color: 'var(--elecColor)',
   },
 })(TabBase)
 
 const TabWater = withStyles({
   selected: {
-    background: 'var(--waterColorRadialGradient)',
-    backgroundClip: 'text',
-    WebkitBackgroundClip: 'text',
-    WebkitTextFillColor: 'transparent',
+    color: 'var(--waterColor)',
   },
 })(TabBase)
 
 const TabGas = withStyles({
   selected: {
-    background: 'var(--gasColorRadialGradient)',
-    backgroundClip: 'text',
-    WebkitBackgroundClip: 'text',
-    WebkitTextFillColor: 'transparent',
+    color: 'var(--gasColor)',
   },
 })(TabBase)
 
diff --git a/src/components/ContainerComponents/Header/Header.tsx b/src/components/ContainerComponents/Header/Header.tsx
index ea33eb9f6bfed660a6ecaae59d1f635d05b8c717..05c3aee6ecb9606a31db154eb8a0f22faffb57dc 100644
--- a/src/components/ContainerComponents/Header/Header.tsx
+++ b/src/components/ContainerComponents/Header/Header.tsx
@@ -74,7 +74,7 @@ const Header: React.FC<HeaderProps> = ({
             >
               {displayBackArrow && (
                 <StyledIconButton
-                  className="cv-button"
+                  className="header-back-button"
                   icon={BackArrowIcon}
                   onClick={() => handleClickBack()}
                 />
diff --git a/src/components/ContainerComponents/IndicatorsContainer/SingleFluidIndicatorsContainer.tsx b/src/components/ContainerComponents/IndicatorsContainer/SingleFluidIndicatorsContainer.tsx
index 6fad19fab64be83b1c771fd07f23b0dce01324c8..3147c6643490d5ccf39e33617130d908a4d10193 100644
--- a/src/components/ContainerComponents/IndicatorsContainer/SingleFluidIndicatorsContainer.tsx
+++ b/src/components/ContainerComponents/IndicatorsContainer/SingleFluidIndicatorsContainer.tsx
@@ -108,7 +108,10 @@ const SingleFluidIndicatorsContainer: React.FC<SingleFluidIndicatorsContainerPro
                   {t('COMMON.MINI_CARDS_LABEL')}
                 </div>
                 <div className="sfi-redirect">
-                  <RedirectionMiniCard fluidTypes={filteredFluidTypes} />
+                  <RedirectionMiniCard
+                    fluidTypes={filteredFluidTypes}
+                    timeStep={timeStep}
+                  />
                 </div>
               </>
             )}
diff --git a/src/components/ContainerComponents/ViewContainer/HomeViewContainer.tsx b/src/components/ContainerComponents/ViewContainer/HomeViewContainer.tsx
index d39ae778872f39cf99e96966099abff28e8ce346..c1a4e4a76488678ad88bc5977307d59c2d02e0be 100644
--- a/src/components/ContainerComponents/ViewContainer/HomeViewContainer.tsx
+++ b/src/components/ContainerComponents/ViewContainer/HomeViewContainer.tsx
@@ -12,9 +12,15 @@ import ChallengeCardContainer from 'components/ContainerComponents/ChallengeCard
 import KonnectorViewerContainer from 'components/ContainerComponents/KonnectorViewerContainer/KonnectorViewerContainer'
 
 const HomeViewContainer: React.FC = () => {
-  const [timeStep, setTimeStep] = useState<TimeStep>(20)
+  const { fluidTypes, previousTimeStep, setPreviousTimeStep } = useContext(
+    AppContext
+  )
+  const [timeStep, setTimeStep] = useState<TimeStep>(
+    previousTimeStep && previousTimeStep !== TimeStep.HALF_AN_HOUR
+      ? previousTimeStep
+      : TimeStep.DAY
+  )
   const [resetRefenceDate, setResetReferenceDate] = useState<boolean>(false)
-  const { fluidTypes } = useContext(AppContext)
   const [headerHeight, setHeaderHeight] = useState<number>(0)
   const [isChartLoading, setChartLoading] = useState<boolean>(true)
   const [isIndicatorsLoading, setIndicatorsLoading] = useState<boolean>(true)
@@ -30,6 +36,7 @@ const HomeViewContainer: React.FC = () => {
   const handleClickTimeStepForNavigation = (_timeStep: TimeStep) => {
     setResetReferenceDate(true)
     setTimeStep(_timeStep)
+    setPreviousTimeStep(_timeStep)
   }
 
   const handleClickTimeStepForFluidContainer = (_timeStep: TimeStep) => {
diff --git a/src/components/ContainerComponents/ViewContainer/SingleFluidViewContainer.tsx b/src/components/ContainerComponents/ViewContainer/SingleFluidViewContainer.tsx
index eecfe4902630ac584ae8e55ce5b1f81a0155acf8..882df7e31342b3200032309439f28d202850df3b 100644
--- a/src/components/ContainerComponents/ViewContainer/SingleFluidViewContainer.tsx
+++ b/src/components/ContainerComponents/ViewContainer/SingleFluidViewContainer.tsx
@@ -1,4 +1,4 @@
-import React, { useState, useEffect } from 'react'
+import React, { useState, useEffect, useContext } from 'react'
 import StyledSpinner from 'components/CommonKit/Spinner/StyledSpinner'
 import CozyBar from 'components/ContainerComponents/CozyBar/CozyBar'
 import Header from 'components/ContainerComponents/Header/Header'
@@ -8,6 +8,7 @@ import { FluidType } from 'enum/fluid.enum'
 import { TimeStep } from 'services/dataConsumptionContracts'
 import ConsumptionNavigator from 'components/ContentComponents/ConsumptionNavigator/ConsumptionNavigator'
 import SingleFluidIndicatorsContainer from 'components/ContainerComponents/IndicatorsContainer/SingleFluidIndicatorsContainer'
+import { AppContext } from 'components/Contexts/AppContextProvider'
 
 interface SingleFluidViewContainerProps {
   fluidTypes: FluidType[]
@@ -15,7 +16,13 @@ interface SingleFluidViewContainerProps {
 const SingleFluidViewContainer: React.FC<SingleFluidViewContainerProps> = ({
   fluidTypes,
 }: SingleFluidViewContainerProps) => {
-  const [timeStep, setTimeStep] = useState<TimeStep>(20)
+  const { setPreviousTimeStep, previousTimeStep } = useContext(AppContext)
+
+  const [timeStep, setTimeStep] = useState<TimeStep | null>(
+    previousTimeStep && previousTimeStep !== TimeStep.HALF_AN_HOUR
+      ? previousTimeStep
+      : TimeStep.DAY
+  )
   const [resetRefenceDate, setResetReferenceDate] = useState<boolean>(false)
   const [headerHeight, setHeaderHeight] = useState<number>(0)
 
@@ -33,6 +40,7 @@ const SingleFluidViewContainer: React.FC<SingleFluidViewContainerProps> = ({
   const handleClickTimeStepForNavigation = (_timeStep: TimeStep) => {
     setResetReferenceDate(true)
     setTimeStep(_timeStep)
+    setPreviousTimeStep(_timeStep)
   }
 
   const handleClickTimeStepForFluidContainer = (_timeStep: TimeStep) => {
diff --git a/src/components/ContentComponents/Card/RedirectionMiniCard.tsx b/src/components/ContentComponents/Card/RedirectionMiniCard.tsx
index 94903082d94d4f15becf409c16df4259af4fabe0..488f3bdc71c840b2c2e8394a1705d394cae0544e 100644
--- a/src/components/ContentComponents/Card/RedirectionMiniCard.tsx
+++ b/src/components/ContentComponents/Card/RedirectionMiniCard.tsx
@@ -6,15 +6,18 @@ import { getPicto, getCardColor } from 'utils/utils'
 import { ProcessedData } from 'services/fluidService'
 import StyledIconCard from 'components/CommonKit/Card/StyledIconCard'
 import { NavLink } from 'react-router-dom'
+import { TimeStep } from 'services/dataConsumptionContracts'
 
 export interface RedirectionMiniCard {
   fluidTypes: FluidType[]
   t: Function
+  timeStep: TimeStep
 }
 
 const RedirectionMiniCard: React.FC<RedirectionMiniCard> = ({
   fluidTypes,
   t,
+  timeStep,
 }: RedirectionMiniCard) => {
   return (
     <>
diff --git a/src/components/ContentComponents/Challenge/FollowChallengeTimeline.tsx b/src/components/ContentComponents/Challenge/FollowChallengeTimeline.tsx
index 9dd90d335fda5b9adbf18bf4369d962595f0e860..e8b3edc7b58b0113e22d46c298786d4273144daa 100644
--- a/src/components/ContentComponents/Challenge/FollowChallengeTimeline.tsx
+++ b/src/components/ContentComponents/Challenge/FollowChallengeTimeline.tsx
@@ -98,7 +98,7 @@ const FollowChallengeTimeline: React.FC<FollowChallengeTimelineViewProps> = ({
     }
   }
 
-  const generateTimelinePart = (
+  const generateMonthTimelinePart = (
     index: number,
     dayCount: number,
     className: string
@@ -117,17 +117,27 @@ const FollowChallengeTimeline: React.FC<FollowChallengeTimelineViewProps> = ({
     )
   }
 
+  const generateWeekTimelinePart = (index: number, className: string) => {
+    return (
+      <div
+        className={`${className} ${
+          index < getListOfPastDays() ? 'past' : 'futur'
+        }`}
+      ></div>
+    )
+  }
+
   const monthChallenge = () => {
     return getListOfWeeks().map((day, index) => (
       <div key={index} className="day-solo">
         <div className="day-line-label">
-          {generateTimelinePart(index, 3, 'date-dash')}
-          {generateTimelinePart(index, 2, 'date-dash')}
-          {generateTimelinePart(index, 1, 'date-dash')}
-          {generateTimelinePart(index, 0, 'date-label')}
-          {generateTimelinePart(index, -1, 'date-dash')}
-          {generateTimelinePart(index, -2, 'date-dash')}
-          {generateTimelinePart(index, -3, 'date-dash')}
+          {generateMonthTimelinePart(index, 3, 'date-dash')}
+          {generateMonthTimelinePart(index, 2, 'date-dash')}
+          {generateMonthTimelinePart(index, 1, 'date-dash')}
+          {generateMonthTimelinePart(index, 0, 'date-label')}
+          {generateMonthTimelinePart(index, -1, 'date-dash')}
+          {generateMonthTimelinePart(index, -2, 'date-dash')}
+          {generateMonthTimelinePart(index, -3, 'date-dash')}
         </div>
         <div className="day-letter">{day.letter}</div>
         <div className="day-date">{day.date}</div>
@@ -139,9 +149,9 @@ const FollowChallengeTimeline: React.FC<FollowChallengeTimelineViewProps> = ({
     return getListOfDays().map((day, index) => (
       <div key={index} className="day-solo">
         <div className="day-line-label">
-          {generateTimelinePart(index, 0, 'date-dash')}
-          {generateTimelinePart(index, 0, 'date-label')}
-          {generateTimelinePart(index + 1, 0, 'date-dash')}
+          {generateWeekTimelinePart(index, 'date-dash')}
+          {generateWeekTimelinePart(index, 'date-label')}
+          {generateWeekTimelinePart(index + 1, 'date-dash')}
         </div>
         <div className="day-letter">{day.letter}</div>
         <div className="day-date">{day.date}</div>
diff --git a/src/components/ContentComponents/Challenge/OngoingChallengePile.tsx b/src/components/ContentComponents/Challenge/OngoingChallengePile.tsx
index 5cf63f5b57ce901e1d2166a20fcc51fc5719f117..63d90c1d00451ec064b2c649192b2007f9907c2e 100644
--- a/src/components/ContentComponents/Challenge/OngoingChallengePile.tsx
+++ b/src/components/ContentComponents/Challenge/OngoingChallengePile.tsx
@@ -53,7 +53,7 @@ const OngoingChallengePile: React.FC<OngoingChallengePileProps> = ({
         {challenge && challenge.maxEnergy > 0 ? (
           <div className={`values-section ${textFont}`}>
             <span>
-              {challenge.currentEnergy
+              {challenge.currentEnergy && challenge.currentEnergy !== -1
                 ? formatNumberValues(
                     challenge.maxEnergy - challenge.currentEnergy
                   )
diff --git a/src/components/ContentComponents/Charts/Bar.tsx b/src/components/ContentComponents/Charts/Bar.tsx
index 8342a11b72b479c58c900b500afe61515df220cd..821348c0d29b2627a307a47d8dab6cbac7fcdd7c 100644
--- a/src/components/ContentComponents/Charts/Bar.tsx
+++ b/src/components/ContentComponents/Charts/Bar.tsx
@@ -8,6 +8,7 @@ import {
 import { compareStepDate } from 'services/dateChartService'
 import { FluidType } from 'enum/fluid.enum'
 import { DateTime } from 'luxon'
+import { detect } from 'detect-browser'
 
 interface BarProps {
   index: number
@@ -46,6 +47,7 @@ const Bar = (props: BarProps) => {
   const [clicked, setClicked] = useState(false)
   const [animationEnded, setAnimationEnded] = useState(false)
   const [compareAnimationEnded, setCompareAnimationEnded] = useState(false)
+  const browser = detect()
 
   const fluidStyle = multiFluid
     ? 'MULTIFLUID'
@@ -71,26 +73,38 @@ const Bar = (props: BarProps) => {
   const isSelectedDate = compareStepDate(timeStep, selectedDate, dataload.date)
 
   const barClass = clicked
-    ? `bar-${fluidStyle} selected bounce-2 delay`
+    ? `bar-${fluidStyle} selected bounce-${
+        browser && browser.name !== 'edge' ? '2' : '3'
+      } delay`
     : isSelectedDate
     ? animationEnded
       ? `bar-${fluidStyle} selected`
-      : `bar-${fluidStyle} selected bounce-1 delay--${index % 13}`
+      : `bar-${fluidStyle} selected bounce-${
+          browser && browser.name !== 'edge' ? '1' : '3'
+        } delay--${index % 13}`
     : animationEnded
     ? `bar-${fluidStyle} `
-    : `bar-${fluidStyle} bounce-1 delay--${index % 13}`
+    : `bar-${fluidStyle} bounce-${
+        browser && browser.name !== 'edge' ? '1' : '3'
+      } delay--${index % 13}`
 
   const barBackgroundClass = isSelectedDate
 
   const compareBarClass = clicked
-    ? `bar-compare-${fluidStyle} selected bounce-2 delay--0`
+    ? `bar-compare-${fluidStyle} selected bounce-${
+        browser && browser.name !== 'edge' ? '2' : '3'
+      } delay--0`
     : isSelectedDate
     ? compareAnimationEnded
       ? `bar-compare-${fluidStyle} selected`
-      : `bar-compare-${fluidStyle} selected bounce-1 delay--${index % 13}`
+      : `bar-compare-${fluidStyle} selected bounce-${
+          browser && browser.name !== 'edge' ? '1' : '3'
+        } delay--${index % 13}`
     : compareAnimationEnded
     ? `bar-compare-${fluidStyle} `
-    : `bar-compare-${fluidStyle} bounce-1 delay--${index % 13}`
+    : `bar-compare-${fluidStyle} bounce-${
+        browser && browser.name !== 'edge' ? '1' : '3'
+      } delay--${index % 13}`
 
   const getBandWidth = (): number => {
     return showCompare ? xScale.bandwidth() / 2 : xScale.bandwidth()
@@ -156,7 +170,7 @@ const Bar = (props: BarProps) => {
             width={showCompare ? getBandWidth() * 2 : getBandWidth()}
             height={height + 40}
             className={`background-${barBackgroundClass}`}
-            fill="#E0E0E010"
+            fill="#E0E0E0"
           />
         </g>
       ) : null}
diff --git a/src/components/ContentComponents/ConsumptionVisualizer/ConsumptionVisualizer.tsx b/src/components/ContentComponents/ConsumptionVisualizer/ConsumptionVisualizer.tsx
index d45ca5042da8134ae5d2beaadc59081b4e53e99e..ab843acfb16bceb318ecbacba84e15f584d1681e 100644
--- a/src/components/ContentComponents/ConsumptionVisualizer/ConsumptionVisualizer.tsx
+++ b/src/components/ContentComponents/ConsumptionVisualizer/ConsumptionVisualizer.tsx
@@ -47,6 +47,7 @@ const ConsumptionVisualizer = ({
   handleClickDetails,
   handleChangeIndex,
 }: ConsumptionVisualizerProps) => {
+  fluidTypes.sort()
   return (
     <div className="cv">
       <DateConsumptionVisualizer
@@ -74,6 +75,7 @@ const ConsumptionVisualizer = ({
             handleClickDetails={handleClickDetails}
           />
         )}
+
         {dataload &&
           dataload.valueDetail &&
           ((dataload.valueDetail[0] === -1 &&
diff --git a/src/components/ContentComponents/EcogestureModal/EcogestureModal.tsx b/src/components/ContentComponents/EcogestureModal/EcogestureModal.tsx
index 635e1591259a1bee46c838e8952c4e887d34223a..7bb2d7635f8f701a83d88551d90e4324b5542cdd 100644
--- a/src/components/ContentComponents/EcogestureModal/EcogestureModal.tsx
+++ b/src/components/ContentComponents/EcogestureModal/EcogestureModal.tsx
@@ -60,7 +60,7 @@ const EcogestureModal: React.FC<EcogestureModalProps> = ({
               <div className="em-content-box-text-header">
                 {(ecogesture.unlocked || unlockedEcogesture) && ecogestureIcon && (
                   <div>
-                    <Icon className="icon" icon={ecogestureIcon} size={100} />
+                    <Icon className="icon" icon={ecogestureIcon} size={140} />
                   </div>
                 )}
                 <div className="em-title text-24-bold ">
diff --git a/src/components/ContentComponents/FAQ/FAQ.tsx b/src/components/ContentComponents/FAQ/FAQ.tsx
index 465a52c07edaf06fa2438bdb498f494c1b0cc924..7bd7d5a3fce8d691191fe96951e41441a39054a3 100644
--- a/src/components/ContentComponents/FAQ/FAQ.tsx
+++ b/src/components/ContentComponents/FAQ/FAQ.tsx
@@ -46,6 +46,23 @@ const decoreText = (line: string) => {
         {line.substring(indexEnd + 4, line.length)}
       </>
     )
+  } else if (line.includes('<mailto>')) {
+    const indexStart = line.indexOf('Vous')
+    const indexEnd = line.indexOf('</mailto>')
+    return (
+      <>
+        {line.substring(8, indexStart)}
+        <a
+          href={'mailto:ecolyo@grandlyon.com'}
+          target="_blank"
+          rel="noopener noreferrer"
+        >
+          {line.substring(indexStart, indexEnd)}
+        </a>
+
+        {line.substring(line.length)}
+      </>
+    )
   } else {
     return line
   }
diff --git a/src/components/ContentComponents/FluidChart/FluidChartContent.tsx b/src/components/ContentComponents/FluidChart/FluidChartContent.tsx
index 1a6c4d95efeab55bfadb3187a4639b0e50aedaa0..5d9bbf1651bbf03cbb9f3ed2f21cde41783d0f8d 100644
--- a/src/components/ContentComponents/FluidChart/FluidChartContent.tsx
+++ b/src/components/ContentComponents/FluidChart/FluidChartContent.tsx
@@ -105,7 +105,8 @@ const FluidChartContent: React.FC<FluidChartContentProps> = ({
     const { incrementIndex, incrementedDate } = incrementDate(
       increment,
       selectedDate,
-      timeStep
+      timeStep,
+      lastDataDate
     )
     setSelectedDate(incrementedDate)
     if (incrementIndex != 0) {
@@ -162,7 +163,7 @@ const FluidChartContent: React.FC<FluidChartContentProps> = ({
           consumptionDataManager={consumptionDataManager}
         />
       )}
-      {!multiFluid ? (
+      {!multiFluid && timeStep !== TimeStep.YEAR ? (
         <div className="fv-footer" onClick={handleChangeSwitch}>
           <div className="fv-footer-compare text-15-normal">
             <Switch fluidTypes={fluidTypes} checked={showCompare} />
@@ -177,7 +178,7 @@ const FluidChartContent: React.FC<FluidChartContentProps> = ({
             </span>
           </div>
         </div>
-      ) : challengePeriod ? (
+      ) : challengePeriod && multiFluid ? (
         <div className="fv-footer">
           <div className="fv-footer-challenge text-15-normal">
             <NavLink
diff --git a/src/components/ContentComponents/Konnector/KonnectorLoginForm.tsx b/src/components/ContentComponents/Konnector/KonnectorLoginForm.tsx
index 2ab8b06a1a959013d564ba866afcf63bf1ed8bdb..04a3fb88e64109e56d0228bb39aa3000f3809006 100644
--- a/src/components/ContentComponents/Konnector/KonnectorLoginForm.tsx
+++ b/src/components/ContentComponents/Konnector/KonnectorLoginForm.tsx
@@ -148,7 +148,9 @@ const KonnectorLoginForm: React.FC<KonnectorLoginFormProps> = ({
               : 'form-control form-input --error'
           }
           aria-describedby="emailHelp"
-          placeholder="Adresse e-mail"
+          placeholder={t(
+            'auth.' + fluidConfig.konnectorConfig.slug + '.connect.placeholder'
+          )}
           name="login"
           onChange={(e: React.ChangeEvent<HTMLInputElement>) =>
             changeLogin(e.target.value)
@@ -226,6 +228,7 @@ const KonnectorLoginForm: React.FC<KonnectorLoginFormProps> = ({
         </div>
         <StyledButton
           type="button"
+          className="create-account"
           color="secondary"
           disabled={loading}
           onClick={() => window.open(siteLink, '_blank')}
diff --git a/src/components/ContentComponents/Konnector/KonnectorOAuthForm.tsx b/src/components/ContentComponents/Konnector/KonnectorOAuthForm.tsx
index 589d9c58b5eda0cc06ee470ca504ce2e573c5b20..2716f218e4dfb0540e45f8f2ac99ce310c7699ce 100644
--- a/src/components/ContentComponents/Konnector/KonnectorOAuthForm.tsx
+++ b/src/components/ContentComponents/Konnector/KonnectorOAuthForm.tsx
@@ -54,6 +54,7 @@ const KonnectorOAuthForm: React.FC<KonnectorOAuthFormProps> = ({
         <StyledButton
           type="button"
           color="secondary"
+          className="create-account"
           disabled={loading}
           onClick={() => window.open(siteLink, '_blank')}
         >
diff --git a/src/components/ContentComponents/Konnector/KonnectorResult.tsx b/src/components/ContentComponents/Konnector/KonnectorResult.tsx
index c0b54a0a55371b89b2168b1ddac1bd80fc1f90c3..b9f30f6410cfd8889e667c0e9f047c72fa438428 100644
--- a/src/components/ContentComponents/Konnector/KonnectorResult.tsx
+++ b/src/components/ContentComponents/Konnector/KonnectorResult.tsx
@@ -125,6 +125,16 @@ const KonnectorResult: React.FC<KonnectorResultProps> = ({
       </div>
       <div className="inline-buttons">
         <StyledButton
+          className="konnector-delete"
+          type="button"
+          color="secondary"
+          onClick={deleteAccount}
+          disabled={updating}
+        >
+          {t('KONNECTORCONFIG.BTN_DELETE')}
+        </StyledButton>
+        <StyledButton
+          className="konnector-update"
           type="button"
           color="primary"
           onClick={updateKonnector}
@@ -136,14 +146,6 @@ const KonnectorResult: React.FC<KonnectorResultProps> = ({
             <div>{t('KONNECTORCONFIG.BTN_UPDATE')}</div>
           )}
         </StyledButton>
-        <StyledButton
-          type="button"
-          color="secondary"
-          onClick={deleteAccount}
-          disabled={updating}
-        >
-          {t('KONNECTORCONFIG.BTN_DELETE')}
-        </StyledButton>
       </div>
     </div>
   )
diff --git a/src/components/ContentComponents/KonnectorViewer/KonnectorViewerCard.tsx b/src/components/ContentComponents/KonnectorViewer/KonnectorViewerCard.tsx
index 6c4a545d52485084c52bb53b9afc39e0f17adc79..03f2aac567c14987407914fceef4f21a5195d0a3 100644
--- a/src/components/ContentComponents/KonnectorViewer/KonnectorViewerCard.tsx
+++ b/src/components/ContentComponents/KonnectorViewer/KonnectorViewerCard.tsx
@@ -141,7 +141,11 @@ const KonnectorViewerCard: React.FC<KonnectorViewerCardProps> = ({
   return (
     <>
       {isLoading ? null : (
-        <div className={`accordion ${setActive}`}>
+        <div
+          className={`accordion ${
+            jobState === JobState.Errored ? '--errored' : ''
+          } ${setActive}`}
+        >
           <div>
             <div
               className={`accordion-header ${setActive}`}
diff --git a/src/components/Contexts/AppContextProvider.tsx b/src/components/Contexts/AppContextProvider.tsx
index 1a2e767f26ae75af792c4ef0045562b854d2ebca..0e3f7f2206e44bea3cc1b6a18f843eb309a948e8 100644
--- a/src/components/Contexts/AppContextProvider.tsx
+++ b/src/components/Contexts/AppContextProvider.tsx
@@ -6,6 +6,7 @@ import { ScreenType } from 'enum/screen.enum'
 import InitDataManager from 'services/initDataManagerService'
 import UserProfileDataManager from 'services/userProfileDataManagerService'
 import { UserChallenge, UserProfile } from 'services/dataChallengeContracts'
+import { TimeStep } from 'services/dataConsumptionContracts'
 
 interface AppContextProps {
   isIndexesLoading: boolean
@@ -24,6 +25,8 @@ interface AppContextProps {
   isContextLoaded: boolean
   isError: boolean
   screenType: ScreenType
+  previousTimeStep: TimeStep
+  setPreviousTimeStep: Function
   userProfile: UserProfile | null
   setWelcomeModalViewed: Function
 }
@@ -45,7 +48,9 @@ export const AppContext = React.createContext<AppContextProps>({
   isContextLoaded: false,
   isError: false,
   screenType: ScreenType.MOBILE,
+  previousTimeStep: TimeStep.DAY,
   userProfile: null,
+  setPreviousTimeStep: () => null,
   setWelcomeModalViewed: () => null,
 })
 
@@ -94,6 +99,9 @@ const AppContextProvider: React.FC<AppContextProviderProps> = ({
   const [isContextLoaded, setContextLoaded] = useState<boolean>(false)
   const [isError, setError] = useState<boolean>(false)
   const [screenType, setScreenType] = useState<ScreenType>(ScreenType.MOBILE)
+  const [previousTimeStep, setPreviousTimeStep] = useState<TimeStep>(
+    TimeStep.DAY
+  )
 
   const [isUserProfileLoadingSuccess, setUserProfileLoadingSuccess] = useState<
     boolean | null
@@ -306,6 +314,8 @@ const AppContextProvider: React.FC<AppContextProviderProps> = ({
         isError,
         screenType,
         userProfile,
+        previousTimeStep,
+        setPreviousTimeStep,
         setWelcomeModalViewed,
       }}
     >
diff --git a/src/db/FAQ.json b/src/db/FAQ.json
index a196167db47d327d8934a551064cb083f14bf7e4..f9f9b427e6f42baadb73a5c795a98f300bae2342 100644
--- a/src/db/FAQ.json
+++ b/src/db/FAQ.json
@@ -11,22 +11,23 @@
       " ",
       "Ecolyo est un projet en expérimentation ce qui veut dire :",
       " - Le périmètre d'utilisateurs est aujourd'hui limité",
-      " - Nous travaillons constamment à faire évoluer le service et ces fonctionnalités afin de vous proposer un outil qui vous accompagne à maitriser votre consommation énergétique",
+      " - Nous travaillons constamment à faire évoluer le service et ses fonctionnalités afin de vous proposer un outil qui vous accompagne à maitriser votre consommation énergétique",
       " ",
-      "Nous vous invitons aussi à nous faire vos retours, commentaires et conseils pour améliorer le service. <u>Vous pouvez nous contacter par ici.</u>",
+      "Nous vous invitons aussi à nous faire vos retours, commentaires et conseils pour améliorer le service.",
+      "<mailto>Vous pouvez nous contacter par ici.</mailto>",
       " ",
       "Le service sera industrialisé et ouvert grand public fin 2021."
     ]
   },
   {
-    "summary": "Les défis sur Ecolyo : a quoi servent-ils ?",
+    "summary": "Les défis sur Ecolyo : à quoi servent-ils ?",
     "details": [
       "Ecolyo propose aussi de réaliser des défis individuels et collectifs pour réduire efficacement ses consommations d’énergie à votre domicile.",
       " ",
       "À chaque défi réussi, sur une période d’une semaine à un mois, vous obtenez des récompenses.",
       "Pour vous aider à réaliser ces défis, des conseils et des informations vous sont donnés sous la forme d’écogestes, du plus simple (par exemple, éteindre les lumières des pièces inoccupées) aux plus compliqués (par exemple, vidanger et détartrer son cumulus).",
       " ",
-      "À chaque écogeste est associé un gain de consommation, c’est-à-dire un degré d’importance de économies réalisées.",
+      "À chaque écogeste est associé un gain des consommations, c’est-à-dire un degré d’importance de économies réalisées.",
       "Ce gain est quantifié en négaWatt heure (nWh), c’est-à-dire une quantité d’énergie économisée.",
       "Ce gain n’a pas de valeur scientifique précise mais il permet de comparer simplement les écogestes entre eux par leur niveau d’importance. Ces données sont issues du guide des 100 écogestes, guide édité pour le défi \" Déclic énergie \".",
       " ",
@@ -34,7 +35,7 @@
     ]
   },
   {
-    "summary": "Pourquoi une différence entre vos factures et les coûts affichés par Ecolyo",
+    "summary": "Pourquoi une différence entre mes factures et les coûts affichés par Ecolyo ?",
     "details": [
       "Votre facture prend en compte deux composantes : l’abonnement et la consommation facturés sur la base du tarif de votre fournisseur, tarif que l’application n’intègrera que lors d’une prochaine version grand public.",
       " ",
@@ -83,10 +84,10 @@
     ]
   },
   {
-    "summary": "Comment sont transmises vos informations de consommation et où sont-elles stockées ?",
+    "summary": "Comment sont transmises mes informations de consommation et où sont-elles stockées ?",
     "details": [
       "Vos informations de consommations énergétiques sont transmises :",
-      "- par les 2 distributeurs d'énergies à qui vous donnez un consentement en vous connectant pour la première fois : Enedis pour l'électricité, GRFG pour le gaz",
+      "- par les 2 distributeurs d'énergies à qui vous donnez un consentement en vous connectant pour la première fois : Enedis pour l'électricité, GRDF pour le gaz",
       "- par le distributeur d'eau potable (Eau du Grand Lyon si vous êtes abonné).",
       " ",
       "Ces données sont stockées dans un cloud personnel, votre « domicile numérique » auquel vous seul avez accès.",
@@ -95,7 +96,7 @@
       " ",
       "La Métropole de Lyon et ses partenaires se soucient de la confidentialité de vos données. C’est pour cela que nous avons décidé de mettre à votre disposition cet espace personnel totalement gratuit pour accéder à Ecolyo et à d’autres services qui respectent votre vie privée.",
       " ",
-      "<u>En savoir + sur mon cloud personnel</u>"
+      "En savoir + sur mon cloud personnel : <a>https://blog.cozy.io/fr/definition-cloud-personnel/?pk_campaign=FAQ&pk_kwd=grandlyon </a>"
     ]
   },
   {
@@ -120,11 +121,11 @@
     ]
   },
   {
-    "summary": "La météo est-elle prise en compte dans les comparaison ?",
+    "summary": "La météo est-elle prise en compte dans les comparaisons ?",
     "details": [
       "Dans cette version \"prototype\", la météo n'est pas prise en compte : l'équipe d'Ecolyo est pleinement consciente du biais qu'implique une comparaison des consommations sans correction climatique.",
       " ",
-      "Ce choix a été fait pour que le prototype soit testé dans un délai raisonnable et pour que son développement n'intègre pas immédiatement des données suppélmentaires qui viendraient alourdir un modèle de calcul déjà complexe en raison de la collecte des données personnelles de chaque utilisateur.",
+      "Ce choix a été fait pour que le prototype soit testé dans un délai raisonnable et pour que son développement n'intègre pas immédiatement des données supplémentaires qui viendraient alourdir un modèle de calcul déjà complexe en raison de la collecte des données personnelles de chaque utilisateur.",
       " ",
       "La correction climatique sera donc intégrée dans la V1 qui devrait sortir au cours de l'automne 2020."
     ]
diff --git a/src/locales/en.json b/src/locales/en.json
index 55f0943ba98fb684047a00d17e12294d74a7c61c..0db3279e44b0dc4fb7e694b6cb10210a96ba6ba5 100644
--- a/src/locales/en.json
+++ b/src/locales/en.json
@@ -1,245 +1,3 @@
 {
-  "Nav": {
-    "home": "Accueil",
-    "consumption": "Conso",
-    "challenges": "Défis",
-    "eco_gestures": "Eco-gestes",
-    "ECOGESTURES": "Ecogestes",
-    "BADGES": "Badges",
-    "parameters": "Options",
-    "connectors": "connecteurs",
-    "graphs": "graphes"
-  },
-  "COMMON": {
-    "APP_TITLE": "Ecolyo",
-    "APP_CHALLENGE_TITLE": "Défis",
-    "APP_ECO_GESTURE_TITLE": "Eco-gestes",
-    "APP_PARAMETERS_TITLE": "Options",
-    "APP_HELLO": "Bonjour",
-    "APP_PRESENTATION": "Votre consommation d'énergie",
-    "CONSO_DETAILS": "détail des consommations",
-    "NODATA": "Pas de données",
-    "LASTDATA": "Dernières données",
-    "LASTVALIDDATA": "Dernières données valides",
-    "DATATOCOME": "à venir",
-    "CHALLENGE_CARD_LABEL": "Defi",
-    "CONSO_CARDS_LABEL": "Consommation",
-    "PERF_INDICATOR_LABEL": "Bilan",
-    "DAILY_FRENQUENCY": "quotidien",
-    "WEEKLY_FRENQUENCY": "hebdo",
-    "MONTHLY_FRENQUENCY": "mensuel",
-    "YEARLY_FRENQUENCY": "annuel",
-    "MINI_CARDS_LABEL": "AUTRES ENERGIES",
-    "APP_FAQ_TITLE": "FAQ",
-    "APP_NEW_CHALLENGE_TITLE": "Nouveau défi",
-    "APP_LOCKED_CHALLENGE_TITLE": "Défi à débloquer",
-    "APP_ONGOING_CHALLENGE_TITLE": "Défi en cours",
-    "APP_FINISHED_CHALLENGE_TITLE": "Défi terminé",
-    "WELCOME_MODAL_TITLE": "Félicitations",
-    "WELCOME_MODAL_PERSO": "Votre espace personnel a bien été créé.",
-    "WELCOME_MODAL_CONNECT": "Vous pouvez maintenant connecter vos compteurs d’énergie à Ecolyo en toute sécurité.",
-    "WELCOME_MODAL_OK": "Ok"
-  },
-  "LOADING": {
-    "INDEX": "Vérification des données",
-    "DATA": "Initialisation des données",
-    "FLUIDTYPES": "Récupération de votre configuration",
-    "CHALLENGE": "Mise à jour des challenges",
-    "ERROR_LOADING": "Erreur pendant le chargement des données. Veuillez vérifier votre connexion internet.",
-    "RELOAD": "Recharger"
-  },
-  "FLUID": {
-    "ELECTRICITY": {
-      "NAME": "Electricité",
-      "LABEL": "Électricité",
-      "UNIT": "kWh",
-      "RELEVANT_METRICS": [
-        { "BULB": "Vous avez consommé l'équivalent de 42 ampoules" },
-        {
-          "CONSOLE": "Une console de jeu fonctionnant 2 h par jour consomme 1,75 kWh en 1 semaine"
-        }
-      ]
-    },
-    "WATER": {
-      "NAME": "Eau",
-      "LABEL": "Eau",
-      "UNIT": "L"
-    },
-    "GAS": {
-      "NAME": "Gaz",
-      "LABEL": "Gaz",
-      "UNIT": "kWh"
-    },
-    "MULTIFLUID": {
-      "NAME": "Multi fluide",
-      "LABEL": "Multi fluide",
-      "UNIT": "€"
-    }
-  },
-  "TIMESTEP": {
-    "YEAR": {
-      "STEP": "Par an",
-      "COMPARELABEL": "Comparer à l'année précédente"
-    },
-    "MONTH": {
-      "STEP": "Par mois",
-      "COMPARELABEL": "Comparer au mois précédent"
-    },
-    "DAY": {
-      "STEP": "Par jour",
-      "COMPARELABEL": "Comparer à la semaine précédente"
-    },
-    "HOUR": {
-      "STEP": "Par heure",
-      "COMPARELABEL": "Comparer à la journée précédente"
-    },
-    "HALF_AN_HOUR": {
-      "STEP": "Par 1/2h",
-      "COMPARELABEL": "Comparer à la journée précédente"
-    }
-  },
-  "CONSUMPTION": {
-    "DISPLAY_DETAIL": "Voir le détail",
-    "DISPLAY_LAST_DATA": "Voir mes dernières consos"
-  },
-  "KONNECTORCONFIG": {
-    "TITLE_CONNECTION": "Connexion aux distributeurs",
-    "TITLE_KONNECTEURS": "connecteurs",
-    "LABEL_STATE": "Etat",
-    "LABEL_LOGIN": "login",
-    "LABEL_PASSWORD": "password",
-    "LABEL_UPDATEDAT": "dernière mise-à-jour le",
-    "LABEL_FREQUENCY": "fréquence",
-    "LABEL_FILLIN": "Renseignez vos identifiants",
-    "LABEL_CONNECTTO_ELECTRICITY": "Se connecter à l'électricité",
-    "LABEL_CONNECTTO_WATER": "Se connecter à l'eau",
-    "LABEL_CONNECTTO_GAS": "Se connecter au gaz",
-    "BTN_CONNECTION": "Je me connecte à mon compte",
-    "BTN_NOACCOUNT": "Créer mes identifiants",
-    "BTN_INSTALL": "Installer",
-    "BTN_CONFIGURE": "Configurer",
-    "BTN_UPDATE": "Mettre à jour",
-    "BTN_DELETE": "Supprimer",
-    "LOADING_DATA": "Vos premières données seront disponibles dans quelques minutes et les prochaines données seront chargées automatiquement.",
-    "PLZ_WAIT": "Veuillez patienter",
-    "NOT_INSTALLED": "Le connecteur n'est pas installé. Veuillez l'installer en cliquant sur le bouton ci-dessous.",
-    "ERROR_NO_LOGIN_PASSWORD": "Identifiant et mot de passe requis",
-    "ERROR_ACCOUNT_CREATION": "Une erreur est survenue, veuillez essayer de nouveau.",
-    "ERROR_LOGIN_FAILED": "Identifiants invalides",
-    "SUCCESS_TXT": "Félicitations !",
-    "SUCCESS_DATA_ELECTRICITY": "Vos données de consommation d'électricité sont maintenant conntectées à Ecolyo.",
-    "SUCCESS_DATA_WATER": "Vos données de consommation d'eau sont maintenant conntectées à Ecolyo.",
-    "SUCCESS_DATA_GAS": "Vos données de consommation de gaz sont maintenant conntectées à Ecolyo.",
-    "ERROR_TXT": "Aïe !",
-    "ERROR_DATA_ELECTRICITY": "Un problème a empêché vos données de consommation d'électricité de se connecter à Ecolyo.",
-    "ERROR_DATA_WATER": "Un problème a empêché vos données de consommation d'eau se connecter à Ecolyo.",
-    "ERROR_DATA_GAS": "Un problème a empêché vos données de consommation de gaz de se connecter à Ecolyo.",
-    "ERROR_DATA_2": "Merci de réessayer plus tard.",
-    "OK": "Ok"
-  },
-  "INDICATOR": {
-    "DISPLAY_OTHER_FLUID": "Voir",
-    "ERROR_NO_COMPARE": "comparaison impossible",
-    "ERROR_NO_COMPARE_REASON": "(manque de données)"
-  },
-  "FAQ": {
-    "TITLE_FAQ": "Foire aux questions",
-    "READ_FAQ": "Lire la FAQ"
-  },
-  "CHALLENGE": {
-    "TITLE_CHALLENGE": "Defi",
-    "NO_CHALLENGE": "Veuillez selectionner un defi",
-    "NO_CHALLENGE_DATA": "Pas de données trouvées pour le défi",
-    "NEW_CHALLENGE": "Nouveau Défi",
-    "ONGOING_CHALLENGE": "En cours",
-    "ENDINGDATE_UNDEFINED": "Date non connue",
-    "LOCKED": "Vous devez finir le défi précédent pour accéder à celui-ci",
-    "FULLY_LOCKED": "Ce défi sera disponible dans une prochaine mise à jour",
-    "START": "Allons-y !",
-    "NOT_NOW": "Pas maintenant !",
-    "STOP": "Arrêter le défi",
-    "BACK": "I'll be back",
-    "ECOGESTURE": "Voir l'écogeste",
-    "LINKED_ECOGESTURES": "Écogestes associés",
-    "VIEW_START": "Visualisation à partir du ",
-    "VIEW_RESULT": "Résultats le ",
-    "PERIOD": "Période de defi",
-    "OK": "Ok",
-    "WIN_TEXT": "Vous avez débloqué le badge",
-    "WIN_TEXT_ECOLYO": "En vous connectant à un distributeur, vous avez débloqué le badge Ecolyo Royal !",
-    "WIN_TEXT_ECOLYO_NEW_AVAILABLE": "Le défi “Coques en stock” est maintenant disponible !",
-    "CONGRATULATION": "Félicitations !",
-    "RESULT_POSITIF": "Vous avez économisé",
-    "RESULT_NEGATIF": "Vous avez dépassé de",
-    "RESULT_NOT_AVAILABLE": "Objectif à venir",
-    "DEFEAT": "Presque... ",
-    "DEFEAT_RESULT": "Vous avez dépassé",
-    "DEFEAT_RESULT2": "de ",
-    "CONSOLATION": "Vous êtes proches de votre objectif, gardez le cap avec ce badge ",
-    "CONSOLATION2": " en chocolat."
-  },
-  "ECOGESTURE": {
-    "TITLE_ECOGESTURE": "Ecogeste",
-    "NO_ECOGESTURE": "Pas d'ecogeste"
-  },
-  "NEGAWATT": {
-    "TITLE_NEGAWATT": "NégaWatt",
-    "QUESTION": "Que sont les nWh ? (néga Watt heure)",
-    "ANSWER": {
-      "BASE": "Le néga Watt heure (ou nWh) sert d'unité de mesure de vos économies d'énergie.",
-      "STRONG": "10 nWh : économie importante",
-      "MEDIUM": "3 nWh : économie moyenne",
-      "WEAK": "1 nWh : économie faible"
-    }
-  },
-  "auth": {
-    "enedis": {
-      "connect": {
-        "info" : "En cliquant sur ce bouton, vous accéderez à votre compte Enedis. Vous pourrez donner votre accord pour récupérer vos données de consommation électriques dans votre cloud personnel",
-        "label1": "J'accède à mon",
-        "label2": "espace client Enedis"
-      },
-      "no_account" : {
-        "title": "Pas de compte Enedis ?",
-        "text": "Vous pouvez le créer en vous munissant d'une facture d'élétricité."
-      },
-      "create_account":  "Je crée mon compte personnel Enedis"
-    },
-    "grdf" : {
-      "connect": {
-        "label1": "Je me connecte à",
-        "label2": "mon compte GRDF"
-      },
-      "no_account" : {
-        "title": "Pas de compte GRDF ?",
-        "text": "Vous pouvez le créer en vous munissant d'une facture de gaz."
-      },
-      "create_account":  "Je crée mon compte GRDF"
-    },
-    "egl" : {
-      "connect": {
-        "label1": "Je me connecte à",
-        "label2": "mon compte Eau du Grand Lyon"
-      },
-      "no_account" : {
-        "title": "Pas de compte Eau du Grand Lyon ?",
-        "text": "Vous pouvez le créer en vous munissant d'une facture d'eau."
-      },
-      "create_account":  "Je crée mon compte Eau du GL"
-    }
-  },
-  "oauth": {
-    "window": {
-      "title": "OAuth"
-    }
-  },
-  "timestep": {
-    "activate": {
-      "enedis": {
-        "info": "Pour visualiser vos consommations à la 1/2 heure, il vous faut valider l'activation de l'enregistrement de votre consommation horaire sur votre compte Enedis",
-        "label1": "Activer sur mon compte Enedis",
-        "activateLink": "https://mon-compte-client.enedis.fr/"
-      }
-    }
-  }
+
 }
diff --git a/src/locales/fr.json b/src/locales/fr.json
index 22acc19becc7c7207269ac4c7c2ef0fb1dc6162f..0359e37a5ab4da14e66e6f6c05c982786c11f736 100644
--- a/src/locales/fr.json
+++ b/src/locales/fr.json
@@ -1,4 +1,10 @@
 {
+  "locales": {
+    "fr": {
+      "short_description": "Ecolyo est le service proposé par la Métropole de Lyon pour suivre et comprendre la consommation énergétique globale de votre foyer.",
+      "long_description": "Ecolyo est le service proposé par la Métropole de Lyon pour suivre et comprendre la consommation énergétique globale de votre foyer afin de vous accompagner dans la gestion de votre consommation quotidienne de façon ludique en vous lançant des défis personnalisés."
+    }
+  },
   "Nav": {
     "home": "Accueil",
     "consumption": "Conso",
@@ -200,6 +206,7 @@
   "auth": {
     "enedisgrandlyon": {
       "connect": {
+        "placeholder": "Adresse mail",
         "info": "En cliquant sur ce bouton, vous accéderez à votre compte Enedis. Vous pourrez donner votre accord pour récupérer vos données de consommation électriques dans votre cloud personnel",
         "label1": "J'accède à mon",
         "label2": "espace client Enedis"
@@ -212,6 +219,7 @@
     },
     "grdfgrandlyon": {
       "connect": {
+        "placeholder": "Adresse email",
         "label1": "Je me connecte à",
         "label2": "mon compte GRDF"
       },
@@ -223,6 +231,7 @@
     },
     "eglgrandlyon": {
       "connect": {
+        "placeholder": "Identifiant",
         "label1": "Je me connecte à",
         "label2": "mon compte Eau du Grand Lyon"
       },
diff --git a/src/services/dateChartService.ts b/src/services/dateChartService.ts
index 0e42eaaa1b853db50b97cf3ae4a9616a93a888a2..6943921f181748529f1d19a67f2414d166ed669e 100644
--- a/src/services/dateChartService.ts
+++ b/src/services/dateChartService.ts
@@ -195,7 +195,8 @@ export function formatDetailedDate(
 export function incrementDate(
   increment: number,
   initialdate: DateTime,
-  timeStep: TimeStep
+  timeStep: TimeStep,
+  lastDataDate: DateTime
 ): { incrementIndex: number; incrementedDate: DateTime } {
   let incrementIndex = 0
   let incrementedDate: DateTime = initialdate
@@ -203,9 +204,21 @@ export function incrementDate(
     case TimeStep.YEAR:
       incrementedDate = initialdate.plus({ year: increment })
       incrementIndex =
-        (DateTime.local().year - incrementedDate.year) % 5 === 0
+        increment < 0 &&
+        lastDataDate.year >= incrementedDate.year &&
+        (lastDataDate.year - incrementedDate.year) % 5 === 0
+          ? 1
+          : increment > 0 &&
+            lastDataDate.year >= incrementedDate.year &&
+            (lastDataDate.year - incrementedDate.year) % 5 === 4
+          ? -1
+          : increment < 0 &&
+            lastDataDate.year <= incrementedDate.year &&
+            (incrementedDate.year - lastDataDate.year) % 5 === 0
           ? 1
-          : (DateTime.local().year - incrementedDate.year - 4) % 5 === 0
+          : increment > 0 &&
+            lastDataDate.year <= incrementedDate.year &&
+            (incrementedDate.year - lastDataDate.year) % 5 === 1
           ? -1
           : 0
       break
diff --git a/src/services/triggersService.ts b/src/services/triggersService.ts
index 1356ad79fe67302a8f15e22621535ce7c0bdbc5d..b132f34700c8f848efd3bd2705023ede1b171231 100644
--- a/src/services/triggersService.ts
+++ b/src/services/triggersService.ts
@@ -48,7 +48,7 @@ export class TriggerService {
     }
     const triggerAttributes: TriggerAttributes = {
       type: '@cron',
-      arguments: '0 47 0 * * *',
+      arguments: '0 0 4 * * *',
       worker: 'konnector',
       message: {
         account: this._account._id,
diff --git a/src/styles/base/_layout.scss b/src/styles/base/_layout.scss
index c7cc19fdf95b2df2683a60b4ef3612ea6d744663..3fe3b61098cecdcd293482d69418a144d4ac8726 100644
--- a/src/styles/base/_layout.scss
+++ b/src/styles/base/_layout.scss
@@ -80,6 +80,9 @@ body {
       padding: 2rem 1.25rem;
       color: $text-bright;
     }
+    .header-back-button {
+      padding: 0 0.75rem;
+    }
     @media #{$tablet} {
       margin: 0;
     }
diff --git a/src/styles/components/_barchart.scss b/src/styles/components/_barchart.scss
index ec868620933fdda66176076c47e21a01cd9ab0ec..117eb75d79a972f04dcb6764f831ae8a9a062d8c 100644
--- a/src/styles/components/_barchart.scss
+++ b/src/styles/components/_barchart.scss
@@ -11,11 +11,9 @@
   }
 }
 .background-true {
-  // display: inline;
-  opacity: 1;
+  opacity: 0.1;
 }
 .background-false {
-  // display: none;
   opacity: 0;
 }
 .bar-ELECTRICITY {
@@ -139,6 +137,27 @@
   }
 }
 
+.bounce-3 {
+  animation-name: bounce-3;
+  animation-timing-function: cubic-bezier(1, 1, 0.42, 1);
+  animation-iteration-count: 1;
+  transform-origin: bottom center;
+}
+@keyframes bounce-3 {
+  0% {
+    opacity: 0.6;
+    transform: scaleY(1);
+  }
+  50% {
+    transform: scaleY(1.1);
+    opacity: 0.8;
+  }
+  100% {
+    transform: scaleY(1);
+    opacity: 1;
+  }
+}
+
 /** Animatio ndelay **/
 .delay {
   animation-duration: 0.4s;
diff --git a/src/styles/components/_form.scss b/src/styles/components/_form.scss
index 837dd5323a6b8ea99d24e5233e08045ade837ccc..7a32dca36a751e7a0e245d14ff30290a5ecfb4ac 100644
--- a/src/styles/components/_form.scss
+++ b/src/styles/components/_form.scss
@@ -2,9 +2,9 @@
 @import '../base/breakpoint';
 
 .form {
-  padding: 1vh 1.5vw;
+  padding: 1rem;
   @media #{$large-phone} {
-    padding: 1vh 0;
+    padding: 1rem;
   }
   label {
     font-style: normal;
diff --git a/src/styles/components/_konnector.scss b/src/styles/components/_konnector.scss
index 1990158480a0d65f7d79fe5a744f7d253cb6a5a1..a8f955b3497ad48986d56d7bdcc1af0b4a4bdc93 100644
--- a/src/styles/components/_konnector.scss
+++ b/src/styles/components/_konnector.scss
@@ -1,11 +1,10 @@
 @import '../base/color';
 @import '../base/breakpoint';
-
 .accordion {
   display: flex;
   flex-direction: column;
   color: $text-color;
-  padding: 1rem 1rem;
+  padding: 1rem 0;
   margin-bottom: 2vh;
   border-radius: 4px;
   background: linear-gradient(180deg, #323339 0%, #25262b 100%);
@@ -20,6 +19,7 @@
     align-items: center;
     border: none;
     outline: none;
+    padding: 0 1rem;
     &:hover {
       cursor: pointer;
     }
@@ -86,12 +86,23 @@
   .inline-buttons {
     display: flex;
     flex-flow: row nowrap;
+    padding: 0 1rem;
+  }
+  .konnector-delete {
+    margin-right: 0.25rem;
+    color: $red-primary !important;
+  }
+  .konnector-update {
+    margin-left: 0.25rem;
   }
   .btn-position {
     width: 100%;
     margin: 0.5rem 1rem;
   }
 }
+.--errored {
+  border: solid 1px $red-primary;
+}
 
 .kv-root {
   display: flex;
@@ -130,8 +141,13 @@
 // KonnectorOAuthForm
 .koauthform {
   margin: 0 1.5rem;
+  padding: 0 1rem;
+  .create-account {
+    color: $text-bright;
+  }
   @media #{$large-phone} {
     margin: 0;
+    padding: 0 1rem;
   }
   .koauthform-text {
     color: $text-bright;
@@ -144,6 +160,9 @@
 
 // KonnectorLoginForm
 .kloginauthform {
+  .create-account {
+    color: $text-bright;
+  }
   .kloginauthform-text {
     color: $text-bright;
     padding-top: 1rem;
@@ -153,7 +172,6 @@
   }
 }
 
-
 // KonnectorLoading
 .klaunch-content {
   margin: 0.5rem 1.5rem;
diff --git a/src/styles/index.scss b/src/styles/index.scss
index 0545d607d34b96ae573444bcbd8e8eae554f9bfe..4b50efdb1f7c163cff57f377abf0d3838d142198 100644
--- a/src/styles/index.scss
+++ b/src/styles/index.scss
@@ -39,6 +39,7 @@
   --waterCompareColor: #{$water-compare-color};
   --multiColor: #{$multi-color};
   --multiCompareColor: #{$multi-compare-color};
+  --redPrimary: #{$red-primary};
   --greyBright: #{$grey-bright};
   --greyDark: #{$grey-dark};
   --textBlack: #{$text-black};
diff --git a/test/data/accountData.json b/test/data/accountData.json
new file mode 100644
index 0000000000000000000000000000000000000000..4ffc2d98337c82313cea9359b41e2fa3a5eb7f8f
--- /dev/null
+++ b/test/data/accountData.json
@@ -0,0 +1,38 @@
+{"io.cozy.accounts":
+  [
+    {
+      "account_type": "grdfgrandlyon",
+      "auth": {
+        "credentials_encrypted": "bmFjbI7TqHf7FTj8b6T8JyV7ORUSYjziwua6bnbh0P3CE/3dJ9G0w6GdtmhbuqxAgqiQS/uqrZw=",
+        "login": "test"
+      },
+      "identifier": "login",
+      "state": null
+    },
+    {
+      "account_type": "eglgrandlyon",
+      "auth": {
+        "credentials_encrypted": "bmFjbHI5OoL+VNCT6JDFYea1dNiBGGNJM1zY0M4uWcjhALJcQT9uk9p9WPD7+1OryCAoYf9eaSE=",
+        "login": "test"
+      },
+      "identifier": "login",
+      "state": null
+    },
+    {
+      "account_type": "enedisgrandlyon",
+      "name": "",
+      "oauth": {
+        "access_token": "",
+        "expires_at": "2020-06-16T04:17:03.285910671+02:00",
+        "refresh_token": "",
+        "token_type": "Bearer"
+      },
+      "oauth_callback_results": {
+        "issued_at": "1592232569642",
+        "refresh_token_issued_at": "1592232569642",
+        "scope": "/v4/metering_data/production_load_curve.GET /v3/customers/usage_points/addresses.GET /v4/metering_data/consumption_load_curve.GET /v3/customers/usage_points/contracts.GET /v4/metering_data/daily_production.GET /v4/metering_data/daily_consumption.GET /v4/metering_data/daily_consumption_max_power.GET /v3/customers/identity.GET",
+        "usage_points_id": ""
+      }
+    }
+  ]
+}
\ No newline at end of file
diff --git a/test/importAccount.bat b/test/importAccount.bat
new file mode 100644
index 0000000000000000000000000000000000000000..422527a01294153da2dd0ed71db8017bee897900
--- /dev/null
+++ b/test/importAccount.bat
@@ -0,0 +1,4 @@
+@echo off
+echo Please provide cozysessid (can be found after connection in browser dev tool)
+set /p token="CozySessid ? : "
+ACH -t %token% import ./data/accountData.json
diff --git a/yarn.lock b/yarn.lock
index 479201293f950c0e412fa2e246321cb6f8a2c9cc..da3d28a2ec52f2424ac7afda4e910d403e50ca90 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -4446,6 +4446,11 @@ destroy@~1.0.4:
   version "1.0.4"
   resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
 
+detect-browser@^5.1.1:
+  version "5.1.1"
+  resolved "https://registry.yarnpkg.com/detect-browser/-/detect-browser-5.1.1.tgz#a800db91d3fd60d0861669f5984f1be9ffbe009c"
+  integrity sha512-5n2aWI57qC3kZaK4j2zYsG6L1LrxgLptGCNhMQgdKhVn6cSdcq43pp6xHPfTHG3TYM6myF4tIPWiZtfdVDgb9w==
+
 detect-indent@6.0.0:
   version "6.0.0"
   resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.0.0.tgz#0abd0f549f69fc6659a254fe96786186b6f528fd"
@@ -6331,7 +6336,7 @@ html-tags@^1.0.0:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-1.2.0.tgz#c78de65b5663aa597989dd2b7ab49200d7e4db98"
 
-html-to-react@^1.3.4, html-to-react@^1.4.2:
+html-to-react@^1.3.4:
   version "1.4.2"
   resolved "https://registry.yarnpkg.com/html-to-react/-/html-to-react-1.4.2.tgz#7b628ab56cd63a52f2d0b79d0fa838a51f088a57"
   dependencies: