@keyframes slide-in {
  from {
    right: -100vw;
  }

  to {
    right: 0;
  }
}

.hamburger {
  background-color: transparent;
  border: none;
  cursor: pointer;
  justify-self: flex-start;
  padding: 11px 8px 16px;
  user-select: none;
}

.bar,
.bar::after,
.bar::before {
  background: var(--Base-Text-High-contrast);
  border-radius: 2.3px;
  display: inline-block;
  height: 3px;
  position: relative;
  transition: all 0.3s;
  width: 32px;
}

.bar::after,
.bar::before {
  content: "";
  left: 0;
  position: absolute;
  transform-origin: 2.286px center;
}

.bar::after {
  top: -8px;
}

.bar::before {
  top: 8px;
}

.isExpanded .bar {
  background: transparent;
}

.isExpanded .bar::after,
.isExpanded .bar::before {
  top: 0;
  transform-origin: 50% 50%;
  width: 32px;
}

.isExpanded .bar::after {
  transform: rotate(-45deg);
}

.isExpanded .bar::before {
  transform: rotate(45deg);
}

.modal {
  position: fixed;
  top: calc(
    var(--main-menu-mobile-height) + var(--sitewide-alert-height) + 1px
  );
  right: auto;
  bottom: 0;
  width: 100%;
  background-color: var(--Base-Surface-Primary-light-Normal);
  transition: right 0.3s;
  z-index: var(--menu-overlay-z-index);
}

.modal[data-entering] {
  animation: slide-in 0.3s;
}
.modal[data-exiting] {
  animation: slide-in 0.3s reverse;
}

.dialog {
  height: 100%;
  overflow-y: auto;
  display: grid;
  align-content: space-between;
}

.footer {
  background-color: var(--Base-Surface-Subtle-Normal);
  padding: var(--Spacing-x4) var(--Spacing-x2);
  display: grid;
  gap: var(--Spacing-x2);
}

@media screen and (min-width: 768px) {
  .hamburger,
  .modal {
    display: none;
  }
}
