.offcanvas {
  position: fixed;
  top: 0;

  --offcanvas-width: 330px;
  height: 100vh;
  width: var(--offcanvas-width);
  padding: calc(var(--gutter-width) * 5) calc(var(--gutter-width) * 2);

  background: var(--white);

  transition: all var(--animation-duration) var(--animation-timing);

  box-sizing: border-box;
  z-index: 1002;

  .offcanvas-close {
    position: absolute;
    top: calc(var(--gutter-width) * 2);
    right: calc(var(--gutter-width) * 2);
  }

  &.offcanvas--right {
    right: calc(-1 * var(--offcanvas-width));
    &.open {
      right: 0;
    }
  }
  &.offcanvas--left {
    left: calc(-1 * var(--offcanvas-width));
    &.open {
      left: 0;
    }
  }
}

body.offcanvas-open {
  overflow: hidden;
}