/**
 * Settings
 */

 $sal-animation-duration: 0.2s !default;
 $sal-animation-delay: 0s !default;
 $sal-slide-offset: 20% !default;
 $sal-zoom-in-scale: 0.5 !default;
 $sal-zoom-out-scale: 1.3 !default;
 $sal-flip-rotate: 91deg !default;
 
 /**
   * Easings
   */
 
 $sal-easings: (linear: linear,
     ease: ease,
     ease-in: ease-in,
     ease-out: ease-out,
     ease-in-out: ease-in-out,
 
     ease-in-cubic: cubic-bezier(.55, .055, .675, .19),
     ease-out-cubic: cubic-bezier(.215, .61, .355, 1),
     ease-in-out-cubic: cubic-bezier(.645, .045, .355, 1),
 
     ease-in-circ: cubic-bezier(.6, .04, .98, .335),
     ease-out-circ: cubic-bezier(.075, .82, .165, 1),
     ease-in-out-circ: cubic-bezier(.785, .135, .15, .86),
 
     ease-in-expo: cubic-bezier(.95, .05, .795, .035),
     ease-out-expo: cubic-bezier(.19, 1, .22, 1),
     ease-in-out-expo: cubic-bezier(1, 0, 0, 1),
 
     ease-in-quad: cubic-bezier(.55, .085, .68, .53),
     ease-out-quad: cubic-bezier(.25, .46, .45, .94),
     ease-in-out-quad: cubic-bezier(.455, .03, .515, .955),
 
     ease-in-quart: cubic-bezier(.895, .03, .685, .22),
     ease-out-quart: cubic-bezier(.165, .84, .44, 1),
     ease-in-out-quart: cubic-bezier(.77, 0, .175, 1),
 
     ease-in-quint: cubic-bezier(.755, .05, .855, .06),
     ease-out-quint: cubic-bezier(.23, 1, .32, 1),
     ease-in-out-quint: cubic-bezier(.86, 0, .07, 1),
 
     ease-in-sine: cubic-bezier(.47, 0, .745, .715),
     ease-out-sine: cubic-bezier(.39, .575, .565, 1),
     ease-in-out-sine: cubic-bezier(.445, .05, .55, .95),
 
     ease-in-back: cubic-bezier(.6, -.28, .735, .045),
     ease-out-back: cubic-bezier(.175, .885, .32, 1.275),
     ease-in-out-back: cubic-bezier(.68, -.55, .265, 1.55));
 
 /**
   * Core
   */
 
 [data-sal] {
     transition-duration: $sal-animation-duration;
     transition-delay: $sal-animation-delay;
     transition-duration: var(--sal-duration, $sal-animation-duration);
     transition-delay: var(--sal-delay, $sal-animation-delay);
     transition-timing-function: var(--sal-easing, map-get($sal-easings, 'ease'));
 }
 
 @for $i from 4 through 40 {
     [data-sal][data-sal-duration='#{$i * 50}'] {
         transition-duration: #{$i * 0.05}s;
     }
 }
 
 @for $i from 1 through 20 {
     [data-sal][data-sal-delay='#{$i * 50}'] {
         transition-delay: #{$i * 0.05}s;
     }
 }
 
 @each $key,
 $value in $sal-easings {
     [data-sal][data-sal-easing='#{$key}'] {
         transition-timing-function: $value;
     }
 }
 
 /**
   * Animations
   */
 
 // Fade
 [data-sal|='fade'] {
     opacity: 0;
     transition-property: opacity;
 }
 
 [data-sal|='fade'].sal-animate,
 body.sal-disabled [data-sal|='fade'] {
     opacity: 1;
 }
 
 // Slide
 [data-sal|='slide'] {
     opacity: 0;
     transition-property: opacity, transform;
 }
 
 [data-sal='slide-up'] {
     transform: translateY($sal-slide-offset);
 }
 
 [data-sal='slide-down'] {
     transform: translateY(-$sal-slide-offset);
 }
 
 [data-sal='slide-left'] {
     transform: translateX($sal-slide-offset);
 }
 
 [data-sal='slide-right'] {
     transform: translateX(-$sal-slide-offset);
 }
 
 [data-sal|='slide'].sal-animate,
 body.sal-disabled [data-sal|='slide'] {
     opacity: 1;
     transform: none;
 }
 
 // Zoom
 [data-sal|='zoom'] {
     opacity: 0;
     transition-property: opacity, transform;
 }
 
 [data-sal='zoom-in'] {
     transform: scale($sal-zoom-in-scale);
 }
 
 [data-sal='zoom-out'] {
     transform: scale($sal-zoom-out-scale);
 }
 
 [data-sal|='zoom'].sal-animate,
 body.sal-disabled [data-sal|='zoom'] {
     opacity: 1;
     transform: none;
 }
 
 // Flip
 [data-sal|='flip'] {
     backface-visibility: hidden;
     transition-property: transform;
 }
 
 [data-sal='flip-left'] {
     transform: perspective(2000px) rotateY(-$sal-flip-rotate);
 }
 
 [data-sal='flip-right'] {
     transform: perspective(2000px) rotateY($sal-flip-rotate);
 }
 
 [data-sal='flip-up'] {
     transform: perspective(2000px) rotateX(-$sal-flip-rotate);
 }
 
 [data-sal='flip-down'] {
     transform: perspective(2000px) rotateX($sal-flip-rotate);
 }
 
 [data-sal|='flip'].sal-animate,
 body.sal-disabled [data-sal|='flip'] {
     transform: none;
 }