/*!
 * # Fomantic-UI - Loader
 * http://github.com/fomantic/Fomantic-UI/
 *
 *
 * Released under the MIT license
 * http://opensource.org/licenses/MIT
 *
 */
/*******************************
            Theme
*******************************/

@type    : 'element';
@element : 'loader';

@import (multiple) '../../theme.config';

/*******************************
            Loader
*******************************/


/* Standard Size */
.ui.loader {
  display: none;
  position: absolute;
  top: @loaderTopOffset;
  left: @loaderLeftOffset;
  margin: 0;
  text-align: center;
  z-index: 1000;
  transform: translateX(-50%) translateY(-50%);
}

/* Static Shape */
.ui.loader:before {
  position: absolute;
  content: '';
  top: 0;
  left: 50%;
  width: 100%;
  height: 100%;

  border-radius: @circularRadius;
  border: @loaderLineWidth solid @loaderFillColor;
}

/* Active Shape */
.ui.loader:after {
  position: absolute;
  content: '';
  top: 0;
  left: 50%;
  width: 100%;
  height: 100%;

  animation: loader @loaderSpeed infinite linear;
  border: @loaderLineWidth solid @shapeBorderColor;
  border-radius: @circularRadius;

  box-shadow: 0 0 0 1px transparent;
}

& when (@variationLoaderSpeeds) {
  /* Speeds */

  .ui.fast.loading.loading:after,
  .ui.fast.loading.loading .input > i.icon:after,
  .ui.fast.loading.loading > i.icon:after,
  .ui.fast.loader:after {
    animation-duration: @loaderSpeedFast;
  }

  .ui.slow.loading.loading:after,
  .ui.slow.loading.loading .input > i.icon:after,
  .ui.slow.loading.loading > i.icon:after,
  .ui.slow.loader:after {
    animation-duration: @loaderSpeedSlow;
  }
}

/* Active Animation */
@keyframes loader {
  100% {
    transform: rotate(360deg);
  }
}

/*-------------------
      Coupling
--------------------*/

/* Show inside active dimmer */
.ui.dimmer > .loader {
  display: block;
}

/* Black Dimmer */
.ui.dimmer > .ui.loader {
  color: @invertedLoaderTextColor;
}
.ui.dimmer > .ui.loader:not(.elastic):before {
  border-color: @invertedLoaderFillColor;
}

/* White Dimmer (Inverted) */
.ui.inverted.dimmer > .ui.loader {
  color: @loaderTextColor;
}
.ui.inverted.dimmer > .ui.loader:not(.elastic):before {
  border-color: @loaderFillColor;
}

/*******************************
             Types
*******************************/

& when (@variationLoaderText) {
  /*-------------------
          Text
  --------------------*/

  .ui.ui.ui.ui.text.loader {
    width: auto;
    height: auto;
    text-align: center;
    font-style: normal;
  }
}


/*******************************
            States
*******************************/
& when (@variationLoaderIndeterminate) {
  .ui.indeterminate.loader:after {
    animation-direction: @indeterminateDirection;
    animation-duration: @indeterminateSpeed;
  }
}

.ui.loader.active,
.ui.loader.visible {
  display: block;
}
.ui.loader.disabled,
.ui.loader.hidden {
  display: none;
}

/*******************************
            Variations
*******************************/


/*-------------------
        Sizes
--------------------*/

.ui.loader {
  width: @medium;
  height: @medium;
  font-size: @mediumFontSize;
}
.ui.loader:before,
.ui.loader:after {
  width: @medium;
  height: @medium;
  margin: @mediumOffset;
}
& when (@variationLoaderText) {
  .ui.text.loader {
    min-width: @medium;
    padding-top: (@medium + @textDistance);
  }
}
& when not (@variationLoaderSizes = false) {
  each(@variationLoaderSizes, {
    @o: @{value}Offset;
    @f: @{value}FontSize;
    @s: @@value;
    .ui.@{value}.loader {
      width: @s;
      height: @s;
      font-size: @@f;
    }
    .ui.@{value}.loader:before,
    .ui.@{value}.loader:after {
      width: @s;
      height: @s;
      margin: @@o;
    }
    & when (@variationLoaderText) {
      .ui.@{value}.text.loader {
        min-width: @s;
        padding-top: (@s + @textDistance);
      }
    }
  })
}

/*-------------------
       Colors
--------------------*/

each(@colors, {
  @color: replace(@key, '@', '');
  @c: @colors[@@color][color];
  @l: @colors[@@color][light];

  .ui.@{color}.elastic.loader.loader:before,
  .ui.@{color}.basic.elastic.loading.button:before,
  .ui.@{color}.basic.elastic.loading.button:after,
  .ui.@{color}.elastic.loading.loading.loading:not(.segment):before,
  .ui.@{color}.elastic.loading.loading.loading .input > i.icon:before,
  .ui.@{color}.elastic.loading.loading.loading.loading > i.icon:before,
  .ui.@{color}.loading.loading.loading.loading:not(.usual):not(.button):after,
  .ui.@{color}.loading.loading.loading.loading .input > i.icon:after,
  .ui.@{color}.loading.loading.loading.loading > i.icon:after,
  .ui.@{color}.loader.loader.loader:after {
    color: @c;
  }
  .ui.inverted.@{color}.elastic.loader:before,
  .ui.inverted.@{color}.elastic.loading.loading.loading:not(.segment):before,
  .ui.inverted.@{color}.elastic.loading.loading.loading .input > i.icon:before,
  .ui.inverted.@{color}.elastic.loading.loading.loading > i.icon:before,
  .ui.inverted.@{color}.loading.loading.loading.loading:not(.usual):after,
  .ui.inverted.@{color}.loading.loading.loading.loading .input > i.icon:after,
  .ui.inverted.@{color}.loading.loading.loading.loading > i.icon:after,
  .ui.inverted.@{color}.loader.loader.loader:after {
    color: @l;
  }
})

.ui.elastic.loader.loader:before,
.ui.elastic.loading.loading.loading:before,
.ui.elastic.loading.loading.loading .input > i.icon:before,
.ui.elastic.loading.loading.loading > i.icon:before,
.ui.loading.loading.loading.loading:not(.usual):after,
.ui.loading.loading.loading.loading .input > i.icon:after,
.ui.loading.loading.loading.loading > i.icon:after,
.ui.loader.loader.loader:after {
  border-color: currentColor;
}
.ui.elastic.loading.loading.loading.loading.button:not(.inverted):not(.basic):before {
  color: @invertedLoaderLineColor;
}
.ui.elastic.basic.loading.button:before,
.ui.elastic.basic.loading.button:after {
  color: @loaderLineColor;
}
.ui.double.loading.loading.loading.loading.button:after {
  border-bottom-color: currentColor;
}

& when (@variationLoaderInline) {
  /*-------------------
         Inline
  --------------------*/

  .ui.inline.loader {
    position: relative;
    vertical-align: @inlineVerticalAlign;
    margin: @inlineMargin;
    left: 0;
    top: 0;
    transform: none;
  }

  .ui.inline.loader.active,
  .ui.inline.loader.visible {
    display: inline-block;
  }

  /* Centered Inline */
  .ui.centered.inline.loader.active,
  .ui.centered.inline.loader.visible {
    display: block;
    margin-left: auto;
    margin-right: auto;
  }
}

.ui.loading.loading.loading.loading.loading.loading:after,
.ui.loading.loading.loading.loading.loading.loading .input > i.icon:after,
.ui.loading.loading.loading.loading.loading.loading > i.icon:after,
.ui.loader.loader.loader.loader.loader:after {
  border-left-color:transparent;
  border-right-color:transparent;
}
.ui.loading.loading.loading.loading.loading.loading.loading:not(.double):after,
.ui.loading.loading.loading.loading.loading.loading.loading:not(.double) .input > i.icon:after,
.ui.loading.loading.loading.loading.loading.loading.loading:not(.double) > i.icon:after,
.ui.loader.loader.loader.loader.loader.loader:not(.double):after {
  border-bottom-color: transparent;
}
.ui.loading.loading.loading.loading.loading.loading.segment:after,
.ui.loading.loading.loading.loading.loading.loading.form:after {
  border-left-color:@loaderFillColor;
  border-right-color:@loaderFillColor;
}
.ui.loading.loading.loading.loading.loading.loading.segment:not(.double):after,
.ui.loading.loading.loading.loading.loading.loading.form:not(.double):after {
  border-bottom-color: @loaderFillColor;
}

& when (@variationLoaderElastic) {
  /*-------------------
         Elastic
  --------------------*/

  .ui.dimmer > .ui.elastic.loader {
    color: @invertedLoaderLineColor;
  }
  .ui.inverted.dimmer > .ui.elastic.loader {
    color: @loaderLineColor;
  }
  .ui.elastic.loading.loading:not(.form):not(.segment):after,
  .ui.elastic.loading.loading .input > i.icon:after,
  .ui.elastic.loading.loading > i.icon:after,
  .ui.elastic.loader.loader:after {
    animation: loader 1s infinite cubic-bezier(.27, 1.05, .92, .61);
    animation-delay: 0.3s;
  }
  .ui.elastic.loading.loading.loading:not(.form):not(.segment):before,
  .ui.elastic.loading.loading.loading .input > i.icon:before,
  .ui.elastic.loading.loading.loading > i.icon:before,
  .ui.elastic.loader.loader:before {
    animation: elastic-loader 1s infinite cubic-bezier(.27, 1.05, .92, .61);
    -moz-animation: currentcolor-elastic-loader 1s infinite cubic-bezier(.27, 1.05, .92, .61);
    border-right-color: transparent;
  }
  & when (@variationLoaderInline) {
    .ui.elastic.inline.loader:empty {
      animation: loader 8s infinite linear;
    }
  }
  & when (@variationLoaderSpeeds) {
    .ui.slow.elastic.loading.loading:not(.form):not(.segment):after,
    .ui.slow.elastic.loading.loading .input > i.icon:after,
    .ui.slow.elastic.loading.loading > i.icon:after,
    .ui.slow.elastic.loader.loader:after {
      animation-duration: 1.5s;
      animation-delay: 0.45s;
    }
    .ui.slow.elastic.loading.loading.loading:not(.form):not(.segment):before,
    .ui.slow.elastic.loading.loading.loading .input > i.icon:before,
    .ui.slow.elastic.loading.loading.loading > i.icon:before,
    .ui.slow.elastic.loader.loader:before {
      animation-duration: 1.5s;
    }
    .ui.fast.elastic.loading.loading:not(.form):not(.segment):after,
    .ui.fast.elastic.loading.loading .input > i.icon:after,
    .ui.fast.elastic.loading.loading > i.icon:after,
    .ui.fast.elastic.loader.loader:after {
      animation-duration: 0.66s;
      animation-delay: 0.20s;
    }
    .ui.fast.elastic.loading.loading.loading:not(.form):not(.segment):before,
    .ui.fast.elastic.loading.loading.loading .input > i.icon:before,
    .ui.fast.elastic.loading.loading.loading > i.icon:before,
    .ui.fast.elastic.loader.loader:before {
      animation-duration: 0.66s;
    }
  }
  @keyframes elastic-loader {
    0%, 1% {
      border-left-color: transparent;
      border-bottom-color: transparent
    }
    1.1%, 50% {
      border-left-color: inherit;
    }
    10%, 35.1%{
      border-bottom-color: transparent;
    }
    10.1%, 35%{
      border-bottom-color: inherit;
    }
    50.1%{
      border-left-color: transparent;
    }
    100% {
      border-left-color: transparent;
      border-bottom-color: transparent;
      transform: rotate(360deg);
    }
  }

  @keyframes currentcolor-elastic-loader {
    0%, 1% {
      border-left-color: transparent;
      border-bottom-color: transparent
    }
    1.1%, 50% {
      border-left-color: currentColor;
    }
    10%, 35.1%{
      border-bottom-color: transparent;
    }
    10.1%, 35%{
      border-bottom-color: currentColor;
    }
    50.1%{
      border-left-color: transparent;
    }
    100% {
      border-left-color: transparent;
      border-bottom-color: transparent;
      transform: rotate(360deg);
    }
  }
}

.loadUIOverrides();
