diff --git a/assets/js/theme/design-system/modal.js b/assets/js/theme/design-system/modal.js
index b20356291000fb070a6cd0245540ea3fba97f284..a73a8a560b755c718ae7f72c39d43721a9a2e653 100644
--- a/assets/js/theme/design-system/modal.js
+++ b/assets/js/theme/design-system/modal.js
@@ -35,6 +35,9 @@ class Modal {
         window.addEventListener('keydown', (event) => {
             if (event.keyCode === 27 || event.key === 'Escape') {
                 this.toggle(false);
+            } else if (event.key === "Tab") {
+                // TODO fix a11y inner focus
+                // this.innerFocus(event);
             }
         });
 
@@ -45,12 +48,39 @@ class Modal {
         });
     }
 
+    innerFocus(event) {
+        const focusables = 'a, button, input, textarea, select, details, [tabindex], [contenteditable="true"]';
+        const elements = this.element.querySelectorAll(focusables);
+
+        const focusableInDialog = Array.from(elements).filter(element => element.tabIndex >= 0);
+        const firstFocusable = focusableInDialog[0];
+        const lastFocusable = focusableInDialog.at(-1);
+
+        console.log(firstFocusable, lastFocusable)
+        if (!this.state.isOpened) {
+            return;
+        }
+
+        if (!this.element.contains(event.target) && event.shiftKey) {
+            lastFocusable.focus();
+        }
+        else if (!this.element.contains(event.target)) {
+            firstFocusable.focus();
+        }
+
+        this.closeButtons[0].focus();
+    }
+
     toggle(open = !this.state.isOpened) {
         this.state.isOpened = open;
         const classAction = this.state.isOpened ? 'add' : 'remove';
 
         this.element.setAttribute('aria-hidden', !this.state.isOpened);
         document.documentElement.classList[classAction](CLASSES.modalOpened);
+
+        if (!this.state.isOpened) {
+            this.button.focus();
+        }
     }
 
 }
diff --git a/assets/sass/_theme/design-system/layout.sass b/assets/sass/_theme/design-system/layout.sass
index 36bfc05f694f8a40c30986f8319dee74427c2ce0..1fab3885b1f56a1e1afccc22d26965e008e1c4e9 100644
--- a/assets/sass/_theme/design-system/layout.sass
+++ b/assets/sass/_theme/design-system/layout.sass
@@ -127,5 +127,6 @@ details
                 @include button-reset
                 @include icon-block(close, before)
                 position: absolute
+                padding: 0
                 right: 0
                 top: 0
\ No newline at end of file
diff --git a/assets/sass/_theme/sections/papers.sass b/assets/sass/_theme/sections/papers.sass
index 38d0927df81be61d1d7b24b6fc116e0848fae7ef..c02f9ae1056b37c2b117c233443d299446fff213 100644
--- a/assets/sass/_theme/sections/papers.sass
+++ b/assets/sass/_theme/sections/papers.sass
@@ -47,57 +47,81 @@
             
 
 .papers__page
+    @include media-breakpoint-down(desktop)
+        .document-content
+            aside
+                order: 2
+                padding: 0 half($grid-gutter-sm)
+    @include media-breakpoint-up(desktop)
+        .paper-sidebar
+            @include container-margin-left
+            margin-top: 0
+            top: 0
+            left: 0
+            height: 100%
+            position: absolute
+            width: col-outside-container(4)
+            // > div
+            //     @include sticky($spacing1)
+            .toc-container
+                border-top: 1px solid $color-border
+                padding-top: $spacing1
+                position: static
+                margin-left: 0
+            .media
+                width: col(2, 4)
+
     .document-content
-        .container
+        .content
+            margin-bottom: $spacing4
             @include media-breakpoint-up(desktop)
-                @include grid
-            .content
+                padding-left: offset(4)
+            section + section
+                margin-top: $spacing2
                 @include media-breakpoint-up(desktop)
-                    grid-column: 5 / 12
-                section + section
+                    margin-top: $spacing4
+            .squared-button
+                margin-bottom: 0
+                margin-top: $spacing0
+                width: auto
+            h2
+                margin-bottom: $spacing0
+            .paper-essentials
+                h2
+                    @include meta
                     margin-top: $spacing2
-                    @include media-breakpoint-up(desktop)
-                        margin-top: $spacing4
-                .squared-button
-                    margin-bottom: 0
-                    margin-top: $spacing0
-                    width: auto
-                .paper-essentials
-                    h2
-                        @include meta
+                    &:first-of-type
+                        margin-top: 0
+            .paper-body
+                h2
+                    margin-bottom: $spacing2
+            .paper-authors
+                h2
+                    @include h3
+                .authors
+                    @include grid(2, desktop)
+                    article
                         margin-top: $spacing2
-                        &:first-of-type
-                            margin-top: 0
-                .paper-body
-                    h2
-                        margin-bottom: $spacing2
-                .paper-authors
-                    h2
-                        @include h3
-                    .authors
-                        @include grid(2, desktop)
-                        article
-                            margin-top: $spacing2
-                            .name
-                                a
-                                    @include h4
-                                    @include stretched-link(before)
-                                    text-decoration: none
-            .document-nav
-                @include media-breakpoint-up(desktop)
-                    grid-column: 1 / 5
-                    img
-                        width: col(2, 4)
-                dl
-                    margin: 0
-                    dt
-                        @include meta
-                        margin-bottom: $spacing0
-                        &:not(:first-of-type)
-                            margin-top: $spacing2
-                    dd:first-of-type
-                        a
-                            display: flex
-                            flex-direction: column
-                            span
-                                order: 3
+                        .name
+                            a
+                                @include h4
+                                @include stretched-link(before)
+                                text-decoration: none
+        .document-nav
+            // @include media-breakpoint-up(desktop)
+            //     grid-column: 1 / 5
+            //     img
+            //         width: col(2, 4)
+            dl
+                margin: 0
+                dt
+                    @include meta
+                    margin-bottom: $spacing0
+                    &:not(:first-of-type)
+                        margin-top: $spacing2
+                dd:first-of-type
+                    a
+                        display: flex
+                        flex-direction: column
+                        span
+                            order: 3
diff --git a/layouts/papers/single.html b/layouts/papers/single.html
index 634c48f1d9c6c71e54ee0a07b380275df8468fda..c150270cf582bc17d617ece80651ea6b68202b49 100644
--- a/layouts/papers/single.html
+++ b/layouts/papers/single.html
@@ -9,21 +9,19 @@
         ) -}}
 <div class="document-content" itemscope itemtype="https://schema.org/ScholarlyArticle">
   <meta itemprop="name" content="{{ partial "PrepareHTML" .Title }}">
+  {{ partial "papers/sidebar.html" . }}
 
   <div class="container">
-    
-    {{ partial "papers/document-nav.html" . }}
-
     <div class="content">
       {{ partial "papers/abstract.html" . }}
       {{ partial "papers/authors.html" . }}
       {{ partial "papers/body.html" . }}
       {{ partial "papers/references.html" . }}
     </div>
-    
   </div>
+
+  {{ partial "blocks/list.html" . }}
 </div>
-{{ partial "blocks/list.html" . }}
 
 
 {{ end }}
diff --git a/layouts/partials/commons/menu.html b/layouts/partials/commons/menu.html
index 531f292ed865f4fd0c5774873782ab493ddfaefd..3d1bb6762b5047af475dc42509d38c09fdffedf6 100644
--- a/layouts/partials/commons/menu.html
+++ b/layouts/partials/commons/menu.html
@@ -29,7 +29,7 @@
     {{- end -}}
     {{- if and (gt (len .children) 0) $dropdown (eq $level 1) -}}
       {{- $hasDropdown = true -}}
-      {{- $attr = printf "id=\"dropdown-%s\" role=\"button\" aria-expanded=\"false\" aria-pressed=\"false\" tabindex=\"0\"" $slug -}}
+      {{- $attr = printf "id=\"dropdown-%s\" role=\"button\" aria-expanded=\"false\" tabindex=\"0\"" $slug -}}
     {{- end -}}
     {{- if and (hasPrefix .target "http") (eq .kind "url") -}}
       {{- $attr = " target=\"_blank\" rel=\"noreferrer\"" -}}
diff --git a/layouts/partials/papers/modal.html b/layouts/partials/papers/modal.html
index fcd07d34f6fb79e6742ee1182cb0cec690ed1ffa..d6de154ec25903674ec2adeb85b85ffff4098aff 100644
--- a/layouts/partials/papers/modal.html
+++ b/layouts/partials/papers/modal.html
@@ -1,7 +1,7 @@
-<div class="modal paper-modal" id="{{ .modalId }}" tabindex="-1" aria-labelledby="{{ .modalId }}Label" aria-hidden="true" aria-modal="true">
+<div class="modal paper-modal" id="{{ .modalId }}" aria-labelledby="{{ .modalId }}-label" aria-hidden="true" aria-modal="true" role="dialog">
   <div class="modal-content">
     <div class="modal-header">
-      <h3 class="modal-title" id="{{ .modalId }}Label">{{ .title }}</h3>
+      <h3 class="modal-title" id="{{ .modalId }}-label">{{ .title }}</h3>
       <button class="close" type="button" aria-label="{{ i18n "commons.close" }}"></button>
     </div>
     <div class="modal-body">
diff --git a/layouts/partials/papers/sidebar.html b/layouts/partials/papers/sidebar.html
new file mode 100644
index 0000000000000000000000000000000000000000..bd22031cf35d18d5464bb7ff5082b377a6f1d9e2
--- /dev/null
+++ b/layouts/partials/papers/sidebar.html
@@ -0,0 +1,77 @@
+<div class="paper-sidebar">
+  <div>
+    <aside class="document-nav">
+      <dl>
+        {{ range .GetTerms "volumes" }}
+          <dt>{{ i18n "volumes.singular_name" }}</dt>
+          <dd itemprop="isPartOf" itemscope itemtype="https://schema.org/PublicationVolume">
+            <a href="{{ .Permalink }}" itemprop="url">
+              <span itemprop="name">{{ .Title }}</span>
+              <div class="media">
+                {{- if .Params.image -}}
+                  {{- partial "commons/image.html"
+                        (dict
+                          "image"    .Params.image
+                          "alt"      .Title
+                          "mobile"   "327x388"
+                          "tablet"   "208x247"
+                          "desktop"  "408x485"
+                        ) -}}
+                {{- else if site.Params.default_image.url -}}
+                  {{- partial "commons/image-default.html" (dict "class" "img-fluid") -}}
+                {{- end -}}
+              </div>
+            </a>
+          </dd>
+        {{ end }}
+        
+        {{ if isset .Params "type" }}
+          <dt>{{ i18n "volumes.nature" }}</dt>
+          <dd>{{ partial "PrepareHTML" .Params.Type }}</dd>
+        {{ end }}
+    
+        {{ if isset .Params "keywords" }}
+          {{ if gt ( len .Params.keywords ) 0 }}
+            <dt>{{ i18n "volumes.keywords" }}</dt>
+            <dd itemprop="keywords">{{ delimit .Params.Keywords " " }}</dd>
+          {{ end }}
+        {{ end }}
+    
+        {{ if isset .Params "lang" }}
+          <dt>{{ i18n "commons.language" }}</dt>
+          <dd itemprop="inLanguage" content="{{ .Params.Lang_iso }}">{{ .Params.Lang }}</dd>
+        {{ end }}
+    
+        {{ if .Date }}
+          <dt>{{ i18n "commons.date" }}</dt>
+          <dd>
+            <time itemprop="datePublished" datetime="{{ .Date | time.Format "2006-01-02T15:04" }}">{{ .Date | time.Format ":date_long" }}</time>
+          </dd>
+        {{ end }}
+    
+        {{ with .Params.dates.published }}
+          <dt>{{ i18n "papers.dates.published" }}</dt>
+          <dd>
+            <time itemprop="datePublished" datetime="{{ . | time.Format "2006-01-02T15:04" }}">{{ . | time.Format ":date_long" }}</time>
+          </dd>
+        {{ end }}
+    
+        {{ with .Params.dates.accepted }}
+          <dt>{{ i18n "papers.dates.accepted" }}</dt>
+          <dd>
+            <time itemprop="datePublished" datetime="{{ . | time.Format "2006-01-02T15:04" }}">{{ . | time.Format ":date_long" }}</time>
+          </dd>
+        {{ end }}
+    
+        {{ with .Params.dates.received }}
+          <dt>{{ i18n "papers.dates.received" }}</dt>
+          <dd>
+            <time itemprop="datePublished" datetime="{{ . | time.Format "2006-01-02T15:04" }}">{{ . | time.Format ":date_long" }}</time>
+          </dd>
+        {{ end }}
+      </dl>
+    </aside>
+  </div>
+</div>
+
+