#generic_loader {
  position: absolute;
  z-index: 1000;
  top: 0;
  left: 0;
  display: block;
  width: 100%;
  height: 100%;
  background-color: rgb(240, 240, 247);
  transition: 0.4s;

  & img {
    position: fixed;
    top: auto;
    bottom: 2vw;
    left: calc(50vh - 23vw);
    display: block;
    width: 10vw;
    max-width: 50px;
  }
}

#advice__widgets_areas_loading {
  position: fixed;
  z-index: 100;
  top: 60px;
  left: 50%;
  display: none;
  padding: 12px 24px;
  transform: translateX(-50%);
  border-radius: 8px;
  background-color: #333333;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
  color: var(--balter-white);
  font-family: sans-serif;
  font-size: 16px;
  transition: 0.2s all ease;

  & img {
    position: relative;
    width: 16px;
    height: 16px;
    margin-right: 5px;
  }

  &.active {
    display: block;
  }
}

#interface_blocker {
  position: fixed;
  z-index: 10000;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  transform: scale(0);
  background-color: transparent;
  transition: 0.5s background-color ease;

  & table {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;

    & tr {
      border: 0;

      & td {
        position: relative;
        border: 0;
        text-align: center;

        & #interface_blocker_imgs_container {
          position: relative;
          display: inline-block;
          width: 10vw;
          max-width: 100px;
          height: 10vw;
          max-height: 100px;
          overflow: hidden;
          border: 6px solid var(--balter-white);
          border-radius: 50%;
          box-shadow: 5px 0 5px -3px #AAAAAA;

          & #interface_blocker_title {
            position: absolute;
            z-index: 2000;
            bottom: 0;
            left: 0;
            display: none;
            width: 100%;
            height: 20px;
            font-size: 16px;
            line-height: 20px;
            text-shadow: 1px 1px 1px var(--balter-white);
          }

          & #interface_blocker_logo {
            position: absolute;
            z-index: 2000;
            top: 5px;
            left: 5px;
            width: calc(100% - 10px);
            height: calc(100% - 10px);
            border-radius: 50%;
            opacity: 0.8;
          }

          & #interface_blocker_loader {
            position: absolute;
            z-index: 1999;
            top: -10px;
            left: -10px;
            width: calc(100% + 20px);
            height: calc(100% + 20px);
          }
        }
      }
    }
  }

  &.active {
    transform: scale(1);
    background-color: rgba(35, 35, 35, 0.1);

    & #interface_blocker_imgs_container {
      animation: animation_interface_blocker_border_play 1s infinite;
    }
  }
}

@keyframes animation_interface_blocker_border_play {
  0% {
    border-color:
      var(--balter-color-primary-2)
      var(--balter-color-primary-1)
      var(--balter-color-primary-2)
      var(--balter-color-primary-1);
  }

  50% {
    border-color:
      var(--balter-color-primary-1)
      var(--balter-color-primary-2)
      var(--balter-color-primary-1)
      var(--balter-color-primary-2);
  }

  100% {
    border-color:
      var(--balter-color-primary-2)
      var(--balter-color-primary-1)
      var(--balter-color-primary-2)
      var(--balter-color-primary-1);
  }
}

#mouse_onwait {
  position: fixed;
  z-index: 1000;
  top: -200px;
  left: -200px;
  display: none;
  width: 25px;
  height: 40px;
  overflow: hidden;
  padding: 0 5px;
  border-top: 0;
  border-bottom: 0;
  background-position: center;
  background-repeat: no-repeat;
  background-size: 100%;
  font-size: 12px;
  line-height: 16px;

  & span {
    position: absolute;
    bottom: 0;
    left: 0;
    display: block;
    width: 100%;
    background-color: rgba(0, 0, 0, 0.3);
    text-align: center;
  }

  &.active {
    display: block;
  }
}

#mouse_long_onwait {
  position: fixed;
  z-index: 1000;
  top: -200px;
  left: -200px;
  display: none;
  width: 150px;
  height: 150px;
  overflow: hidden;
  padding: 0 5px;
  border: 3px solid #FFE522;
  border-top: 0;
  border-bottom: 0;
  border-radius: 50%;
  background-position: center;
  background-repeat: no-repeat;
  background-size: 120%;
  color: var(--balter-white);
  font-size: 12px;
  line-height: 16px;

  & span {
    position: absolute;
    bottom: 0;
    left: 0;
    display: block;
    width: 100%;
    background-color: rgba(0, 0, 0, 0.3);
    text-align: center;
  }

  &.active {
    display: block;
  }
}

.intable_loader {
  position: relative;
  display: block;
  width: 20px;
  margin: 0 auto;
}

.dynamic_page_part {
  & .dynamic_page_part__loader {
    position: relative;
    display: block;
    width: 20px;
    margin: 0 auto;
  }
}
