diff --git a/themes/finc/js/common-finc.js b/themes/finc/js/common-finc.js
index 3b80a9ac86ae05382047455ec593beb1df9b27ad..033bc3db4de9f5a0cee61d87b654ca6b6d9993b5 100644
--- a/themes/finc/js/common-finc.js
+++ b/themes/finc/js/common-finc.js
@@ -8,27 +8,80 @@ function setupOffcanvas() {
       $('.close-offcanvas').focus(); // Set focus to the back button of the sidebar
       $('.sidebar .active').focus(); // Special case: account sidebar: set focus on the active element
     });
-  }
-  // Handle sidebar in case of config.ini [Site] offcanvas=false configuration
-  if ($('.sidebar').length > 0 && !($(document.body).hasClass("offcanvas"))) {
-    $('[data-toggle="offcanvas"]').click(function offcanvasClick(e) {
-      e.preventDefault();
-      window.location.href = '#myresearch-sidebar';
-      $('.close-offcanvas').focus(); // Set focus to the back button of the sidebar
-      $('.sidebar .active').focus(); // Special case: account sidebar: set focus on the active element
+
+    // Keep focus within sidebar on mobile
+    $('.sidebar').on('keydown', function (e) {
+      if (document.body.classList.contains('active') && $(document).width() <= 767) {
+        if (e.key === 'Escape') { // esc
+          $('.close-offcanvas').click();
+        }
+        if (e.key === 'Tab') { // tab
+          retainFocus(e, this);
+        }
+      }
     });
+  }
+  if ($('.sidebar').length > 0) {
+    // Handle sidebar in case of config.ini [Site] offcanvas=false configuration
+    if (!($(document.body).hasClass("offcanvas"))) {
+      $('[data-toggle="offcanvas"]').click(function offcanvasClick(e) {
+        e.preventDefault();
+        window.location.href = '#myresearch-sidebar';
+        $('.close-offcanvas').focus(); // Set focus to the back button of the sidebar
+        $('.sidebar .active').focus(); // Special case: account sidebar: set focus on the active element
+      });
+    }
+    // Handle sidebar in case of config.ini [Site] offcanvas=false configuration - END
+
     $('.close-offcanvas').click(function offcanvasClick(e) {
-      e.preventDefault();
-      window.location.href = '#content';
+      // Handle sidebar in case of config.ini [Site] offcanvas=false configuration
+      if (!($(document.body).hasClass("offcanvas"))) {
+        e.preventDefault();
+        window.location.href = '#content';
+      }
       $('.search-filter-toggle').focus(); // Set focus on the toggle button
     });
   }
 }
 
+/**
+ * Keyboard and focus controllers
+ * Copied from lightbox.js
+ */
+var FOCUSABLE_ELEMENTS = ['a[href]', 'area[href]', 'input:not([disabled]):not([type="hidden"]):not([aria-hidden])', 'select:not([disabled]):not([aria-hidden])', 'textarea:not([disabled]):not([aria-hidden])', 'button:not([disabled]):not([aria-hidden])', 'iframe', 'object', 'embed', '[contenteditable]', '[tabindex]:not([tabindex^="-"])'];
+function getFocusableNodes (element) {
+  let nodes = element.querySelectorAll(FOCUSABLE_ELEMENTS);
+  return Array.apply(null, nodes);
+}
+
+function retainFocus(event, panel) {
+  var focusableNodes = getFocusableNodes(panel);
+
+  // no focusable nodes
+  if (focusableNodes.length === 0)
+    return;
+
+  if (!panel.contains(document.activeElement)) {
+    focusableNodes[0].focus();
+  } else {
+    var focusedItemIndex = focusableNodes.indexOf(document.activeElement);
+
+    if (event.shiftKey && focusedItemIndex === 0) {
+      focusableNodes[focusableNodes.length - 1].focus();
+      event.preventDefault();
+    }
+
+    if (!event.shiftKey && focusableNodes.length > 0 && focusedItemIndex === focusableNodes.length - 1) {
+      focusableNodes[0].focus();
+      event.preventDefault();
+    }
+  }
+}
+
 /* use css class 'skip-to' to jump to landmark - RL */
 $(document).ready(function () {
   $(document).on('click enter',".skip-to", function (e) {
-    if (e.type === 'enter' && e.keyCode !== 13) {
+    if (e.type === 'enter' && e.key !== 'Enter') {
       return;
     }
 
diff --git a/themes/finc/templates/Recommend/SideFacets.phtml b/themes/finc/templates/Recommend/SideFacets.phtml
index 2f054bfd36fbfe3164257b376f1030d72bfaa23e..571a5a3d95eba6f0d1c6d32259647a64e592a3f3 100644
--- a/themes/finc/templates/Recommend/SideFacets.phtml
+++ b/themes/finc/templates/Recommend/SideFacets.phtml
@@ -57,7 +57,7 @@
     <div class="facet-group" id="side-panel-<?=$this->escapeHtmlAttr($title) ?>">
       <?php /* finc adds h3 and aria coding; also uses a instead of button for W3C validation - #19695 */ ?>
       <h3>
-        <a <?php if (in_array($title, $collapsedFacets)): ?>class="title collapsed" aria-expanded="false"<?php else: ?>class="title" aria-expanded="true"<?php endif ?> data-toggle="collapse" href="#side-collapse-<?=$this->escapeHtmlAttr($title) ?>" >
+        <a <?php if (in_array($title, $collapsedFacets)): ?>class="title collapsed" aria-expanded="false"<?php else: ?>class="title" aria-expanded="true"<?php endif ?> id="control-for-side-collapse-<?=$this->escapeHtmlAttr($title)?>" data-toggle="collapse" href="#side-collapse-<?=$this->escapeHtmlAttr($title) ?>" >
           <?php /* finc: add span #19934 */ ?>
           <?=$this->transEsc($cluster['label'])?> <span class="sr-only"><?=$this->transEsc('facet_select_hint') ?></span>
         </a>
diff --git a/themes/finc/templates/layout/layout.phtml b/themes/finc/templates/layout/layout.phtml
index cd069a76a703b03dc1af4665c1b009d38d66c547..88bdc236b6a6acebea9f3a5c6fabcbdb0293d94f 100644
--- a/themes/finc/templates/layout/layout.phtml
+++ b/themes/finc/templates/layout/layout.phtml
@@ -215,9 +215,9 @@ if (!isset($this->layout()->searchbox)) {
           <?php endif; ?>
         <?php endforeach; ?>
       <?php elseif (strcmp($this->layout()->userLang, 'de') == 0): ?>
-        <a class="sr-only skip-to" href="#myresearch-sidebar"><?=$this->transEsc($this->overrideSideFacetCaption ?? 'Narrow Search')?></a>
+        <a class="sr-only skip-to hidden-xs" href="#control-for-side-collapse-facet_avail"><?=$this->transEsc($this->overrideSideFacetCaption ?? 'Narrow Search')?></a>
       <?php else: ?>
-        <a class="sr-only skip-to" href="#myresearch-sidebar"><?=$this->transEsc('skip-to')?><?=strtolower($this->transEsc($this->overrideSideFacetCaption ?? 'Narrow Search'))?></a>
+        <a class="sr-only skip-to hidden-xs" href="#control-for-side-collapse-facet_avail"><?=$this->transEsc('skip-to')?><?=strtolower($this->transEsc($this->overrideSideFacetCaption ?? 'Narrow Search'))?></a>
       <?php endif; ?>
     <?php endif; ?>
   </div>