:root {
  --offcanvas-min-width: 320px;
  --offcanvas-max-width: 500px;
  --offcanvas-width: 80vw;
}

/* Making guesses about block names */
#block-offcanvasclose .contextual {
  transform: translate(20px, -20px);
}

#block-offcanvastoggle .contextual {
  transform: translate(20px, -20px);
}

/* Base styles for offcanvas */
#off-canvas {
  background-color: white;
  box-shadow: 0 0 72px rgba(0, 0, 0, 0.1);
  bottom: 0;
  color: black;
  display: flex;
  flex-direction: column;
  right: 100%;
  overflow-y: scroll;
  overscroll-behavior: contain;
  padding: rem(40px 0 0 0);
  position: fixed;
  top: var(--drupal-displace-offset-top, var(--gin-toolbar-y-offset, 0));
  transition: visibility 300ms, transform 300ms;
  visibility: hidden;
  width: clamp(
    var(--offcanvas-min-width),
    var(--offcanvas-width),
    var(--offcanvas-max-width)
  );
  z-index: 1000;
}

#off-canvas.is-active {
  visibility: visible;
  transform: translateX(100%);
}

/* Off-canvas close button */
.off-canvas__close {
  align-items: center;
  background-color: transparent;
  border: none;
  color: white;
  display: flex;
  height: 2.75rem;
  justify-content: center;
  padding: 0;
  width: 2.75rem;
}

.off-canvas__close .close-button {
  align-items: center;
  display: flex;
  height: 2rem;
  justify-content: center;
  position: relative;
  width: 2rem;
}

.off-canvas__close .close-button span {
  background-color: black;
  display: block;
  border-radius: 0.125rem;
  height: 0.125rem;
  position: absolute;
  top: 50%;
  width: 1.5rem;
  transform-origin: center;
  transition: transform 250 ease-in-out;
}

.off-canvas__close .close-button span:first-of-type {
  transform: translateY(-50%) rotate(45deg);
}

.off-canvas__close .close-button span:nth-of-type(2) {
  transform: translateY(-50%) rotate(-45deg);
}

.off-canvas__close .close-button:active span:first-of-type,
.off-canvas__close .close-button:focus span:first-of-type {
  transform: translateY(-50%) rotate(-45deg);
}

.off-canvas__close .close-button:active span:nth-of-type(2),
.off-canvas__close .close-button:focus span:nth-of-type(2) {
  transform: translateY(-50%) rotate(45deg);
}

/* Off-canvas overlay */
.off-canvas__overlay {
  display: none;
}

.is-overlay-active .off-canvas__overlay {
  background-color: white;
  display: block;
  left: 0;
  height: 100%;
  opacity: 0.9;
  position: absolute;
  top: 0;
  width: 100%;
  z-index: 10;
}

/* Off-canvas toggle (usually in header) */
#rad-offcanvas-toggle {
  align-items: center;
  border: 0;
  background: transparent;
  display: flex;
  justify-content: center;
  height: 2.75rem;
  width: 2.75rem;
}

#rad-offcanvas-toggle i {
  font-size: 1.5rem;
}
