|  | // vars | 
        
          |  | $color: #fff;		  // icon color | 
        
          |  | $blue: #158fef;	  // background color | 
        
          |  | $animation: 0.6s;	// animation speed | 
        
          |  | $scale: 1;			  // icon scale 68/68 default | 
        
          |  |  | 
        
          |  | *, *:before, *:after { | 
        
          |  | box-sizing: border-box; | 
        
          |  | } | 
        
          |  |  | 
        
          |  | // spacing + background-color | 
        
          |  | body { | 
        
          |  | background: $blue; | 
        
          |  | padding: 40px; | 
        
          |  | } | 
        
          |  |  | 
        
          |  | h4 { | 
        
          |  | font-family: arial,helvetica,serif; | 
        
          |  | color: $color; | 
        
          |  | font-size: 18px; | 
        
          |  | text-align: center; | 
        
          |  | margin: 40px 0 0; | 
        
          |  |  | 
        
          |  | } | 
        
          |  |  | 
        
          |  | .hamburglar { | 
        
          |  | transform: scale($scale); | 
        
          |  | margin: 40px auto; | 
        
          |  | position: relative; | 
        
          |  | display: block; | 
        
          |  | width: 68px; | 
        
          |  | height: 68px; | 
        
          |  | background: $blue; | 
        
          |  | -webkit-touch-callout: none; | 
        
          |  | user-select: none; | 
        
          |  | } | 
        
          |  |  | 
        
          |  | // transition mask | 
        
          |  | .path-burger { | 
        
          |  | position: absolute; | 
        
          |  | top: 0; | 
        
          |  | left: 0; | 
        
          |  | height: 68px; | 
        
          |  | width: 68px; | 
        
          |  | // two masks because... browser support. | 
        
          |  | mask: url(#mask); | 
        
          |  | -webkit-mask-box-image: url(https://raygun.io/upload/mask.svg); | 
        
          |  | } | 
        
          |  |  | 
        
          |  | .animate-path { | 
        
          |  | position: absolute; | 
        
          |  | top: 0; | 
        
          |  | left: 0; | 
        
          |  | width: 68px; | 
        
          |  | height: 68px; | 
        
          |  | } | 
        
          |  |  | 
        
          |  | // what this does is create a small square that I then rotate behind an svg mask, giving the apparence of the line animating | 
        
          |  | .path-rotation { | 
        
          |  | height: 34px; | 
        
          |  | width: 34px; | 
        
          |  | margin: 34px 34px 0 0; | 
        
          |  | transform: rotate(0deg); | 
        
          |  | transform-origin: 100% 0; | 
        
          |  | &:before { | 
        
          |  | content: ''; | 
        
          |  | display: block; | 
        
          |  | width: 30px; | 
        
          |  | height: 34px; | 
        
          |  | margin: 0 4px 0 0; | 
        
          |  | background: $color; | 
        
          |  | } | 
        
          |  | } | 
        
          |  |  | 
        
          |  | // box rotation animation | 
        
          |  | @keyframes rotate-out { | 
        
          |  | 0% { | 
        
          |  | transform: rotate(0deg); | 
        
          |  | } | 
        
          |  | 40% { | 
        
          |  | transform: rotate(180deg); | 
        
          |  | } | 
        
          |  | 100% { | 
        
          |  | transform: rotate(360deg); | 
        
          |  | } | 
        
          |  | } | 
        
          |  |  | 
        
          |  | @keyframes rotate-in { | 
        
          |  | 0% { | 
        
          |  | transform: rotate(360deg); | 
        
          |  | } | 
        
          |  | 40% { | 
        
          |  | transform: rotate(180deg); | 
        
          |  | } | 
        
          |  | 100% { | 
        
          |  | transform: rotate(0deg); | 
        
          |  | } | 
        
          |  | } | 
        
          |  |  | 
        
          |  | // offset moves | 
        
          |  | // dasharray is the dash size | 
        
          |  | // need to be able to control dash space size. | 
        
          |  |  | 
        
          |  | .hamburglar.is-open { | 
        
          |  | .path { | 
        
          |  | animation: dash-in $animation linear normal; | 
        
          |  | animation-fill-mode:forwards; | 
        
          |  | } | 
        
          |  | .animate-path { | 
        
          |  | animation: rotate-in $animation linear normal; | 
        
          |  | animation-fill-mode:forwards; | 
        
          |  | } | 
        
          |  | } | 
        
          |  |  | 
        
          |  | .hamburglar.is-closed { | 
        
          |  | .path { | 
        
          |  | animation: dash-out $animation linear normal; | 
        
          |  | animation-fill-mode:forwards; | 
        
          |  | } | 
        
          |  | .animate-path { | 
        
          |  | animation: rotate-out $animation linear normal; | 
        
          |  | animation-fill-mode:forwards; | 
        
          |  | } | 
        
          |  | } | 
        
          |  |  | 
        
          |  | .path { | 
        
          |  | stroke-dasharray: 240; | 
        
          |  | stroke-dashoffset: 240; | 
        
          |  | stroke-linejoin: round; | 
        
          |  | } | 
        
          |  |  | 
        
          |  | @keyframes dash-in { | 
        
          |  | 0% { | 
        
          |  | stroke-dashoffset: 240; | 
        
          |  | } | 
        
          |  | 40% { | 
        
          |  | stroke-dashoffset: 240; | 
        
          |  | } | 
        
          |  | 100% { | 
        
          |  | stroke-dashoffset: 0; | 
        
          |  | } | 
        
          |  | } | 
        
          |  | @keyframes dash-out { | 
        
          |  | 0% { | 
        
          |  | stroke-dashoffset: 0; | 
        
          |  | } | 
        
          |  | 40% { | 
        
          |  | stroke-dashoffset: 240; | 
        
          |  | } | 
        
          |  | 100% { | 
        
          |  | stroke-dashoffset: 240; | 
        
          |  | } | 
        
          |  | } | 
        
          |  |  | 
        
          |  |  | 
        
          |  |  | 
        
          |  | // All good burgers need filling! | 
        
          |  |  | 
        
          |  | .burger-icon { | 
        
          |  | position: absolute; | 
        
          |  | padding: 20px 16px; | 
        
          |  | height: 68px; | 
        
          |  | width: 68px; | 
        
          |  | } | 
        
          |  |  | 
        
          |  | .burger-container { | 
        
          |  | position: relative; | 
        
          |  | height: 28px; | 
        
          |  | width: 36px; | 
        
          |  | } | 
        
          |  |  | 
        
          |  | .burger-bun-top, | 
        
          |  | .burger-bun-bot, | 
        
          |  | .burger-filling { | 
        
          |  | position: absolute; | 
        
          |  | display: block; | 
        
          |  | height: 4px; | 
        
          |  | width: 36px; | 
        
          |  | border-radius: 2px; | 
        
          |  | background: $color; | 
        
          |  | } | 
        
          |  |  | 
        
          |  | .burger-bun-top { | 
        
          |  | top: 0; | 
        
          |  | transform-origin: 34px 2px; | 
        
          |  | } | 
        
          |  |  | 
        
          |  | .burger-bun-bot { | 
        
          |  | bottom: 0; | 
        
          |  | transform-origin: 34px 2px; | 
        
          |  | } | 
        
          |  | //.burger-filling { | 
        
          |  | //  @include transition(all,($animation/2.5),ease-in-//out); | 
        
          |  | //} | 
        
          |  | // relative parent is the button | 
        
          |  | .burger-filling { | 
        
          |  | top: 12px; | 
        
          |  | } | 
        
          |  |  | 
        
          |  |  | 
        
          |  |  | 
        
          |  |  | 
        
          |  |  | 
        
          |  | // burger ring container | 
        
          |  | .burger-ring { | 
        
          |  | position: absolute; | 
        
          |  | top: 0; | 
        
          |  | left: 0; | 
        
          |  | width: 68px; | 
        
          |  | height: 68px; | 
        
          |  | } | 
        
          |  |  | 
        
          |  | .svg-ring { | 
        
          |  | width: 68px; | 
        
          |  | height: 68px; | 
        
          |  | } | 
        
          |  |  | 
        
          |  |  | 
        
          |  | // bun animations | 
        
          |  | .hamburglar.is-open { | 
        
          |  | .burger-bun-top { | 
        
          |  | animation: bun-top-out $animation linear normal; | 
        
          |  | animation-fill-mode:forwards; | 
        
          |  | } | 
        
          |  | .burger-bun-bot { | 
        
          |  | animation: bun-bot-out $animation linear normal; | 
        
          |  | animation-fill-mode:forwards; | 
        
          |  | } | 
        
          |  | } | 
        
          |  | .hamburglar.is-closed { | 
        
          |  | .burger-bun-top { | 
        
          |  | animation: bun-top-in $animation linear normal; | 
        
          |  | animation-fill-mode:forwards; | 
        
          |  | } | 
        
          |  | .burger-bun-bot { | 
        
          |  | animation: bun-bot-in $animation linear normal; | 
        
          |  | animation-fill-mode:forwards; | 
        
          |  | } | 
        
          |  | } | 
        
          |  |  | 
        
          |  | @keyframes bun-top-out { | 
        
          |  | 0% { | 
        
          |  | left: 0; | 
        
          |  | top: 0; | 
        
          |  | transform: rotate(0deg); | 
        
          |  | } | 
        
          |  | 20% { | 
        
          |  | left: 0; | 
        
          |  | top: 0; | 
        
          |  | transform: rotate(15deg); | 
        
          |  | } | 
        
          |  | 80% { | 
        
          |  | left: -5px; | 
        
          |  | top: 0; | 
        
          |  | transform: rotate(-60deg); | 
        
          |  | } | 
        
          |  | 100% { | 
        
          |  | left: -5px; | 
        
          |  | top: 1px; | 
        
          |  | transform: rotate(-45deg); | 
        
          |  | } | 
        
          |  | } | 
        
          |  |  | 
        
          |  | @keyframes bun-bot-out { | 
        
          |  | 0% { | 
        
          |  | left: 0; | 
        
          |  | transform: rotate(0deg); | 
        
          |  | } | 
        
          |  | 20% { | 
        
          |  | left: 0; | 
        
          |  | transform: rotate(-15deg); | 
        
          |  | } | 
        
          |  | 80% { | 
        
          |  | left: -5px; | 
        
          |  | transform: rotate(60deg); | 
        
          |  | } | 
        
          |  | 100% { | 
        
          |  | left: -5px; | 
        
          |  | transform: rotate(45deg); | 
        
          |  | } | 
        
          |  | } | 
        
          |  |  | 
        
          |  |  | 
        
          |  | @keyframes bun-top-in { | 
        
          |  | 0% { | 
        
          |  | left: -5px; | 
        
          |  | bot: 0; | 
        
          |  | transform: rotate(-45deg); | 
        
          |  | } | 
        
          |  | 20% { | 
        
          |  | left: -5px; | 
        
          |  | bot: 0; | 
        
          |  | transform: rotate(-60deg); | 
        
          |  | } | 
        
          |  | 80% { | 
        
          |  | left: 0; | 
        
          |  | bot: 0; | 
        
          |  | transform: rotate(15deg); | 
        
          |  | } | 
        
          |  | 100% { | 
        
          |  | left: 0; | 
        
          |  | bot: 1px; | 
        
          |  | transform: rotate(0deg); | 
        
          |  | } | 
        
          |  | } | 
        
          |  |  | 
        
          |  | @keyframes bun-bot-in { | 
        
          |  | 0% { | 
        
          |  | left: -5px; | 
        
          |  | transform: rotate(45deg); | 
        
          |  | } | 
        
          |  | 20% { | 
        
          |  | left: -5px; | 
        
          |  | bot: 0; | 
        
          |  | transform: rotate(60deg); | 
        
          |  | } | 
        
          |  | 80% { | 
        
          |  | left: 0; | 
        
          |  | bot: 0; | 
        
          |  | transform: rotate(-15deg); | 
        
          |  | } | 
        
          |  | 100% { | 
        
          |  | left: 0; | 
        
          |  | transform: rotate(0deg); | 
        
          |  | } | 
        
          |  | } | 
        
          |  |  | 
        
          |  |  | 
        
          |  | // burger filling | 
        
          |  | .hamburglar.is-open { | 
        
          |  | .burger-filling { | 
        
          |  | animation: burger-fill-out $animation linear normal; | 
        
          |  | animation-fill-mode:forwards; | 
        
          |  | } | 
        
          |  | } | 
        
          |  |  | 
        
          |  | .hamburglar.is-closed { | 
        
          |  | .burger-filling { | 
        
          |  | animation: burger-fill-in $animation linear normal; | 
        
          |  | animation-fill-mode:forwards; | 
        
          |  | } | 
        
          |  | } | 
        
          |  |  | 
        
          |  | @keyframes burger-fill-in { | 
        
          |  | 0% { | 
        
          |  | width: 0; | 
        
          |  | left: 36px; | 
        
          |  | } | 
        
          |  | 40% { | 
        
          |  | width: 0; | 
        
          |  | left: 40px; | 
        
          |  | } | 
        
          |  | 80% { | 
        
          |  | width: 36px; | 
        
          |  | left: -6px; | 
        
          |  | } | 
        
          |  | 100% { | 
        
          |  | width: 36px; | 
        
          |  | left: 0px; | 
        
          |  | } | 
        
          |  | } | 
        
          |  |  | 
        
          |  | @keyframes burger-fill-out { | 
        
          |  | 0% { | 
        
          |  | width: 36px; | 
        
          |  | left: 0px; | 
        
          |  | } | 
        
          |  | 20% { | 
        
          |  | width: 42px; | 
        
          |  | left: -6px; | 
        
          |  | } | 
        
          |  |  | 
        
          |  | 40% { | 
        
          |  | width: 0; | 
        
          |  | left: 40px; | 
        
          |  | } | 
        
          |  |  | 
        
          |  | 100% { | 
        
          |  | width: 0; | 
        
          |  | left: 36px; | 
        
          |  | } | 
        
          |  | } |