:root {
    --anim-menu-btn-size: 48px;
    --anim-menu-btn-transition-duration: .2s;
    --anim-menu-btn-icon-size: 32px;
    --anim-menu-btn-icon-stroke: 2px;
  }
  
  .anim-menu-btn {
    display: flex;
    justify-content: center;
    align-items: center;
    width: var(--anim-menu-btn-size);
    height: var(--anim-menu-btn-size);
  }
  
  .anim-menu-btn__icon {
    position: relative;
    display: block;
    font-size: var(--anim-menu-btn-icon-size);
    width: 1em;
    height: var(--anim-menu-btn-icon-stroke);
    color: inherit;
    background-image: linear-gradient(currentColor, currentColor);
    background-repeat: no-repeat;
    -webkit-transform: scale(1);
            transform: scale(1);
  }
  .anim-menu-btn__icon::before, .anim-menu-btn__icon::after {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    height: 100%;
    width: 100%;
    background-image: inherit;
    border-radius: inherit;
  }
  
  .anim-menu-btn__icon--close {
    background-size: 100% 100%;
    will-change: transform, background-size;
    transition-property: background-size, -webkit-transform;
    transition-property: transform, background-size;
    transition-property: transform, background-size, -webkit-transform;
    transition-duration: var(--anim-menu-btn-transition-duration, 0.2s);
  }
  .anim-menu-btn:active .anim-menu-btn__icon--close {
    -webkit-transform: scale(0.9);
            transform: scale(0.9);
  }
  .anim-menu-btn__icon--close::before, .anim-menu-btn__icon--close::after {
    will-change: inherit;
    transition: inherit;
  }
  .anim-menu-btn__icon--close::before {
    -webkit-transform: translateY(-0.25em) rotate(0);
            transform: translateY(-0.25em) rotate(0);
  }
  .anim-menu-btn__icon--close::after {
    -webkit-transform: translateY(0.25em) rotate(0);
            transform: translateY(0.25em) rotate(0);
  }
  
  .anim-menu-btn--state-b .anim-menu-btn__icon--close {
    background-size: 0% 100%;
  }
  .anim-menu-btn--state-b .anim-menu-btn__icon--close::before {
    -webkit-transform: translateY(0) rotate(45deg);
            transform: translateY(0) rotate(45deg);
  }
  .anim-menu-btn--state-b .anim-menu-btn__icon--close::after {
    -webkit-transform: translateY(0) rotate(-45deg);
            transform: translateY(0) rotate(-45deg);
  }
  
  .anim-menu-btn__icon--arrow-left,
  .anim-menu-btn__icon--arrow-right,
  .anim-menu-btn__icon--arrow-up,
  .anim-menu-btn__icon--arrow-down {
    border-radius: 50em;
    will-change: transform;
    transition-property: -webkit-transform;
    transition-property: transform;
    transition-property: transform, -webkit-transform;
    transition-duration: var(--anim-menu-btn-transition-duration, 0.2s);
  }
  .anim-menu-btn:active .anim-menu-btn__icon--arrow-left,
  .anim-menu-btn:active .anim-menu-btn__icon--arrow-right,
  .anim-menu-btn:active .anim-menu-btn__icon--arrow-up,
  .anim-menu-btn:active .anim-menu-btn__icon--arrow-down {
    -webkit-transform: scale(0.9);
            transform: scale(0.9);
  }
  .anim-menu-btn__icon--arrow-left::before, .anim-menu-btn__icon--arrow-left::after,
  .anim-menu-btn__icon--arrow-right::before,
  .anim-menu-btn__icon--arrow-right::after,
  .anim-menu-btn__icon--arrow-up::before,
  .anim-menu-btn__icon--arrow-up::after,
  .anim-menu-btn__icon--arrow-down::before,
  .anim-menu-btn__icon--arrow-down::after {
    -webkit-transform-origin: calc(var(--anim-menu-btn-icon-stroke)/2) 50%;
            transform-origin: calc(var(--anim-menu-btn-icon-stroke)/2) 50%;
    will-change: transform, width;
    transition-property: width, -webkit-transform;
    transition-property: transform, width;
    transition-property: transform, width, -webkit-transform;
    transition-duration: var(--anim-menu-btn-transition-duration, 0.2s);
  }
  .anim-menu-btn__icon--arrow-left::before,
  .anim-menu-btn__icon--arrow-right::before,
  .anim-menu-btn__icon--arrow-up::before,
  .anim-menu-btn__icon--arrow-down::before {
    -webkit-transform: translateY(-0.25em) rotate(0);
            transform: translateY(-0.25em) rotate(0);
  }
  .anim-menu-btn__icon--arrow-left::after,
  .anim-menu-btn__icon--arrow-right::after,
  .anim-menu-btn__icon--arrow-up::after,
  .anim-menu-btn__icon--arrow-down::after {
    -webkit-transform: translateY(0.25em) rotate(0);
            transform: translateY(0.25em) rotate(0);
  }
  
  .anim-menu-btn__icon--arrow-right {
    -webkit-transform: rotate(180deg);
            transform: rotate(180deg);
  }
  .anim-menu-btn:active .anim-menu-btn__icon--arrow-right {
    -webkit-transform: rotate(180deg) scale(0.9);
            transform: rotate(180deg) scale(0.9);
  }
  
  .anim-menu-btn--state-b .anim-menu-btn__icon--arrow-left::before, .anim-menu-btn--state-b .anim-menu-btn__icon--arrow-left::after,
  .anim-menu-btn--state-b .anim-menu-btn__icon--arrow-right::before,
  .anim-menu-btn--state-b .anim-menu-btn__icon--arrow-right::after,
  .anim-menu-btn--state-b .anim-menu-btn__icon--arrow-up::before,
  .anim-menu-btn--state-b .anim-menu-btn__icon--arrow-up::after,
  .anim-menu-btn--state-b .anim-menu-btn__icon--arrow-down::before,
  .anim-menu-btn--state-b .anim-menu-btn__icon--arrow-down::after {
    width: 50%;
  }
  .anim-menu-btn--state-b .anim-menu-btn__icon--arrow-left::before,
  .anim-menu-btn--state-b .anim-menu-btn__icon--arrow-right::before,
  .anim-menu-btn--state-b .anim-menu-btn__icon--arrow-up::before,
  .anim-menu-btn--state-b .anim-menu-btn__icon--arrow-down::before {
    -webkit-transform: translateY(0) rotate(-45deg);
            transform: translateY(0) rotate(-45deg);
  }
  .anim-menu-btn--state-b .anim-menu-btn__icon--arrow-left::after,
  .anim-menu-btn--state-b .anim-menu-btn__icon--arrow-right::after,
  .anim-menu-btn--state-b .anim-menu-btn__icon--arrow-up::after,
  .anim-menu-btn--state-b .anim-menu-btn__icon--arrow-down::after {
    -webkit-transform: translateY(0) rotate(45deg);
            transform: translateY(0) rotate(45deg);
  }
  .anim-menu-btn--state-b:active .anim-menu-btn__icon--arrow-up {
    -webkit-transform: rotate(90deg) scale(0.9);
            transform: rotate(90deg) scale(0.9);
  }
  .anim-menu-btn--state-b .anim-menu-btn__icon--arrow-up {
    -webkit-transform: rotate(90deg);
            transform: rotate(90deg);
  }
  .anim-menu-btn--state-b:active .anim-menu-btn__icon--arrow-down {
    -webkit-transform: rotate(-90deg) scale(0.9);
            transform: rotate(-90deg) scale(0.9);
  }
  .anim-menu-btn--state-b .anim-menu-btn__icon--arrow-down {
    -webkit-transform: rotate(-90deg);
            transform: rotate(-90deg);
  }