diff --git a/assets/js/theme/blocks/draggableBlocks.js b/assets/js/theme/blocks/draggableBlocks.js
index ae6e6f1729c98d334b9d7f81e5ed4ae9bd40f815..fa8b2aea385236fe29734b9eddc69688b65d0762 100644
--- a/assets/js/theme/blocks/draggableBlocks.js
+++ b/assets/js/theme/blocks/draggableBlocks.js
@@ -68,9 +68,10 @@ class DraggableBlock {
             endX,
             threshold = 30;
 
-        this.content.style.touchAction = 'pan-y';
+        this.block.style.touchAction = 'pan-y';
 
         this.block.addEventListener('pointerdown', (event) => {
+<<<<<<< HEAD:assets/js/theme/blocks/draggableBlocks.js
             if (event.target !== this.next && event.target !== this.previous) {
                 this.isPointerDown = true;
                 this.content.classList.add('is-grabbing');
@@ -79,6 +80,15 @@ class DraggableBlock {
         });
 
         this.block.addEventListener('pointermove', (event) => {
+=======
+            this.content.classList.add('is-grabbing');
+            startX = event.clientX;
+            isPointerDown = true;
+        });
+
+        this.block.addEventListener('pointermove', (event) => {
+            this.isManipulated = isPointerDown;
+>>>>>>> 6.0:assets/js/theme/blocks/timeline.js
             endX = event.clientX;
             if (this.isPointerDown) {
                 event.preventDefault();
diff --git a/assets/js/theme/design-system/mainMenu.js b/assets/js/theme/design-system/mainMenu.js
index 1612759f85573531eecfd0bfc1e046da479eae43..cb24b4e134bf01c2e6dc409ad48bd2f5d66ea119 100644
--- a/assets/js/theme/design-system/mainMenu.js
+++ b/assets/js/theme/design-system/mainMenu.js
@@ -12,7 +12,7 @@ class MainMenu {
     constructor (selector) {
         this.element = document.querySelector(selector);
         this.menu = this.element.querySelector('.menu');
-        this.mainButton = this.element.querySelector('button');
+        this.mainButton = this.element.querySelector('button.header-button');
         this.dropdownsButtons = this.element.querySelectorAll('.has-children [role="button"]');
 
         this.state = {
@@ -62,7 +62,7 @@ class MainMenu {
         const isMobile = window.innerWidth <= breakpoints.md;
         document.documentElement.style.setProperty('--header-height', this.element.offsetHeight + 'px');
         document.documentElement.style.setProperty('--header-menu-max-height', (window.innerHeight - this.element.offsetHeight) + 'px');
-        
+
         // is state changed ?
         if (this.state.isMobile === isMobile) {
             return null;
@@ -71,7 +71,6 @@ class MainMenu {
         this.state.isMobile = isMobile;
 
         this.closeEverything();
-        
     }
 
     toggleMainMenu (open = !this.state.isOpened) {
@@ -150,7 +149,7 @@ class MainMenu {
         if (y > this.state.previousScrollY + threshold && !isNearTop) {
             document.documentElement.classList.add(CLASSES.scrollingDown);
             hasChanged = true;
-        } else if (y < this.state.previousScrollY - threshold){
+        } else if (y < this.state.previousScrollY - threshold) {
             document.documentElement.classList.remove(CLASSES.scrollingDown);
             hasChanged = true;
         }
diff --git a/assets/sass/_theme/_configuration.sass b/assets/sass/_theme/_configuration.sass
index 03d1509a0ff7cd67907501e8c7fd8fbfc8f87e5a..3d322e30e236f433d7f5afd2f84682fc0c7fa6c3 100644
--- a/assets/sass/_theme/_configuration.sass
+++ b/assets/sass/_theme/_configuration.sass
@@ -180,16 +180,24 @@ $link-underline-thickness: 1px !default
 $link-transition: text-decoration-color .3s ease !default
 $link-unhover-decoration-color-alpha: 0.3 !default
 
-// Buttons
-$btn-font-size-desktop: pxToRem(18) !default // TODO
-$btn-font-size: pxToRem(14) !default
-$btn-padding-x-desktop: $spacing-3 !default
-$btn-padding-y-desktop: pxToRem(15) !default
-$btn-padding-x: $spacing-3 !default
-$btn-padding-y: $spacing-2 !default
+// Button
+$btn-font-family: $heading-font-family !default
+$btn-font-size: $meta-size !default
+$btn-font-size-desktop: $meta-size-desktop !default
+$btn-font-weight: normal !default
+$btn-text-transform: none !default
+$btn-color: var(--color-text) !default
+$btn-hover-color: var(--color-text) !default
+$btn-background: transparent !default
+$btn-hover-background: var(--color-background) !default
+$btn-border: pxToRem(1) solid var(--color-border) !default
+$btn-border-desktop: $btn-border !default
 $btn-border-radius: pxToRem(4) !default
-$btn-border: 1px solid var(--color-text) !default
-$btn-hover-background: var(--color-background-alt) !default
+$btn-border-radius-desktop: $btn-border-radius !default
+$btn-padding: pxToRem(12) pxToRem(10) !default
+$btn-padding-desktop: pxToRem(18) pxToRem(16) !default
+$btn-min-width: pxToRem(100) !default
+$btn-min-width-desktop: pxToRem(190) !default
 
 // Chip
 $chip-background: var(--color-background) !default
@@ -286,6 +294,7 @@ $icons: map-merge($icons, ("close": "\e90e"))
 $icons: map-merge($icons, ("copy": "\ff03"))
 $icons: map-merge($icons, ("copy-inline": "\ff04"))
 $icons: map-merge($icons, ("download": "\e900"))
+$icons: map-merge($icons, ("download-inline": "\e92f"))
 $icons: map-merge($icons, ("eye": "\e901"))
 $icons: map-merge($icons, ("facebook": "\e90b"))
 $icons: map-merge($icons, ("globe": "\ff10"))
@@ -299,6 +308,7 @@ $icons: map-merge($icons, ("play": "\e910"))
 $icons: map-merge($icons, ("search": "\e916"))
 $icons: map-merge($icons, ("search-inline": "\ee13"))
 $icons: map-merge($icons, ("social": "\e915"))
+$icons: map-merge($icons, ("social-inline": "\e92e"))
 $icons: map-merge($icons, ("social-facebook": "\ee01"))
 $icons: map-merge($icons, ("social-instagram": "\ee02"))
 $icons: map-merge($icons, ("social-linkedin": "\ee03"))
@@ -448,8 +458,6 @@ $organization-background-color: $color-background-alt !default // Use sass varia
 // Program
 $program-essential-font-size: $meta-size !default
 $program-essential-font-size-desktop: $meta-size-desktop !default
-$program-share-font-size: $meta-size !default
-$program-share-font-size-desktop: $meta-size-desktop !default
 $program-zindex-toc: $zindex-toc !default
 
 // MISC
diff --git a/assets/sass/_theme/_variables.sass b/assets/sass/_theme/_variables.sass
index dcf5670c1166fab06f78dba6055531ce33a9f1c6..1a4c90200b9dea2559ff02faf67ba37b2ebac69f 100644
--- a/assets/sass/_theme/_variables.sass
+++ b/assets/sass/_theme/_variables.sass
@@ -110,6 +110,28 @@
     --quote-size: #{$quote-size-desktop}
     --quote-line-height: #{$quote-line-height-desktop}
 
+  // -------------- //
+  //    BUTTONS     //
+  // ---------------//
+  --btn-font-family: #{$btn-font-family}
+  --btn-font-size: #{$btn-font-size}
+  --btn-font-weight: #{$btn-font-weight}
+  --btn-text-transform: #{$btn-text-transform}
+  --btn-color: #{$btn-color}
+  --btn-hover-color: #{$btn-hover-color}
+  --btn-background: #{$btn-background}
+  --btn-hover-background: #{$btn-hover-background}
+  --btn-border: #{$btn-border}
+  --btn-border-radius: #{$btn-border-radius}
+  --btn-padding: #{$btn-padding}
+  --btn-min-width: #{$btn-min-width}
+  @include media-breakpoint-up(desktop)
+    --btn-font-size: #{$btn-font-size-desktop}
+    --btn-padding: #{$btn-padding-desktop}
+    --btn-border: #{$btn-border-desktop}
+    --btn-border-radius: #{$btn-border-radius-desktop}
+    --btn-min-width: #{$btn-min-width-desktop}
+  
   // -------------- //
   //      GRID      //
   // ---------------//
diff --git a/assets/sass/_theme/blocks/call_to_action.sass b/assets/sass/_theme/blocks/call_to_action.sass
index 3f311a5f89ca508c2ea0e35211a3715763807a32..588638c4ac58abcb886f5f6d4cd19bd9e29ade49 100644
--- a/assets/sass/_theme/blocks/call_to_action.sass
+++ b/assets/sass/_theme/blocks/call_to_action.sass
@@ -17,7 +17,7 @@
         .description
             a
                 color: inherit
-                text-decoration-color:  $block-call-to-action-color
+                text-decoration-color: $block-call-to-action-color
             p
                 @include h2
         .actions
@@ -34,15 +34,13 @@
                 display: inline-block
                 text-decoration-color: alphaColor($block-call-to-action-color, 0.3)
                 &:first-child
-                    @include btn
-                    background: $block-call-to-action-button-background
-                    color: $block-call-to-action-button-color
-                    transition: background .3s ease, color .3s ease
-                    &:hover,
-                    &:focus-visible,
-                    &:focus
-                        background: $block-call-to-action-button-hover-background
-                        color: $block-call-to-action-button-hover-color
+                    --btn-background: #{$block-call-to-action-button-background}
+                    --btn-color: #{$block-call-to-action-button-color}
+                    --btn-hover-background: #{$block-call-to-action-button-hover-background}
+                    --btn-hover-color: #{$block-call-to-action-button-hover-color}
+                    --btn-border: none
+                    --btn-min-width: #{columns(2)}
+                    @extend .button
                 &:last-child
                     margin-bottom: 0
         * + .actions
diff --git a/assets/sass/_theme/blocks/posts.sass b/assets/sass/_theme/blocks/posts.sass
index e32e67a1b184ae3e96d479b2cf9c0ad957c00705..baba75238ad145e3aa098d0e66e18c6d4ec41f2d 100644
--- a/assets/sass/_theme/blocks/posts.sass
+++ b/assets/sass/_theme/blocks/posts.sass
@@ -33,27 +33,28 @@
                 .media picture img
                     width: 100%
     &--large
-        @include media-breakpoint-up(sm)
-            article
-                .post-meta
-                    display: inline
         .post
             .more
                 @include icon(arrow-right, after, true)
             .post-author 
                 p::before
                     display: none
-            @include media-breakpoint-down(desktop)
+            .post-meta
+                display: block
+                line-height: 0
+            .post-categories *
+                display: inline
+        @include media-breakpoint-down(desktop)
+            .post
                 + .post
                     margin-top: $spacing-4
                 &-meta
-                    .post-author 
-                        display: inline-flex
+                    .post-author
+                        display: inline
+                        p
+                            display: inline
                         &::after
-                            content: '—'
-                            margin: 0 $spacing-1
-                    .post-categories
-                        display: flex
+                            content:  ' — '
                 p[itemprop="articleBody"]
                     margin-top: 0
         @include media-breakpoint-up(desktop)
@@ -70,25 +71,18 @@
                     .post-meta 
                         > *
                             display: inline
-                            &:not(:first-child)::before
-                                content: '—'
-                                margin-right: $spacing-1
-                        > time
-                            display: inline-block
-                            margin-top: -2px
+                            &:not(:last-child)::after
+                                content: ' — '
                     .post-author
                         p
                             display: inline
-                        li
-                            margin-right: $spacing-2
                     .post-categories
                         li
-                            display: inline-flex
-                            margin-right: $spacing-2
-                            padding-bottom: 3px
-                            &:not(:last-child)::after
+                            a
+                                display: inline
+                            &:not(:last-child) a::after
                                 content: ','
-                            
+
         @include in-page-with-sidebar
             .large
                 .post
diff --git a/assets/sass/_theme/blocks/testimonials.sass b/assets/sass/_theme/blocks/testimonials.sass
index bd465a810ce2d127c7bb0da530a35a7f2d30445a..693ef54e5e15cda8b16683069c051a4fa2fc16e3 100644
--- a/assets/sass/_theme/blocks/testimonials.sass
+++ b/assets/sass/_theme/blocks/testimonials.sass
@@ -28,7 +28,7 @@
             display: block
     .avatar
         flex-shrink: 0
-        width: col(1)
+        width: columns(1)
         min-width: pxToRem(80)
         margin-right: $spacing-2
         margin-bottom: 0
diff --git a/assets/sass/_theme/blocks/video.sass b/assets/sass/_theme/blocks/video.sass
index e79ec1594427eb3e43a320f95f46e381d1521f3a..6ef2f0de51ee3616d0e5cfe722c7701dc43aa4fe 100644
--- a/assets/sass/_theme/blocks/video.sass
+++ b/assets/sass/_theme/blocks/video.sass
@@ -68,7 +68,6 @@
 
     @include in-page-without-sidebar
         background: $block-video-background
-        margin-top: 0
         .block-content
             @include grid(12, false, 0)
             padding-top: $block-space-y
diff --git a/assets/sass/_theme/design-system/button.sass b/assets/sass/_theme/design-system/button.sass
index 241476618e0a62ce53fc9e5c46c2351d9710881e..ded58e8c578d94af103161553e4ac03392990604 100644
--- a/assets/sass/_theme/design-system/button.sass
+++ b/assets/sass/_theme/design-system/button.sass
@@ -1,3 +1,38 @@
+.button, .btn
+    @include button-reset
+    font-family: var(--btn-font-family)
+    font-size: var(--btn-font-size)
+    font-weight: var(--btn-font-weight)
+    text-transform: var(--btn-text-transform)
+    text-decoration: none
+    line-height: $body-line-height
+    color: var(--btn-color)
+    background: var(--btn-background)
+    border: var(--btn-border)
+    border-radius: var(--btn-border-radius)
+    padding: var(--btn-padding)
+    min-width: var(--btn-min-width)
+    text-align: center
+    display: inline-block
+    transition: background .3s ease, color .3s ease
+    &:hover, &:focus, &:focus-visible
+        color: var(--btn-hover-color)
+        background: var(--btn-hover-background)
+
+.button-accent
+    @extend .button
+    --btn-color: #{$color-background}
+    --btn-background: #{$color-accent}
+    --btn-hover-color: #{$color-background}
+    --btn-hover-background: #{alphaColor($color-accent, 0.85)}
+
+.button-alt
+    @extend .button
+    --btn-color: #{$color-background}
+    --btn-background: #{$color-text-alt}
+    --btn-hover-color: #{$color-background}
+    --btn-hover-background: #{$color-text}
+
 .squared-button
     @include meta
     @include button-reset
@@ -22,7 +57,62 @@
             border-color: transparent
             color: var(--color-background)
     text-decoration: none
+
 button.squared-button
     @include icon-block(eye, before)
+
 a.squared-button
-    @include icon-block(download, before)
\ No newline at end of file
+    @include icon-block(download, before)
+
+// TODO: check usage in journal
+.link-btn
+    @extend .button
+    @include media-breakpoint-up(desktop)
+        padding: $spacing-2
+    &[target="_blank"]:not(.icon)
+        display: flex
+        justify-content: space-between
+        align-items: center
+        @include icon-block(link-blank-block, after)
+
+@mixin link-icon($icon: false)
+    @include button-reset
+    line-height: $body-line-height
+    white-space: nowrap
+    min-width: fit-content
+    @if $icon
+        @include icon-block($icon, after)
+
+@mixin button-icon($icon: false)
+    white-space: nowrap
+    display: inline-flex
+    align-items: center
+    justify-content: space-between
+    gap: $spacing-1
+    @if $icon
+        @include icon($icon, after)
+
+.dropdown-share
+    position: relative
+    .dropdown-menu
+        background: var(--btn-hover-background)
+        border: var(--btn-border)
+        border-radius: var(--btn-border-radius)
+        bottom: 0
+        padding: 0
+        position: absolute
+        top: 0
+        width: 100%
+        .share
+            display: flex
+            align-items: center
+            height: 100%
+            li
+                margin: 0
+                flex: 1 1
+                text-align: center
+        a
+            display: block
+            color: var(--btn-color)
+            &:hover
+                color: var(--color-accent)
diff --git a/assets/sass/_theme/design-system/form.sass b/assets/sass/_theme/design-system/form.sass
index d4679f39e426362313d8e544a824993cbbcdce5f..cdf6dd84b58b4bf619ad0d1a7761485081729d2a 100644
--- a/assets/sass/_theme/design-system/form.sass
+++ b/assets/sass/_theme/design-system/form.sass
@@ -18,10 +18,8 @@ form
         border-radius: $form-input-border-radius
         padding: $spacing-1 
     input[type="submit"], button
-        @include button-reset
-        @include btn
-        @include meta
-        background: $form-btn-background-color
-        color: $form-btn-color
+        --btn-background: $form-btn-background-color
+        --btn-color: $form-btn-color
+        @extend .button
     label + input
         margin-bottom: $spacing-5
\ No newline at end of file
diff --git a/assets/sass/_theme/design-system/header.sass b/assets/sass/_theme/design-system/header.sass
index a2940aaa2922cba9a878c839f5d29850d6a9470f..911a376a019a0a1711e7a35716345d6ac3269476 100644
--- a/assets/sass/_theme/design-system/header.sass
+++ b/assets/sass/_theme/design-system/header.sass
@@ -98,7 +98,7 @@ header#document-header
             display: flex
             flex-wrap: wrap
             justify-content: space-between
-        button[type="button"]:not(.pagefind-ui__button)
+        .header-button
             @include button-reset
             display: none
             border: 0
diff --git a/assets/sass/_theme/design-system/hero.sass b/assets/sass/_theme/design-system/hero.sass
index fb04b2d64ed700f3c5ecab17711ed15b62884462..17f7432f608f647b403aae806189fc4b3ae52c1f 100644
--- a/assets/sass/_theme/design-system/hero.sass
+++ b/assets/sass/_theme/design-system/hero.sass
@@ -16,11 +16,12 @@
     .content
         align-items: start
         padding-top: $spacing-5
-        > h1, > hgroup
+        .hero-text
             margin-top: $spacing-5
-            
         h1 + p
             margin-top: $spacing-3
+        .btn
+            margin-top: $spacing-3
         .lead
             @include lead-hero
         figure
@@ -49,7 +50,7 @@
         &--with-image
             padding-bottom: 0
             .content
-                > h1, > hgroup
+                .hero-text
                     margin-bottom: $spacing-4
         &--image-landscape
             .content
@@ -65,14 +66,13 @@
                 margin-bottom: calc(#{-$spacing-7} + #{$spacing-4})
 
     @include media-breakpoint-up(desktop)
-        .content
-            > h1, > hgroup
-                width: columns(9)
+        .hero-text
+            width: columns(9)
         &--with-image
             .content
                 display: flex
                 justify-content: space-between
-                > h1, > hgroup
+                .hero-text
                     width: columns(7)
                 figure
                     width: columns(5)
@@ -84,7 +84,7 @@
                 .breadcrumb
                     padding-right: 10%
             .content
-                > h1, > hgroup
+                .hero-text
                     width: columns(8)
                 figure
                     width: columns(3)
diff --git a/assets/sass/_theme/design-system/table_of_contents.sass b/assets/sass/_theme/design-system/table_of_contents.sass
index c72d4b4d491a517e767514e92c52ff906c331eac..0c13d9c54c25b597b850820e75111632e0c2b21d 100644
--- a/assets/sass/_theme/design-system/table_of_contents.sass
+++ b/assets/sass/_theme/design-system/table_of_contents.sass
@@ -95,7 +95,7 @@
         padding: 0 var(--grid-gutter)
         z-index: $zindex-toc-cta
     button
-        @include button-icon(toc)
+        @include link-icon(toc)
         border: 0
         line-height: inherit
         cursor: pointer
diff --git a/assets/sass/_theme/design-system/typography.sass b/assets/sass/_theme/design-system/typography.sass
index 423881be700f040b4adc5bb15fe3745128dd2af5..f9a48febf75864525751e1fd04620bc630b1d1e4 100644
--- a/assets/sass/_theme/design-system/typography.sass
+++ b/assets/sass/_theme/design-system/typography.sass
@@ -224,32 +224,6 @@ a,
     &.glightbox
         text-decoration: none
 
-@mixin btn
-    font-size: $btn-font-size
-    padding: $btn-padding-y $btn-padding-x
-    text-decoration: none
-    display: inline-block
-    border-radius: $btn-border-radius
-    @include media-breakpoint-up(desktop)
-        font-size: $btn-font-size-desktop
-        padding: $btn-padding-y-desktop $btn-padding-x-desktop
-
-.btn
-    @include btn
-
-.link-btn
-    @include btn
-    border: $btn-border
-    @include media-breakpoint-up(desktop)
-        padding: $spacing-2
-    &[target="_blank"]:not(.icon)
-        display: flex
-        justify-content: space-between
-        align-items: center
-        @include icon-block(link-blank-block, after)
-    &:hover
-        background: $btn-hover-background
-
 .chip
     @include meta
     background: $chip-background
diff --git a/assets/sass/_theme/sections/diplomas.sass b/assets/sass/_theme/sections/diplomas.sass
index 402f90d654539abcec98543d6502b7345277cda8..2d923093baa3afa6fa6028f4cc3d1d58f756b1c4 100644
--- a/assets/sass/_theme/sections/diplomas.sass
+++ b/assets/sass/_theme/sections/diplomas.sass
@@ -28,7 +28,7 @@ ul.diplomas
                 align-items: baseline
                 span
                     margin-left: $spacing-3
-                
+
         .content
             @include grid(2, desktop)
             padding-bottom: $spacing-3
@@ -93,7 +93,6 @@ ul.diplomas
         a
             color: black
         a
-            
             display: block
             font-size: $body-size
             padding: $spacing-3
@@ -107,46 +106,57 @@ ul.diplomas
                 background-color: var(--color-accent)
                 color: white
 
-    button[aria-expanded="true"] 
+    button[aria-expanded="true"]
         @include icon('caret-top', 'after')
         + .dropdown-menu
             display: block
 
 .essential-container
-    .container
+    margin-top: $spacing-5
+    .buttons
+        @include meta
+        display: flex
+        flex-wrap: wrap
+        .dropdown-share
+            --btn-background: #{$hero-background-color}
+            --btn-hover-background: #{$color-background}
+            button
+                @extend .button
+                @include button-icon(social-inline)
+        a[download]
+            @extend .button-alt
+            @include button-icon(download-inline)
         @include media-breakpoint-down(sm)
-            .buttons > *
-                width: columns(8)
+            button, > a
+                width: 100%
         @include media-breakpoint-down(md)
-            .buttons
-                display: flex
-                gap: $spacing-3
-                flex-wrap: wrap
-                > *
-                    min-width: 150px
-                    width: columns(7)
+            --btn-min-width: #{pxToRem(140)}
+            gap: $spacing-3
+            flex-direction: row
+            button, > a
+                width: columns(6)
         @include media-breakpoint-up(md)
-            @include grid(2, md)
-            align-items: flex-end
-            .buttons
-                align-items: end
-                display: flex
-                flex-direction: column
-                gap: $spacing-3
-                justify-content: flex-end
-                > *
-                    min-width: 200px
-                    width: columns(2)
-            
+            flex-direction: column
+            gap: $spacing-3
+            --btn-min-width: #{columns(2)}
+            button, > a
+                width: pxToRem(200)
+        @include media-breakpoint-down(desktop)
+            margin-top: $spacing-3
+    .container
+        @include media-breakpoint-up(md)
+            display: flex
+            justify-content: space-between
     .essential
+        @include meta
         color: $header-color
         flex-wrap: wrap
         font-size: $program-essential-font-size
         margin-bottom: 0
-        margin-top: $spacing-5
-        @include meta
+        margin-top: 0
         @include media-breakpoint-up(desktop)
             @include grid(6, false, 0)
+            width: columns(6)
             font-size: $program-essential-font-size-desktop
         dt,
         dd
diff --git a/assets/sass/_theme/sections/events.sass b/assets/sass/_theme/sections/events.sass
index 9f0a3f03946a6d287f20f0e26b824ff04b464a42..9394569331c887b2896a7d22bfbd0735e42c6fd7 100644
--- a/assets/sass/_theme/sections/events.sass
+++ b/assets/sass/_theme/sections/events.sass
@@ -169,7 +169,7 @@
                         grid-column: 0 / 5
                         grid-row: 1 / 4
                 .media
-                    width: col(2)
+                    width: columns(2)
             @include in-page-with-sidebar
                 @include grid(8)
                 &-content
diff --git a/assets/sass/_theme/sections/papers.sass b/assets/sass/_theme/sections/papers.sass
index 574767937ed7a93b42c19d4bfb260b246b2721fe..427cbf18dd1546f1c6b75c7911037686f5e62e45 100644
--- a/assets/sass/_theme/sections/papers.sass
+++ b/assets/sass/_theme/sections/papers.sass
@@ -61,7 +61,7 @@
     @include media-breakpoint-up(desktop)
         .hero
             .content
-                > h1, > hgroup
+                .hero-text
                     width: auto
         .paper-sidebar
             > div
diff --git a/assets/sass/_theme/sections/persons.sass b/assets/sass/_theme/sections/persons.sass
index 92ee9eb063167e564622f316b2a505f51026502e..7f743c2a9924e8d265deb0cb52e375298d6e76e0 100644
--- a/assets/sass/_theme/sections/persons.sass
+++ b/assets/sass/_theme/sections/persons.sass
@@ -1,38 +1,3 @@
-.persons__page
-    .top
-        h2
-            a
-                @include icon(arrow-right, after, true)
-                    display: inline-flex
-                    margin-left: $spacing-1
-                    transition: transform .3s ease
-                &:hover::after
-                    transform: translateX($spacing-2)
-    // TODO : voir comment gérer les marges comme pour les blocs (pb footer)
-    section
-        padding-bottom: var(--grid-gutter)
-    ol.programs
-        li
-            justify-content: flex-start
-            @include media-breakpoint-up(desktop)
-                @include grid(2)
-            @include icon(arrow-right, after, true)
-                color: inherit
-                position: absolute
-                right: 0
-                top: 1.5em
-            a
-                color: inherit
-                @include stretched-link(before)
-                @include media-breakpoint-down(desktop)
-                    margin-right: $spacing-3
-            p
-                margin-top: unset
-                &:nth-child(2)
-                    @include small
-            &:hover
-                color: var(--color-accent)
-
 .person
     @include article
     word-break: break-word
@@ -162,10 +127,12 @@ ol.persons--list
 
 .persons__page
     .hero
+        figure
+            @extend .avatar
         @include media-breakpoint-down(desktop)
             padding-bottom: 0
             margin-bottom: $spacing-6
-            .avatar
+            figure
                 width: columns(6)
                 margin-top: $spacing-3
                 margin-left: auto
@@ -173,7 +140,7 @@ ol.persons--list
                 margin-top: calc(#{$spacing-3} - 100px)
         @include media-breakpoint-down(sm)
             margin-bottom: $spacing-6
-            .avatar
+            figure
                 transform: translateY(18vw)
                 margin-top: calc(#{$spacing-3} - 18vw)
         @include media-breakpoint-up(desktop)
@@ -185,7 +152,7 @@ ol.persons--list
                 h1
                     margin-bottom: 0
                     width: columns(8)
-                .avatar
+                figure
                     margin-bottom: 0
                     width: columns(3)
     .roles
@@ -197,9 +164,39 @@ ol.persons--list
         margin-top: $spacing-5
         > * + *
             margin-top: $spacing-5
+        .top h2 a
+            @include icon(arrow-right, after, true)
+                display: inline-flex
+                margin-left: $spacing-1
+                transition: transform .3s ease
+            &:hover::after
+                transform: translateX($spacing-2)
     .person-posts
         article.post:last-child
             margin-bottom: 0
+    section
+        padding-bottom: $spacing-5
+    ol.programs
+        li
+            justify-content: flex-start
+            @include media-breakpoint-up(desktop)
+                @include grid(2)
+            @include icon(arrow-right, after, true)
+                color: inherit
+                position: absolute
+                right: 0
+                top: 1.5em
+            a
+                color: inherit
+                @include stretched-link(before)
+                @include media-breakpoint-down(desktop)
+                    margin-right: $spacing-3
+            p
+                margin-top: unset
+                &:nth-child(2)
+                    @include small
+            &:hover
+                color: var(--color-accent)
     @include media-breakpoint-down(lg)
         .roles
             margin-top: $spacing-4
diff --git a/assets/sass/_theme/sections/programs.sass b/assets/sass/_theme/sections/programs.sass
index 37d12d1f113fd89aded13909319dc8b2d7c09e9b..015b2557837a6e6d540fb7d438447d9320e182f7 100644
--- a/assets/sass/_theme/sections/programs.sass
+++ b/assets/sass/_theme/sections/programs.sass
@@ -34,66 +34,6 @@ ol.programs
         margin-bottom: $spacing-5
         li
             line-height: 1
-    .dropdown-share
-        position: relative
-        > button
-            @include button-icon(social)
-            &:after
-                margin-right: $icon-social-margin-right
-            color: $hero-color
-            border-color: var(--color-border)
-            font-size: $program-share-font-size
-            transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out
-            &:hover,
-            &:active,
-            &:focus
-                background: var(--color-background)
-                color: var(--color-text)
-            // a11y
-            &:active,
-            &:focus
-                box-shadow: inset 0 0 0 0.25rem rgba(white, .5)
-            @include media-breakpoint-up(desktop)
-                font-size: $program-share-font-size-desktop
-        .dropdown-menu
-            background: $hero-color
-            border-radius: pxToRem(4)
-            bottom: 0
-            padding: 0
-            position: absolute
-            top: 0
-            width: 100%
-            .share
-                display: flex
-                align-items: center
-                height: 100%
-                li
-                    margin: 0
-                    flex: 1 1
-                    text-align: center
-            a
-                display: block
-                color: $hero-background-color
-    .buttons
-        @include meta
-        button, > a
-            display: flex
-            align-items: center
-            justify-content: space-between
-            width: 100%
-            border-radius: pxToRem(4)
-        a[download]
-            @include button-icon(download)
-            text-decoration: none
-            color: $hero-background-color
-            background: $hero-color
-            border-color: $hero-color
-            font-size: $program-share-font-size
-            @include media-breakpoint-up(desktop)
-                font-size: $program-share-font-size-desktop
-
-        @include media-breakpoint-down(desktop)
-            margin-top: $spacing-3
 
     .document-content
         @include media-breakpoint-up(desktop)
diff --git a/assets/sass/_theme/utils/grid.sass b/assets/sass/_theme/utils/grid.sass
index f96d87035d61079f58c46c7f4f8ef0b2692b5222..20eabb832e78bf2160cf9160cbaa2e3d07540439 100644
--- a/assets/sass/_theme/utils/grid.sass
+++ b/assets/sass/_theme/utils/grid.sass
@@ -3,7 +3,8 @@
     margin-right: auto
     padding-left: var(--grid-gutter)
     padding-right: var(--grid-gutter)
-    width: var(--grid-width)
+    width: auto
+    max-width: var(--grid-width)
 
 @function columns($quantity)
     $width: calc( (var(--column-width) * #{$quantity}) + var(--grid-gutter) * ( #{$quantity} - 1 ))
diff --git a/assets/sass/_theme/utils/icons.sass b/assets/sass/_theme/utils/icons.sass
index 6a124f0cec102d3943d3636a53ec2594c96c31b1..f453b6df2c8ef22f1938ec748d0eeb1b6d86588d 100644
--- a/assets/sass/_theme/utils/icons.sass
+++ b/assets/sass/_theme/utils/icons.sass
@@ -31,16 +31,6 @@
         display: inline
         @content
 
-@mixin button-icon($icon: false)
-    @include button-reset
-    line-height: $body-line-height
-    border: 1px solid $hero-color
-    padding: $spacing-1 $spacing-3
-    white-space: nowrap
-    @if $icon
-        @include icon-block($icon, after)
-
-
 @mixin arrow-right-hover
     position: relative
     display: flex
diff --git a/bin/osuny.js b/bin/osuny.js
index ae7ed8de293f0d9b3f6ca537e5afee5fef6fac59..15ff7e685afe69c3073ee87680832a6b354fa41e 100644
--- a/bin/osuny.js
+++ b/bin/osuny.js
@@ -54,7 +54,7 @@ if (command === "dev") {
 
 if (command === "build") {
     execute("yarn upgrade");
-    execute("hugo");
+    execute("hugo --minify");
     execute("npm_config_yes=true npx pagefind --site 'public' --exclude-selectors '" + pagefindExclude + "'");
 }
 
diff --git a/layouts/partials/blocks/templates/posts/large.html b/layouts/partials/blocks/templates/posts/large.html
index c76b4099268d0bcf105844a2e217d8e847e8ef25..c434aa6606cf8706eff3be0506158ea2354b1bcd 100644
--- a/layouts/partials/blocks/templates/posts/large.html
+++ b/layouts/partials/blocks/templates/posts/large.html
@@ -2,7 +2,7 @@
 {{ $heading_level := .heading_level | default 3 }}
 {{ $heading_tag := partial "GetHeadingTag" (dict 
         "level" $heading_level
-        "attributes" "class='post-title'"
+        "attributes" "class='post-title' itemprop='headline'"
 )}}
 {{ $index := .index}}
 
diff --git a/layouts/partials/commons/image.html b/layouts/partials/commons/image.html
index f0a96bd6714482403d421a74efae1348114354b9..6336a732e6d87fded2ea263d6c834657eddd0c1c 100644
--- a/layouts/partials/commons/image.html
+++ b/layouts/partials/commons/image.html
@@ -79,4 +79,4 @@
 
     </picture>
   {{- end -}}
-{{- end -}}
+{{- end -}}
\ No newline at end of file
diff --git a/layouts/partials/diplomas/essential.html b/layouts/partials/diplomas/essential.html
index 2f83ffad344502b63f05ccfd6f3402a52f84cdd9..63ee13a5a7130c9029a27ea1bf396ed924984bab 100644
--- a/layouts/partials/diplomas/essential.html
+++ b/layouts/partials/diplomas/essential.html
@@ -1,16 +1,18 @@
-{{- with . -}}
-  <dl class="essential">
-    {{- if .Params.level -}}
-      <dt>{{ i18n "programs.level" }}</dt>
-      <dd>{{ partial "PrepareHTML" .Params.level }}</dd>
-    {{- end -}}
-    {{- if .Params.duration -}}
-      <dt>{{ i18n "programs.duration" }}</dt>
-      <dd>{{ partial "PrepareHTML" .Params.duration }}</dd>
-    {{- end -}}
-    {{- if .Params.ects -}}
-      <dt>{{ i18n "programs.ects_credits" }}</dt>
-      <dd>{{ partial "PrepareHTML" .Params.ects }}</dd>
-    {{- end -}}
-  </dl>
-{{- end -}}
+<div class="essential-container" id="#{{ urlize (i18n "programs.toc.essential") }}">
+  <div class="container">
+    <dl class="essential">
+      {{- if .Params.level -}}
+        <dt>{{ i18n "programs.level" }}</dt>
+        <dd>{{ partial "PrepareHTML" .Params.level }}</dd>
+      {{- end -}}
+      {{- if .Params.duration -}}
+        <dt>{{ i18n "programs.duration" }}</dt>
+        <dd>{{ partial "PrepareHTML" .Params.duration }}</dd>
+      {{- end -}}
+      {{- if .Params.ects -}}
+        <dt>{{ i18n "programs.ects_credits" }}</dt>
+        <dd>{{ partial "PrepareHTML" .Params.ects }}</dd>
+      {{- end -}}
+    </dl>
+  </div>
+</div>
\ No newline at end of file
diff --git a/layouts/partials/diplomas/hero-single.html b/layouts/partials/diplomas/hero-single.html
index c45f7fb492f4beff68e818d18d512630ca48d1ca..b6b5481cdd7bd4a0dbb4764e514b5f8a9c3133dc 100644
--- a/layouts/partials/diplomas/hero-single.html
+++ b/layouts/partials/diplomas/hero-single.html
@@ -1,60 +1,9 @@
-{{- $breadcrumb_is_after_hero := eq site.Params.breadcrumb.position "after-hero" -}}
 {{- $title := or .Params.header_text .Title -}}
-{{ $subtitle := "" }}
-{{- $summary := .Params.summary | safeHTML -}}
-{{ if and (eq site.Params.summary.position "hero") $summary }}
-  {{ $subtitle = $summary }}
-{{ end }}
-
-<header class="hero {{ if $breadcrumb_is_after_hero -}} hero--no-margin {{- end }}">
-  <div class="container">
-    {{- if eq site.Params.breadcrumb.position "hero-start" -}}
-      {{- if .Params.breadcrumb | default true -}}
-        {{ partial "header/breadcrumbs.html" . }}
-      {{- end -}}
-    {{- end -}}
-    <div class="content">
-      {{- if $subtitle -}}
-        <hgroup>
-          <h1>{{ partial "PrepareHTML" $title }}</h1>
-          <p class="lead">{{ partial "PrepareHTML" $subtitle }}</p>
-        </hgroup>
-      {{- else -}}
-        <h1>{{ partial "PrepareHTML" $title }}</h1>
-      {{- end -}}
-      {{- if .Params.image }}
-        <figure>
-          {{ partial "commons/image.html"
-            (dict
-              "image"    .image
-              "sizes"    site.Params.image_sizes.sections.diplomas.hero_single
-            ) }}
-          {{ if .image.credit }}
-            <figcaption>
-              {{- partial "PrepareHTML" .image.credit -}}
-            </figcaption>
-          {{ end }}
-        </figure>
-      {{ end -}}
-    </div>
-  </div>
-  <div class="essential-container" id="#{{ urlize (i18n "programs.toc.essential") }}">
-    <div class="container">
-      {{- partial "diplomas/essential" . -}}
-    </div>
-  </div>
-
-  {{- if eq site.Params.breadcrumb.position "hero-end" -}}
-    {{- if .Params.breadcrumb | default true -}}
-      {{ partial "header/breadcrumbs.html" . }}
-    {{- end -}}
-  {{- end -}}
-</header>
-
-{{- if $breadcrumb_is_after_hero -}}
-  {{- if .Params.breadcrumb | default true -}}
-    <div class="container breadcrumb-container">
-      {{ partial "header/breadcrumbs.html" . }}
-    </div>
-  {{- end -}}
-{{- end -}}
\ No newline at end of file
+{{ partial "header/hero.html"
+      (dict
+        "title" $title
+        "image" .Params.image
+        "sizes" site.Params.image_sizes.sections.home.hero
+        "context" .
+        "hero_complement" "diplomas/essential.html"
+      )}}
diff --git a/layouts/partials/footer/debug.html b/layouts/partials/footer/debug.html
index 552c4b804ad7b4c323268bae0aa8ec3d4c7006fe..86fc5ac335c3293104e5a8f1b37a3bab76fdc987 100644
--- a/layouts/partials/footer/debug.html
+++ b/layouts/partials/footer/debug.html
@@ -274,7 +274,11 @@
   }
 
   function openInProd() {
-    console.log('{{ .Site.BaseURL }}')
+    // To use this debug method, add params.productionUrl key to your hugo config.yaml
+    const productionUrl = "{{ site.Params.debug.productionUrl }}";
+    if (productionUrl) {
+      window.open(`${productionUrl}${window.location.pathname}`);
+    }
   }
 
 </script>
\ No newline at end of file
diff --git a/layouts/partials/header/button.html b/layouts/partials/header/button.html
index 16d02d90397ba515e7dfc0d233a2bac02dace8b5..1331f60676c9f60b069682a4c939068341e7472c 100644
--- a/layouts/partials/header/button.html
+++ b/layouts/partials/header/button.html
@@ -1,7 +1,8 @@
 <button type="button"
     aria-controls="navigation"
     aria-expanded="false"
-    aria-label="{{ i18n "commons.menu.label" }}">
+    aria-label="{{ i18n "commons.menu.label" }}"
+    class="header-button">
   <span>{{ i18n "commons.menu.title" }}</span>
   <span></span>
 </button>
diff --git a/layouts/partials/header/hero.html b/layouts/partials/header/hero.html
index 78fe93990d0d4d01863efb7f7e72523f2d24b740..af41832f8819bbdb1fd31807c30c793996d19964 100644
--- a/layouts/partials/header/hero.html
+++ b/layouts/partials/header/hero.html
@@ -1,51 +1,59 @@
-{{- $direction := "" -}}
-{{- $breadcrumb_is_after_hero := eq site.Params.breadcrumb.position "after-hero"  -}}
-{{- $subtitle := .subtitle -}}
-{{- $description := .description -}}
+
+{{ $direction := "" }}
+{{ $breadcrumb_is_after_hero := eq site.Params.breadcrumb.position "after-hero" }}
+{{ $display_breadcrumb := .breadcrumb | default true }}
+{{ $subtitle := .subtitle }}
+{{ $description := .description }}
 {{ if .image }}
-  {{- $direction = partial "GetImageDirection" .image -}}
+  {{ $direction = partial "GetImageDirection" .image }}
 {{ end }}
 
-{{- $summary := .context.Params.summary | safeHTML -}}
-{{- $subtitle_is_summary := false -}}
+{{ $summary := .context.Params.summary | safeHTML }}
+{{ $subtitle_is_summary := false }}
 
 {{ if not $subtitle }}
   {{ if and (eq site.Params.summary.position "hero") $summary }}
-   {{ $subtitle = $summary }}
-   {{ $subtitle_is_summary = true }}
+    {{ $subtitle = $summary }}
+    {{ $subtitle_is_summary = true }}
   {{ end }}
 {{ end }}
 
-<header class="hero {{ if .image -}}hero--with-image hero--image-{{- $direction -}}{{- end }} {{ if $breadcrumb_is_after_hero -}} hero--no-margin {{- end }}">
+<header class="hero {{ if .image }}hero--with-image hero--image-{{- $direction }}{{ end }} {{ if $breadcrumb_is_after_hero }} hero--no-margin {{ end }}">
   <div class="container">
-    {{- if eq site.Params.breadcrumb.position "hero-start" -}}
-      {{- if .breadcrumb | default true -}}
-        {{ partial "header/breadcrumbs.html" .context }}
-      {{- end -}}
-    {{- end -}}
+    {{ if and $display_breadcrumb (eq site.Params.breadcrumb.position "hero-start") }}
+      {{ partial "header/breadcrumbs.html" .context }}
+    {{ end }}
     <div class="content">
-      {{- if or $subtitle $description -}}
-        <hgroup>
+      <div class="hero-text">
+        {{ if or $subtitle $description }}
+          <hgroup>
+            <h1>{{ partial "PrepareHTML" .title }}</h1>
+            {{ if $subtitle }}
+              <p {{ if $subtitle_is_summary }} class="lead" {{ end }}>{{ partial "PrepareHTML" $subtitle }}</p>
+            {{ end }}
+            {{ if $description }}
+              <p>{{ partial "PrepareHTML" .description }}</p>
+            {{ end }}
+          </hgroup>
+        {{ else }}
           <h1>{{ partial "PrepareHTML" .title }}</h1>
-          {{- if $subtitle -}}
-            <p {{ if $subtitle_is_summary -}} class="lead" {{- end -}}>{{ partial "PrepareHTML" $subtitle }}</p>
-          {{- end -}}
-          {{- if $description -}}
-            <p>{{ partial "PrepareHTML" .description }}</p>
-          {{- end -}}
-        </hgroup>
-      {{- else -}}
-        <h1>{{ partial "PrepareHTML" .title }}</h1>
-      {{- end -}}
-      {{- if .image }}
+        {{ end }}
+        {{ with .context.Params.header_cta }}
+          {{ if and .display .target .label }}
+            <a href="{{ .target }}" class="btn">{{ .label }}</a>
+          {{ end }}
+        {{ end }}
+      </div>
+
+      {{ if .image }}
         <figure>
           {{ if not site.Params.image_sizes.design_system.lightbox.disabled }}
             <a  class="glightbox"
                 role="button"
                 data-glightbox="type: image;{{ if .image.credit }}description: {{ partial "PrepareHTML" .image.credit }}{{ end }}"
                 href="{{ partial "GetLightboxUrl" .image }}"
-                title="{{- i18n "commons.lightbox.link.title" -}}"
-                aria-label="{{- i18n "commons.lightbox.link.title" -}}">
+                title="{{ i18n "commons.lightbox.link.title" }}"
+                aria-label="{{ i18n "commons.lightbox.link.title" }}">
           {{ end }}
             {{ partial "commons/image.html"
               (dict
@@ -59,25 +67,26 @@
             {{ if partial "GetTextFromHTML" .image.credit }}
               <figcaption tabindex="0">
                 <div class="credit-content">
-                  {{- partial "PrepareHTML" .image.credit -}}
+                  {{ partial "PrepareHTML" .image.credit }}
                 </div>
               </figcaption>
             {{ end }}
         </figure>
-      {{ end -}}
+      {{ end }}
     </div>
-    {{- if eq site.Params.breadcrumb.position "hero-end" -}}
-      {{- if .breadcrumb | default true -}}
-        {{ partial "header/breadcrumbs.html" .context }}
-      {{- end -}}
-    {{- end -}}
   </div>
+
+  {{ if .hero_complement }}
+    {{ partial .hero_complement .context }}
+  {{ end }}
+
+  {{ if and $display_breadcrumb (eq site.Params.breadcrumb.position "hero-end") }}
+    {{ partial "header/breadcrumbs.html" .context }}
+  {{ end }}
 </header>
 
-{{- if $breadcrumb_is_after_hero -}}
-  {{- if .breadcrumb | default true -}}
-    <div class="container breadcrumb-container">
-      {{ partial "header/breadcrumbs.html" .context }}
-    </div>
-  {{- end -}}
-{{- end -}}
\ No newline at end of file
+{{ if and $display_breadcrumb $breadcrumb_is_after_hero }}
+  <div class="container breadcrumb-container">
+    {{ partial "header/breadcrumbs.html" .context }}
+  </div>
+{{ end }}
diff --git a/layouts/partials/persons/hero-single copy.html b/layouts/partials/persons/hero-single copy.html
new file mode 100644
index 0000000000000000000000000000000000000000..da41ce5514a76c6bd68d4288dcb5467879e60f84
--- /dev/null
+++ b/layouts/partials/persons/hero-single copy.html	
@@ -0,0 +1,43 @@
+{{- $breadcrumb_is_after_hero := eq site.Params.breadcrumb.position "after-hero"  -}}
+{{ $subtitle := "" }}
+{{- $summary := .Params.summary | safeHTML -}}
+{{ if and (eq site.Params.summary.position "hero") $summary }}
+  {{ $subtitle = $summary }}
+{{ end }}
+
+<header class="hero {{ if $breadcrumb_is_after_hero -}} hero--no-margin {{- end }}">
+  <div class="container">
+    {{- if eq site.Params.breadcrumb.position "hero-start" -}}
+      {{ partial "header/breadcrumbs.html" . }}
+    {{- end -}}
+    <div class="content">
+      {{- if $subtitle -}}
+        <hgroup>
+          <h1>{{ partial "PrepareHTML" .Title }}</h1>
+          <p class="lead">{{ partial "PrepareHTML" $subtitle }}</p>
+        </hgroup>
+      {{- else -}}
+        <h1>{{ partial "PrepareHTML" .Title }}</h1>
+      {{- end -}}
+
+      {{ if .Params.image }}
+        <div class="avatar">
+          {{ partial "commons/image.html"
+              (dict
+                "image"    .Params.image
+                "sizes"    site.Params.image_sizes.sections.persons.hero_single
+              )}}
+        </div>
+      {{ end }}
+    </div>
+    {{- if eq site.Params.breadcrumb.position "hero-end" -}}
+      {{ partial "header/breadcrumbs.html" . }}
+    {{- end -}}
+  </div>
+</header>
+
+{{- if $breadcrumb_is_after_hero -}}
+  <div class="container breadcrumb-container">
+    {{ partial "header/breadcrumbs.html" . }}
+  </div>
+{{- end -}}
\ No newline at end of file
diff --git a/layouts/partials/persons/hero-single.html b/layouts/partials/persons/hero-single.html
index da41ce5514a76c6bd68d4288dcb5467879e60f84..a79151b4e11c71d79d6d46895a1d43b42b98c100 100644
--- a/layouts/partials/persons/hero-single.html
+++ b/layouts/partials/persons/hero-single.html
@@ -1,43 +1,8 @@
-{{- $breadcrumb_is_after_hero := eq site.Params.breadcrumb.position "after-hero"  -}}
-{{ $subtitle := "" }}
-{{- $summary := .Params.summary | safeHTML -}}
-{{ if and (eq site.Params.summary.position "hero") $summary }}
-  {{ $subtitle = $summary }}
-{{ end }}
-
-<header class="hero {{ if $breadcrumb_is_after_hero -}} hero--no-margin {{- end }}">
-  <div class="container">
-    {{- if eq site.Params.breadcrumb.position "hero-start" -}}
-      {{ partial "header/breadcrumbs.html" . }}
-    {{- end -}}
-    <div class="content">
-      {{- if $subtitle -}}
-        <hgroup>
-          <h1>{{ partial "PrepareHTML" .Title }}</h1>
-          <p class="lead">{{ partial "PrepareHTML" $subtitle }}</p>
-        </hgroup>
-      {{- else -}}
-        <h1>{{ partial "PrepareHTML" .Title }}</h1>
-      {{- end -}}
-
-      {{ if .Params.image }}
-        <div class="avatar">
-          {{ partial "commons/image.html"
-              (dict
-                "image"    .Params.image
-                "sizes"    site.Params.image_sizes.sections.persons.hero_single
-              )}}
-        </div>
-      {{ end }}
-    </div>
-    {{- if eq site.Params.breadcrumb.position "hero-end" -}}
-      {{ partial "header/breadcrumbs.html" . }}
-    {{- end -}}
-  </div>
-</header>
-
-{{- if $breadcrumb_is_after_hero -}}
-  <div class="container breadcrumb-container">
-    {{ partial "header/breadcrumbs.html" . }}
-  </div>
-{{- end -}}
\ No newline at end of file
+{{- $title := or .Params.header_text .Title -}}
+{{- partial "header/hero.html"
+      (dict
+        "title" $title
+        "image" (dict "id" .Params.image)
+        "context" .
+        "sizes" site.Params.image_sizes.sections.persons.hero_single
+      ) -}}
diff --git a/layouts/partials/programs/essential.html b/layouts/partials/programs/essential.html
index bc5730ecf4c104fa7e239272a49519bf7eee7e05..9d35596d885faf6708701fbece43e4ef00f663c8 100644
--- a/layouts/partials/programs/essential.html
+++ b/layouts/partials/programs/essential.html
@@ -1,22 +1,46 @@
-{{ $parent := .Params.parent }}
-{{- with .Params.diplomas -}}
-  {{- $diploma := site.GetPage (printf "/diplomas/%s" .) -}}
-  {{- with $diploma -}}
-    <dl class="essential">
-      <dt>{{ i18n "programs.diploma" }}</dt>
-      <dd><a href="{{ .Permalink }}">{{ partial "PrepareHTML" .Title }}</a></dd>
-      {{- if .Params.level -}}
-        <dt>{{ i18n "programs.level" }}</dt>
-        <dd>{{ partial "PrepareHTML" .Params.level }}</dd>
+<div class="essential-container" id="#{{ urlize (i18n "programs.toc.essential") }}">
+  <div class="container">
+
+    {{ $parent := .Params.parent }}
+    {{- with .Params.diplomas -}}
+      {{- $diploma := site.GetPage (printf "/diplomas/%s" .) -}}
+      {{- with $diploma -}}
+        <dl class="essential">
+          <dt>{{ i18n "programs.diploma" }}</dt>
+          <dd><a href="{{ .Permalink }}">{{ partial "PrepareHTML" .Title }}</a></dd>
+          {{- if .Params.level -}}
+            <dt>{{ i18n "programs.level" }}</dt>
+            <dd>{{ partial "PrepareHTML" .Params.level }}</dd>
+          {{- end -}}
+          {{- with $parent -}}
+            <dt>{{ i18n "programs.mention" }}</dt>
+            <dd><a href="{{ .url }}">{{ partial "PrepareHTML" .title }}</a></dd>
+          {{- end -}}
+          {{- if .Params.duration -}}
+            <dt>{{ i18n "programs.duration" }}</dt>
+            <dd>{{ partial "PrepareHTML" .Params.duration }}</dd>
+          {{- end -}}
+        </dl>
       {{- end -}}
-      {{- with $parent -}}
-        <dt>{{ i18n "programs.mention" }}</dt>
-        <dd><a href="{{ .url }}">{{ partial "PrepareHTML" .title }}</a></dd>
-      {{- end -}}
-      {{- if .Params.duration -}}
-        <dt>{{ i18n "programs.duration" }}</dt>
-        <dd>{{ partial "PrepareHTML" .Params.duration }}</dd>
-      {{- end -}}
-    </dl>
-  {{- end -}}
-{{- end -}}
+    {{- end -}}
+    
+    <div class="buttons">
+      <div class="dropdown-share dropup">
+        <button class="btn" type="button" id="shareProgram" data-bs-toggle="dropdown" aria-expanded="false">{{ i18n "commons.share" }}</button>
+        <div class="dropdown-menu">
+          {{ partial "commons/share.html" . }}
+        </div>
+      </div>
+      {{ with .Params.downloadable_summary }}
+        {{- $file := partial "GetMedia" . -}}
+        {{- if $file -}}
+          {{- $url := $file.url -}}
+          {{- if site.Params.keycdn -}}
+            {{- $url = $file.direct_url -}}
+          {{- end -}}
+          <a href="{{ $url }}" download target="_blank">{{ i18n "commons.download.singular_name" }}</a>
+        {{- end -}}
+      {{ end }}
+    </div>
+  </div>
+</div>
diff --git a/layouts/partials/programs/hero-single.html b/layouts/partials/programs/hero-single.html
index deb0f4ae2da54d0047773693e12b80cc92142c9d..96357ec373647c0e43568e650525330e607e3b04 100644
--- a/layouts/partials/programs/hero-single.html
+++ b/layouts/partials/programs/hero-single.html
@@ -1,65 +1,7 @@
-{{- $breadcrumb_is_after_hero := eq site.Params.breadcrumb.position "after-hero"  -}}
 {{- $title := or .Params.header_text .Title -}}
-{{ $subtitle := "" }}
-{{- $summary := .Params.summary | safeHTML -}}
-{{ if and (eq site.Params.summary.position "hero") $summary }}
-  {{ $subtitle = $summary }}
-{{ end }}
-
-<header class="hero hero-program {{ if $breadcrumb_is_after_hero -}} hero--no-margin {{- end }}">
-  <div class="container">
-    {{- if eq site.Params.breadcrumb.position "hero-start" -}}
-      {{- if .Params.breadcrumb | default true -}}
-        {{ partial "header/breadcrumbs.html" . }}
-      {{- end -}}
-    {{- end -}}
-    <div class="content">
-      {{- if $subtitle -}}
-        <hgroup>
-          <h1>{{ partial "PrepareHTML" $title }}</h1>
-          <p class="lead">{{ partial "PrepareHTML" $subtitle }}</p>
-        </hgroup>
-      {{- else -}}
-        <h1>{{ partial "PrepareHTML" $title }}</h1>
-      {{- end -}}
-    </div>
-  </div>
-
-  <div class="essential-container" id="#{{ urlize (i18n "programs.toc.essential") }}">
-    <div class="container">
-      {{- partial "programs/essential" . -}}
-      <div class="buttons">
-        <div class="dropdown-share dropup">
-          <button type="button" id="shareProgram" data-bs-toggle="dropdown" aria-expanded="false">{{ i18n "commons.share" }}</button>
-          <div class="dropdown-menu">
-            {{ partial "commons/share.html" . }}
-          </div>
-        </div>
-        {{ with .Params.downloadable_summary }}
-          {{- $file := partial "GetMedia" . -}}
-          {{- if $file -}}
-            {{- $url := $file.url -}}
-            {{- if site.Params.keycdn -}}
-              {{- $url = $file.direct_url -}}
-            {{- end -}}
-            <a href="{{ $url }}" download target="_blank">{{ i18n "commons.download.singular_name" }}</a>
-          {{- end -}}
-        {{ end }}
-      </div>
-    </div>
-  </div>
-
-  {{- if eq site.Params.breadcrumb.position "hero-end" -}}
-    {{- if .Params.breadcrumb | default true -}}
-      {{ partial "header/breadcrumbs.html" . }}
-    {{- end -}}
-  {{- end -}}
-</header>
-
-{{- if $breadcrumb_is_after_hero -}}
-  {{- if .Params.breadcrumb | default true -}}
-    <div class="container breadcrumb-container">
-      {{ partial "header/breadcrumbs.html" . }}
-    </div>
-  {{- end -}}
-{{- end -}}
+{{ partial "header/hero.html"
+      (dict
+        "title" $title
+        "context" .
+        "hero_complement" "programs/essential.html"
+      )}}
diff --git a/layouts/partials/publications/downloads.html b/layouts/partials/publications/downloads.html
index 379bba754f489ef6633dab92ecaeaa57467decab..a24993d24f90f1a7da89c408526444db649cdca6 100644
--- a/layouts/partials/publications/downloads.html
+++ b/layouts/partials/publications/downloads.html
@@ -4,7 +4,7 @@
   <nav>
     {{ range .Params.links }}
       {{ if .url }}
-        <a href="{{ .url }}" target="_blank" rel="noopener" class="link-btn">{{ .label }}</a>
+        <a href="{{ .url }}" target="_blank" rel="noopener">{{ .label }}</a>
       {{ end }}
     {{ end }}
   </nav>
diff --git a/static/assets/fonts/fonticons/IconFont.ttf b/static/assets/fonts/fonticons/IconFont.ttf
index 5b68528dc52998f7fe5923168888f752dd6d6f06..650452b6b0509f1a439a8a7ec317436b0a56c8f0 100644
Binary files a/static/assets/fonts/fonticons/IconFont.ttf and b/static/assets/fonts/fonticons/IconFont.ttf differ
diff --git a/static/assets/fonts/fonticons/IconFont.woff b/static/assets/fonts/fonticons/IconFont.woff
index a48b0132c5172bf646c83091147401fc3b92fe53..43bf09ec3bdb53bede37a91a8b553a0682c6232d 100644
Binary files a/static/assets/fonts/fonticons/IconFont.woff and b/static/assets/fonts/fonticons/IconFont.woff differ
diff --git a/static/assets/fonts/fonticons/IconFont.woff2 b/static/assets/fonts/fonticons/IconFont.woff2
index 689a16424211c4d4dc1113b0e85bd46e3f600d3f..b068507042fbf5f24819392520ca94b96453c663 100644
Binary files a/static/assets/fonts/fonticons/IconFont.woff2 and b/static/assets/fonts/fonticons/IconFont.woff2 differ