diff --git a/src/components/Analysis/totalAnalysisChart.scss b/src/components/Analysis/totalAnalysisChart.scss
index 520b08898791bcdba250b4002237188bdf1450ce..348f80301afc486e3072d34f954603d51a093bb5 100644
--- a/src/components/Analysis/totalAnalysisChart.scss
+++ b/src/components/Analysis/totalAnalysisChart.scss
@@ -1,5 +1,6 @@
 @import '../../styles/base/color';
 @import '../../styles/base/breakpoint';
+@import '../../styles/base/z-index';
 
 .totalAnalysis-container {
   display: flex;
@@ -26,7 +27,7 @@
     position: absolute;
     border-radius: 50%;
     background: $dark-light-2;
-    z-index: 5;
+    z-index: $z-pieChart;
     padding: 1rem;
     display: flex;
     flex-direction: column;
diff --git a/src/components/Challenge/ChallengeView.tsx b/src/components/Challenge/ChallengeView.tsx
index ad5bfc1ee6c758c95f1673f8fc6bbbd7e492030a..973567aa27d99829bc479d0f5c96f65b25f95db9 100644
--- a/src/components/Challenge/ChallengeView.tsx
+++ b/src/components/Challenge/ChallengeView.tsx
@@ -135,12 +135,9 @@ const ChallengeView: React.FC = () => {
       <Header
         setHeaderHeight={defineHeaderHeight}
         desktopTitleKey={'common.title_challenge'}
+        isBuilding={true}
       ></Header>
       <Content height={headerHeight}>
-        <div className="building-banner">
-          <div className="title">{t('challenge.banner.title')}</div>
-          <div className="content">{t('challenge.banner.content')}</div>
-        </div>
         <div
           className="challengeSlider"
           onClick={resetValues}
@@ -151,6 +148,10 @@ const ChallengeView: React.FC = () => {
           onMouseMove={handleClickOrTouchMove}
           onMouseUp={handleClickOrTouchEnd}
         >
+          <div className="building-banner">
+            <div className="title">{t('challenge.banner.title')}</div>
+            <div className="content">{t('challenge.banner.content')}</div>
+          </div>
           <div
             className="container"
             style={{
diff --git a/src/components/Challenge/__snapshots__/ChallengeView.spec.tsx.snap b/src/components/Challenge/__snapshots__/ChallengeView.spec.tsx.snap
index 10e28a6a62a8e05a6dbf062b751c7e5035aaa225..bcc90ac093e8f250c8c5cd6dc483834e8ad85012 100644
--- a/src/components/Challenge/__snapshots__/ChallengeView.spec.tsx.snap
+++ b/src/components/Challenge/__snapshots__/ChallengeView.spec.tsx.snap
@@ -8,25 +8,12 @@ exports[`ChallengeView component should be rendered correctly 1`] = `
   />
   <Header
     desktopTitleKey="common.title_challenge"
+    isBuilding={true}
     setHeaderHeight={[Function]}
   />
   <Content
     height={0}
   >
-    <div
-      className="building-banner"
-    >
-      <div
-        className="title"
-      >
-        challenge.banner.title
-      </div>
-      <div
-        className="content"
-      >
-        challenge.banner.content
-      </div>
-    </div>
     <div
       className="challengeSlider"
       onClick={[Function]}
@@ -37,6 +24,20 @@ exports[`ChallengeView component should be rendered correctly 1`] = `
       onTouchMove={[Function]}
       onTouchStart={[Function]}
     >
+      <div
+        className="building-banner"
+      >
+        <div
+          className="title"
+        >
+          challenge.banner.title
+        </div>
+        <div
+          className="content"
+        >
+          challenge.banner.content
+        </div>
+      </div>
       <div
         className="container"
         style={
diff --git a/src/components/Challenge/challengeView.scss b/src/components/Challenge/challengeView.scss
index d49e515500a74b2cc9e3b425cdcd952170452c50..55fb3f25e166b550df3fde5585c9b1f80ed28635 100644
--- a/src/components/Challenge/challengeView.scss
+++ b/src/components/Challenge/challengeView.scss
@@ -1,6 +1,7 @@
 @import '../../styles/base/breakpoint';
 @import '../../styles/base/typo-variables';
 @import '../../styles/base/color';
+@import '../../styles/base/z-index';
 
 .challengeSlider {
   min-height: inherit;
@@ -12,7 +13,7 @@
   user-select: none;
   @media all and (min-width: $width-tablet) {
     margin: auto;
-    margin-top: 3rem;
+    // margin-top: 3rem; //TODO: uncomment when wip is removed from challenges
     padding: 5rem 2rem 2rem 2rem;
     min-height: 0;
   }
@@ -39,13 +40,11 @@
   padding: 0.5rem 1rem;
   text-align: center;
   height: 75px;
-  margin: 1rem;
-  z-index: 10000;
-  top: 0;
+  margin: 0 1rem;
+  z-index: calc(#{$z-header} - 1);
   border-radius: 6px;
-  @media all and (min-width: $width-tablet) {
-    top: 4rem;
-  }
+  top: 14px;
+  left: 0;
   .title {
     font-weight: 700;
     margin-bottom: 0.1rem;
diff --git a/src/components/Ecogesture/ecogestureList.scss b/src/components/Ecogesture/ecogestureList.scss
index 64944bf567292a7c9ce996e2cf11215651ca9a49..3d857bdcb5f9aecde4d6b0acc4f97264bcdd7980 100644
--- a/src/components/Ecogesture/ecogestureList.scss
+++ b/src/components/Ecogesture/ecogestureList.scss
@@ -1,6 +1,7 @@
 @import 'src/styles/base/breakpoint';
 @import 'src/styles/base/color';
 @import 'src/styles/base/typo-variables';
+@import 'src/styles/base/z-index';
 
 // EcogestureCardContainer
 .ecogesture-root {
@@ -147,7 +148,7 @@ div.filter-menu {
   box-sizing: border-box;
   box-shadow: 0px 4px 16px rgba(0, 0, 0, 0.55);
   border-radius: 4px;
-  z-index: 3;
+  z-index: $z-filterMenu;
   width: 220px;
   padding: 0.5rem 0rem;
   font-size: 0.875rem;
diff --git a/src/components/Header/Header.tsx b/src/components/Header/Header.tsx
index ba1deeb969e1e7a2fbfaf82cc3663a939392399c..b8ea60d70de0d180bd59ed48e142b0eab31967d2 100644
--- a/src/components/Header/Header.tsx
+++ b/src/components/Header/Header.tsx
@@ -1,124 +1,139 @@
-import React, { useCallback, useEffect, useRef } from 'react'
-import './header.scss'
-import { useI18n } from 'cozy-ui/transpiled/react/I18n'
-import { useSelector, useDispatch } from 'react-redux'
-import { AppStore } from 'store'
-import { updateModalIsFeedbacksOpen } from 'store/modal/modal.actions'
-import { useHistory } from 'react-router-dom'
-
-import { ScreenType } from 'enum/screen.enum'
-
-import IconButton from '@material-ui/core/IconButton'
-import Icon from 'cozy-ui/transpiled/react/Icon'
-import BackArrowIcon from 'assets/icons/ico/back-arrow.svg'
-import FeedbacksIcon from 'assets/icons/ico/feedbacks.svg'
-
-interface HeaderProps {
-  textKey?: string
-  desktopTitleKey?: string
-  displayBackArrow?: boolean
-  children?: React.ReactNode
-  setHeaderHeight(height: number): void
-}
-
-const Header: React.FC<HeaderProps> = ({
-  textKey,
-  desktopTitleKey,
-  displayBackArrow,
-  children,
-  setHeaderHeight,
-}: HeaderProps) => {
-  const { t } = useI18n()
-  const history = useHistory()
-  const header = useRef(null)
-  const dispatch = useDispatch()
-  const { screenType } = useSelector((state: AppStore) => state.ecolyo.global)
-
-  const cozyBarHeight = 48
-  const headerBottomHeight = 8
-
-  const handleClickBack = useCallback(() => {
-    history.goBack()
-  }, [history])
-
-  const handleClickFeedbacks = () => {
-    dispatch(updateModalIsFeedbacksOpen(true))
-  }
-
-  useEffect(() => {
-    if (screenType === ScreenType.MOBILE) {
-      setHeaderHeight(
-        header.current
-          ? header.current.clientHeight - cozyBarHeight - headerBottomHeight
-          : 0
-      )
-    } else {
-      setHeaderHeight(
-        header.current ? header.current.clientHeight - headerBottomHeight : 0
-      )
-    }
-  }, [screenType, children, setHeaderHeight])
-
-  return (
-    <div className="header" ref={header}>
-      <div className="header-top">
-        <div className="header-content">
-          <div
-            className={
-              !textKey && !desktopTitleKey
-                ? 'header-content-top header-content-top-right'
-                : 'header-content-top'
-            }
-          >
-            {textKey && (
-              <div
-                className={`header-text ${
-                  screenType === ScreenType.MOBILE
-                    ? 'text-14-normal-uppercase'
-                    : 'text-22-bold'
-                }`}
-              >
-                {t(textKey)}
-              </div>
-            )}
-            {desktopTitleKey && (
-              <div
-                className={`header-text-desktop ${
-                  screenType === ScreenType.MOBILE
-                    ? 'text-14-normal-uppercase'
-                    : 'text-22-bold'
-                }`}
-              >
-                {displayBackArrow && (
-                  <IconButton
-                    aria-label={t('header.accessibility.button_back')}
-                    className="header-back-button"
-                    onClick={handleClickBack}
-                  >
-                    <Icon icon={BackArrowIcon} size={16} />
-                  </IconButton>
-                )}
-                {t(desktopTitleKey)}
-              </div>
-            )}
-            <IconButton
-              aria-label={t('header.accessibility.button_open_feedbacks')}
-              className={
-                !textKey && !desktopTitleKey
-                  ? 'header-feedbacks-button right'
-                  : 'header-feedbacks-button'
-              }
-              onClick={handleClickFeedbacks}
-            >
-              <Icon icon={FeedbacksIcon} size={40} />
-            </IconButton>
-          </div>
-          {children}
-        </div>
-      </div>
-      <div className="header-bar"></div>
-    </div>
-  )
-}
-
-export default Header
+import React, { useCallback, useEffect, useRef } from 'react'
+import './header.scss'
+import { useI18n } from 'cozy-ui/transpiled/react/I18n'
+import { useSelector, useDispatch } from 'react-redux'
+import { AppStore } from 'store'
+import { updateModalIsFeedbacksOpen } from 'store/modal/modal.actions'
+import { useHistory } from 'react-router-dom'
+
+import { ScreenType } from 'enum/screen.enum'
+
+import IconButton from '@material-ui/core/IconButton'
+import Icon from 'cozy-ui/transpiled/react/Icon'
+import BackArrowIcon from 'assets/icons/ico/back-arrow.svg'
+import FeedbacksIcon from 'assets/icons/ico/feedbacks.svg'
+import HammerLeft from 'assets/icons/ico/hammer-left.svg'
+import HammerRight from 'assets/icons/ico/hammer-right.svg'
+
+interface HeaderProps {
+  textKey?: string
+  desktopTitleKey?: string
+  displayBackArrow?: boolean
+  children?: React.ReactNode
+  setHeaderHeight(height: number): void
+  isBuilding?: boolean
+}
+
+const Header: React.FC<HeaderProps> = ({
+  textKey,
+  desktopTitleKey,
+  displayBackArrow,
+  children,
+  setHeaderHeight,
+  isBuilding,
+}: HeaderProps) => {
+  const { t } = useI18n()
+  const history = useHistory()
+  const header = useRef(null)
+  const dispatch = useDispatch()
+  const { screenType } = useSelector((state: AppStore) => state.ecolyo.global)
+
+  const cozyBarHeight = 48
+  const headerBottomHeight = 8
+
+  const handleClickBack = useCallback(() => {
+    history.goBack()
+  }, [history])
+
+  const handleClickFeedbacks = () => {
+    dispatch(updateModalIsFeedbacksOpen(true))
+  }
+
+  useEffect(() => {
+    if (screenType === ScreenType.MOBILE) {
+      setHeaderHeight(
+        header.current
+          ? header.current.clientHeight - cozyBarHeight - headerBottomHeight
+          : 0
+      )
+    } else {
+      setHeaderHeight(
+        header.current ? header.current.clientHeight - headerBottomHeight : 0
+      )
+    }
+  }, [screenType, children, setHeaderHeight])
+
+  return (
+    <div className="header" ref={header}>
+      <div className="header-top">
+        <div className="header-content">
+          <div
+            className={
+              !textKey && !desktopTitleKey
+                ? 'header-content-top header-content-top-right'
+                : 'header-content-top'
+            }
+          >
+            {textKey && (
+              <div
+                className={`header-text ${
+                  screenType === ScreenType.MOBILE
+                    ? 'text-14-normal-uppercase'
+                    : 'text-22-bold'
+                }`}
+              >
+                {t(textKey)}
+              </div>
+            )}
+            {desktopTitleKey && (
+              <div
+                className={`header-text-desktop ${
+                  screenType === ScreenType.MOBILE
+                    ? 'text-14-normal-uppercase'
+                    : 'text-22-bold'
+                }`}
+              >
+                {displayBackArrow && (
+                  <IconButton
+                    aria-label={t('header.accessibility.button_back')}
+                    className="header-back-button"
+                    onClick={handleClickBack}
+                  >
+                    <Icon icon={BackArrowIcon} size={16} />
+                  </IconButton>
+                )}
+                {/* {t(desktopTitleKey)} */}
+                {isBuilding ? (
+                  <>
+                    <div className="building-title">
+                      <Icon icon={HammerLeft} size={17} />
+                      <span className="isBuilding">{t(desktopTitleKey)}</span>
+                      <Icon icon={HammerRight} size={17} />
+                    </div>
+                  </>
+                ) : (
+                  <span>{t(desktopTitleKey)}</span>
+                )}
+              </div>
+            )}
+            <IconButton
+              aria-label={t('header.accessibility.button_open_feedbacks')}
+              className={
+                !textKey && !desktopTitleKey
+                  ? 'header-feedbacks-button right'
+                  : 'header-feedbacks-button'
+              }
+              onClick={handleClickFeedbacks}
+            >
+              <Icon icon={FeedbacksIcon} size={40} />
+            </IconButton>
+          </div>
+          {children}
+        </div>
+      </div>
+      <div className="header-bar"></div>
+    </div>
+  )
+}
+
+export default Header
diff --git a/src/components/Header/header.scss b/src/components/Header/header.scss
index 35ef9122812653b396cdcc5eec1ec7df64932472..325ab08bd8fd1171b56dc7dc20bbfb2fef5bb917 100644
--- a/src/components/Header/header.scss
+++ b/src/components/Header/header.scss
@@ -1,72 +1,77 @@
-@import 'src/styles/base/breakpoint';
-@import 'src/styles/base/color';
-
-.header {
-  display: flex;
-  align-items: center;
-  flex-direction: column;
-  overflow: hidden;
-  width: 100%;
-  z-index: 18;
-  position: fixed;
-  top: 48px;
-  left: 0;
-  @media #{$large-phone} {
-    top: 0;
-  }
-  .header-top {
-    background: radial-gradient(
-      74.83% 76.97% at 50% 13.64%,
-      #343641 0%,
-      #1b1c22 100%
-    );
-    width: 100%;
-    .header-text {
-      padding: 0 1rem 1rem 1rem;
-      color: $grey-bright;
-    }
-  }
-  .header-content {
-    margin: 0 0 0 220px;
-    display: flex;
-    flex-direction: column;
-    @media #{$tablet} {
-      margin: 0;
-    }
-    @media #{$large-phone} {
-      margin: 60px 0 0 0;
-    }
-    .header-content-top {
-      display: flex;
-      flex-direction: row;
-      &.header-content-top-right {
-        justify-content: flex-end;
-      }
-      .header-text {
-        padding: 2rem 1rem;
-        flex: 1;
-      }
-      .header-text-desktop {
-        display: flex;
-        flex: 1;
-        padding: 2rem 1.25rem;
-        color: $grey-bright;
-      }
-      .header-back-button {
-        padding: 0 0.75rem;
-      }
-      @media #{$large-phone} {
-        .header-text {
-          padding: 0 1rem 1rem 1rem;
-          color: $grey-bright;
-        }
-        .header-text-desktop {
-          display: none;
-        }
-        .header-feedbacks-button {
-          display: none;
-        }
-      }
-    }
-  }
-}
+@import 'src/styles/base/breakpoint';
+@import 'src/styles/base/color';
+@import 'src/styles/base/z-index';
+
+.header {
+  display: flex;
+  align-items: center;
+  flex-direction: column;
+  overflow: hidden;
+  width: 100%;
+  z-index: $z-header;
+  position: fixed;
+  top: 48px;
+  left: 0;
+  @media #{$large-phone} {
+    top: 0;
+  }
+  .header-top {
+    background: radial-gradient(
+      74.83% 76.97% at 50% 13.64%,
+      #343641 0%,
+      #1b1c22 100%
+    );
+    width: 100%;
+    .header-text {
+      padding: 0 1rem 1rem 1rem;
+      color: $grey-bright;
+    }
+  }
+  .header-content {
+    margin: 0 0 0 220px;
+    display: flex;
+    flex-direction: column;
+    @media #{$tablet} {
+      margin: 0;
+    }
+    @media #{$large-phone} {
+      margin: 60px 0 0 0;
+    }
+    .header-content-top {
+      display: flex;
+      flex-direction: row;
+      &.header-content-top-right {
+        justify-content: flex-end;
+      }
+      .header-text {
+        padding: 2rem 1rem;
+        flex: 1;
+      }
+      .header-text-desktop {
+        display: flex;
+        flex: 1;
+        padding: 2rem 1.25rem;
+        color: $grey-bright;
+      }
+      .header-back-button {
+        padding: 0 0.75rem;
+      }
+      @media #{$large-phone} {
+        .header-text {
+          padding: 0 1rem 1rem 1rem;
+          color: $grey-bright;
+        }
+        .header-text-desktop {
+          display: none;
+        }
+        .header-feedbacks-button {
+          display: none;
+        }
+      }
+    }
+  }
+}
+
+.building-title {
+  text-align: center;
+}
diff --git a/src/components/Navbar/navBar.scss b/src/components/Navbar/navBar.scss
index a252b6b325af4e88335531c12ae1ecc223ed45b9..d9b924b35db71101867b68dbe59387a300f817b6 100644
--- a/src/components/Navbar/navBar.scss
+++ b/src/components/Navbar/navBar.scss
@@ -1,5 +1,6 @@
 @import 'src/styles/base/color';
 @import 'src/styles/base/breakpoint';
+@import 'src/styles/base/z-index';
 
 .o-sidebar {
   background-color: $dark-light;
@@ -8,7 +9,7 @@
   border-top: unset;
   border-right: unset;
   position: relative;
-  z-index: 19;
+  z-index: calc(#{$z-header} + 1);
 }
 .logos-container {
   position: absolute;
diff --git a/src/components/Splash/splashRoot.scss b/src/components/Splash/splashRoot.scss
index 11f02d688547e70bd3f40719993fcabd7356472b..2ecb1128187bac7bd228bf2baaf358e17b56a404 100644
--- a/src/components/Splash/splashRoot.scss
+++ b/src/components/Splash/splashRoot.scss
@@ -1,9 +1,10 @@
 @import 'src/styles/base/color';
 @import 'src/styles/base/breakpoint';
+@import 'src/styles/base/z-index';
 
 .splash-root {
   position: fixed;
-  z-index: 1500;
+  z-index: $z-splash;
   left: 0;
   top: 0;
   height: 100vh;
diff --git a/src/styles/base/_layout.scss b/src/styles/base/_layout.scss
index 5210a2da96856e9b50517dc5741819354bbe29df..f0f737c9184f4eaed17de52e74406e069bba8ee6 100644
--- a/src/styles/base/_layout.scss
+++ b/src/styles/base/_layout.scss
@@ -1,5 +1,6 @@
 @import 'color';
 @import '../base/breakpoint';
+@import '../base/z-index';
 
 html {
   background: $dark-2;
@@ -52,7 +53,7 @@ body {
   flex-direction: column;
   overflow: hidden;
   width: 100%;
-  z-index: 18;
+  z-index: $z-header;
   position: fixed;
   top: 48px;
   left: 0;
diff --git a/src/styles/base/_z-index.scss b/src/styles/base/_z-index.scss
new file mode 100644
index 0000000000000000000000000000000000000000..17a5dea8e7482596a2e437d272f293d7242f99c8
--- /dev/null
+++ b/src/styles/base/_z-index.scss
@@ -0,0 +1,5 @@
+$z-filterMenu: 3;
+$z-pieChart: 5;
+$z-dialog: 10;
+$z-header: 18;
+$z-splash: 1500;
diff --git a/src/styles/components/_dialog.scss b/src/styles/components/_dialog.scss
index fd224c27ae7739cd2c077407db263d1052c02883..46650413df5aae5d31bad6a80dfb57df8bd3b6d1 100644
--- a/src/styles/components/_dialog.scss
+++ b/src/styles/components/_dialog.scss
@@ -1,4 +1,5 @@
 @import '../base/color';
+@import '../base/z-index';
 
 div.modal-root {
   .MuiBackdrop-root {
@@ -42,7 +43,7 @@ div.modal-paper {
     top: 0.5rem;
     right: 0.5rem;
     padding: 5px 5px;
-    z-index: 10;
+    z-index: $z-dialog;
   }
 }