diff --git a/src/components/navigation/hy-menu-main-group/hy-menu-main-group.scss b/src/components/navigation/hy-menu-main-group/hy-menu-main-group.scss
index 8b7d7a5d6d6191f229739b8dc7eb9cce7b438660..d9e90a1b086a832d4fa304a58fe128d92ab7b268 100644
--- a/src/components/navigation/hy-menu-main-group/hy-menu-main-group.scss
+++ b/src/components/navigation/hy-menu-main-group/hy-menu-main-group.scss
@@ -103,7 +103,7 @@
     top: 0;
     visibility: visible;
     width: 100%;
-    z-index: 100;
+    z-index: 511;
 
     .list {
       display: flex;
diff --git a/src/components/navigation/hy-menu-main-group/hy-menu-main-group.tsx b/src/components/navigation/hy-menu-main-group/hy-menu-main-group.tsx
index fdf8114067a2d84e29e270a93e91370af0de806f..5ad282071a17565ed404e9b476ece7cbafbe0740 100644
--- a/src/components/navigation/hy-menu-main-group/hy-menu-main-group.tsx
+++ b/src/components/navigation/hy-menu-main-group/hy-menu-main-group.tsx
@@ -8,6 +8,10 @@ export interface MainMenu {
 
 import {Component, Host, h, Element, Prop, State, Watch, Listen} from '@stencil/core';
 
+let keys = {
+  enter: 'Enter',
+};
+
 @Component({
   tag: 'hy-menu-main-group',
   styleUrl: 'hy-menu-main-group.scss',
@@ -31,27 +35,47 @@ export class HyMenuMainGroup {
     this.isMenuOpen = !this.isMenuOpen;
 
     if (this.isMenuOpen) {
-      let hyTopHeader = this.el.closest('.hy-site-header__content-top') as HTMLElement;
-
-      if (hyTopHeader && hyTopHeader.hasAttribute('is-mobile')) {
-        console.log('do mobile stuff');
-      } else {
-        let mainMenuToggle = event.target.shadowRoot.querySelector('.menu--main-group__toggle') as HTMLElement;
-        let mainMenuDropdown = event.target.shadowRoot.querySelector('.menu--main-group__dropdown') as HTMLElement;
-        let mainMenuList = event.target.shadowRoot.querySelector('.list') as HTMLElement;
-        if (mainMenuDropdown && mainMenuList && mainMenuToggle) {
-          let rectHeader = hyTopHeader.getBoundingClientRect();
-          let rectMenuToggle = mainMenuToggle.getBoundingClientRect();
-          mainMenuDropdown.style.top = `${rectHeader.height}px`;
-
-          mainMenuList.style.left = `${rectMenuToggle.left}px`;
-        }
-      }
+      this.adjustMainMenuPosition(event.target);
     }
 
     event.stopPropagation();
   }
 
+  @Listen('keydown')
+  handleComponentKeyDown(event: KeyboardEvent) {
+    const key = event.code;
+    let target = event.target as HTMLButtonElement;
+
+    if (target && [keys.enter].includes(key)) {
+      this.isMenuOpen = !this.isMenuOpen;
+
+      if (this.isMenuOpen) {
+        this.adjustMainMenuPosition(target);
+
+        event.preventDefault();
+      }
+    }
+  }
+
+  adjustMainMenuPosition(target) {
+    let hyTopHeader = this.el.closest('.hy-site-header__content-top') as HTMLElement;
+
+    if (hyTopHeader && hyTopHeader.hasAttribute('is-mobile')) {
+      console.log('do mobile stuff');
+    } else {
+      let mainMenuToggle = target.shadowRoot.querySelector('.menu--main-group__toggle') as HTMLElement;
+      let mainMenuDropdown = target.shadowRoot.querySelector('.menu--main-group__dropdown') as HTMLElement;
+      let mainMenuList = target.shadowRoot.querySelector('.list') as HTMLElement;
+      if (mainMenuDropdown && mainMenuList && mainMenuToggle) {
+        let rectHeader = hyTopHeader.getBoundingClientRect();
+        let rectMenuToggle = mainMenuToggle.getBoundingClientRect();
+        mainMenuDropdown.style.top = `${rectHeader.height}px`;
+
+        mainMenuList.style.left = `${rectMenuToggle.left}px`;
+      }
+    }
+  }
+
   componentWillRender() {
     this.dataMainMenuWatcher(this.dataMainMenu);
   }
@@ -61,6 +85,25 @@ export class HyMenuMainGroup {
     event.stopPropagation();
   }
 
+  // Close the University main menu if user clicks anywhere outside the component.
+  @Listen('click', {target: 'window'})
+  handleOutsideMenuClick(event) {
+    this.isMenuOpen = false;
+    event.stopPropagation();
+  }
+
+  // CLose the University main menu if user opens the desktop menu panel.
+  @Listen('menuDesktopToggled', {target: 'document'})
+  desktopMenuToggled() {
+    this.isMenuOpen = false;
+  }
+
+  // CLose the University main menu if user opens the search panel
+  @Listen('searchPanelToggled', {target: 'document'})
+  searchPanelToggled() {
+    this.isMenuOpen = false;
+  }
+
   render() {
     const white = 'var(--grayscale-white)';
 
diff --git a/src/components/site-header/site-header.scss b/src/components/site-header/site-header.scss
index b19990f751fa2d7cc2af63bd934e6b1f7bc1e2a6..32cfec316845af650760dff6c1e6c759ca3a6dab 100644
--- a/src/components/site-header/site-header.scss
+++ b/src/components/site-header/site-header.scss
@@ -74,6 +74,7 @@
   flex-flow: row;
   place-content: center space-between;
   position: relative;
+  z-index: 100;
 
   @include breakpoint($narrow) {
     margin: 0 auto;
diff --git a/src/components/site-header/site-header.tsx b/src/components/site-header/site-header.tsx
index a4bf9ff3473b58043d02cb78508f9c1475aaf776..3ae837bda5a9926ae972be14fcbe69a016fe6376 100644
--- a/src/components/site-header/site-header.tsx
+++ b/src/components/site-header/site-header.tsx
@@ -238,7 +238,7 @@ export class SiteHeader {
                     url={this.siteUrl}
                     label={this.siteLabel}
                   />
-                  <hy-menu-main-group is-mobile={false} data-main-menu={this.dataMainMenuLinks} />
+                  <hy-menu-main-group tabindex="0" is-mobile={false} data-main-menu={this.dataMainMenuLinks} />
                 </div>
 
                 <div class={'menu--secondary menu--secondary--group'}>