diff --git a/assets/js/theme/nav/mainMenu.js b/assets/js/theme/nav/mainMenu.js
index 3fa3cace2a5cf55ac582e18e0c2c91c4b0cc1665..d4f78d406f7b85da76cea30e7ee3b62a944c0b4b 100644
--- a/assets/js/theme/nav/mainMenu.js
+++ b/assets/js/theme/nav/mainMenu.js
@@ -2,6 +2,7 @@ import breakpoints from '../utils/breakpoints';
 
 const CLASSES = {
     mainMenuOpened: 'is-opened',
+    isAnimating: 'is-animating',
     scrollingDown: 'is-scrolling-down',
     menusOpened: 'has-menu-opened',
     sticky: 'is-sticky'
@@ -100,6 +101,15 @@ class MainMenu {
     updateOverlay () {
         const classAction = this.state.hasDropdownOpened || this.state.isOpened ? 'add' : 'remove';
         document.documentElement.classList[classAction](CLASSES.menusOpened);
+
+        // Add class for animation transition
+        let transitionDuration = window.getComputedStyle(this.element).transitionDuration;
+        // TODO : regex for getting 'ms' or other units value
+        transitionDuration = parseFloat(transitionDuration.replace('s', ''));
+        document.documentElement.classList.add(CLASSES.isAnimating);
+        setTimeout(() => {
+            document.documentElement.classList.remove(CLASSES.isAnimating);
+        }, transitionDuration * 1000);
     }
 
     closeEverything () {
diff --git a/assets/sass/_theme/_configuration.sass b/assets/sass/_theme/_configuration.sass
index 6575286825c39d1f26f7820af0185bd60ebc7d30..2900af4139b4242e3b6188b64a2a61fae9e6e097 100644
--- a/assets/sass/_theme/_configuration.sass
+++ b/assets/sass/_theme/_configuration.sass
@@ -75,8 +75,9 @@ $header-color: $main-color !default
 $header-hover-color: rgba($header-color, 0.7) !default // TODO : Réflechir à plus élégant / générique
 $header-background-color: $main-background-color !default
 $header-sticky-enabled: true !default
-$header-sticky-transition: 0.3s !default
-$header-dropdown-transition: 0.3s !default
+$header-transition: 0.3s !default
+$header-sticky-transition: $header-transition !default
+$header-dropdown-transition: $header-transition !default
 $header-height: 61px !default
 $header-height-md: 74px !default
 
@@ -159,7 +160,10 @@ $block-testimonials-pagination-progress-background: $main-color !default
 $block-key_figures-number-font-size: px2rem(60)
 
 // Sections
-$post-media-background: darken($main-background-color, 2) !default
+$widget-media-background: darken($main-background-color, 2) !default
+$widget-title-size: $h4-size !default
+
+$post-media-background: $widget-media-background !default
 $post-media-aspect-ratio: 50% !default
 $post-categories-color: lighten($main-color, 2) !default
 $post-time-color: lighten($main-color, 2) !default
diff --git a/assets/sass/_theme/_utils.sass b/assets/sass/_theme/_utils.sass
index 21805a7e01dc6d30e3dd47191b7581f1db209e40..ff8f7f3d7005592d6da71d894aeb4bd61a440ea5 100644
--- a/assets/sass/_theme/_utils.sass
+++ b/assets/sass/_theme/_utils.sass
@@ -49,11 +49,12 @@
 
 // NEW UTILS
 
-@mixin icon($icon-name: '', $pseudo-element: before)
+@mixin icon($icon-name: '', $pseudo-element: before, $font-size: px2rem(10))
     &::#{$pseudo-element}
         content: map-get($icons, $icon-name)
         display: inline-block
         font-family: 'Icon'
+        font-size: $font-size
         font-style: normal
         font-variant: normal
         font-weight: normal
@@ -99,26 +100,45 @@
         top: 0
         z-index: $zindex-stretched-link
 
-@mixin aspect-ratio($width, $height, $selector: null)
-    @if $selector
-        #{$selector}
-            aspect-ratio: #{$width}/#{$height}
-            display: block
-            width: 100%
-        @supports not (aspect-ratio: 1)
-            position: relative
-            &::before
-                content: ''
-                padding-top: ($height / $width) * 100%
-                width: 100%
-            #{$selector}
-                bottom: 0
-                left: 0
-                position: absolute
-                right: 0
-                top: 0
-    @else
+@mixin aspect-ratio($width, $height, $selector: 'iframe', $background: false)
+    @if $background
+        aspect-ratio: #{$width}/#{$height}
+        background: $background
+    #{$selector}
         aspect-ratio: #{$width}/#{$height}
+        display: block
+        width: 100%
+    @supports not (aspect-ratio: 1)
+        position: relative
+        &::before
+            content: ''
+            padding-top: ($height / $width) * 100%
+            width: 100%
+        #{$selector}
+            bottom: 0
+            left: 0
+            position: absolute
+            right: 0
+            top: 0
+
+@mixin widget($background: null)
+    position: relative
+    display: flex
+    flex-direction: column
+    .media
+        @include aspect-ratio(2, 1, 'img', $background)
+        margin-bottom: $spacing1
+        order: -1
+        overflow: hidden
+    .title
+        font-size: $widget-title-size
+        margin-bottom: px2rem(5)
+    a
+        @include stretched-link
+    p
+        margin-bottom: 0
+        margin-top: 0
+
 
 @mixin visually-hidden
     clip: rect(0,0,0,0) !important
@@ -147,6 +167,7 @@
     list-style: none
     padding-left: 0
     margin-bottom: 0
+    margin-top: 0
 
 @mixin inset($top: 0, $right: $top, $bottom: $top, $left: $top)
     inset: $top $right $bottom $left
diff --git a/assets/sass/_theme/blocks/gallery.sass b/assets/sass/_theme/blocks/gallery.sass
index 52d135d73e81bf14ab12c793a2ae4003cc34b151..2157d4602df62889fafb2acc843f917434f851ed 100644
--- a/assets/sass/_theme/blocks/gallery.sass
+++ b/assets/sass/_theme/blocks/gallery.sass
@@ -4,15 +4,13 @@
         align-items: center
         .description
             width: col(7)
-            // @extend .col-md-7
-            // @include media-breakpoint-down(md)
-            //     margin-top: 2rem
 
     figure
+        display: block
         margin-bottom: 0
         > a,
-        > picture
-            // @extend .figure-img
+        img,
+        picture
             display: block
 
         > a
@@ -20,9 +18,6 @@
             &:hover
                 opacity: .7
 
-        picture
-            display: block
-
         img
             height: auto
             width: 100%
@@ -41,6 +36,8 @@
     &--grid
         .gallery
             @include grid(3, md)
+            @include in-page-without-aside
+                @include grid(5, md)
 
     &--carousel
         .container
@@ -75,7 +72,6 @@
             &__arrows
                 margin-left: -13px
                 order: 2
-                // padding-top: $grid-gutter-width
                 @media (min-height: 800px)
                     padding-top: px2rem(40)
             &__arrow
diff --git a/assets/sass/_theme/blocks/pages.sass b/assets/sass/_theme/blocks/pages.sass
index e41707a27669d5979533c5b1d24d761b95d8dd9e..00a3d1eb3c67dc0d8e3841861524ce8bf20307d4 100644
--- a/assets/sass/_theme/blocks/pages.sass
+++ b/assets/sass/_theme/blocks/pages.sass
@@ -55,7 +55,11 @@
                     color: $block-pages-card-page-color
                 .more
                     @include link
+                    @extend .small
                     text-decoration-color: $block-pages-card-page-color
+                    text-decoration-line: underline
+                    text-decoration-thickness: 1px
+                    text-underline-offset: 3px
                 a,
                 .more
                     transition: text-decoration-color .3s ease, color .3s ease
@@ -81,4 +85,3 @@
             .title
                 a::before
                     content: none
-    
\ No newline at end of file
diff --git a/assets/sass/_theme/blocks/video.sass b/assets/sass/_theme/blocks/video.sass
index 1584b3651d52af261f174fedd88ae5f298cd024d..3681d9d500ae4b79ee2d5d7bf56bf4fc434d00b9 100644
--- a/assets/sass/_theme/blocks/video.sass
+++ b/assets/sass/_theme/blocks/video.sass
@@ -6,8 +6,8 @@
     .transcription
         margin-top: $spacing1
 
-    @include media-breakpoint-up(md)
-        @include in-page-without-aside
-            .block-content
-                margin-left: col(2)
-                width: col(8)
+    // @include media-breakpoint-up(md)
+    //     @include in-page-without-aside
+    //         .block-content
+    //             margin-left: col(2)
+    //             width: col(8)
diff --git a/assets/sass/_theme/design-system/hero.sass b/assets/sass/_theme/design-system/hero.sass
index a27216ec1112c41075b7ee2dc3e31b81fe8c6152..1572be38a83af054af17f89eea553d3e8414a91d 100644
--- a/assets/sass/_theme/design-system/hero.sass
+++ b/assets/sass/_theme/design-system/hero.sass
@@ -58,3 +58,17 @@
                 left: 0
                 right: 0
                 top: 0
+
+    /* TODO refacto */
+    .title-avatar
+        @include media-breakpoint-up(md)
+            align-items: flex-end
+            display: flex
+            justify-content: space-between
+            margin-bottom: $spacing1
+            h1
+                margin-bottom: 0
+        > div
+            width: col(8)
+            @include media-breakpoint-up(md)
+                width: col(2)
diff --git a/assets/sass/_theme/design-system/layout.sass b/assets/sass/_theme/design-system/layout.sass
index 4f8dbce3401dbfe22d9039fe90227c7da233c4d5..143a1e251fed0af4740f5f84a21efb5f3f1850a4 100644
--- a/assets/sass/_theme/design-system/layout.sass
+++ b/assets/sass/_theme/design-system/layout.sass
@@ -9,9 +9,9 @@ body
     @media (prefers-reduced-motion: reduce)
         *
             transition-duration: 0s !important
-    &:not(.is-loaded)
-        *
-            transition-duration: 0s !important
+    // &:not(.is-loaded)
+    //     *
+    //         transition-duration: 0s !important
 
 
 main
diff --git a/assets/sass/_theme/design-system/nav.sass b/assets/sass/_theme/design-system/nav.sass
index c062254a0b2bf923237f65e0856b99aac0e31ca9..3cdd4a4c1103284e0be95557af3fd6571168810b 100644
--- a/assets/sass/_theme/design-system/nav.sass
+++ b/assets/sass/_theme/design-system/nav.sass
@@ -50,8 +50,10 @@
             @include grid(1)
         > li
             > a, span
-                padding: $spacing1
+                @include icon('caret', 'after')
                 display: block
+                padding: $spacing1
+
             &:last-child a
                 padding-right: 0
         li.has-children
@@ -111,20 +113,31 @@
                         + .dropdown-menu
                             display: block
 
+// TODO : Est-ce au bon endroit ?
 body
     &::after
+        @include inset(0)
         background-color: $body-overlay-color
         content: ""
-        display: none
-        inset: 82px 0 0 0
+        pointer-events: none
         position: fixed
+        opacity: 0
+        visibility: hidden
+        transition: opacity $header-transition
         z-index: $zindex-body-overlay
+
     html.has-menu-opened &
         &::after
             display: block
-            animation-duration: $header-dropdown-transition
-            animation-fill-mode: both
-            animation-name: showIn
+            opacity: 1
+            pointer-events: inherit
+            visibility: inherit
+
+    html.is-animating:not(.has-menu-opened) &
+        &::after
+            display: block
+            visibility: inherit
+            opacity: 0
 
 .share
     display: flex
diff --git a/assets/sass/_theme/design-system/top.sass b/assets/sass/_theme/design-system/top.sass
new file mode 100644
index 0000000000000000000000000000000000000000..8ccbfc8b861b8ab73f846361aa820f3683f0c820
--- /dev/null
+++ b/assets/sass/_theme/design-system/top.sass
@@ -0,0 +1,28 @@
+/* TODO à renomer */
+.top
+    align-items: baseline
+    display: flex
+    flex-wrap: wrap
+    justify-content: space-between
+    margin-bottom: $spacing1
+    position: relative
+    h2, p
+        margin-bottom: 0
+    h2
+        a
+            @include stretched-link
+    div
+        margin-top: px2rem(5)
+        p
+            @include media-breakpoint-up(lg)
+                width: col(8)
+    .link
+        @extend .link-more
+
+    // Polyfill flex-wrap
+    @supports not (flex-wrap: wrap)
+        display: block
+        h2
+            display: inline-block
+        .link
+            float: right
diff --git a/assets/sass/_theme/hugo-osuny.sass b/assets/sass/_theme/hugo-osuny.sass
index 530513908b8e118a342457102b43b8b57350a4d2..4e96a4646c6980a80d2e9dbd1aa528a24eefbca4 100644
--- a/assets/sass/_theme/hugo-osuny.sass
+++ b/assets/sass/_theme/hugo-osuny.sass
@@ -23,6 +23,7 @@
 @import "design-system/nav"
 @import "design-system/table"
 @import "design-system/table_of_content"
+@import "design-system/top"
 @import "design-system/typography"
 
 // Blocks
diff --git a/assets/sass/_theme/sections/articles.sass b/assets/sass/_theme/sections/articles.sass
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..536aa46f4e06fbacaae56fcd4999329881edd4af 100644
--- a/assets/sass/_theme/sections/articles.sass
+++ b/assets/sass/_theme/sections/articles.sass
@@ -0,0 +1,6 @@
+.article
+    @include widget
+
+.articles
+    @include grid(2, md)
+    @include grid(3, lg)
diff --git a/assets/sass/_theme/sections/diplomas.sass b/assets/sass/_theme/sections/diplomas.sass
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..6063a041870949e00067059d19078d7e3a2d4dba 100644
--- a/assets/sass/_theme/sections/diplomas.sass
+++ b/assets/sass/_theme/sections/diplomas.sass
@@ -0,0 +1,48 @@
+ul.diplomas
+    @include list-reset
+    > li
+        margin-bottom: $spacing3
+        > a
+            @extend .h3
+        .programs
+            li
+                display: block
+        .program
+            div
+                @include media-breakpoint-up(md)
+                    display: flex
+                    > p
+                        width: col(6)
+            .title
+                @extend .h4
+
+.diplomas-select
+    text-align: right
+    position: relative
+    @extend .h3
+    button
+        @include button-reset
+        @include icon('caret', 'after')
+
+    .dropdown-menu
+        @include inset(100%, 0, auto, auto)
+        background-color: black
+        position: absolute
+        @include media-breakpoint-down(md)
+            // padding-left: $container-gutter-width
+            // padding-right: $container-gutter-width
+        &,
+        a
+            color: white
+            display: block
+        a
+            padding: $spacing0
+            white-space: normal
+            &:not(:first-child)
+                border-top: 1px solid $main-border-color
+            @include media-breakpoint-up(md)
+                font-size: px2rem(22)
+            &:hover
+                background-color: lighten(black, 3)
+            &:focus
+                color: black
\ No newline at end of file
diff --git a/assets/sass/_theme/sections/organizations.sass b/assets/sass/_theme/sections/organizations.sass
index 8e145f46904e10c09e3f31e62e819a9b53b0b936..035c2b618322243f42745e5f32d3cb7642aac627 100644
--- a/assets/sass/_theme/sections/organizations.sass
+++ b/assets/sass/_theme/sections/organizations.sass
@@ -1,3 +1,6 @@
+.organization
+    @include widget
+
 .organizations
     @include grid(2)
     @include grid(3, md)
diff --git a/assets/sass/_theme/sections/pages.sass b/assets/sass/_theme/sections/pages.sass
index 4c3970e94ac82f85c33e08207f2103e1d7d64931..2f648c7c86c530d44d790b42b19753c08a58e4f6 100644
--- a/assets/sass/_theme/sections/pages.sass
+++ b/assets/sass/_theme/sections/pages.sass
@@ -1,31 +1,9 @@
 .page
-    position: relative
-    > div:first-of-type
-        padding-left: 0
-        padding-right: 0
-
-    .media
-        // @extend .card-media
+    @include widget
 
     .title
-        @extend .h4
-        margin-bottom: 0
         a
-            @include stretched-link()
             @extend .link-more
-            font-size: px2rem(22)
-            line-height: px2rem(30)
-
-        & + p
-            margin-top: .5rem
-
-        & ~ .more
-            margin-top: auto
-    .more
-        @extend .small
-        text-decoration-line: underline
-        text-decoration-thickness: 1px
-        text-underline-offset: 3px
 
 .pages
     @include grid(2, md)
diff --git a/assets/sass/_theme/sections/persons.sass b/assets/sass/_theme/sections/persons.sass
index fc633106292be6f96aab90960c1c7e17b40d95cf..034ee46df7a282bcd134a9aa4034dade5f24d5c1 100644
--- a/assets/sass/_theme/sections/persons.sass
+++ b/assets/sass/_theme/sections/persons.sass
@@ -1,12 +1,5 @@
-/* TODO refacto widget */
 .person
-    position: relative
-    display: flex
-    flex-direction: column
-
-    p
-        margin-bottom: 0
-        margin-top: 0
+    @include widget
 
     .avatar
         margin-bottom: $spacing1
@@ -14,12 +7,9 @@
         width: px2rem(76)
 
     .name
-        a
-            @include stretched-link
-            // @include link
-
-    .name ~ p
-        @extend .small
+        margin-bottom: px2rem(5)
+        & ~ p
+            @extend .small
 
     @include media-breakpoint-down(md)
         display: block
@@ -35,10 +25,34 @@
             margin-bottom: 0
 
 
-.persons
+section.persons,
+div.persons
     @include grid(1)
     @include grid(2, md)
     @include grid(3, lg)
+    @include grid(4, xl)
+    @include grid(5, xxl)
+
+
+ol.persons
+    @include list-reset
+    > li
+        border-bottom: 1px solid $main-border-color
+        padding-bottom: $spacing1
+        padding-top: $spacing1
+        position: relative
+        p
+            margin-bottom: 0
+        a
+            @include stretched-link
+
+        @include media-breakpoint-up(md)
+            align-items: baseline
+            display: flex
+            > p
+                width: col(5)
+                & + p
+                    width: col(7)
 
 
 .avatar
@@ -62,3 +76,36 @@
 
     img
         object-fit: cover
+
+/* TODO revoir ce nom */
+.taxonomies
+    @include list-reset
+    margin-bottom: $spacing3
+    @include media-breakpoint-down(md)
+        flex-direction: column
+    @include media-breakpoint-up(md)
+        text-align: right
+    li
+        @include media-breakpoint-down(md)
+            &:not(last-child)
+                margin-bottom: $spacing1
+        @include media-breakpoint-up(md)
+            display: inline-block
+            &:not(:last-child)
+                margin-right: $spacing1
+    a
+        @extend .link-more
+
+
+.persons__page
+    .informations
+        @include grid
+        margin-bottom: $spacing2
+        > div
+            &:first-of-type
+                grid-column: 1 / 9
+            &:nth-of-type(2)
+                grid-column: 9 / 13
+
+        .lead + div
+            margin-top: $spacing2
diff --git a/assets/sass/_theme/sections/posts.sass b/assets/sass/_theme/sections/posts.sass
index 455e0691aaec8fa8485371adc70f6d344d4aeeb3..f7983127cab42c23b3c49c23cbaf382e8465bc5b 100644
--- a/assets/sass/_theme/sections/posts.sass
+++ b/assets/sass/_theme/sections/posts.sass
@@ -1,18 +1,7 @@
 .post
-    position: relative
-    display: flex
-    flex-direction: column
-    .media
-        background: $post-media-background
-        order: -1
-        &::before
-            content: ""
-            display: block
-            padding-top: $post-media-aspect-ratio
-
-    a
-        @include stretched-link
+    @include widget($post-media-background)
 
+    /* TODO toujours d'actualité ou propre à un site ?
     .author,
     .post-categories
         @extend .small
diff --git a/assets/sass/_theme/sections/programs.sass b/assets/sass/_theme/sections/programs.sass
index e098afc59226c45116a1bb092c41d1f7740b1f6d..3b4b6a995b0dacfa9b6b482d7584ff9476cd009a 100644
--- a/assets/sass/_theme/sections/programs.sass
+++ b/assets/sass/_theme/sections/programs.sass
@@ -1,4 +1,4 @@
-// .programs__section
+//.programs__section
 //     .page-with-blocks
 //         .hero
 //             margin-bottom: 3rem
@@ -46,6 +46,35 @@
 //             margin-top: -2rem
 //             @include grid(2, lg)
 
+
+.program
+    @include widget
+
+div.programs,
+section.programs
+    @include grid(2, md)
+    @include grid(3, xl)
+
+ol.programs
+    @include list-reset
+    > li
+        border-bottom: 1px solid $main-border-color
+        padding-bottom: $spacing1
+        padding-top: $spacing1
+        > .title
+            @extend .h3
+
+        @include media-breakpoint-up(md)
+            align-items: baseline
+            display: flex
+            > a,
+            > p
+                width: col(6)
+            > .title
+                & + a
+                    text-align: right
+
+
 .programs__section
     .lead
         padding-top: $spacing4
diff --git a/assets/sass/_theme/sections/volumes.sass b/assets/sass/_theme/sections/volumes.sass
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..f68c0343f9d14cb78e5a4e12087ca010b102e7da 100644
--- a/assets/sass/_theme/sections/volumes.sass
+++ b/assets/sass/_theme/sections/volumes.sass
@@ -0,0 +1,6 @@
+.volume
+    @include widget
+
+.volumes
+    @include grid(2, md)
+    @include grid(3, lg)
diff --git a/layouts/diplomas/list.html b/layouts/diplomas/list.html
index 8115cfd492f384ea915e37e8cd0d9ca7bc8e6aba..66ab3db671ce993d6e583b4c30694070c6ef3b65 100644
--- a/layouts/diplomas/list.html
+++ b/layouts/diplomas/list.html
@@ -2,12 +2,14 @@
   {{ partial "diplomas/hero-list.html" . }}
 
   <div class="container">
-    {{ partial "programs/image.html" .Params.image }}
+    {{ partial "diplomas/image.html" .Params.image }}
     {{ partial "diplomas/chapo.html" .Params.description_short }}
   </div>
   {{ partial "blocks/list.html" .Params.blocks }}
   <div class="container">
+    {{ .Scratch.Set "show_programs" true }}
     {{ partial "diplomas/diplomas.html" . }}
+    {{ .Scratch.Delete "show_programs" }}
   </div>
 
 {{ end }}
diff --git a/layouts/diplomas/term.html b/layouts/diplomas/term.html
index 46ca90d8007d6365b6759a2c5b06c3b1d43dab4f..8d248e7cdd1744f4c900373280bab72d0e4dd5f0 100644
--- a/layouts/diplomas/term.html
+++ b/layouts/diplomas/term.html
@@ -3,6 +3,6 @@
 
   {{ partial "blocks/list.html" .Params.blocks }}
   <div class="container">
-    {{ partial "programs/programs.html" .Pages }}
+    {{ partial "programs/programs-list.html" .Pages }}
   </div>
 {{ end }}
diff --git a/layouts/partials/diplomas/diplomas.html b/layouts/partials/diplomas/diplomas.html
index 274aebe097b5816fe0db1bd56fa0e7e5559bc12f..e4f78898b2ad0b8a5d52a33fd0909f3fff1c1ae3 100644
--- a/layouts/partials/diplomas/diplomas.html
+++ b/layouts/partials/diplomas/diplomas.html
@@ -1,3 +1,7 @@
+{{ $show_programs := false }}
+{{- if .Scratch.Get "show_programs" }}
+  {{ $show_programs = true }}
+{{ end -}}
 <ul class="diplomas">
   {{ range .Paginator.Pages }}
     <li>
@@ -7,6 +11,15 @@
           ({{ partial "PrepareHTML" . }})
         {{ end }}
       </a>
+      {{- if $show_programs }}
+        <ol class="programs">
+          {{- range .Pages -}}
+            <li>
+              {{ partial "programs/program.html" . }}
+            </li>
+          {{- end -}}
+        </ol>
+      {{ end -}}
     </li>
   {{ end }}
 </ul>
diff --git a/layouts/partials/persons/list-specific.html b/layouts/partials/persons/list-specific.html
index 6bcba593b7f64c0ead3a1fc4965855e96156636a..65a16fe4b23b134a81cf8086a2b963ac61ad395a 100644
--- a/layouts/partials/persons/list-specific.html
+++ b/layouts/partials/persons/list-specific.html
@@ -1,11 +1,14 @@
-<div class="persons">
+<ol class="persons">
   {{ range (.Paginate (.Pages.ByParam "last_name")).Pages }}
     {{ $person := site.GetPage (printf "/persons/%s" .Slug) }}
-    {{ if $person }}
-      <div>
-        {{ partial "persons/person.html" $person }}
-      </div>
+    {{ with $person }}
+      <li>
+        <p class="name"><a href="{{ .Permalink }}">{{ partial "PrepareHTML" .Title }}</a></p>
+        {{- if partial "GetTextFromHTML" .Params.description_short }}
+          <p>{{- partial "PrepareHTML" .Params.description_short -}}</p>
+        {{ end -}}
+      </li>
     {{ end }}
   {{ end }}
-</div>
+</ol>
 {{ partial "commons/pagination.html" . }}
diff --git a/layouts/partials/persons/list.html b/layouts/partials/persons/list.html
index 6ac115b1d2186d71b31f5a1e664f25dd7b1ab9c0..967bcc45c5808a62ab43acdbb075dd22a21e76ef 100644
--- a/layouts/partials/persons/list.html
+++ b/layouts/partials/persons/list.html
@@ -1,9 +1,12 @@
-<div class="persons">
+<ol class="persons">
   {{ $persons := .Pages.ByParam "last_name" }}
   {{ range (.Paginate $persons).Pages }}
-    <div>
-      {{ partial "persons/person.html" . }}
-    </div>
+    <li>
+      <p class="name"><a href="{{ .Permalink }}">{{ partial "PrepareHTML" .Title }}</a></p>
+      {{- if partial "GetTextFromHTML" .Params.description_short }}
+        <p>{{- partial "PrepareHTML" .Params.description_short -}}</p>
+      {{ end -}}
+    </li>
   {{ end }}
-</div>
+</ol>
 {{ partial "commons/pagination.html" . }}
diff --git a/layouts/partials/persons/persons-specific.html b/layouts/partials/persons/persons-specific.html
new file mode 100644
index 0000000000000000000000000000000000000000..6bcba593b7f64c0ead3a1fc4965855e96156636a
--- /dev/null
+++ b/layouts/partials/persons/persons-specific.html
@@ -0,0 +1,11 @@
+<div class="persons">
+  {{ range (.Paginate (.Pages.ByParam "last_name")).Pages }}
+    {{ $person := site.GetPage (printf "/persons/%s" .Slug) }}
+    {{ if $person }}
+      <div>
+        {{ partial "persons/person.html" $person }}
+      </div>
+    {{ end }}
+  {{ end }}
+</div>
+{{ partial "commons/pagination.html" . }}
diff --git a/layouts/partials/persons/persons.html b/layouts/partials/persons/persons.html
new file mode 100644
index 0000000000000000000000000000000000000000..6ac115b1d2186d71b31f5a1e664f25dd7b1ab9c0
--- /dev/null
+++ b/layouts/partials/persons/persons.html
@@ -0,0 +1,9 @@
+<div class="persons">
+  {{ $persons := .Pages.ByParam "last_name" }}
+  {{ range (.Paginate $persons).Pages }}
+    <div>
+      {{ partial "persons/person.html" . }}
+    </div>
+  {{ end }}
+</div>
+{{ partial "commons/pagination.html" . }}
diff --git a/layouts/partials/programs/index.html b/layouts/partials/programs/index.html
index 2f20bd90f1d114d7055c8dd78793fb4267e97147..fa6ae8245e9aee8040d04c427dfd97d0067e9267 100644
--- a/layouts/partials/programs/index.html
+++ b/layouts/partials/programs/index.html
@@ -2,24 +2,10 @@
   {{ partial "programs/image.html" .Params.image }}
   {{ partial "programs/chapo.html" .Params.description_short }}
 </div>
-
 {{ partial "blocks/list.html" .Params.blocks }}
-
-{{ $len := (len .Pages) }}
-{{ range $index, $programs := sort .Pages ".Params.position" }}
-  <div class="container">
-    <div class="programs">
-      <div class="highlighted">
-        {{ partial "programs/program.html" . }}
-      </div>
-      {{ range sort .Pages ".Params.position"  }}
-      <div>
-        {{ .Scratch.Set "with_image" true }}
-        {{ partial "programs/program.html" . }}
-        {{ .Scratch.Delete "with_image" }}
-      </div>
-      {{ end }}
-    </div>
-    {{ if ne (add $index 1) $len }}<hr>{{ end }}
-  </div>
-{{ end }}
+<div class="container">
+  {{ partial "diplomas/diplomas-select.html" . }}
+  {{ $programs := where .Site.Pages "Section" "programs" }}
+  {{ $programs = where $programs "Permalink" "!=" .FirstSection.Permalink }}
+  {{ partial "programs/programs-list.html" $programs }}
+</div>
diff --git a/layouts/partials/programs/program.html b/layouts/partials/programs/program.html
index 7a469d393fc9b5797c833864b850c436a56c1e33..dc14770fbd51c86d7c2d7c50d6fe5a619a575198 100644
--- a/layouts/partials/programs/program.html
+++ b/layouts/partials/programs/program.html
@@ -11,7 +11,7 @@
       </a>
     </p>
     {{ if (partial "GetTextFromHTML" .Params.presentation) }}
-      {{- partial "PrepareHTML" .Params.presentation -}}
+      <p>{{- partial "PrepareHTML" .Params.presentation -}}</p>
     {{ end }}
   </div>
   {{- if $with_image }}
diff --git a/layouts/partials/programs/programs-list.html b/layouts/partials/programs/programs-list.html
index 478142e49e9ebbcdc51947fb21e001e11da3c897..c718510e869aa23f7dc024bf08221b110ac2db63 100644
--- a/layouts/partials/programs/programs-list.html
+++ b/layouts/partials/programs/programs-list.html
@@ -3,7 +3,7 @@
   {{- range . -}}
     <li>
       {{- $title := partial "PrepareHTML" .Title -}}
-      <a href="{{ .Permalink }}" title="{{ safeHTML (i18n "commons.more_aria" (dict "Title" $title)) }}">
+      <a href="{{ .Permalink }}" class="title" title="{{ safeHTML (i18n "commons.more_aria" (dict "Title" $title)) }}">
         {{- $title -}}
       </a>
       {{- with .Params.diplomas -}}
diff --git a/layouts/persons/single.html b/layouts/persons/single.html
index 9dd53f146efae42458da855fc91eb515eb867c3e..3d522224cb76607e6951a893e405ad401764d3d1 100644
--- a/layouts/persons/single.html
+++ b/layouts/persons/single.html
@@ -27,7 +27,7 @@
           {{- end -}}
       {{- end -}}
 
-      <div class="content">
+      <div class="informations">
         <div>
           {{ if (partial "GetTextFromHTML" .Params.description_short) }}
             <div class="lead" itemprop="description">