diff --git a/src/assets/img/partenaires-akoya.png b/src/assets/img/partenaires-akoya.png
new file mode 100644
index 0000000000000000000000000000000000000000..b1acc6ba1187b6558e17ac5f9fd6818e13213c56
Binary files /dev/null and b/src/assets/img/partenaires-akoya.png differ
diff --git a/src/assets/img/partenaires-cget.png b/src/assets/img/partenaires-cget.png
new file mode 100644
index 0000000000000000000000000000000000000000..aef09a53e4e507d842268b62d267ff1d7041f88f
Binary files /dev/null and b/src/assets/img/partenaires-cget.png differ
diff --git a/src/assets/img/partenaires-rectorat.png b/src/assets/img/partenaires-rectorat.png
new file mode 100644
index 0000000000000000000000000000000000000000..76e19028bf34853915960f3f5ab1eefda5eb7de3
Binary files /dev/null and b/src/assets/img/partenaires-rectorat.png differ
diff --git a/src/assets/img/partenaires-ridf.png b/src/assets/img/partenaires-ridf.png
new file mode 100644
index 0000000000000000000000000000000000000000..7992531cb414d7092f44d64fe18d94754e7a5780
Binary files /dev/null and b/src/assets/img/partenaires-ridf.png differ
diff --git a/src/assets/img/partenaires-safran.png b/src/assets/img/partenaires-safran.png
new file mode 100644
index 0000000000000000000000000000000000000000..02ef462977f1e8a70dff4aff4d22d7992c8375b3
Binary files /dev/null and b/src/assets/img/partenaires-safran.png differ
diff --git a/src/assets/img/partenaires-upsaclay.png b/src/assets/img/partenaires-upsaclay.png
new file mode 100644
index 0000000000000000000000000000000000000000..23b437655e6186b7a4d863549fcbe2b206ba4a59
Binary files /dev/null and b/src/assets/img/partenaires-upsaclay.png differ
diff --git a/src/assets/scss/mixins.scss b/src/assets/scss/mixins.scss
index 13381b124bd37cdedbbda113ed91826f1333f866..f3ce23b4f76bfdd13c10e901cb8e35aaf241664d 100644
--- a/src/assets/scss/mixins.scss
+++ b/src/assets/scss/mixins.scss
@@ -58,7 +58,7 @@
   z-index: 10 - $index;
   @extend %shadow;
   margin: 0;
-  padding: 42px $margin-page;
+  padding: $margin-page;
   color: $color;
 
   h2 {
diff --git a/src/assets/scss/variables.scss b/src/assets/scss/variables.scss
index 2b88fae04c57f32bf318fe6d5a4dd748d74fe3f9..21b5e0c5338d37e56280c567f27d41054a050c9f 100644
--- a/src/assets/scss/variables.scss
+++ b/src/assets/scss/variables.scss
@@ -1,4 +1,5 @@
 /* Colors */
+$color-darkest-blue: rgb(32, 26, 78);
 $color-dark-blue: rgb(46, 37, 128);
 $color-purple: rgb(99, 92, 161);
 $color-purple-light: rgb(151, 146, 192);
diff --git a/src/components/Button.vue b/src/components/Button.vue
new file mode 100644
index 0000000000000000000000000000000000000000..673c1f18a4045b0e0b1305671add2884a2112b60
--- /dev/null
+++ b/src/components/Button.vue
@@ -0,0 +1,67 @@
+<template>
+  <div class="btn">
+    <a :href="href" :style="style" @mouseover="mouseOver()" @mouseout="mouseOver()">{{ title }}</a>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "Button",
+  props: {
+    title: {
+      type: String,
+      required: true
+    },
+    color: {
+      type: String,
+      default: "white"
+    },
+    hoverColor: {
+      type: String,
+      default: "black"
+    },
+    href: {
+      type: String,
+      required: true
+    }
+  },
+  computed: {
+    style () {
+      let bg = this.hovering ? this.color : "none";
+      let color = this.hovering ? this.hoverColor : this.color;
+      return `
+        background: ${bg};
+        color: ${color};
+        border: 1px solid ${this.color};
+      `;
+    }
+  },
+  data () {
+    return {
+      hovering: false
+    }
+  },
+  methods: {
+    mouseOver () {
+      this.hovering = !this.hovering;
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.btn {
+  $padding: 8px;
+  box-sizing: content-box;
+  text-align: center;
+  margin: $padding 0;
+  a {
+    -webkit-appearance: none;
+    -webkit-border-radius: 0;
+    padding: $padding;
+    border-radius: 4px;
+    transition: background 0.2s, color 0.2s;
+    font-weight: bold;
+  }
+}
+</style>
diff --git a/src/components/CallsToAction.vue b/src/components/CallsToAction.vue
new file mode 100644
index 0000000000000000000000000000000000000000..9d5fa3e2310f0256decde869bb678d575991786d
--- /dev/null
+++ b/src/components/CallsToAction.vue
@@ -0,0 +1,97 @@
+<template>
+<div id="calls-to-action">
+  <div class="heading">
+    <h2>Ensemble, osons agir.</h2>
+  </div>
+  <div class="cta">
+    <div class="cta-text">
+      <p>
+        Ils nous soutiennent cette année encore : <strong>merci à nos partenaires pour leur engagement !</strong>
+      </p>
+      <p>
+        Vous aussi, engagez-vous à nos côtés en devenant <strong>partenaire d'Ouverture Sociale pour l'Égalité et la Réussite</strong>.
+      </p>
+      <Button title="Devenir partenaire" color="rgb(213, 250, 255)" hoverColor="rgb(46, 37, 128)"/>
+    </div>
+    <div class="cta-well white">
+      <img src="~assets/img/partenaires-akoya.png" alt="Akoya Consulting">
+      <img src="~assets/img/partenaires-safran.png" alt="Safran">
+    </div>
+  </div>
+  <div class="cta">
+    <div class="cta-text">
+      <p>
+        OSER fait partie de la Cordée Mutualisée de l'Université Paris Saclay, projet visant à favoriser l'accès à l'enseignement supérieur, dont les  lières d'excellence, de jeunes quel que soit leur milieu socioculturel. Notre action est ainsi en partie financée par des organismes régionaux et départementaux.
+      </p>
+      <p>
+        Vous aussi, <strong>soutenez notre action auprès des jeunes de la région parisienne</strong>.
+      </p>
+      <Button title="Faire un don" color="rgb(213, 250, 255)" hoverColor="rgb(46, 37, 128)"/>
+    </div>
+    <div class="cta-well">
+      <img src="~assets/img/partenaires-cget.png" alt="CGET">
+      <img src="~assets/img/partenaires-rectorat.png" alt="Rectorat">
+      <img src="~assets/img/partenaires-ridf.png" alt="RIDF">
+      <img src="~assets/img/partenaires-upsaclay.png" alt="UPSaclay">
+    </div>
+  </div>
+</div>
+</template>
+
+<script>
+import Button from "./Button"
+
+export default {
+  name: "CallsToAction",
+  components: {Button}
+}
+</script>
+
+<style lang="scss">
+@import 'src/assets/scss/variables', 'src/assets/scss/mixins', 'src/assets/scss/media-queries';
+
+#calls-to-action {
+  @include landing-section(4);
+  background-color: $color-dark-blue;
+  color: white;
+
+  .heading {
+    text-align: center;
+  }
+
+  h2 {
+    color: $color-light-blue;
+  }
+
+  .cta {
+    display: grid;
+    grid-template-areas: "text well";
+    grid-gap: 2em;
+    margin-bottom: 2em;
+    .btn {
+      margin-top: 2em;
+    }
+  }
+
+  .cta-text {
+    grid-area: "text";
+  }
+
+  .cta-well {
+    grid-area: "well";
+    width: 30em;
+    margin-bottom: auto;
+    text-align: center;
+    box-shadow: 0 3px 10px 3px rgba(0, 0, 0, 0.2) inset;
+    border-radius: 4px;
+    img {
+      vertical-align: middle;
+      max-width: 49%;
+      height: auto;
+    }
+    &.white {
+      background: white;
+    }
+  }
+}
+</style>
diff --git a/src/components/Footer.vue b/src/components/Footer.vue
new file mode 100644
index 0000000000000000000000000000000000000000..e46987eb6fa7d4596c95ee2a7c24108107c95eb1
--- /dev/null
+++ b/src/components/Footer.vue
@@ -0,0 +1,53 @@
+<template>
+  <div id="footer">
+    <div class="inline-text">
+      Newsletter : recevez toute notre actualité
+      <Button
+      title="M'inscrire"
+      color="rgb(151, 146, 192)"
+      hoverColor="rgb(32, 26, 78)"/>
+    </div>
+    <div class="inline-text">
+      Contact | Mentions légales &amp; crédits
+    </div>
+    <div class="inline-text">
+      <i class="social fa fa-2x fa-facebook"></i>
+      <i class="social fa fa-2x fa-twitter"></i>
+    </div>
+  </div>
+</template>
+
+<script>
+import Button from "./Button";
+
+export default {
+  name: "Footer",
+  components: {Button}
+}
+</script>
+
+<style lang="scss">
+@import 'src/assets/scss/variables', 'src/assets/scss/mixins', 'src/assets/scss/media-queries';
+
+#footer {
+  position: relative;
+  z-index: 30;
+  background: $color-darkest-blue;
+  padding: $margin-page 3*$margin-page;
+  color: $color-purple-light;
+  display: flex;
+  justify-content: space-between;
+}
+.inline-text {
+  .btn {
+    display: inline;
+    vertical-align: baseline;
+    margin-left: 1em;
+  }
+  .social {
+    margin: 0 0.5em;
+    color: $color-light-blue;
+  }
+}
+
+</style>
diff --git a/src/components/Home.vue b/src/components/Home.vue
index a8d99a33584e0eb860228ca787c46883ad8dc19e..0a75738a889bfaa894d0247179c5f98db9b24fe9 100644
--- a/src/components/Home.vue
+++ b/src/components/Home.vue
@@ -2,17 +2,20 @@
   <div>
     <Navbar/>
     <LandingPage/>
+    <Footer/>
   </div>
 </template>
 
 <script>
 import Navbar from './Navbar'
 import LandingPage from './LandingPage'
+import Footer from './Footer'
 
 export default {
   components: {
     Navbar,
-    LandingPage
+    LandingPage,
+    Footer
   }
 }
 </script>
diff --git a/src/components/LandingPage.vue b/src/components/LandingPage.vue
index 25dd996a38b4986a119651e49cf69c0adb5689e8..bfece3a686f223b86b33b73f28960fbb4ea23006 100644
--- a/src/components/LandingPage.vue
+++ b/src/components/LandingPage.vue
@@ -4,6 +4,7 @@
     <QuiSommesNous/>
     <Actions/>
     <News/>
+    <CallsToAction/>
   </div>
 </template>
 
@@ -11,13 +12,15 @@
 import QuiSommesNous from './QuiSommesNous'
 import Actions from './Actions'
 import News from './News'
+import CallsToAction from './CallsToAction'
 
 export default {
   name: 'LandingPage',
   components: {
     QuiSommesNous,
     Actions,
-    News
+    News,
+    CallsToAction
   }
 }
 </script>
diff --git a/src/components/News.vue b/src/components/News.vue
index 97036deaa31bbb113ea85e975f4bfefcee88bda7..e7696cdb9700b9c6098fbc15a164d3b2d2fb8f3c 100644
--- a/src/components/News.vue
+++ b/src/components/News.vue
@@ -60,7 +60,6 @@ export default {
     @include landing-section(3);
     .heading {
         text-align: center;
-        // margin-bottom: 3em;
     }
     .link-all {
         text-align: center;
diff --git a/src/components/NewsCard.vue b/src/components/NewsCard.vue
index 4394d2a83897be475a40a6b8ae2e8d860c0da2c5..d6aab4a5d80eb35c6a36987507c57cf4430a603a 100644
--- a/src/components/NewsCard.vue
+++ b/src/components/NewsCard.vue
@@ -68,8 +68,7 @@ export default {
         h5 {
             color: gray;
             font-weight: normal;
-            margin: 0;
-            padding: 0;
+            margin-top: .5em;
         }
         a {
             text-decoration: none;