diff --git a/assets/sass/_theme/_configuration.sass b/assets/sass/_theme/_configuration.sass
index 124902ec41c5757bc1e18a5462afe64628d2d5d3..f14886bfe51ee1959695f0da9c082a32515e48e1 100644
--- a/assets/sass/_theme/_configuration.sass
+++ b/assets/sass/_theme/_configuration.sass
@@ -75,6 +75,11 @@ $lead-size: px2rem(24) !default
 $lead-line-height: 120% !default
 $lead-weight: $heading-font-weight !default
 
+$lead-sidebar-font-family: $lead-font-family !default
+$lead-sidebar-size-desktop: px2rem(32) !default
+$lead-sidebar-line-height: $lead-line-height !default
+$lead-sidebar-weight: $lead-weight !default
+
 // Body
 $body-size-desktop: px2rem(22) !default
 $body-size: px2rem(18) !default
@@ -179,7 +184,7 @@ $footer-logo-height-desktop: $footer-logo-height !default
 
 // Hero
 $hero-height: 300px !default
-$hero-height-desktop: 400px !default
+$hero-height-desktop: 500px !default
 $hero-color: $color-text !default
 $hero-background-color: $color-background-alt !default
 
diff --git a/assets/sass/_theme/_utils.sass b/assets/sass/_theme/_utils.sass
index bb6c82e5072f131c1929b225b04bccec05c47629..bcbe41108a73c9bd297f7ff9d464911c2a16fea7 100644
--- a/assets/sass/_theme/_utils.sass
+++ b/assets/sass/_theme/_utils.sass
@@ -7,8 +7,9 @@
     @return #{$remSize}rem
 
 @mixin in-page-with-sidebar
-    body:not(.full-width) &
-        @content
+    @include media-breakpoint-up(desktop)
+        body:not(.full-width) &
+            @content
 
 @mixin in-page-without-sidebar
     main > .blocks &,
diff --git a/assets/sass/_theme/blocks/call_to_action.sass b/assets/sass/_theme/blocks/call_to_action.sass
index ed23d4136863d8d12e751450a5005a9879d276df..f265d800c4f4aaaa8269c2301e9bca4ae24213b6 100644
--- a/assets/sass/_theme/blocks/call_to_action.sass
+++ b/assets/sass/_theme/blocks/call_to_action.sass
@@ -54,39 +54,39 @@
                 margin-bottom: offset(1)
                 order: 1
 
-    @include media-breakpoint-up(desktop)
-        @include in-page-with-sidebar
-            .call_to_action
-                display: flex
-                flex-direction: column
-                > *
-                    order: 2
-                > div
+    @include in-page-with-sidebar
+        .call_to_action
+            display: flex
+            flex-direction: column
+            > *
+                order: 2
+            > div
+                background-color: var(--cta-background-color)
+                padding: col(1, 8)
+                width: 100%
+                position: relative
+                &::after
                     background-color: var(--cta-background-color)
-                    padding: col(1, 8)
-                    width: 100%
+                    content: ''
+                    display: block
+                    position: absolute
+                    top: 0
+                    bottom: 0
+                    left: 100%
+                    width: Max(#{$grid-gutter}, calc(50vw - #{half($grid-max-width)} + #{$grid-gutter}))
+            &--with-image
+                picture
+                    order: 1
+                    padding-left: col(1, 8)
+                    padding-right: col(1, 8)
                     position: relative
-                    &::after
-                        background-color: var(--cta-background-color)
-                        content: ''
-                        display: block
-                        position: absolute
-                        top: 0
-                        bottom: 0
-                        left: 100%
-                        width: Max(#{$grid-gutter}, calc(50vw - #{half($grid-max-width)} + #{$grid-gutter}))
-                &--with-image
-                    picture
-                        order: 1
-                        padding-left: col(1, 8)
-                        padding-right: col(1, 8)
-                        position: relative
-                        img
-                            width: col(3, 6)
-                            margin-bottom: calc(-#{$grid-gutter} + -#{$spacing1})
-                    > div
-                        padding-top: calc(#{$grid-gutter} + #{$spacing3})
-  
+                    img
+                        width: col(3, 6)
+                        margin-bottom: calc(-#{$grid-gutter} + -#{$spacing1})
+                > div
+                    padding-top: calc(#{$grid-gutter} + #{$spacing3})
+
+    @include media-breakpoint-up(desktop)
         @include in-page-without-sidebar
             background-color: var(--cta-background-color)
             padding-top: 0
diff --git a/assets/sass/_theme/blocks/chapter.sass b/assets/sass/_theme/blocks/chapter.sass
index baec25ce163c8c59e2e6714d80614728b3f0f04d..41ca229af1301eb4b3f40449e92894a5d1870634 100644
--- a/assets/sass/_theme/blocks/chapter.sass
+++ b/assets/sass/_theme/blocks/chapter.sass
@@ -31,29 +31,29 @@
         &--with-image
             &.block-chapter--alt_background, &.block-chapter--accent_background
                 padding-top: half($grid-gutter-sm)
-    @include media-breakpoint-up(desktop)
-        @include in-page-with-sidebar
+    @include in-page-with-sidebar
+        figure
+            max-width: col(6, 8)
+            &.image-portrait
+                max-width: col(4, 8)
+        &--alt_background, &--accent_background
+            background: none
+            .chapter .text
+                padding: $grid-gutter col(1, 8)
             figure
-                max-width: col(6, 8)
+                margin-bottom: 0
+                figcaption
+                    padding: 0 col(1, 6)
                 &.image-portrait
-                    max-width: col(4, 8)
-            &--alt_background, &--accent_background
-                background: none
-                .chapter .text
-                    padding: $grid-gutter col(1, 8)
-                figure
-                    margin-bottom: 0
                     figcaption
-                        padding: 0 col(1, 6)
-                    &.image-portrait
-                        figcaption
-                            padding: 0 col(1, 4)
-            &--alt_background
-                .chapter
-                    background: $block-chapter-layout-alt-background
-            &--accent_background
-                .chapter
-                    background: $block-chapter-layout-accent-background
+                        padding: 0 col(1, 4)
+        &--alt_background
+            .chapter
+                background: $block-chapter-layout-alt-background
+        &--accent_background
+            .chapter
+                background: $block-chapter-layout-accent-background
+    @include media-breakpoint-up(desktop)
         @include in-page-without-sidebar
             .chapter
                 flex-direction: row
diff --git a/assets/sass/_theme/blocks/files.sass b/assets/sass/_theme/blocks/files.sass
index 3688fb1d13e754fef3ad6f1d54b53d3381781057..cad352b8ead01bc1e2cc46451235dff3512e0986 100644
--- a/assets/sass/_theme/blocks/files.sass
+++ b/assets/sass/_theme/blocks/files.sass
@@ -38,10 +38,10 @@
         .files
             li + li
                 margin-top: $spacing1
+    @include in-page-with-sidebar
+        .files
+            @include grid(2, desktop, half($grid-gutter))
     @include media-breakpoint-up(desktop)
-        @include in-page-with-sidebar
-            .files
-                @include grid(2, desktop, half($grid-gutter))
         @include in-page-without-sidebar
             .top
                 display: flex
diff --git a/assets/sass/_theme/blocks/image.sass b/assets/sass/_theme/blocks/image.sass
index 85668b780f236f9fdcd1fbced0b4e50e4a1de7c8..306e85520e44b7cdc5ac38602607ce768135ebe4 100644
--- a/assets/sass/_theme/blocks/image.sass
+++ b/assets/sass/_theme/blocks/image.sass
@@ -19,13 +19,12 @@
         margin-right: half(-$grid-gutter-sm)
 
     @include in-page-with-sidebar
-        @include media-breakpoint-up(desktop)
-            picture
-                margin-left: 0
-                margin-right: -$grid-gutter
-            img
-                max-height: $block-image-max-height-with-sidebar
-                width: auto
+        picture
+            margin-left: 0
+            margin-right: -$grid-gutter
+        img
+            max-height: $block-image-max-height-with-sidebar
+            width: auto
     @include in-page-without-sidebar
         @include media-breakpoint-up(desktop)
             .block-content
diff --git a/assets/sass/_theme/blocks/key_figures.sass b/assets/sass/_theme/blocks/key_figures.sass
index 9df8d359fd19ec757a0e1e35ba69379366fab9a5..842b18935e4f724fcfca2d69a0b9fdf1cf5d2bd3 100644
--- a/assets/sass/_theme/blocks/key_figures.sass
+++ b/assets/sass/_theme/blocks/key_figures.sass
@@ -4,7 +4,7 @@
     ul
         @include list-reset
         @include in-page-with-sidebar
-            @include grid(2, desktop)
+            @include grid(2)
         &.even-items
             @include grid(2)
             @include grid(4, desktop)
diff --git a/assets/sass/_theme/blocks/organization_chart.sass b/assets/sass/_theme/blocks/organization_chart.sass
index 172438be58753c1d1fa8c8b567c572c4def123a5..e13111d17634aca4ec0138dfcffa60abfebb95d2 100644
--- a/assets/sass/_theme/blocks/organization_chart.sass
+++ b/assets/sass/_theme/blocks/organization_chart.sass
@@ -9,21 +9,20 @@
             + p
                 margin-top: half($spacing0)
 
-
+    @include in-page-with-sidebar
+        .persons
+            @include grid(1, sm)
+            @include grid(2, desktop)
+        article
+            flex-direction: row
+            align-items: start
+            .avatar
+                margin-right: $spacing1
+                width: calc(#{col(1, 4)} + #{$grid-gutter})
+            .description
+                flex: 1
+                margin-top: $spacing1
     @include media-breakpoint-up(sm)
-        @include in-page-with-sidebar
-            .persons
-                @include grid(1, sm)
-                @include grid(2, desktop)
-            article
-                flex-direction: row
-                align-items: start
-                .avatar
-                    margin-right: $spacing1
-                    width: calc(#{col(1, 4)} + #{$grid-gutter})
-                .description
-                    flex: 1
-                    margin-top: $spacing1
         @include in-page-without-sidebar
             .persons
                 @include grid(4, lg)
diff --git a/assets/sass/_theme/blocks/pages.sass b/assets/sass/_theme/blocks/pages.sass
index 6f08e7cf8a9d97398b43f16b9db4c59de7c49661..a60ea02463fc710f5e90bf6c423c3e7d82e2dc1a 100644
--- a/assets/sass/_theme/blocks/pages.sass
+++ b/assets/sass/_theme/blocks/pages.sass
@@ -147,19 +147,19 @@
                 margin-bottom: $spacing0
             ul
                 margin-top: $spacing1
+        @include in-page-with-sidebar
+            .block-content
+                .top
+                    margin-bottom: $spacing1
+                .description
+                    margin-bottom: $spacing1
+                ul
+                    @include grid(2, desktop)
+                    grid-row-gap: $spacing0 !important
+                    grid-column-gap: half($grid-gutter) !important
+                    li
+                        margin-top: 0
         @include media-breakpoint-up(desktop)
-            @include in-page-with-sidebar
-                .block-content
-                    .top
-                        margin-bottom: $spacing1
-                    .description
-                        margin-bottom: $spacing1
-                    ul
-                        @include grid(2, desktop)
-                        grid-row-gap: $spacing0 !important
-                        grid-column-gap: half($grid-gutter) !important
-                        li
-                            margin-top: 0
             @include in-page-without-sidebar
                 h2
                     a
diff --git a/assets/sass/_theme/blocks/partners.sass b/assets/sass/_theme/blocks/partners.sass
index 04ad633a20e85fbdae950c0af91d862e054b16f6..00ee86245cf7744721ae630561219b93e2cbe12a 100644
--- a/assets/sass/_theme/blocks/partners.sass
+++ b/assets/sass/_theme/blocks/partners.sass
@@ -1,6 +1,5 @@
 .block-partners
-    @include media-breakpoint-up(desktop)
-        @include in-page-with-sidebar
-            .organizations
-                @include grid(4, xl)
-                grid-column-gap: half($grid-gutter) !important
+    @include in-page-with-sidebar
+        .organizations
+            @include grid(4, xl)
+            grid-column-gap: half($grid-gutter) !important
diff --git a/assets/sass/_theme/blocks/posts.sass b/assets/sass/_theme/blocks/posts.sass
index 46afc430ad02bf92a84ae80332a03afdfeb3564b..24a460c6fc7ace078a033cf44278a8be401be947 100644
--- a/assets/sass/_theme/blocks/posts.sass
+++ b/assets/sass/_theme/blocks/posts.sass
@@ -21,10 +21,10 @@
         @include media-breakpoint-down(desktop)
             article + article
                 margin-top: $spacing3
+        @include in-page-with-sidebar
+            .grid
+                @include grid(2, desktop, $grid-gutter, half($grid-gutter))
         @include media-breakpoint-up(desktop)
-            @include in-page-with-sidebar
-                .grid
-                    @include grid(2, desktop, $grid-gutter, half($grid-gutter))
             @include in-page-without-sidebar
                 .grid
                     @include grid($block-posts-grid-columns)
@@ -67,20 +67,21 @@
                     // top: 0
                     // right: 0
 
+        @include in-page-with-sidebar
+            article
+                padding-bottom: $spacing1
+                + article
+                    margin-top: $spacing1
+                .media
+                    width: calc(#{col(2, 8)} + #{half($grid-gutter)})
+                .post-content
+                    width: col(6, 8)
+                    margin-left: half($grid-gutter)
+
         @include media-breakpoint-up(desktop)
             article
                 display: flex
                 flex-direction: row
-            @include in-page-with-sidebar
-                article
-                    padding-bottom: $spacing1
-                    + article
-                        margin-top: $spacing1
-                    .media
-                        width: calc(#{col(2, 8)} + #{half($grid-gutter)})
-                    .post-content
-                        width: col(6, 8)
-                        margin-left: half($grid-gutter)
 
             @include in-page-without-sidebar
                  article
@@ -123,9 +124,34 @@
             .media
                 margin-top: 0
 
+        @include in-page-with-sidebar
+            .highlight-post
+                .post
+                    flex-direction: row
+                    .media
+                        width: calc(#{col(3, 8)} + #{half($grid-gutter)})
+                        margin-bottom: 0
+                    .post-content
+                        width: col(5, 8)
+                        margin-left: half($grid-gutter)
+            .list
+                article
+                    @include grid(8, desktop, 0, 0)
+                    h1
+                        grid-column: 1 / 7
+                    time
+                        grid-column: 7 / 9
+                        text-align: right
+                        order: 2
+                        margin-top: 0
+                    p
+                        grid-column: 1 / 7
+                        order: 3
+        
         @include media-breakpoint-down(desktop)
             .list
                 border-top: 1px solid $color-border
+
         @include media-breakpoint-up(desktop)
             .highlight
                 h1
@@ -134,30 +160,6 @@
                 article
                     h1
                         @include h4
-            @include in-page-with-sidebar
-                .highlight-post
-                    .post
-                        flex-direction: row
-                        .media
-                            width: calc(#{col(3, 8)} + #{half($grid-gutter)})
-                            margin-bottom: 0
-                        .post-content
-                            width: col(5, 8)
-                            margin-left: half($grid-gutter)
-                .list
-                    article
-                        @include grid(8, desktop, 0, 0)
-                        h1
-                            grid-column: 1 / 7
-                        time
-                            grid-column: 7 / 9
-                            text-align: right
-                            order: 2
-                            margin-top: 0
-                        p
-                            grid-column: 1 / 7
-                            order: 3
-
             @include in-page-without-sidebar
                 .highlight
                     @include grid(2)
@@ -166,4 +168,3 @@
                     margin-top: 0
                     article:first-child
                         margin-top: 0
-            
\ No newline at end of file
diff --git a/assets/sass/_theme/blocks/timeline.sass b/assets/sass/_theme/blocks/timeline.sass
index ef43b1909cdb90f8eccf5a2847d3901e2a1f3f44..ca2b9a447084adabb0e01ed27b8d192adad92e42 100644
--- a/assets/sass/_theme/blocks/timeline.sass
+++ b/assets/sass/_theme/blocks/timeline.sass
@@ -149,9 +149,8 @@
                     width: calc(100% + #{$grid-gutter})
         
         @include in-page-with-sidebar
-            @include media-breakpoint-up(desktop)
-                .timeline
-                    padding-left: offset(4)
+            .timeline
+                padding-left: offset(4)
             // @include media-breakpoint-up(xxl)
             //     .timeline
             //         padding-left: offset(5)
diff --git a/assets/sass/_theme/design-system/hero.sass b/assets/sass/_theme/design-system/hero.sass
index 71761d0886d128c9385d122a375fd1a7ea7b3dad..25ba6a6feef25058b51f627aa0577babb948c7f8 100644
--- a/assets/sass/_theme/design-system/hero.sass
+++ b/assets/sass/_theme/design-system/hero.sass
@@ -1,8 +1,4 @@
 .hero
-    // Support gradients
-    background: $hero-background-color
-    // Fallback color
-    background-color: $hero-background-color
     color: $hero-color
     min-height: $hero-height
     padding-bottom: $spacing3
@@ -13,7 +9,21 @@
         min-height: $hero-height-desktop
     *:focus-visible
         outline-color: $hero-color
-    
+
+    &::before
+        content: ''
+        position: absolute
+        // Support gradients
+        background: $hero-background-color
+        // Fallback color
+        background-color: $hero-background-color
+        top: 0
+        left: 0
+        right: 0
+        bottom: 0
+        z-index: -1
+
+
     nav + .content
         margin-top: $spacing3
 
@@ -77,6 +87,8 @@
         //     margin-bottom: 0
         &--with-image
             padding-bottom: 0
+            &::before
+                bottom: $spacing3
         &--image-landscape
             figure
                 margin: half($spacing3) half(-$grid-gutter-sm) 0
@@ -84,18 +96,21 @@
             .container
                 display: flex
                 flex-direction: column
-                margin-bottom: $spacing5
+                // margin-bottom: $spacing5
             figure
-                margin-bottom: calc(#{-$spacing5} + #{$spacing2})
+                // margin-bottom: calc(#{-$spacing5} + #{$spacing2})
                 margin-top: $spacing1
 
     @include media-breakpoint-up(desktop)
-        $negative-margin-bottom: px2rem(150)
+        // $negative-margin-bottom: $spacing4
         .content
             > h1, > hgroup
                 width: col(9)
         &--with-image
-            margin-bottom: $negative-margin-bottom
+            padding-bottom: 0
+            min-height: calc(#{$hero-height-desktop} + #{$spacing3})
+            &::before
+                bottom: $spacing3
             .content
                 display: flex
                 justify-content: space-between
@@ -103,10 +118,7 @@
                     width: col(7)
                 figure
                     width: col(5)
-                    margin-bottom: -$negative-margin-bottom
-                    // If there's no credits
-                    picture:last-child
-                        margin-bottom: $spacing2
+
         &--image-portrait, &--image-square
             .breadcrumb-nav
                 width: calc(#{col(9)} + #{half($grid-gutter)})
@@ -118,6 +130,6 @@
                 > h1, > hgroup
                     width: col(8)
                 figure
-                    margin-top: calc(-#{$spacing3} - #{$spacing2})
+                    margin-top: calc(-#{$spacing3} - #{$spacing1})
                     width: col(3)
 
diff --git a/assets/sass/_theme/design-system/table_of_contents.sass b/assets/sass/_theme/design-system/table_of_contents.sass
index 0949378824508173ce4a37ef24e4e477d029eeb8..4cb5bfad7063c5b82b3164edb25554afe43872e9 100644
--- a/assets/sass/_theme/design-system/table_of_contents.sass
+++ b/assets/sass/_theme/design-system/table_of_contents.sass
@@ -69,12 +69,13 @@
 .toc-cta
     display: flex
     position: relative
+    @include in-page-with-sidebar
+        display: none
     @include media-breakpoint-up(desktop)
         @include container
         justify-content: end
         text-align: right
-        @include in-page-with-sidebar
-            display: none
+        margin-bottom: $spacing3
         body.offcanvas-toc &
             display: flex
 
@@ -117,26 +118,25 @@
         @include offcanvas-toc
 
     // Only desktop and in page with sidebar
-    @include media-breakpoint-up(desktop)
-        @include in-page-with-sidebar
-            @include container-margin-left
-            pointer-events: none
-            top: 0
-            left: 0
-            margin-top: 0
-            height: 100%
-            position: absolute
-            width: col-outside-container(4)
-            .toc-content
-                position: sticky
-                top: var(--header-height)
-                overflow-y: auto
-                max-height: calc(100vh - var(--header-height))
-                margin-bottom: $spacing1
-                padding-bottom: $spacing5
-                pointer-events: auto
-            button
-                display: none
+    @include in-page-with-sidebar
+        @include container-margin-left
+        pointer-events: none
+        top: 0
+        left: 0
+        margin-top: 0
+        height: 100%
+        position: absolute
+        width: col-outside-container(4)
+        .toc-content
+            position: sticky
+            top: var(--header-height)
+            overflow-y: auto
+            max-height: calc(100vh - var(--header-height))
+            margin-bottom: $spacing1
+            padding-bottom: $spacing5
+            pointer-events: auto
+        button
+            display: none
 
     // Program tweak : use offcanvas
     // TODO : find a better way to cancel sidebar props
diff --git a/assets/sass/_theme/design-system/typography.sass b/assets/sass/_theme/design-system/typography.sass
index 5970c07a39c896db18486fd1aee210b171a0a589..30086f08838e8442bd864f86b50f7a5824ec3854 100644
--- a/assets/sass/_theme/design-system/typography.sass
+++ b/assets/sass/_theme/design-system/typography.sass
@@ -108,6 +108,11 @@ h2, .h2
     line-height: $lead-line-height
     @include media-breakpoint-up(desktop)
         font-size: $lead-size-desktop
+    @include in-page-with-sidebar
+        font-family: $lead-sidebar-font-family
+        font-size: $lead-sidebar-size-desktop
+        font-weight: $lead-sidebar-weight
+        line-height: $lead-sidebar-line-height
 
 .lead
     @include lead
diff --git a/assets/sass/_theme/sections/diplomas.sass b/assets/sass/_theme/sections/diplomas.sass
index 9cb90068c2c4ca6821c843db5e0bbd63e421a0b4..ca4ee1834b14d907869ec663b962a9a0119c0283 100644
--- a/assets/sass/_theme/sections/diplomas.sass
+++ b/assets/sass/_theme/sections/diplomas.sass
@@ -98,34 +98,54 @@ ul.diplomas
         + .dropdown-menu
             display: block
 
-.essential
-    color: $header-color
-    flex-wrap: wrap
-    font-size: $program-essential-font-size
-    margin-bottom: 0
-    margin-top: $spacing3
-    @include meta
-    @include media-breakpoint-up(desktop)
-        @include grid(12, false, 0)
-        font-size: $program-essential-font-size-desktop
-    dt,
-    dd
-        margin: 0
-        padding-bottom: $spacing0
-        padding-top: $spacing0
-        &:last-of-type
-            padding-bottom: 0
-    dt
-        grid-column: 1/3
-        color: $color-text-alt
-        @include media-breakpoint-down(desktop)
-            padding-bottom: 0
-    dd
-        grid-column: 3/13
-        @include media-breakpoint-down(desktop)
-            padding-top: 0
-        a
-            @include link($hero-color)
+.essential-container
+    .container
+        @include media-breakpoint-down(md)
+            .buttons
+                display: flex
+                gap: $spacing1
+                flex-wrap: wrap
+        @include media-breakpoint-up(md)
+            @include grid(2, md)
+            align-items: flex-end
+            .buttons
+                display: flex
+                justify-content: flex-end
+                flex-direction: column
+                align-items: end
+                gap: $spacing1
+                > *
+                    width: col(2, 6)
+                    min-width: 200px
+            
+    .essential
+        color: $header-color
+        flex-wrap: wrap
+        font-size: $program-essential-font-size
+        margin-bottom: 0
+        margin-top: $spacing3
+        @include meta
+        @include media-breakpoint-up(desktop)
+            @include grid(6, false, 0)
+            font-size: $program-essential-font-size-desktop
+        dt,
+        dd
+            margin: 0
+            padding-bottom: $spacing0
+            padding-top: $spacing0
+            &:last-of-type
+                padding-bottom: 0
+        dt
+            grid-column: 1/3
+            color: $color-text-alt
+            @include media-breakpoint-down(desktop)
+                padding-bottom: 0
+        dd
+            grid-column: 3/7
+            @include media-breakpoint-down(desktop)
+                padding-top: 0
+            a
+                @include link($hero-color)
 
 .diplomas__term
     ol.programs
diff --git a/assets/sass/_theme/sections/programs.sass b/assets/sass/_theme/sections/programs.sass
index ae336f95d17b47802fe14f32add20bd0efb2954c..b264283f1cd33b82b96f5af0662e74c83bf9e0cf 100644
--- a/assets/sass/_theme/sections/programs.sass
+++ b/assets/sass/_theme/sections/programs.sass
@@ -58,12 +58,6 @@ ol.programs
                 color: $hero-background-color
     .buttons
         @include meta
-        margin-top: $spacing1
-        @include media-breakpoint-up(desktop)
-            bottom: 2.25rem
-            margin-top: 0
-            position: absolute
-            right: $grid-gutter
         button, > a
             display: flex
             align-items: center
@@ -76,14 +70,17 @@ ol.programs
             background: $hero-color
             border-color: $hero-color
             font-size: $program-share-font-size
-            margin-top: $spacing1
+            width: auto
             @include media-breakpoint-up(desktop)
                 font-size: $program-share-font-size-desktop
 
+        @include media-breakpoint-down(desktop)
+            margin-top: $spacing1
+
     .document-content
         @include media-breakpoint-up(desktop)
             .lead
-                padding: $spacing2 0
+                padding-bottom: $spacing2
         .content
             padding-bottom: $spacing2
             section:not(.block) > * + *
diff --git a/layouts/pages/list.html b/layouts/pages/list.html
index 3a0bf4f3992b70f9cf57350918b919e52f012885..3e9183bfd79e27a28802147e1877a418b5abbac6 100644
--- a/layouts/pages/list.html
+++ b/layouts/pages/list.html
@@ -2,46 +2,14 @@
   {{ partial "pages/hero.html" . }}
 
   <div class="document-content">
-
-    {{/*  TOC PART  */}}
     {{- $category := site.GetPage (printf "/categories%s" .Params.category) -}}
-    {{- $show_aside := false -}}
-
-    {{- $has_blocks := false -}}
-    {{- range .Params.blocks -}}
-      {{- $has_blocks = true -}}
-      {{- if .title -}}
-        {{- $show_aside = true -}}
-      {{- end -}}
-    {{- end -}}
-    
-    {{- if .Pages -}}
-      {{- if eq $has_blocks false -}}
-        {{- $show_aside = true -}}
-      {{- end -}}
-    {{- end -}}
-    
-    {{- if .Content -}}
-      {{- if eq $has_blocks false -}}
-        {{- $show_aside = true -}}
-      {{- end -}}
-    {{- end -}}
-    
-    {{- if $category -}}
-      {{- if eq $has_blocks false -}}
-        {{- $show_aside = true -}}
-      {{- end -}}
-    {{- end -}}
-    
-    {{- if $show_aside }}
-      {{ partial "toc/container.html"
-          (dict
-              "category" $category
-              "toc" "pages/toc.html"
-              "context" .
-          )
-      }}
-    {{ end }}
+    {{ partial "toc/container.html"
+        (dict
+            "category" $category
+            "toc" "pages/toc.html"
+            "context" .
+        )
+    }}
 
     {{ partial "hooks/after-page-hero.html" . }}
 
diff --git a/layouts/partials/GetBodyclass b/layouts/partials/GetBodyclass
index 1622cd7b9fb28c66cd4570f55537ddb67e474341..fa0e7f7f6e5b652455698a35ffd01877e53500e4 100644
--- a/layouts/partials/GetBodyclass
+++ b/layouts/partials/GetBodyclass
@@ -1,19 +1,15 @@
-{{- $bodyclass := .Params.bodyclass | default "" -}}
+{{ $bodyclass := .Params.bodyclass | default "" }}
 
-{{- if ne $bodyclass "" -}}
-  {{- $bodyclass = printf "page-%s" $bodyclass -}}
-{{- end -}}
+{{ if ne $bodyclass "" }}
+  {{ $bodyclass = printf "page%s" $bodyclass }}
+{{ end }}
 
-{{- if or .Params.full_width (and (eq .Kind "section") (eq .Type "posts")) (and (or (eq .Type "programs") (eq .Type "diplomas") ) (not .Params.diplomas)) -}}
-  {{- $bodyclass = printf "full-width %s" $bodyclass -}}
-{{- end -}}
+{{ if .Params.design.full_width }}
+  {{ $bodyclass = printf "full-width %s" $bodyclass }}
+{{ end }}
 
-{{- if and (eq .Kind "page") (eq .Type "posts") -}}
-  {{- $bodyclass = printf "offcanvas-toc %s" $bodyclass -}}
-{{- end -}}
+{{ if .Params.design.toc.offcanvas }}
+  {{ $bodyclass = printf "offcanvas-toc %s" $bodyclass }}
+{{ end }}
 
-{{- if .Params.diplomas -}}
-  {{- $bodyclass = printf "offcanvas-toc %s" $bodyclass -}}
-{{- end -}}
-
-{{- return $bodyclass -}}
\ No newline at end of file
+{{ return $bodyclass }}
\ No newline at end of file
diff --git a/layouts/partials/IsTocNeeded b/layouts/partials/IsTocNeeded
deleted file mode 100644
index c0ec4cc76f787daef95fca1083704ea95271efe7..0000000000000000000000000000000000000000
--- a/layouts/partials/IsTocNeeded
+++ /dev/null
@@ -1,13 +0,0 @@
-{{ $isNeeded := false }}
-
-{{ if eq .context.Type "programs" }}
-  {{ $isNeeded = true }}
-{{ end }}
-
-{{ if .context.Params.blocks }}
-  {{ if gt (len .context.Params.blocks) 1 }}
-    {{ $isNeeded = true }}
-  {{ end }}
-{{ end }}
-
-{{ return $isNeeded }}
\ No newline at end of file
diff --git a/layouts/partials/diplomas/hero-single.html b/layouts/partials/diplomas/hero-single.html
index 69f7b939cb04140dea6cf9fa2762b85d46a5c682..4577aee8825ae95a57a16100206e2ade1236c045 100644
--- a/layouts/partials/diplomas/hero-single.html
+++ b/layouts/partials/diplomas/hero-single.html
@@ -24,7 +24,7 @@
       {{ end -}}
     </div>
   </div>
-  <div id="#{{ urlize (i18n "programs.toc.essential") }}">
+  <div class="essential-container" id="#{{ urlize (i18n "programs.toc.essential") }}">
     <div class="container">
       {{- partial "diplomas/essential" . -}}
     </div>
diff --git a/layouts/partials/programs/hero-single.html b/layouts/partials/programs/hero-single.html
index bd3de22920754fa768ea84d14718f75c91cf01e0..c0ed3bb3fe702bf986dfc4dd1128b68c2be3cf0a 100644
--- a/layouts/partials/programs/hero-single.html
+++ b/layouts/partials/programs/hero-single.html
@@ -9,7 +9,7 @@
     </div>
   </div>
 
-  <div id="#{{ urlize (i18n "programs.toc.essential") }}">
+  <div class="essential-container" id="#{{ urlize (i18n "programs.toc.essential") }}">
     <div class="container">
       {{- partial "programs/essential" . -}}
       <div class="buttons">
diff --git a/layouts/partials/programs/single.html b/layouts/partials/programs/single.html
index 5248c78232f5f47352dbddbae63ee24f85f6106e..44e430b0920830f605acd18dbb9f67593cb4d5c0 100644
--- a/layouts/partials/programs/single.html
+++ b/layouts/partials/programs/single.html
@@ -1,12 +1,15 @@
 <div class="document-content" itemscope itemtype="https://schema.org/EducationalOccupationalCredential">
+
+  <meta itemprop="name" content="{{ partial "PrepareHTML" .Title }}">
+  <meta itemprop="url" content="{{ .Permalink }}">
+
   {{ partial "toc/container.html"
-      (dict
+    (dict
           "toc" "programs/toc.html"
           "context" .
       )
-  }}
-  <meta itemprop="name" content="{{ partial "PrepareHTML" .Title }}">
-  <meta itemprop="url" content="{{ .Permalink }}">
+    }}
+
   {{- if .Params.image -}}
     {{- $id := .Params.image -}}
     {{- if isset .Params.image "id" -}}
diff --git a/layouts/partials/toc/container.html b/layouts/partials/toc/container.html
index b0322680512b7e301480f46d7f0fe74c482dad70..255253d1307bb3c4ca73b33126450c999fa206f9 100644
--- a/layouts/partials/toc/container.html
+++ b/layouts/partials/toc/container.html
@@ -1,6 +1,6 @@
-{{- $isTocNeeded := partial "IsTocNeeded" . -}}
+{{- $isTocPresent := .context.Params.design.toc.present -}}
 
-{{- if $isTocNeeded -}}
+{{- if $isTocPresent -}}
   {{- partial "toc/cta" -}}
 
   <div class="toc-container" aria-hidden="false" aria-labelledby="toc-title">
diff --git a/layouts/partials/toc/default.html b/layouts/partials/toc/default.html
index ae57cd0f5adb72ebaa6b374c6581d3cca8a458b5..2f071f86070095fd90a5e49119c8a745149cd551 100644
--- a/layouts/partials/toc/default.html
+++ b/layouts/partials/toc/default.html
@@ -1,40 +1,7 @@
-{{- $show_aside := false -}}
-
-{{- $has_blocks := false -}}
-{{- range .context.Params.blocks -}}
-  {{- $has_blocks = true -}}
-  {{- if .title -}}
-    {{- $show_aside = true -}}
-  {{- end -}}
-{{- end -}}
-
-{{- if .context.Pages -}}
-  {{- if eq $has_blocks false -}}
-    {{- $show_aside = true -}}
-  {{- end -}}
-{{- end -}}
-
-{{- if .context.Content -}}
-  {{- if eq $has_blocks false -}}
-    {{- $show_aside = true -}}
-  {{- end -}}
-{{- end -}}
-
-{{- if .category -}}
-  {{- if eq $has_blocks false -}}
-    {{- $show_aside = true -}}
-  {{- end -}}
-{{- end -}}
-
-{{- if $show_aside }}
-  <nav class="toc toc-pages" id="nav-toc" aria-labelledby="toc-title">
-    <ol>
-      {{- if .context.Params.blocks -}}
-        {{- partial "blocks/toc.html" .context.Params.blocks -}}
-      {{- end -}}
-    </ol>
-  </nav>
-
-{{ end -}}
-
-
+<nav class="toc toc-pages" id="nav-toc" aria-labelledby="toc-title">
+  <ol>
+    {{- if .context.Params.blocks -}}
+      {{- partial "blocks/toc.html" .context.Params.blocks -}}
+    {{- end -}}
+  </ol>
+</nav>
diff --git a/layouts/posts/single.html b/layouts/posts/single.html
index 562c3c3a7584fbabfae0605a9fa4e3fc67193e51..5ba452ec46abc8dda2ed9e1e32a948d87a9fbf2a 100644
--- a/layouts/posts/single.html
+++ b/layouts/posts/single.html
@@ -1,15 +1,14 @@
 {{ define "main" }}
   {{ partial "posts/hero-single.html" . }}
 
-  <div class="document-content" itemscope itemtype="https://schema.org/NewsArticle">
-
-    {{ partial "toc/container.html"
-        (dict
-            "toc" "toc/default.html"
-            "context" .
-        )
+  {{ partial "toc/container.html"
+      (dict
+          "toc" "toc/default.html"
+          "context" .
+      )
     }}
 
+  <div class="document-content" itemscope itemtype="https://schema.org/NewsArticle">
     <meta itemprop="headline" content="{{ partial "PrepareHTML" .Title }}">
     <meta itemprop="url" content="{{ .Permalink }}">
     {{ if .Date }}<meta itemprop="datePublished" content="{{ .Date.Format "2006-01-02T15:04" }}">{{ end }}
@@ -18,7 +17,6 @@
 
     {{ partial "posts/aside.html" . }}
 
-
     {{ partial "posts/chapo.html" (dict
         "context" .
         "block_wrapped" true